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?
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.
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.
You can add condition to programs in process-flow. Referencing embedded programs is not possible.
@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
You need to export your programs out of your EG project and copy them to a server accessible folder for you to use %INCLUDE.
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:
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
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
What’s the difference between SAS Enterprise Guide and SAS Studio? How are they similar? Just ask SAS’ Danny Modlin.
Find more tutorials on the SAS Users YouTube channel.