BookmarkSubscribeRSS Feed
Ishaan
Calcite | Level 5

I have SASEGP1.egp, which has a few programs embedded in it.

For eg: program1, program2, program3 and program4 are embedded in SASSEGP1.egp. SAS server is install in UNIX.

How can I reference program2?

I tried %include 'program2.sas'; I got error that file doesn't exit in SASAPP location.

I don't want to save these embedded program into external location and than reference it.

eg: %include 'sample/code/program2.sas';

 

Can I reference the embedded program2 in program1 in the same EGP?

6 REPLIES 6
Kurt_Bremser
Super User

Since the code runs in the context of the workspace server, which may even be on a physically remote machine, it can not "read" from the project.

But you can conditionally connect nodes in the project flow.

Ishaan
Calcite | Level 5

Thanks Kurt. Conditionally connecting the node didn't work for me.

I have a condition if its true than I want to run program2 and program4. If its false I want program 3 to run.

I applied the condition but all programs are running. I have created 2 separate process flow for time being.

Want to know if we can reference the embedded program.

andreas_lds
Jade | Level 19

You can add condition to programs in process-flow. Referencing embedded programs is not possible.

Kurt_Bremser
Super User

@Ishaan wrote:

Thanks Kurt. Conditionally connecting the node didn't work for me.

I have a condition if its true than I want to run program2 and program4. If its false I want program 3 to run.

 


Example:

Program 1:

data _null_;
if weekday(today()) = 3
then call symput('continue','2');
else call symput('continue','3');
run;

%put &continue;

Program 2:

%put this is program 2;

Program 3:

%put this is program 3;

Program 2 and program 3 are both connected to program1, and both have a condition set for macrovariable &continue equals 2 or 3.

And this is the project log (don't mind the German messages):

27         data _null_;
28         if weekday(today()) = 3
29         then call symput('continue','2');
30         else call symput('continue','3');
31         run;

NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

32         
33         %put &continue;
3
34         
35         GOPTIONS NOACCESSIBLE;
36         %LET _CLIENTTASKLABEL=;
37         %LET _CLIENTPROCESSFLOWNAME=;
38         %LET _CLIENTPROJECTPATH=;
39         %LET _CLIENTPROJECTPATHHOST=;
40         %LET _CLIENTPROJECTNAME=;
41         %LET _SASPROGRAMFILE=;
42         %LET _SASPROGRAMFILEHOST=;
43         
44         ;*';*";*/;quit;run;
45         ODS _ALL_ CLOSE;
46         
47         
48         QUIT; RUN;
49         
Log für "Bedingungsbewertung für Program_2." wurde bei 24.05.2018 12:05:14 auf XXXX ausgeführt
1          ;*';*";*/;quit;run;
2          OPTIONS PAGENO=MIN;
3          data _NULL_; rc = 0;
4          if &continue = 2 then
5             rc = 1;
6          CALL SYMPUT('_egrc', PUT(rc,1.));
7          stop;
8          run;

NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

9          
10         QUIT; RUN;
11         
Log für "Bedingungsbewertung für Program_3." wurde bei 24.05.2018 12:05:15 auf XXXX ausgeführt
1          ;*';*";*/;quit;run;
2          OPTIONS PAGENO=MIN;
3          data _NULL_; rc = 0;
4          if &continue = 3 then
5             rc = 1;
6          CALL SYMPUT('_egrc', PUT(rc,1.));
7          stop;
8          run;

NOTE: DATA statement used (Total process time):
      real time           0.02 seconds
      cpu time            0.00 seconds
      

9          
10         QUIT; RUN;
11         
Log für "Program_3" wurde bei 24.05.2018 12:05:18 auf Allianz ausgeführt
1          ;*';*";*/;quit;run;
2          OPTIONS PAGENO=MIN;
3          %LET _CLIENTTASKLABEL='Program_3';
4          %LET _CLIENTPROCESSFLOWNAME='Prozessfluss';
5          %LET _CLIENTPROJECTPATH='';
6          %LET _CLIENTPROJECTPATHHOST='';
7          %LET _CLIENTPROJECTNAME='';
8          %LET _SASPROGRAMFILE='';
9          %LET _SASPROGRAMFILEHOST='';
10         
11         ODS _ALL_ CLOSE;
12         OPTIONS DEV=ACTIVEX;
13         GOPTIONS XPIXELS=0 YPIXELS=0;
14         ODS LISTING GPATH=&sasworklocation;
15         FILENAME EGSR TEMP;
16         ODS tagsets.sasreport13(ID=EGSR) FILE=EGSR
17             STYLE=Default
18             STYLESHEET=(URL="file:///C:/Program%20Files%20(x86)/SASHome/x86/SASEnterpriseGuide/7.1/Styles/Default.css")
19             NOGTITLE
20             NOGFOOTNOTE
21             GPATH=&sasworklocation
22             ENCODING=UTF8
23             options(rolap="on")
24         ;
NOTE: Writing TAGSETS.SASREPORT13(EGSR) Body file: EGSR
25         
26         GOPTIONS ACCESSIBLE;
27         %put this is program 3;
this is program 3

You can see that nothing from program2 follows the condition evaluation for program 2, while program 3 has been executed.

 

Edit: X-ed out the App server names

SASKiwi
PROC Star

You need to export your programs out of your EG project and copy them to a server accessible folder for you to use %INCLUDE.

CaseySmith
SAS Employee

Since you can't use %include (since embedded programs -- no file for server to reference), rather than referencing Program2 in Program1, you could draw an explicit link (right-click Program2 and select Link to... or hover mouse on right side of Program2 node, click and drag link line to Program1) from Program2 to Program1.  For example:

explicit link.png

Then, whenever you run the project, process flow, or branch, Program2 will always run prior to Program1.

 

Casey


Register today and join us virtually on June 16!
sasglobalforum.com | #SASGF

View now: on-demand content for SAS users

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

Creating Custom Steps in SAS Studio

Check out this tutorial series to learn how to build your own steps in SAS Studio.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 6 replies
  • 6580 views
  • 1 like
  • 5 in conversation