I want to create a macro that reads a value from a SAS table and stores that value in a Global variable.
The purpose is to use this value in SAS DIS JOBs.
I have tested following:
%GLOBAL &myMVar.;
%Macro Get_data(myDataset,myLine,myColumn,myMVar);
data _null_;
set &myDataset.;
if _N_ = &myLine.
then do;
call symputx(symget('myMVar'),&myColumn.);
end;
run;
%MEND Get_data;
*Calling a Macro program;
LIBNAME dtvault BASE "/sasdata/DataVault";
%Get_data(dtvault.codes,1,cod,myMVar);
%put &myMVar;
run;
**I do not have any results. The log: **
*Calling a Macro program;
38 LIBNAME dtvault BASE "/sasdata/DataVault";
NOTE: Libref DTVAULT was successfully assigned as follows:
Engine: BASE
Physical Name: /sasdata/DataVault
39 %Get_data(dtvault.codes,1,cod,myMVar);
NOTE: There were 2 observations read from the data set DTVAULT.CODES.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
40 %put &myMVar;
41 run;
42
43 GOPTIONS NOACCESSIBLE;
44 %LET _CLIENTTASKLABEL=;
45 %LET _CLIENTPROCESSFLOWNAME=;
46 %LET _CLIENTPROJECTPATH=;
2 The SAS System 10:06 Wednesday, October 25, 2017
47 %LET _CLIENTPROJECTPATHHOST=;
48 %LET _CLIENTPROJECTNAME=;
49 %LET _SASPROGRAMFILE=;
50 %LET _SASPROGRAMFILEHOST=;
51
52 ;*';*";*/;quit;run;
53 ODS _ALL_ CLOSE;
54
55
56 QUIT; RUN;
57
Thanks