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
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
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.
Ready to level-up your skills? Choose your own adventure.