BookmarkSubscribeRSS Feed
bourbonconde
Calcite | Level 5

I've tried to run a code to create start and stop lists for further analysis, but my SAS code node does not seem to get the macro variables. Even though it shows that the EM_IMPORT_DATA_EMINFO variable has a value.

Screenshot 2022-04-19 at 5.31.41 PM.png

/*----  SCN_CreateStartStopList_AW.sas  -----------------*/
/*----  Create Start List using frequency filtering  ----*/

%global LastParsing LastFilter TermData FTermData 
        StartList MaxDocs MinDocs;

/*!!!!  Edit the following 5 lines  !!!!*/
%let StartList=AWstart;
%let StopList=AWstop;
%let MaxDocs=2000;
%let MinDocs=10;
%let AllowNumbers=N;

%let LastParsing= ;
%let LastFilter= ;

proc print data= &EM_IMPORT_DATA_EMINFO;
run;

proc sql noprint;
  select data into :LastFilter 
  from &EM_IMPORT_DATA_EMINFO 
  where key="LastTextFilter";
  select data into :LastParsing 
  from &EM_IMPORT_DATA_EMINFO 
  where key="LastTextParsing";
quit;

%put NOTE: Last SAS Text Parsing Node: &LastParsing;
%put NOTE: Last Text Filter Node: &LastFilter;

%let TermData=%sysfunc(strip(&EM_LIB)).%sysfunc(strip(&LastParsing))_terms;
%let FTermData=%sysfunc(strip(&EM_LIB)).%sysfunc(strip(&LastFilter))_terms_data;

%EM_REGISTER(KEY=TERMS,TYPE=DATA);
%EM_REPORT(KEY=TERMS,VIEWTYPE=DATA);
%EM_REGISTER(KEY=TERMTRANS,TYPE=DATA);
%EM_REPORT(KEY=TERMS,VIEWTYPE=DATA);

%macro GetData();
   %if %sysfunc(exist(&TermData)) & %sysfunc(exist(&FTermData)) %then %do;
      %EM_REPORT(KEY=TERMS,VIEWTYPE=DATA,AUTODISPLAY=Y);
      data &EM_USER_TERMS;
         set &TermData;
      run;
      proc contents data=&EM_USER_TERMS;
      run;

      %EM_REPORT(KEY=TERMTRANS,VIEWTYPE=DATA,AUTODISPLAY=Y);
      data &EM_USER_TERMTRANS;
         set &FTermData(where=(Keep='Y' and &MinDocs<=NumDocs<=&MaxDocs));
      run;
      proc contents data=&EM_USER_TERMTRANS;
      run;
      proc univariate data=&EM_USER_TERMTRANS;
         var NumDocs Weight;
      run;
 
      proc sql;
         create table &StartList as
            select a.KEY, a.Role, a.TERM, b.Weight
            from &EM_USER_TERMS a, &EM_USER_TERMTRANS b
            where a.KEY=b.KEY and
                  b.Weight>0;
      quit;
      %if (&AllowNumbers ne Y) %then %do;
         data &StartList;
            set &StartList;
            if ('0'<=substr(TERM,1,1)<='9') then delete;
         run;
      %end;
      proc sql;
         create table &StopList as
            select a.Term, a.Role
            from &TermData a, &EM_USER_TERMTRANS b
            where a.KEY=b.KEY and
                  a.KEY not in
                    (select c.KEY from &StartList c);
      quit;
      data &StartList;
         set &StartList;
         drop KEY;
      run;
      proc sort data=&StartList nodupkey;
         by Term Role;
      run;
      proc contents data=&StartList;
      run;
      proc sort data=&StopList nodupkey;
         by Term Role;
      run;
      proc contents data=&StopList;
      run;
   %end;
%mend GetData;

%GetData();

 

LOG:

50 The SAS System Tuesday, 19 April 2022 10:50:0
0

57534 %let SYSCC=0;
57535 %let SYsrc=0;
57536 %let EMEXCEPTIONSTRING=;
57537 %let SYSMSG=;
57538 filename _temp catalog "sashelp.emutil.em_loadmacros.source";
57539 %inc _temp;
NOTE: %INCLUDE (level 1) file _TEMP is file SASHELP.EMUTIL.EM_LOADMACROS.SOURCE.
57540 +%macro em_loadmacros(emlib=, nodeid=, vars=Y, ign=);
57541 + %global em_lib em_nodeid em_vars em_loadign;
57542 + %let em_lib = %upcase(&emlib);
57543 + %let em_nodeid = &nodeid;
57544 + %let em_vars = &vars;
57545 + %let em_loadign = &ign;
57546 + proc display c=sashelp.emutil.loadmacros.scl;
57547 + run;
57548 + quit;
57549 +%mend em_loadmacros;
NOTE: %INCLUDE (level 1) ending.
57550 filename _temp;
NOTE: Fileref _TEMP has been deassigned.
57551 filename _temp catalog 'sashelp.emutil.em_refreshexport.source';
57552 %inc _temp;
NOTE: %INCLUDE (level 1) file _TEMP is file SASHELP.EMUTIL.EM_REFRESHEXPORT.SOURCE.
57553 +%macro em_refreshExport(emlib=, nodeid=);
57554 + %global em_lib em_nodeid;
57555 + %let em_lib = %upcase(&emlib);
57556 + %let em_nodeid = &nodeid;
57557 + proc display c=sashelp.emutil.refreshexport.scl;
57558 + run;
57559 + quit;
57560 +%mend em_refreshExport;
NOTE: %INCLUDE (level 1) ending.
57561 filename _temp;
NOTE: Fileref _TEMP has been deassigned.
57562 %em_loadmacros(emlib=EMWS1, nodeid=EMCODE);/*---- SCN_CreateStartStopList_AW.sas -----------------*/

NOTE: PROCEDURE DISPLAY used (Total process time):
real time 0.32 seconds
user cpu time 0.27 seconds
system cpu time 0.07 seconds
memory 2455.50k
OS Memory 63912.00k
Timestamp 19/04/2022 11:28:56 AM
Step Count 114 Switch Count 3
Page Faults 0
Page Reclaims 6809
Page Swaps 0
Voluntary Context Switches 1390
Involuntary Context Switches 3
Block Input Operations 0
Block Output Operations 2120

61962 /*---- Create Start List using frequency filtering ----*/
61963
61964 %global LastParsing LastFilter TermData FTermData
61965 StartList MaxDocs MinDocs;
61966
61967 /*!!!! Edit the following 5 lines !!!!*/
61968 %let StartList=AWstart;
61969 %let StopList=AWstop;
61970 %let MaxDocs=2000;
61971 %let MinDocs=10;
61972 %let AllowNumbers=N;
61973
61974 %let LastParsing= ;
61975 %let LastFilter= ;
61976
61977 proc print data= &EM_IMPORT_DATA_EMINFO;
                                     _
                                    22
                                    200
WARNING: Apparent symbolic reference EM_IMPORT_DATA_EMINFO not resolved.
ERROR: File WORK.EM_IMPORT_DATA_EMINFO.DATA does not exist.
ERROR 22-322: Expecting a name.
ERROR 200-322: The symbol is not recognized and will be ignored.
61978 run;

NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE PRINT used (Total process time):
real time 0.00 seconds
user cpu time 0.00 seconds
system cpu time 0.00 seconds
memory 74.43k
OS Memory 62876.00k
Timestamp 19/04/2022 11:28:56 AM
Step Count 115 Switch Count 0
Page Faults 0
Page Reclaims 16
Page Swaps 0
Voluntary Context Switches 0
Involuntary Context Switches 0
Block Input Operations 0
Block Output Operations 0

61979


61980 proc sql noprint;
61981 select data into :LastFilter
61982 from &EM_IMPORT_DATA_EMINFO
WARNING: Apparent symbolic reference EM_IMPORT_DATA_EMINFO not resolved.
61982 from &EM_IMPORT_DATA_EMINFO
_
22
ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string, (, CONNECTION, DICTIONARY.

61982 from &EM_IMPORT_DATA_EMINFO
_
200
ERROR 200-322: The symbol is not recognized and will be ignored.

61983 where key="LastTextFilter";
NOTE: PROC SQL set option NOEXEC and will continue to check the syntax of statements.
61984 select data into :LastParsing
61985 from &EM_IMPORT_DATA_EMINFO
WARNING: Apparent symbolic reference EM_IMPORT_DATA_EMINFO not resolved.
61985 from &EM_IMPORT_DATA_EMINFO
_
22
ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string, (, CONNECTION, DICTIONARY.

61985 from &EM_IMPORT_DATA_EMINFO
_
200
ERROR 200-322: The symbol is not recognized and will be ignored.

61986 where key="LastTextParsing";
61987 quit;
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE SQL used (Total process time):
real time 0.00 seconds
user cpu time 0.00 seconds
system cpu time 0.00 seconds
memory 49.34k
OS Memory 62876.00k
Timestamp 19/04/2022 11:28:56 AM
Step Count 116 Switch Count 0
Page Faults 0
Page Reclaims 14
Page Swaps 0
Voluntary Context Switches 0
Involuntary Context Switches 0
Block Input Operations 0
Block Output Operations 8

61988
61989 %put NOTE: Last SAS Text Parsing Node: &LastParsing;
NOTE: Last SAS Text Parsing Node:
61990 %put NOTE: Last Text Filter Node: &LastFilter;
NOTE: Last Text Filter Node:
61991
61992 %let TermData=%sysfunc(strip(&EM_LIB)).%sysfunc(strip(&LastParsing))_terms;
ERROR: The function STRIP referenced by the %SYSFUNC or %QSYSFUNC macro function has too few arguments.
61993 %let FTermData=%sysfunc(strip(&EM_LIB)).%sysfunc(strip(&LastFilter))_terms_data;
ERROR: The function STRIP referenced by the %SYSFUNC or %QSYSFUNC macro function has too few arguments.
61994
61995 %EM_REGISTER(KEY=TERMS,TYPE=DATA);

 

NOTE: There were 6 observations read from the data set WORK.EM_USER_KEY.
NOTE: The data set WORK.EM_USER_KEY has 7 observations and 9 variables.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
user cpu time 0.00 seconds
system cpu time 0.00 seconds
memory 818.93k
OS Memory 63396.00k
Timestamp 19/04/2022 11:28:56 AM
Step Count 117 Switch Count 2
Page Faults 0
Page Reclaims 130
Page Swaps 0
Voluntary Context Switches 9
Involuntary Context Switches 0
Block Input Operations 0
Block Output Operations 264

61996 %EM_REPORT(KEY=TERMS,VIEWTYPE=DATA);

NOTE: There were 792 observations read from the data set WORK.EM_USER_REPORT.
NOTE: The data set WORK.EM_USER_REPORT has 924 observations and 4 variables.
NOTE: DATA statement used (Total process time):
real time 0.02 seconds
user cpu time 0.03 seconds
system cpu time 0.00 seconds
memory 1869.81k
OS Memory 64932.00k
Timestamp 19/04/2022 11:28:56 AM
Step Count 118 Switch Count 2
Page Faults 0
Page Reclaims 392
Page Swaps 0
Voluntary Context Switches 9
Involuntary Context Switches 1
Block Input Operations 0
Block Output Operations 1032

61997 %EM_REGISTER(KEY=TERMTRANS,TYPE=DATA);

NOTE: There were 7 observations read from the data set WORK.EM_USER_KEY.
NOTE: The data set WORK.EM_USER_KEY has 8 observations and 9 variables.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
user cpu time 0.00 seconds
system cpu time 0.00 seconds
memory 819.03k
OS Memory 63396.00k
Timestamp 19/04/2022 11:28:56 AM
Step Count 119 Switch Count 2
Page Faults 0
Page Reclaims 123
Page Swaps 0
Voluntary Context Switches 9
Involuntary Context Switches 0
Block Input Operations 0
Block Output Operations 264

61998 %EM_REPORT(KEY=TERMS,VIEWTYPE=DATA);

NOTE: There were 924 observations read from the data set WORK.EM_USER_REPORT.
NOTE: The data set WORK.EM_USER_REPORT has 1056 observations and 4 variables.
NOTE: DATA statement used (Total process time):
real time 0.02 seconds
user cpu time 0.02 seconds
system cpu time 0.00 seconds
memory 1997.81k
OS Memory 65060.00k
Timestamp 19/04/2022 11:28:56 AM
Step Count 120 Switch Count 2
Page Faults 0
Page Reclaims 407
Page Swaps 0
Voluntary Context Switches 9
Involuntary Context Switches 0
Block Input Operations 0
Block Output Operations 1032

61999
62000 %macro GetData();
62001 %if %sysfunc(exist(&TermData)) & %sysfunc(exist(&FTermData)) %then %do;
62002 %EM_REPORT(KEY=TERMS,VIEWTYPE=DATA,AUTODISPLAY=Y);
62003 data &EM_USER_TERMS;
62004 set &TermData;
62005 run;
62006 proc contents data=&EM_USER_TERMS;
62007 run;
62008
62009 %EM_REPORT(KEY=TERMTRANS,VIEWTYPE=DATA,AUTODISPLAY=Y);
62010 data &EM_USER_TERMTRANS;
62011 set &FTermData(where=(Keep='Y' and &MinDocs<=NumDocs<=&MaxDocs));
62012 run;
62013 proc contents data=&EM_USER_TERMTRANS;
62014 run;
62015 proc univariate data=&EM_USER_TERMTRANS;
62016 var NumDocs Weight;
62017 run;
62018
62019 proc sql;
62020 create table &StartList as
62021 select a.KEY, a.Role, a.TERM, b.Weight
62022 from &EM_USER_TERMS a, &EM_USER_TERMTRANS b
62023 where a.KEY=b.KEY and
62024 b.Weight>0;
62025 quit;
62026 %if (&AllowNumbers ne Y) %then %do;
62027 data &StartList;
62028 set &StartList;
62029 if ('0'<=substr(TERM,1,1)<='9') then delete;
62030 run;
62031 %end;
62032 proc sql;
62033 create table &StopList as
62034 select a.Term, a.Role
62035 from &TermData a, &EM_USER_TERMTRANS b
62036 where a.KEY=b.KEY and
62037 a.KEY not in
62038 (select c.KEY from &StartList c);
62039 quit;
62040 data &StartList;
62041 set &StartList;
62042 drop KEY;
62043 run;
62044 proc sort data=&StartList nodupkey;
62045 by Term Role;
62046 run;
62047 proc contents data=&StartList;
62048 run;
62049 proc sort data=&StopList nodupkey;
62050 by Term Role;
62051 run;
62052 proc contents data=&StopList;
62053 run;
62054 %end;
62055 %mend GetData;
62056
62057 %GetData();
62058
62059 /*; *"; *'; */;

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

How to choose a machine learning algorithm

Use this tutorial as a handy guide to weigh the pros and cons of these commonly used machine learning algorithms.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 0 replies
  • 462 views
  • 0 likes
  • 1 in conversation