BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
JohnX
Fluorite | Level 6

Hi everyone,

I have an issue with the following, within a loop, within a macro: 

data &help_zeros_3;
set ∈
where &get;
run;

the code runs perfectly, if I run it alone, but within the macro, it throws an error.

 

Here is the full code:

 

%macro zeros_numVars_by(work_dir, dataset_in, dataset_out, by) / store;

	%let in = %sysfunc(catx(.,&work_dir,&dataset_in));
	%let out = %sysfunc(catx(.,&work_dir,&dataset_out));
	
	%let group = %sysfunc(tranwrd(&by,%str( ) ,%str(, )));
	%let nList = %sysfunc(countw(&by,%str( )));
	*%put &group;

	/*	Free the datasets and macro variables	*/
	PROC DELETE data=&in &out (gennum=all);
	RUN;

	%let help_sql_zeros= %sysfunc(catx(.,&work_dir,help_sql_zeros));
	%let help_zeros_0 = %sysfunc(catx(.,&work_dir,help_zeros_0));
	%let help_zeros_1 = %sysfunc(catx(.,&work_dir,help_zeros_1));
	%let help_zeros_2 = %sysfunc(catx(.,&work_dir,help_zeros_2));
	%let help_zeros_3 = %sysfunc(catx(.,&work_dir,help_zeros_3));
	%let help_zeros_4 = %sysfunc(catx(.,&work_dir,help_zeros_4));
	%let help_zeros_5 = %sysfunc(catx(.,&work_dir,help_zeros_5));
	%let help_zeros_6 = %sysfunc(catx(.,&work_dir,help_zeros_6));

	/*	Free the intermediary datasets	*/
	PROC DELETE data=&out &help_zeros_0 &help_zeros_1 &help_zeros_2 &help_zeros_3 &help_zeros_4 &help_zeros_5 &help_zeros_6 (gennum=all);
	RUN;

	/*	Treat the case when there is no by condition	*/
	%if	&nList=0 %then %do;
		%goto noByCondition;
	%end;
	/*	then the case when the by condition is not empty	*/
	%else %do;


		/*	Get the possible combinations of the by variables, and then the number of combinations	*/
		proc sql;
			create table &help_sql_zeros as 
				select &group,
						count(*) as Nobs
				from &in 
					group by &group;
		quit;

		%let dsid=%sysfunc(open(&help_sql_zeros));
		%let nobs=%sysfunc(attrn(&dsid,nobs));
		%let dsid=%sysfunc(close(&dsid));
		%put nobs= &nobs;

		/* Then I go through the number of possible combinations and compute for each of them	*/
		%do i=1 %to &nobs;

			/*	I treat them 1 by 1	*/
			data &help_zeros_0;
				set &help_sql_zeros (drop=Nobs obs=&i);
			run;
			
			/* I need to create the condition for my subset	later in the code to get the number of 0s	*/
			proc transpose data=&help_zeros_0 out=&help_zeros_1;
				var _all_;
			run;

			data &help_zeros_2(keep=var);
				set &help_zeros_1;
				var = catx('=', _NAME_, cats('"',COL1,'"') );
			run;

			/* Here the condition is completed	*/
			proc sql noprint;
				select var INTO: get separated BY ' and '
				from &help_zeros_2;
			quit;
			*%put &get;

			/*	Here I do my subset	*/
			data &help_zeros_3;
				set ∈
				where &get;
			run;

			proc sort data=&help_zeros_3 out=&help_zeros_4;
				by &by;
			run;

			PROC TRANSPOSE data=&help_zeros_4 out=&help_zeros_5;
				by &by;
			RUN;
			
			/* I compute the number of 0s for my subset	*/
			DATA &help_zeros_6 (keep = &by _NAME_ _LABEL_ NZEROS i);
				set &help_zeros_5;
				array list{*} COL: ;  			
				NZEROS=0;
				do i=1 to dim(list);
					if list{i}=0 then NZEROS=sum(NZEROS,1);
				end;
			RUN;

			/* I append the results for each subset, to have them for the full dataset	*/
			PROC APPEND base=&out data=&help_zeros_6;
			RUN;

			/*	Free the intermediary datasets and macro variable	*/
			PROC DELETE data=&help_zeros_0 &help_zeros_1 &help_zeros_2 &help_zeros_3 &help_zeros_4 &help_zeros_5 &help_zeros_6 (gennum=all);
			RUN;

			%symdel &get;

		%end;

		/*	When I am finished, I jump to the end	*/
		%goto exit;

	%end;

/****************************************************************************************************/
/* Original code without by statement: I end here when the by statement is empty	*/

%noByCondition:

	%let help = %sysfunc(catx(.,&work_dir,HELP));

	PROC TRANSPOSE data=&in out=&help;
	RUN;

	DATA &out (keep = _NAME_ _LABEL_ NZEROS i);
		set &help;
		array list{*} COL: ;  			
		NZEROS=0;
		do i=1 to dim(list);
			if list{i}=0 then NZEROS=sum(NZEROS,1);
		end;
	RUN;

/ Free the intermediary dataset */
PROC DELETE data=&help (gennum=all);
RUN; /****************************************************************************************************/ %exit: %mend;

 

 

The error is coming right away, during the first iteration.

 

According to the log, it seems it does not like the "set" (see below the full log, set is underlined, first errors highlighted in red):

 

 

1                                                          The SAS System                             09:31 Wednesday, June 17, 2020

1          ;*';*";*/;quit;run;
2          OPTIONS PAGENO=MIN;
3          %LET _CLIENTTASKLABEL='zeros_numVars_by';
4          %LET _CLIENTPROJECTPATH='Q:\StrategyTeam\StrategyTeamFolders\Didier\Project_Macros_autocalls.egp';
5          %LET _CLIENTPROJECTNAME='Project_Macros_autocalls.egp';
6          %LET _SASPROGRAMFILE=;
7          
8          ODS _ALL_ CLOSE;
9          OPTIONS DEV=ACTIVEX;
10         GOPTIONS XPIXELS=0 YPIXELS=0;
11         FILENAME EGSR TEMP;
12         ODS tagsets.sasreport13(ID=EGSR) FILE=EGSR
13             STYLE=HtmlBlue
14             STYLESHEET=(URL="file:///C:/Program%20Files/SASHome/SASEnterpriseGuide/7.1/Styles/HtmlBlue.css")
15             NOGTITLE
16             NOGFOOTNOTE
17             GPATH=&sasworklocation
SYMBOLGEN:  Macro variable SASWORKLOCATION resolves to 
            "/data/SASWork/dev/SAS_work0D2B00002DA2_rhsascalpd2/SAS_workB60400002DA2_rhsascalpd2/"
18             ENCODING=UTF8
19             options(rolap="on")
20         ;
NOTE: Writing TAGSETS.SASREPORT13(EGSR) Body file: EGSR
21         
22         GOPTIONS ACCESSIBLE;
23         
24         	options mprint symbolgen mlogic;
25         	%zeros_numVars_by(&work_dir, &dataset_in, &dataset_out, &by);
MLOGIC(ZEROS_NUMVARS_BY):  Beginning execution.
MLOGIC(ZEROS_NUMVARS_BY):  Stored compiled macro in libref LIB_WORK compiled 17JUN20:10:06:55 with V9.4.
SYMBOLGEN:  Macro variable WORK_DIR resolves to LIB_WORK
SYMBOLGEN:  Macro variable DATASET_IN resolves to BASEX
SYMBOLGEN:  Macro variable DATASET_OUT resolves to NZEROS_BY
SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
MLOGIC(ZEROS_NUMVARS_BY):  Parameter WORK_DIR has value LIB_WORK
MLOGIC(ZEROS_NUMVARS_BY):  Parameter DATASET_IN has value BASEX
MLOGIC(ZEROS_NUMVARS_BY):  Parameter DATASET_OUT has value NZEROS_BY
MLOGIC(ZEROS_NUMVARS_BY):  Parameter BY has value APPLICATION_TYPE PRODUCT_TYPE
MLOGIC(ZEROS_NUMVARS_BY):  %LET (variable name is IN)
SYMBOLGEN:  Macro variable WORK_DIR resolves to LIB_WORK
SYMBOLGEN:  Macro variable DATASET_IN resolves to BASEX
MLOGIC(ZEROS_NUMVARS_BY):  %LET (variable name is OUT)
SYMBOLGEN:  Macro variable WORK_DIR resolves to LIB_WORK
SYMBOLGEN:  Macro variable DATASET_OUT resolves to NZEROS_BY
MLOGIC(ZEROS_NUMVARS_BY):  %LET (variable name is GROUP)
SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
MLOGIC(ZEROS_NUMVARS_BY):  %LET (variable name is NLIST)
SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
MLOGIC(ZEROS_NUMVARS_BY):  %PUT &group
SYMBOLGEN:  Macro variable GROUP resolves to APPLICATION_TYPE, PRODUCT_TYPE
APPLICATION_TYPE, PRODUCT_TYPE
MPRINT(ZEROS_NUMVARS_BY):   * PROC DELETE data=&in &out (gennum=all);
MPRINT(ZEROS_NUMVARS_BY):   RUN;
MLOGIC(ZEROS_NUMVARS_BY):  %LET (variable name is HELP_SQL_ZEROS)
SYMBOLGEN:  Macro variable WORK_DIR resolves to LIB_WORK
MLOGIC(ZEROS_NUMVARS_BY):  %LET (variable name is HELP_ZEROS_0)
SYMBOLGEN:  Macro variable WORK_DIR resolves to LIB_WORK
MLOGIC(ZEROS_NUMVARS_BY):  %LET (variable name is HELP_ZEROS_1)
2                                                          The SAS System                             09:31 Wednesday, June 17, 2020

SYMBOLGEN:  Macro variable WORK_DIR resolves to LIB_WORK
MLOGIC(ZEROS_NUMVARS_BY):  %LET (variable name is HELP_ZEROS_2)
SYMBOLGEN:  Macro variable WORK_DIR resolves to LIB_WORK
MLOGIC(ZEROS_NUMVARS_BY):  %LET (variable name is HELP_ZEROS_3)
SYMBOLGEN:  Macro variable WORK_DIR resolves to LIB_WORK
MLOGIC(ZEROS_NUMVARS_BY):  %LET (variable name is HELP_ZEROS_4)
SYMBOLGEN:  Macro variable WORK_DIR resolves to LIB_WORK
MLOGIC(ZEROS_NUMVARS_BY):  %LET (variable name is HELP_ZEROS_5)
SYMBOLGEN:  Macro variable WORK_DIR resolves to LIB_WORK
MLOGIC(ZEROS_NUMVARS_BY):  %LET (variable name is HELP_ZEROS_6)
SYMBOLGEN:  Macro variable WORK_DIR resolves to LIB_WORK
SYMBOLGEN:  Macro variable OUT resolves to LIB_WORK.NZEROS_BY
SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
SYMBOLGEN:  Macro variable HELP_ZEROS_3 resolves to LIB_WORK.help_zeros_3
SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6
MPRINT(ZEROS_NUMVARS_BY):   PROC DELETE data=LIB_WORK.NZEROS_BY LIB_WORK.help_zeros_0 LIB_WORK.help_zeros_1 LIB_WORK.help_zeros_2 
LIB_WORK.help_zeros_3 LIB_WORK.help_zeros_4 LIB_WORK.help_zeros_5 LIB_WORK.help_zeros_6 (gennum=all);
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: Deleting LIB_WORK.NZEROS_BY (memtype=DATA).
WARNING: File LIB_WORK.HELP_ZEROS_0.DATA does not exist.
WARNING: File LIB_WORK.HELP_ZEROS_1.DATA does not exist.
WARNING: File LIB_WORK.HELP_ZEROS_2.DATA does not exist.
WARNING: File LIB_WORK.HELP_ZEROS_3.DATA does not exist.
WARNING: File LIB_WORK.HELP_ZEROS_4.DATA does not exist.
WARNING: File LIB_WORK.HELP_ZEROS_5.DATA does not exist.
WARNING: File LIB_WORK.HELP_ZEROS_6.DATA does not exist.
NOTE: PROCEDURE DELETE used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

SYMBOLGEN:  Macro variable NLIST resolves to 2
MLOGIC(ZEROS_NUMVARS_BY):  %IF condition &nList=0 is FALSE
MPRINT(ZEROS_NUMVARS_BY):   proc sql;
SYMBOLGEN:  Macro variable HELP_SQL_ZEROS resolves to LIB_WORK.help_sql_zeros
SYMBOLGEN:  Macro variable GROUP resolves to APPLICATION_TYPE, PRODUCT_TYPE
SYMBOLGEN:  Macro variable IN resolves to LIB_WORK.BASEX
SYMBOLGEN:  Macro variable GROUP resolves to APPLICATION_TYPE, PRODUCT_TYPE
MPRINT(ZEROS_NUMVARS_BY):   create table LIB_WORK.help_sql_zeros as select APPLICATION_TYPE, PRODUCT_TYPE, count(*) as Nobs from 
LIB_WORK.BASEX group by APPLICATION_TYPE, PRODUCT_TYPE;
NOTE: Compressing data set LIB_WORK.HELP_SQL_ZEROS increased size by 100.00 percent. 
      Compressed is 2 pages; un-compressed would require 1 pages.
NOTE: Table LIB_WORK.HELP_SQL_ZEROS created, with 9 rows and 3 columns.

MPRINT(ZEROS_NUMVARS_BY):   quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.23 seconds
      cpu time            0.22 seconds
      

MLOGIC(ZEROS_NUMVARS_BY):  %LET (variable name is DSID)
SYMBOLGEN:  Macro variable HELP_SQL_ZEROS resolves to LIB_WORK.help_sql_zeros
MLOGIC(ZEROS_NUMVARS_BY):  %LET (variable name is NOBS)
3                                                          The SAS System                             09:31 Wednesday, June 17, 2020

SYMBOLGEN:  Macro variable DSID resolves to 1
MLOGIC(ZEROS_NUMVARS_BY):  %LET (variable name is DSID)
SYMBOLGEN:  Macro variable DSID resolves to 1
MLOGIC(ZEROS_NUMVARS_BY):  %PUT nobs= &nobs
SYMBOLGEN:  Macro variable NOBS resolves to 9
nobs= 9
SYMBOLGEN:  Macro variable NOBS resolves to 9
MLOGIC(ZEROS_NUMVARS_BY):  %DO loop beginning; index variable I; start value is 1; stop value is 9; by value is 1.  
SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
MPRINT(ZEROS_NUMVARS_BY):   data LIB_WORK.help_zeros_0;
SYMBOLGEN:  Macro variable HELP_SQL_ZEROS resolves to LIB_WORK.help_sql_zeros
SYMBOLGEN:  Macro variable I resolves to 1
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_sql_zeros (drop=Nobs obs=1);
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_0 because compression overhead would increase the size of the data 
      set.
NOTE: There were 1 observations read from the data set LIB_WORK.HELP_SQL_ZEROS.
NOTE: The data set LIB_WORK.HELP_ZEROS_0 has 1 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
MPRINT(ZEROS_NUMVARS_BY):   proc transpose data=LIB_WORK.help_zeros_0 out=LIB_WORK.help_zeros_1;
MPRINT(ZEROS_NUMVARS_BY):   var _all_;
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: There were 1 observations read from the data set LIB_WORK.HELP_ZEROS_0.
NOTE: The data set LIB_WORK.HELP_ZEROS_1 has 2 observations and 3 variables.
NOTE: Compressing data set LIB_WORK.HELP_ZEROS_1 increased size by 100.00 percent. 
      Compressed is 2 pages; un-compressed would require 1 pages.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
MPRINT(ZEROS_NUMVARS_BY):   data LIB_WORK.help_zeros_2(keep=var);
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_zeros_1;
MPRINT(ZEROS_NUMVARS_BY):   var = catx('=', _NAME_, cats('"',COL1,'"') );
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: There were 2 observations read from the data set LIB_WORK.HELP_ZEROS_1.
NOTE: The data set LIB_WORK.HELP_ZEROS_2 has 2 observations and 1 variables.
NOTE: Compressing data set LIB_WORK.HELP_ZEROS_2 increased size by 100.00 percent. 
      Compressed is 2 pages; un-compressed would require 1 pages.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

MPRINT(ZEROS_NUMVARS_BY):   proc sql noprint;
SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
MPRINT(ZEROS_NUMVARS_BY):   select var INTO: get separated BY ' and ' from LIB_WORK.help_zeros_2;
4                                                          The SAS System                             09:31 Wednesday, June 17, 2020

MPRINT(ZEROS_NUMVARS_BY):   quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.00 seconds
      cpu time            0.02 seconds
      

MLOGIC(ZEROS_NUMVARS_BY):  %PUT &get
SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
MPRINT(ZEROS_NUMVARS_BY):   * data &help_zeros_3;
SYMBOLGEN:  Macro variable IN resolves to LIB_WORK.BASEX
NOTE: Line generated by the invoked macro "ZEROS_NUMVARS_BY".
25                  data &help_zeros_3;     set ∈     where &get;    run;     proc sort data=&help_zeros_3 out=&help_zeros_4;
                                            ___
                                            180
25       !  by &by;    run;     PROC TRANSPOSE data=&help_zeros_4 out=&help_zeros_5;     by &by;    RUN;            DATA
25       ! &help_zeros_6 (keep =
ERROR 180-322: Statement is not valid or it is used out of proper order.

MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.BASEX;

SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
NOTE: Line generated by the invoked macro "ZEROS_NUMVARS_BY".
25                  data &help_zeros_3;     set ∈     where &get;    run;     proc sort data=&help_zeros_3 out=&help_zeros_4;
                                                         _____
                                                         180
25       !  by &by;    run;     PROC TRANSPOSE data=&help_zeros_4 out=&help_zeros_5;     by &by;    RUN;            DATA
25       ! &help_zeros_6 (keep =
ERROR 180-322: Statement is not valid or it is used out of proper order.

MPRINT(ZEROS_NUMVARS_BY):   where APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE";

MPRINT(ZEROS_NUMVARS_BY):   run;
SYMBOLGEN:  Macro variable HELP_ZEROS_3 resolves to LIB_WORK.help_zeros_3
ERROR: File LIB_WORK.HELP_ZEROS_3.DATA does not exist.
SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
MPRINT(ZEROS_NUMVARS_BY):   proc sort data=LIB_WORK.help_zeros_3 out=LIB_WORK.help_zeros_4;
SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
MPRINT(ZEROS_NUMVARS_BY):   by APPLICATION_TYPE PRODUCT_TYPE;
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set LIB_WORK.HELP_ZEROS_4 may be incomplete.  When this step was stopped there were 0 observations and 0 
         variables.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_4 because compression overhead would increase the size of the data 
set.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
MPRINT(ZEROS_NUMVARS_BY):   PROC TRANSPOSE data=LIB_WORK.help_zeros_4 out=LIB_WORK.help_zeros_5;
SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
ERROR: Variable APPLICATION_TYPE not found.
MPRINT(ZEROS_NUMVARS_BY):   by APPLICATION_TYPE PRODUCT_TYPE;
ERROR: Variable PRODUCT_TYPE not found.
5                                                          The SAS System                             09:31 Wednesday, June 17, 2020

MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set LIB_WORK.HELP_ZEROS_5 may be incomplete.  When this step was stopped there were 0 observations and 0 
         variables.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_5 because compression overhead would increase the size of the data 
set.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6


SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
MPRINT(ZEROS_NUMVARS_BY):   DATA LIB_WORK.help_zeros_6 (keep = APPLICATION_TYPE PRODUCT_TYPE _NAME_ _LABEL_ NZEROS i);
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_zeros_5;
MPRINT(ZEROS_NUMVARS_BY):   array list{*} COL: ;
WARNING: Defining an array with zero elements.
MPRINT(ZEROS_NUMVARS_BY):   NZEROS=0;
MPRINT(ZEROS_NUMVARS_BY):   do i=1 to dim(list);
MPRINT(ZEROS_NUMVARS_BY):   if list{i}=0 then NZEROS=sum(NZEROS,1);
MPRINT(ZEROS_NUMVARS_BY):   end;
MPRINT(ZEROS_NUMVARS_BY):   RUN;

WARNING: The variable APPLICATION_TYPE in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable PRODUCT_TYPE in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable _NAME_ in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable _LABEL_ in the DROP, KEEP, or RENAME list has never been referenced.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_6 because compression overhead would increase the size of the data 
      set.
NOTE: There were 0 observations read from the data set LIB_WORK.HELP_ZEROS_5.
NOTE: The data set LIB_WORK.HELP_ZEROS_6 has 0 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable OUT resolves to LIB_WORK.NZEROS_BY
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6
MPRINT(ZEROS_NUMVARS_BY):   PROC APPEND base=LIB_WORK.NZEROS_BY data=LIB_WORK.help_zeros_6;
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: Appending LIB_WORK.HELP_ZEROS_6 to LIB_WORK.NZEROS_BY.
NOTE: BASE data set does not exist. DATA file is being copied to BASE file.
NOTE: Compression was disabled for data set LIB_WORK.NZEROS_BY because compression overhead would increase the size of the data set.
NOTE: There were 0 observations read from the data set LIB_WORK.HELP_ZEROS_6.
NOTE: The data set LIB_WORK.NZEROS_BY has 0 observations and 2 variables.
NOTE: PROCEDURE APPEND used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
SYMBOLGEN:  Macro variable HELP_ZEROS_3 resolves to LIB_WORK.help_zeros_3
6                                                          The SAS System                             09:31 Wednesday, June 17, 2020

SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6
MPRINT(ZEROS_NUMVARS_BY):   PROC DELETE data=LIB_WORK.help_zeros_0 LIB_WORK.help_zeros_1 LIB_WORK.help_zeros_2 
LIB_WORK.help_zeros_3 LIB_WORK.help_zeros_4 LIB_WORK.help_zeros_5 LIB_WORK.help_zeros_6 (gennum=all);
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: Deleting LIB_WORK.HELP_ZEROS_0 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_1 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_2 (memtype=DATA).
WARNING: File LIB_WORK.HELP_ZEROS_3.DATA does not exist.
NOTE: Deleting LIB_WORK.HELP_ZEROS_4 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_5 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_6 (memtype=DATA gennum=ALL).
NOTE: PROCEDURE DELETE used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

MLOGIC(ZEROS_NUMVARS_BY):  %SYMDEL  &GET
SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
WARNING: Attempt to delete macro variable APPLICATION_TYPE failed. Variable not found.
ERROR: Macro variable name = must start with a letter or underscore.
ERROR: Macro variable name "PERSONAL" must start with a letter or underscore.
WARNING: Attempt to delete macro variable AND failed. Variable not found.
WARNING: Attempt to delete macro variable PRODUCT_TYPE failed. Variable not found.
ERROR: Macro variable name = must start with a letter or underscore.
ERROR: Macro variable name "ASSET FINANCE" must start with a letter or underscore.
MLOGIC(ZEROS_NUMVARS_BY):  %DO loop index variable I is now 2; loop will iterate again.
SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
MPRINT(ZEROS_NUMVARS_BY):   data LIB_WORK.help_zeros_0;
SYMBOLGEN:  Macro variable HELP_SQL_ZEROS resolves to LIB_WORK.help_sql_zeros
SYMBOLGEN:  Macro variable I resolves to 2
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_sql_zeros (drop=Nobs obs=2);
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_0 because compression overhead would increase the size of the data 
      set.
NOTE: There were 2 observations read from the data set LIB_WORK.HELP_SQL_ZEROS.
NOTE: The data set LIB_WORK.HELP_ZEROS_0 has 2 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
MPRINT(ZEROS_NUMVARS_BY):   proc transpose data=LIB_WORK.help_zeros_0 out=LIB_WORK.help_zeros_1;
MPRINT(ZEROS_NUMVARS_BY):   var _all_;
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: There were 2 observations read from the data set LIB_WORK.HELP_ZEROS_0.
NOTE: The data set LIB_WORK.HELP_ZEROS_1 has 2 observations and 4 variables.
NOTE: Compressing data set LIB_WORK.HELP_ZEROS_1 increased size by 100.00 percent. 
      Compressed is 2 pages; un-compressed would require 1 pages.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
7                                                          The SAS System                             09:31 Wednesday, June 17, 2020

      

SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
MPRINT(ZEROS_NUMVARS_BY):   data LIB_WORK.help_zeros_2(keep=var);
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_zeros_1;
MPRINT(ZEROS_NUMVARS_BY):   var = catx('=', _NAME_, cats('"',COL1,'"') );
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: There were 2 observations read from the data set LIB_WORK.HELP_ZEROS_1.
NOTE: The data set LIB_WORK.HELP_ZEROS_2 has 2 observations and 1 variables.
NOTE: Compressing data set LIB_WORK.HELP_ZEROS_2 increased size by 100.00 percent. 
      Compressed is 2 pages; un-compressed would require 1 pages.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

MPRINT(ZEROS_NUMVARS_BY):   proc sql noprint;
SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
MPRINT(ZEROS_NUMVARS_BY):   select var INTO: get separated BY ' and ' from LIB_WORK.help_zeros_2;
MPRINT(ZEROS_NUMVARS_BY):   quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

MLOGIC(ZEROS_NUMVARS_BY):  %PUT &get
SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
MPRINT(ZEROS_NUMVARS_BY):   * data &help_zeros_3;
SYMBOLGEN:  Macro variable IN resolves to LIB_WORK.BASEX
NOTE: Line generated by the invoked macro "ZEROS_NUMVARS_BY".
25                  data &help_zeros_3;     set ∈     where &get;    run;     proc sort data=&help_zeros_3 out=&help_zeros_4;
                                            ___
                                            180
25       !  by &by;    run;     PROC TRANSPOSE data=&help_zeros_4 out=&help_zeros_5;     by &by;    RUN;            DATA
25       ! &help_zeros_6 (keep =
ERROR 180-322: Statement is not valid or it is used out of proper order.

MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.BASEX;

SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
NOTE: Line generated by the invoked macro "ZEROS_NUMVARS_BY".
25                  data &help_zeros_3;     set ∈     where &get;    run;     proc sort data=&help_zeros_3 out=&help_zeros_4;
                                                         _____
                                                         180
25       !  by &by;    run;     PROC TRANSPOSE data=&help_zeros_4 out=&help_zeros_5;     by &by;    RUN;            DATA
25       ! &help_zeros_6 (keep =
ERROR 180-322: Statement is not valid or it is used out of proper order.

MPRINT(ZEROS_NUMVARS_BY):   where APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE";

MPRINT(ZEROS_NUMVARS_BY):   run;
SYMBOLGEN:  Macro variable HELP_ZEROS_3 resolves to LIB_WORK.help_zeros_3
ERROR: File LIB_WORK.HELP_ZEROS_3.DATA does not exist.
SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
MPRINT(ZEROS_NUMVARS_BY):   proc sort data=LIB_WORK.help_zeros_3 out=LIB_WORK.help_zeros_4;
8                                                          The SAS System                             09:31 Wednesday, June 17, 2020

SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
MPRINT(ZEROS_NUMVARS_BY):   by APPLICATION_TYPE PRODUCT_TYPE;
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set LIB_WORK.HELP_ZEROS_4 may be incomplete.  When this step was stopped there were 0 observations and 0 
         variables.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_4 because compression overhead would increase the size of the data 
set.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
MPRINT(ZEROS_NUMVARS_BY):   PROC TRANSPOSE data=LIB_WORK.help_zeros_4 out=LIB_WORK.help_zeros_5;
SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
ERROR: Variable APPLICATION_TYPE not found.
MPRINT(ZEROS_NUMVARS_BY):   by APPLICATION_TYPE PRODUCT_TYPE;
ERROR: Variable PRODUCT_TYPE not found.
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set LIB_WORK.HELP_ZEROS_5 may be incomplete.  When this step was stopped there were 0 observations and 0 
         variables.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_5 because compression overhead would increase the size of the data 
set.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6


SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
MPRINT(ZEROS_NUMVARS_BY):   DATA LIB_WORK.help_zeros_6 (keep = APPLICATION_TYPE PRODUCT_TYPE _NAME_ _LABEL_ NZEROS i);
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_zeros_5;
MPRINT(ZEROS_NUMVARS_BY):   array list{*} COL: ;
WARNING: Defining an array with zero elements.
MPRINT(ZEROS_NUMVARS_BY):   NZEROS=0;
MPRINT(ZEROS_NUMVARS_BY):   do i=1 to dim(list);
MPRINT(ZEROS_NUMVARS_BY):   if list{i}=0 then NZEROS=sum(NZEROS,1);
MPRINT(ZEROS_NUMVARS_BY):   end;
MPRINT(ZEROS_NUMVARS_BY):   RUN;

WARNING: The variable APPLICATION_TYPE in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable PRODUCT_TYPE in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable _NAME_ in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable _LABEL_ in the DROP, KEEP, or RENAME list has never been referenced.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_6 because compression overhead would increase the size of the data 
      set.
NOTE: There were 0 observations read from the data set LIB_WORK.HELP_ZEROS_5.
NOTE: The data set LIB_WORK.HELP_ZEROS_6 has 0 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
9                                                          The SAS System                             09:31 Wednesday, June 17, 2020

      

SYMBOLGEN:  Macro variable OUT resolves to LIB_WORK.NZEROS_BY
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6
MPRINT(ZEROS_NUMVARS_BY):   PROC APPEND base=LIB_WORK.NZEROS_BY data=LIB_WORK.help_zeros_6;
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: Appending LIB_WORK.HELP_ZEROS_6 to LIB_WORK.NZEROS_BY.
NOTE: There were 0 observations read from the data set LIB_WORK.HELP_ZEROS_6.
NOTE: 0 observations added.
NOTE: The data set LIB_WORK.NZEROS_BY has 0 observations and 2 variables.
NOTE: PROCEDURE APPEND used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
SYMBOLGEN:  Macro variable HELP_ZEROS_3 resolves to LIB_WORK.help_zeros_3
SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6
MPRINT(ZEROS_NUMVARS_BY):   PROC DELETE data=LIB_WORK.help_zeros_0 LIB_WORK.help_zeros_1 LIB_WORK.help_zeros_2 
LIB_WORK.help_zeros_3 LIB_WORK.help_zeros_4 LIB_WORK.help_zeros_5 LIB_WORK.help_zeros_6 (gennum=all);
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: Deleting LIB_WORK.HELP_ZEROS_0 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_1 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_2 (memtype=DATA).
WARNING: File LIB_WORK.HELP_ZEROS_3.DATA does not exist.
NOTE: Deleting LIB_WORK.HELP_ZEROS_4 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_5 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_6 (memtype=DATA gennum=ALL).
NOTE: PROCEDURE DELETE used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

MLOGIC(ZEROS_NUMVARS_BY):  %SYMDEL  &GET
SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
WARNING: Attempt to delete macro variable APPLICATION_TYPE failed. Variable not found.
ERROR: Macro variable name = must start with a letter or underscore.
ERROR: Macro variable name "PERSONAL" must start with a letter or underscore.
WARNING: Attempt to delete macro variable AND failed. Variable not found.
WARNING: Attempt to delete macro variable PRODUCT_TYPE failed. Variable not found.
ERROR: Macro variable name = must start with a letter or underscore.
ERROR: Macro variable name "ASSET FINANCE" must start with a letter or underscore.
MLOGIC(ZEROS_NUMVARS_BY):  %DO loop index variable I is now 3; loop will iterate again.
SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
MPRINT(ZEROS_NUMVARS_BY):   data LIB_WORK.help_zeros_0;
SYMBOLGEN:  Macro variable HELP_SQL_ZEROS resolves to LIB_WORK.help_sql_zeros
SYMBOLGEN:  Macro variable I resolves to 3
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_sql_zeros (drop=Nobs obs=3);
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_0 because compression overhead would increase the size of the data 
      set.
10                                                         The SAS System                             09:31 Wednesday, June 17, 2020

NOTE: There were 3 observations read from the data set LIB_WORK.HELP_SQL_ZEROS.
NOTE: The data set LIB_WORK.HELP_ZEROS_0 has 3 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
MPRINT(ZEROS_NUMVARS_BY):   proc transpose data=LIB_WORK.help_zeros_0 out=LIB_WORK.help_zeros_1;
MPRINT(ZEROS_NUMVARS_BY):   var _all_;
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: There were 3 observations read from the data set LIB_WORK.HELP_ZEROS_0.
NOTE: The data set LIB_WORK.HELP_ZEROS_1 has 2 observations and 5 variables.
NOTE: Compressing data set LIB_WORK.HELP_ZEROS_1 increased size by 100.00 percent. 
      Compressed is 2 pages; un-compressed would require 1 pages.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
MPRINT(ZEROS_NUMVARS_BY):   data LIB_WORK.help_zeros_2(keep=var);
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_zeros_1;
MPRINT(ZEROS_NUMVARS_BY):   var = catx('=', _NAME_, cats('"',COL1,'"') );
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: There were 2 observations read from the data set LIB_WORK.HELP_ZEROS_1.
NOTE: The data set LIB_WORK.HELP_ZEROS_2 has 2 observations and 1 variables.
NOTE: Compressing data set LIB_WORK.HELP_ZEROS_2 increased size by 100.00 percent. 
      Compressed is 2 pages; un-compressed would require 1 pages.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

MPRINT(ZEROS_NUMVARS_BY):   proc sql noprint;
SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
MPRINT(ZEROS_NUMVARS_BY):   select var INTO: get separated BY ' and ' from LIB_WORK.help_zeros_2;
MPRINT(ZEROS_NUMVARS_BY):   quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

MLOGIC(ZEROS_NUMVARS_BY):  %PUT &get
SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
MPRINT(ZEROS_NUMVARS_BY):   * data &help_zeros_3;
SYMBOLGEN:  Macro variable IN resolves to LIB_WORK.BASEX
NOTE: Line generated by the invoked macro "ZEROS_NUMVARS_BY".
25                  data &help_zeros_3;     set ∈     where &get;    run;     proc sort data=&help_zeros_3 out=&help_zeros_4;
                                            ___
                                            180
25       !  by &by;    run;     PROC TRANSPOSE data=&help_zeros_4 out=&help_zeros_5;     by &by;    RUN;            DATA
25       ! &help_zeros_6 (keep =
11                                                         The SAS System                             09:31 Wednesday, June 17, 2020

ERROR 180-322: Statement is not valid or it is used out of proper order.

MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.BASEX;

SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
NOTE: Line generated by the invoked macro "ZEROS_NUMVARS_BY".
25                  data &help_zeros_3;     set ∈     where &get;    run;     proc sort data=&help_zeros_3 out=&help_zeros_4;
                                                         _____
                                                         180
25       !  by &by;    run;     PROC TRANSPOSE data=&help_zeros_4 out=&help_zeros_5;     by &by;    RUN;            DATA
25       ! &help_zeros_6 (keep =
ERROR 180-322: Statement is not valid or it is used out of proper order.

MPRINT(ZEROS_NUMVARS_BY):   where APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE";

MPRINT(ZEROS_NUMVARS_BY):   run;
SYMBOLGEN:  Macro variable HELP_ZEROS_3 resolves to LIB_WORK.help_zeros_3
ERROR: File LIB_WORK.HELP_ZEROS_3.DATA does not exist.
SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
MPRINT(ZEROS_NUMVARS_BY):   proc sort data=LIB_WORK.help_zeros_3 out=LIB_WORK.help_zeros_4;
SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
MPRINT(ZEROS_NUMVARS_BY):   by APPLICATION_TYPE PRODUCT_TYPE;
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set LIB_WORK.HELP_ZEROS_4 may be incomplete.  When this step was stopped there were 0 observations and 0 
         variables.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_4 because compression overhead would increase the size of the data 
set.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
MPRINT(ZEROS_NUMVARS_BY):   PROC TRANSPOSE data=LIB_WORK.help_zeros_4 out=LIB_WORK.help_zeros_5;
SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
ERROR: Variable APPLICATION_TYPE not found.
MPRINT(ZEROS_NUMVARS_BY):   by APPLICATION_TYPE PRODUCT_TYPE;
ERROR: Variable PRODUCT_TYPE not found.
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set LIB_WORK.HELP_ZEROS_5 may be incomplete.  When this step was stopped there were 0 observations and 0 
         variables.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_5 because compression overhead would increase the size of the data 
set.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6


SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
MPRINT(ZEROS_NUMVARS_BY):   DATA LIB_WORK.help_zeros_6 (keep = APPLICATION_TYPE PRODUCT_TYPE _NAME_ _LABEL_ NZEROS i);
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
12                                                         The SAS System                             09:31 Wednesday, June 17, 2020

MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_zeros_5;
MPRINT(ZEROS_NUMVARS_BY):   array list{*} COL: ;
WARNING: Defining an array with zero elements.
MPRINT(ZEROS_NUMVARS_BY):   NZEROS=0;
MPRINT(ZEROS_NUMVARS_BY):   do i=1 to dim(list);
MPRINT(ZEROS_NUMVARS_BY):   if list{i}=0 then NZEROS=sum(NZEROS,1);
MPRINT(ZEROS_NUMVARS_BY):   end;
MPRINT(ZEROS_NUMVARS_BY):   RUN;

WARNING: The variable APPLICATION_TYPE in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable PRODUCT_TYPE in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable _NAME_ in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable _LABEL_ in the DROP, KEEP, or RENAME list has never been referenced.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_6 because compression overhead would increase the size of the data 
      set.
NOTE: There were 0 observations read from the data set LIB_WORK.HELP_ZEROS_5.
NOTE: The data set LIB_WORK.HELP_ZEROS_6 has 0 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

SYMBOLGEN:  Macro variable OUT resolves to LIB_WORK.NZEROS_BY
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6
MPRINT(ZEROS_NUMVARS_BY):   PROC APPEND base=LIB_WORK.NZEROS_BY data=LIB_WORK.help_zeros_6;
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: Appending LIB_WORK.HELP_ZEROS_6 to LIB_WORK.NZEROS_BY.
NOTE: There were 0 observations read from the data set LIB_WORK.HELP_ZEROS_6.
NOTE: 0 observations added.
NOTE: The data set LIB_WORK.NZEROS_BY has 0 observations and 2 variables.
NOTE: PROCEDURE APPEND used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
SYMBOLGEN:  Macro variable HELP_ZEROS_3 resolves to LIB_WORK.help_zeros_3
SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6
MPRINT(ZEROS_NUMVARS_BY):   PROC DELETE data=LIB_WORK.help_zeros_0 LIB_WORK.help_zeros_1 LIB_WORK.help_zeros_2 
LIB_WORK.help_zeros_3 LIB_WORK.help_zeros_4 LIB_WORK.help_zeros_5 LIB_WORK.help_zeros_6 (gennum=all);
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: Deleting LIB_WORK.HELP_ZEROS_0 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_1 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_2 (memtype=DATA).
WARNING: File LIB_WORK.HELP_ZEROS_3.DATA does not exist.
NOTE: Deleting LIB_WORK.HELP_ZEROS_4 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_5 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_6 (memtype=DATA gennum=ALL).
NOTE: PROCEDURE DELETE used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      
13                                                         The SAS System                             09:31 Wednesday, June 17, 2020


MLOGIC(ZEROS_NUMVARS_BY):  %SYMDEL  &GET
SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
WARNING: Attempt to delete macro variable APPLICATION_TYPE failed. Variable not found.
ERROR: Macro variable name = must start with a letter or underscore.
ERROR: Macro variable name "PERSONAL" must start with a letter or underscore.
WARNING: Attempt to delete macro variable AND failed. Variable not found.
WARNING: Attempt to delete macro variable PRODUCT_TYPE failed. Variable not found.
ERROR: Macro variable name = must start with a letter or underscore.
ERROR: Macro variable name "ASSET FINANCE" must start with a letter or underscore.
MLOGIC(ZEROS_NUMVARS_BY):  %DO loop index variable I is now 4; loop will iterate again.
SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
MPRINT(ZEROS_NUMVARS_BY):   data LIB_WORK.help_zeros_0;
SYMBOLGEN:  Macro variable HELP_SQL_ZEROS resolves to LIB_WORK.help_sql_zeros
SYMBOLGEN:  Macro variable I resolves to 4
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_sql_zeros (drop=Nobs obs=4);
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_0 because compression overhead would increase the size of the data 
      set.
NOTE: There were 4 observations read from the data set LIB_WORK.HELP_SQL_ZEROS.
NOTE: The data set LIB_WORK.HELP_ZEROS_0 has 4 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
MPRINT(ZEROS_NUMVARS_BY):   proc transpose data=LIB_WORK.help_zeros_0 out=LIB_WORK.help_zeros_1;
MPRINT(ZEROS_NUMVARS_BY):   var _all_;
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: There were 4 observations read from the data set LIB_WORK.HELP_ZEROS_0.
NOTE: The data set LIB_WORK.HELP_ZEROS_1 has 2 observations and 6 variables.
NOTE: Compressing data set LIB_WORK.HELP_ZEROS_1 increased size by 100.00 percent. 
      Compressed is 2 pages; un-compressed would require 1 pages.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
MPRINT(ZEROS_NUMVARS_BY):   data LIB_WORK.help_zeros_2(keep=var);
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_zeros_1;
MPRINT(ZEROS_NUMVARS_BY):   var = catx('=', _NAME_, cats('"',COL1,'"') );
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: There were 2 observations read from the data set LIB_WORK.HELP_ZEROS_1.
NOTE: The data set LIB_WORK.HELP_ZEROS_2 has 2 observations and 1 variables.
NOTE: Compressing data set LIB_WORK.HELP_ZEROS_2 increased size by 100.00 percent. 
      Compressed is 2 pages; un-compressed would require 1 pages.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

14                                                         The SAS System                             09:31 Wednesday, June 17, 2020

MPRINT(ZEROS_NUMVARS_BY):   proc sql noprint;
SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
MPRINT(ZEROS_NUMVARS_BY):   select var INTO: get separated BY ' and ' from LIB_WORK.help_zeros_2;
MPRINT(ZEROS_NUMVARS_BY):   quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

MLOGIC(ZEROS_NUMVARS_BY):  %PUT &get
SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
MPRINT(ZEROS_NUMVARS_BY):   * data &help_zeros_3;
SYMBOLGEN:  Macro variable IN resolves to LIB_WORK.BASEX
NOTE: Line generated by the invoked macro "ZEROS_NUMVARS_BY".
25                  data &help_zeros_3;     set ∈     where &get;    run;     proc sort data=&help_zeros_3 out=&help_zeros_4;
                                            ___
                                            180
25       !  by &by;    run;     PROC TRANSPOSE data=&help_zeros_4 out=&help_zeros_5;     by &by;    RUN;            DATA
25       ! &help_zeros_6 (keep =
ERROR 180-322: Statement is not valid or it is used out of proper order.

MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.BASEX;

SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
NOTE: Line generated by the invoked macro "ZEROS_NUMVARS_BY".
25                  data &help_zeros_3;     set ∈     where &get;    run;     proc sort data=&help_zeros_3 out=&help_zeros_4;
                                                         _____
                                                         180
25       !  by &by;    run;     PROC TRANSPOSE data=&help_zeros_4 out=&help_zeros_5;     by &by;    RUN;            DATA
25       ! &help_zeros_6 (keep =
ERROR 180-322: Statement is not valid or it is used out of proper order.

MPRINT(ZEROS_NUMVARS_BY):   where APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE";

MPRINT(ZEROS_NUMVARS_BY):   run;
SYMBOLGEN:  Macro variable HELP_ZEROS_3 resolves to LIB_WORK.help_zeros_3
ERROR: File LIB_WORK.HELP_ZEROS_3.DATA does not exist.
SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
MPRINT(ZEROS_NUMVARS_BY):   proc sort data=LIB_WORK.help_zeros_3 out=LIB_WORK.help_zeros_4;
SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
MPRINT(ZEROS_NUMVARS_BY):   by APPLICATION_TYPE PRODUCT_TYPE;
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set LIB_WORK.HELP_ZEROS_4 may be incomplete.  When this step was stopped there were 0 observations and 0 
         variables.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_4 because compression overhead would increase the size of the data 
set.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
MPRINT(ZEROS_NUMVARS_BY):   PROC TRANSPOSE data=LIB_WORK.help_zeros_4 out=LIB_WORK.help_zeros_5;
SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
15                                                         The SAS System                             09:31 Wednesday, June 17, 2020

ERROR: Variable APPLICATION_TYPE not found.
MPRINT(ZEROS_NUMVARS_BY):   by APPLICATION_TYPE PRODUCT_TYPE;
ERROR: Variable PRODUCT_TYPE not found.
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set LIB_WORK.HELP_ZEROS_5 may be incomplete.  When this step was stopped there were 0 observations and 0 
         variables.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_5 because compression overhead would increase the size of the data 
set.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6


SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
MPRINT(ZEROS_NUMVARS_BY):   DATA LIB_WORK.help_zeros_6 (keep = APPLICATION_TYPE PRODUCT_TYPE _NAME_ _LABEL_ NZEROS i);
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_zeros_5;
MPRINT(ZEROS_NUMVARS_BY):   array list{*} COL: ;
WARNING: Defining an array with zero elements.
MPRINT(ZEROS_NUMVARS_BY):   NZEROS=0;
MPRINT(ZEROS_NUMVARS_BY):   do i=1 to dim(list);
MPRINT(ZEROS_NUMVARS_BY):   if list{i}=0 then NZEROS=sum(NZEROS,1);
MPRINT(ZEROS_NUMVARS_BY):   end;
MPRINT(ZEROS_NUMVARS_BY):   RUN;

WARNING: The variable APPLICATION_TYPE in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable PRODUCT_TYPE in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable _NAME_ in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable _LABEL_ in the DROP, KEEP, or RENAME list has never been referenced.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_6 because compression overhead would increase the size of the data 
      set.
NOTE: There were 0 observations read from the data set LIB_WORK.HELP_ZEROS_5.
NOTE: The data set LIB_WORK.HELP_ZEROS_6 has 0 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

SYMBOLGEN:  Macro variable OUT resolves to LIB_WORK.NZEROS_BY
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6
MPRINT(ZEROS_NUMVARS_BY):   PROC APPEND base=LIB_WORK.NZEROS_BY data=LIB_WORK.help_zeros_6;
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: Appending LIB_WORK.HELP_ZEROS_6 to LIB_WORK.NZEROS_BY.
NOTE: There were 0 observations read from the data set LIB_WORK.HELP_ZEROS_6.
NOTE: 0 observations added.
NOTE: The data set LIB_WORK.NZEROS_BY has 0 observations and 2 variables.
NOTE: PROCEDURE APPEND used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
16                                                         The SAS System                             09:31 Wednesday, June 17, 2020

SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
SYMBOLGEN:  Macro variable HELP_ZEROS_3 resolves to LIB_WORK.help_zeros_3
SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6
MPRINT(ZEROS_NUMVARS_BY):   PROC DELETE data=LIB_WORK.help_zeros_0 LIB_WORK.help_zeros_1 LIB_WORK.help_zeros_2 
LIB_WORK.help_zeros_3 LIB_WORK.help_zeros_4 LIB_WORK.help_zeros_5 LIB_WORK.help_zeros_6 (gennum=all);
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: Deleting LIB_WORK.HELP_ZEROS_0 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_1 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_2 (memtype=DATA).
WARNING: File LIB_WORK.HELP_ZEROS_3.DATA does not exist.
NOTE: Deleting LIB_WORK.HELP_ZEROS_4 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_5 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_6 (memtype=DATA gennum=ALL).
NOTE: PROCEDURE DELETE used (Total process time):
      real time           0.00 seconds
      cpu time            0.02 seconds
      

MLOGIC(ZEROS_NUMVARS_BY):  %SYMDEL  &GET
SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
WARNING: Attempt to delete macro variable APPLICATION_TYPE failed. Variable not found.
ERROR: Macro variable name = must start with a letter or underscore.
ERROR: Macro variable name "PERSONAL" must start with a letter or underscore.
WARNING: Attempt to delete macro variable AND failed. Variable not found.
WARNING: Attempt to delete macro variable PRODUCT_TYPE failed. Variable not found.
ERROR: Macro variable name = must start with a letter or underscore.
ERROR: Macro variable name "ASSET FINANCE" must start with a letter or underscore.
MLOGIC(ZEROS_NUMVARS_BY):  %DO loop index variable I is now 5; loop will iterate again.
SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
MPRINT(ZEROS_NUMVARS_BY):   data LIB_WORK.help_zeros_0;
SYMBOLGEN:  Macro variable HELP_SQL_ZEROS resolves to LIB_WORK.help_sql_zeros
SYMBOLGEN:  Macro variable I resolves to 5
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_sql_zeros (drop=Nobs obs=5);
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_0 because compression overhead would increase the size of the data 
      set.
NOTE: There were 5 observations read from the data set LIB_WORK.HELP_SQL_ZEROS.
NOTE: The data set LIB_WORK.HELP_ZEROS_0 has 5 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
MPRINT(ZEROS_NUMVARS_BY):   proc transpose data=LIB_WORK.help_zeros_0 out=LIB_WORK.help_zeros_1;
MPRINT(ZEROS_NUMVARS_BY):   var _all_;
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: There were 5 observations read from the data set LIB_WORK.HELP_ZEROS_0.
NOTE: The data set LIB_WORK.HELP_ZEROS_1 has 2 observations and 7 variables.
NOTE: Compressing data set LIB_WORK.HELP_ZEROS_1 increased size by 100.00 percent. 
      Compressed is 2 pages; un-compressed would require 1 pages.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
17                                                         The SAS System                             09:31 Wednesday, June 17, 2020

      real time           0.00 seconds
      cpu time            0.01 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
MPRINT(ZEROS_NUMVARS_BY):   data LIB_WORK.help_zeros_2(keep=var);
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_zeros_1;
MPRINT(ZEROS_NUMVARS_BY):   var = catx('=', _NAME_, cats('"',COL1,'"') );
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: There were 2 observations read from the data set LIB_WORK.HELP_ZEROS_1.
NOTE: The data set LIB_WORK.HELP_ZEROS_2 has 2 observations and 1 variables.
NOTE: Compressing data set LIB_WORK.HELP_ZEROS_2 increased size by 100.00 percent. 
      Compressed is 2 pages; un-compressed would require 1 pages.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

MPRINT(ZEROS_NUMVARS_BY):   proc sql noprint;
SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
MPRINT(ZEROS_NUMVARS_BY):   select var INTO: get separated BY ' and ' from LIB_WORK.help_zeros_2;
MPRINT(ZEROS_NUMVARS_BY):   quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

MLOGIC(ZEROS_NUMVARS_BY):  %PUT &get
SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
MPRINT(ZEROS_NUMVARS_BY):   * data &help_zeros_3;
SYMBOLGEN:  Macro variable IN resolves to LIB_WORK.BASEX
NOTE: Line generated by the invoked macro "ZEROS_NUMVARS_BY".
25                  data &help_zeros_3;     set ∈     where &get;    run;     proc sort data=&help_zeros_3 out=&help_zeros_4;
                                            ___
                                            180
25       !  by &by;    run;     PROC TRANSPOSE data=&help_zeros_4 out=&help_zeros_5;     by &by;    RUN;            DATA
25       ! &help_zeros_6 (keep =
ERROR 180-322: Statement is not valid or it is used out of proper order.

MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.BASEX;

SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
NOTE: Line generated by the invoked macro "ZEROS_NUMVARS_BY".
25                  data &help_zeros_3;     set ∈     where &get;    run;     proc sort data=&help_zeros_3 out=&help_zeros_4;
                                                         _____
                                                         180
25       !  by &by;    run;     PROC TRANSPOSE data=&help_zeros_4 out=&help_zeros_5;     by &by;    RUN;            DATA
25       ! &help_zeros_6 (keep =
ERROR 180-322: Statement is not valid or it is used out of proper order.

MPRINT(ZEROS_NUMVARS_BY):   where APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE";

MPRINT(ZEROS_NUMVARS_BY):   run;
SYMBOLGEN:  Macro variable HELP_ZEROS_3 resolves to LIB_WORK.help_zeros_3
ERROR: File LIB_WORK.HELP_ZEROS_3.DATA does not exist.
18                                                         The SAS System                             09:31 Wednesday, June 17, 2020

SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
MPRINT(ZEROS_NUMVARS_BY):   proc sort data=LIB_WORK.help_zeros_3 out=LIB_WORK.help_zeros_4;
SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
MPRINT(ZEROS_NUMVARS_BY):   by APPLICATION_TYPE PRODUCT_TYPE;
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set LIB_WORK.HELP_ZEROS_4 may be incomplete.  When this step was stopped there were 0 observations and 0 
         variables.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_4 because compression overhead would increase the size of the data 
set.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
MPRINT(ZEROS_NUMVARS_BY):   PROC TRANSPOSE data=LIB_WORK.help_zeros_4 out=LIB_WORK.help_zeros_5;
SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
ERROR: Variable APPLICATION_TYPE not found.
MPRINT(ZEROS_NUMVARS_BY):   by APPLICATION_TYPE PRODUCT_TYPE;
ERROR: Variable PRODUCT_TYPE not found.
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set LIB_WORK.HELP_ZEROS_5 may be incomplete.  When this step was stopped there were 0 observations and 0 
         variables.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_5 because compression overhead would increase the size of the data 
set.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6


SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
MPRINT(ZEROS_NUMVARS_BY):   DATA LIB_WORK.help_zeros_6 (keep = APPLICATION_TYPE PRODUCT_TYPE _NAME_ _LABEL_ NZEROS i);
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_zeros_5;
MPRINT(ZEROS_NUMVARS_BY):   array list{*} COL: ;
WARNING: Defining an array with zero elements.
MPRINT(ZEROS_NUMVARS_BY):   NZEROS=0;
MPRINT(ZEROS_NUMVARS_BY):   do i=1 to dim(list);
MPRINT(ZEROS_NUMVARS_BY):   if list{i}=0 then NZEROS=sum(NZEROS,1);
MPRINT(ZEROS_NUMVARS_BY):   end;
MPRINT(ZEROS_NUMVARS_BY):   RUN;

WARNING: The variable APPLICATION_TYPE in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable PRODUCT_TYPE in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable _NAME_ in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable _LABEL_ in the DROP, KEEP, or RENAME list has never been referenced.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_6 because compression overhead would increase the size of the data 
      set.
NOTE: There were 0 observations read from the data set LIB_WORK.HELP_ZEROS_5.
NOTE: The data set LIB_WORK.HELP_ZEROS_6 has 0 observations and 2 variables.
NOTE: DATA statement used (Total process time):
19                                                         The SAS System                             09:31 Wednesday, June 17, 2020

      real time           0.00 seconds
      cpu time            0.01 seconds
      

SYMBOLGEN:  Macro variable OUT resolves to LIB_WORK.NZEROS_BY
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6
MPRINT(ZEROS_NUMVARS_BY):   PROC APPEND base=LIB_WORK.NZEROS_BY data=LIB_WORK.help_zeros_6;
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: Appending LIB_WORK.HELP_ZEROS_6 to LIB_WORK.NZEROS_BY.
NOTE: There were 0 observations read from the data set LIB_WORK.HELP_ZEROS_6.
NOTE: 0 observations added.
NOTE: The data set LIB_WORK.NZEROS_BY has 0 observations and 2 variables.
NOTE: PROCEDURE APPEND used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
SYMBOLGEN:  Macro variable HELP_ZEROS_3 resolves to LIB_WORK.help_zeros_3
SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6
MPRINT(ZEROS_NUMVARS_BY):   PROC DELETE data=LIB_WORK.help_zeros_0 LIB_WORK.help_zeros_1 LIB_WORK.help_zeros_2 
LIB_WORK.help_zeros_3 LIB_WORK.help_zeros_4 LIB_WORK.help_zeros_5 LIB_WORK.help_zeros_6 (gennum=all);
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: Deleting LIB_WORK.HELP_ZEROS_0 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_1 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_2 (memtype=DATA).
WARNING: File LIB_WORK.HELP_ZEROS_3.DATA does not exist.
NOTE: Deleting LIB_WORK.HELP_ZEROS_4 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_5 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_6 (memtype=DATA gennum=ALL).
NOTE: PROCEDURE DELETE used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

MLOGIC(ZEROS_NUMVARS_BY):  %SYMDEL  &GET
SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
WARNING: Attempt to delete macro variable APPLICATION_TYPE failed. Variable not found.
ERROR: Macro variable name = must start with a letter or underscore.
ERROR: Macro variable name "PERSONAL" must start with a letter or underscore.
WARNING: Attempt to delete macro variable AND failed. Variable not found.
WARNING: Attempt to delete macro variable PRODUCT_TYPE failed. Variable not found.
ERROR: Macro variable name = must start with a letter or underscore.
ERROR: Macro variable name "ASSET FINANCE" must start with a letter or underscore.
MLOGIC(ZEROS_NUMVARS_BY):  %DO loop index variable I is now 6; loop will iterate again.
SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
MPRINT(ZEROS_NUMVARS_BY):   data LIB_WORK.help_zeros_0;
SYMBOLGEN:  Macro variable HELP_SQL_ZEROS resolves to LIB_WORK.help_sql_zeros
SYMBOLGEN:  Macro variable I resolves to 6
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_sql_zeros (drop=Nobs obs=6);
MPRINT(ZEROS_NUMVARS_BY):   run;

20                                                         The SAS System                             09:31 Wednesday, June 17, 2020

NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_0 because compression overhead would increase the size of the data 
      set.
NOTE: There were 6 observations read from the data set LIB_WORK.HELP_SQL_ZEROS.
NOTE: The data set LIB_WORK.HELP_ZEROS_0 has 6 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
MPRINT(ZEROS_NUMVARS_BY):   proc transpose data=LIB_WORK.help_zeros_0 out=LIB_WORK.help_zeros_1;
MPRINT(ZEROS_NUMVARS_BY):   var _all_;
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: There were 6 observations read from the data set LIB_WORK.HELP_ZEROS_0.
NOTE: The data set LIB_WORK.HELP_ZEROS_1 has 2 observations and 8 variables.
NOTE: Compressing data set LIB_WORK.HELP_ZEROS_1 increased size by 100.00 percent. 
      Compressed is 2 pages; un-compressed would require 1 pages.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
MPRINT(ZEROS_NUMVARS_BY):   data LIB_WORK.help_zeros_2(keep=var);
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_zeros_1;
MPRINT(ZEROS_NUMVARS_BY):   var = catx('=', _NAME_, cats('"',COL1,'"') );
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: There were 2 observations read from the data set LIB_WORK.HELP_ZEROS_1.
NOTE: The data set LIB_WORK.HELP_ZEROS_2 has 2 observations and 1 variables.
NOTE: Compressing data set LIB_WORK.HELP_ZEROS_2 increased size by 100.00 percent. 
      Compressed is 2 pages; un-compressed would require 1 pages.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

MPRINT(ZEROS_NUMVARS_BY):   proc sql noprint;
SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
MPRINT(ZEROS_NUMVARS_BY):   select var INTO: get separated BY ' and ' from LIB_WORK.help_zeros_2;
MPRINT(ZEROS_NUMVARS_BY):   quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

MLOGIC(ZEROS_NUMVARS_BY):  %PUT &get
SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
MPRINT(ZEROS_NUMVARS_BY):   * data &help_zeros_3;
SYMBOLGEN:  Macro variable IN resolves to LIB_WORK.BASEX
NOTE: Line generated by the invoked macro "ZEROS_NUMVARS_BY".
25                  data &help_zeros_3;     set ∈     where &get;    run;     proc sort data=&help_zeros_3 out=&help_zeros_4;
                                            ___
                                            180
21                                                         The SAS System                             09:31 Wednesday, June 17, 2020

25       !  by &by;    run;     PROC TRANSPOSE data=&help_zeros_4 out=&help_zeros_5;     by &by;    RUN;            DATA
25       ! &help_zeros_6 (keep =
ERROR 180-322: Statement is not valid or it is used out of proper order.

MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.BASEX;

SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
NOTE: Line generated by the invoked macro "ZEROS_NUMVARS_BY".
25                  data &help_zeros_3;     set ∈     where &get;    run;     proc sort data=&help_zeros_3 out=&help_zeros_4;
                                                         _____
                                                         180
25       !  by &by;    run;     PROC TRANSPOSE data=&help_zeros_4 out=&help_zeros_5;     by &by;    RUN;            DATA
25       ! &help_zeros_6 (keep =
ERROR 180-322: Statement is not valid or it is used out of proper order.

MPRINT(ZEROS_NUMVARS_BY):   where APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE";

MPRINT(ZEROS_NUMVARS_BY):   run;
SYMBOLGEN:  Macro variable HELP_ZEROS_3 resolves to LIB_WORK.help_zeros_3
ERROR: File LIB_WORK.HELP_ZEROS_3.DATA does not exist.
SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
MPRINT(ZEROS_NUMVARS_BY):   proc sort data=LIB_WORK.help_zeros_3 out=LIB_WORK.help_zeros_4;
SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
MPRINT(ZEROS_NUMVARS_BY):   by APPLICATION_TYPE PRODUCT_TYPE;
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set LIB_WORK.HELP_ZEROS_4 may be incomplete.  When this step was stopped there were 0 observations and 0 
         variables.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_4 because compression overhead would increase the size of the data 
set.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
MPRINT(ZEROS_NUMVARS_BY):   PROC TRANSPOSE data=LIB_WORK.help_zeros_4 out=LIB_WORK.help_zeros_5;
SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
ERROR: Variable APPLICATION_TYPE not found.
MPRINT(ZEROS_NUMVARS_BY):   by APPLICATION_TYPE PRODUCT_TYPE;
ERROR: Variable PRODUCT_TYPE not found.
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set LIB_WORK.HELP_ZEROS_5 may be incomplete.  When this step was stopped there were 0 observations and 0 
         variables.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_5 because compression overhead would increase the size of the data 
set.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6


SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
22                                                         The SAS System                             09:31 Wednesday, June 17, 2020

MPRINT(ZEROS_NUMVARS_BY):   DATA LIB_WORK.help_zeros_6 (keep = APPLICATION_TYPE PRODUCT_TYPE _NAME_ _LABEL_ NZEROS i);
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_zeros_5;
MPRINT(ZEROS_NUMVARS_BY):   array list{*} COL: ;
WARNING: Defining an array with zero elements.
MPRINT(ZEROS_NUMVARS_BY):   NZEROS=0;
MPRINT(ZEROS_NUMVARS_BY):   do i=1 to dim(list);
MPRINT(ZEROS_NUMVARS_BY):   if list{i}=0 then NZEROS=sum(NZEROS,1);
MPRINT(ZEROS_NUMVARS_BY):   end;
MPRINT(ZEROS_NUMVARS_BY):   RUN;

WARNING: The variable APPLICATION_TYPE in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable PRODUCT_TYPE in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable _NAME_ in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable _LABEL_ in the DROP, KEEP, or RENAME list has never been referenced.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_6 because compression overhead would increase the size of the data 
      set.
NOTE: There were 0 observations read from the data set LIB_WORK.HELP_ZEROS_5.
NOTE: The data set LIB_WORK.HELP_ZEROS_6 has 0 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable OUT resolves to LIB_WORK.NZEROS_BY
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6
MPRINT(ZEROS_NUMVARS_BY):   PROC APPEND base=LIB_WORK.NZEROS_BY data=LIB_WORK.help_zeros_6;
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: Appending LIB_WORK.HELP_ZEROS_6 to LIB_WORK.NZEROS_BY.
NOTE: There were 0 observations read from the data set LIB_WORK.HELP_ZEROS_6.
NOTE: 0 observations added.
NOTE: The data set LIB_WORK.NZEROS_BY has 0 observations and 2 variables.
NOTE: PROCEDURE APPEND used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
SYMBOLGEN:  Macro variable HELP_ZEROS_3 resolves to LIB_WORK.help_zeros_3
SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6
MPRINT(ZEROS_NUMVARS_BY):   PROC DELETE data=LIB_WORK.help_zeros_0 LIB_WORK.help_zeros_1 LIB_WORK.help_zeros_2 
LIB_WORK.help_zeros_3 LIB_WORK.help_zeros_4 LIB_WORK.help_zeros_5 LIB_WORK.help_zeros_6 (gennum=all);
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: Deleting LIB_WORK.HELP_ZEROS_0 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_1 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_2 (memtype=DATA).
WARNING: File LIB_WORK.HELP_ZEROS_3.DATA does not exist.
NOTE: Deleting LIB_WORK.HELP_ZEROS_4 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_5 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_6 (memtype=DATA gennum=ALL).
NOTE: PROCEDURE DELETE used (Total process time):
      real time           0.00 seconds
23                                                         The SAS System                             09:31 Wednesday, June 17, 2020

      cpu time            0.01 seconds
      

MLOGIC(ZEROS_NUMVARS_BY):  %SYMDEL  &GET
SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
WARNING: Attempt to delete macro variable APPLICATION_TYPE failed. Variable not found.
ERROR: Macro variable name = must start with a letter or underscore.
ERROR: Macro variable name "PERSONAL" must start with a letter or underscore.
WARNING: Attempt to delete macro variable AND failed. Variable not found.
WARNING: Attempt to delete macro variable PRODUCT_TYPE failed. Variable not found.
ERROR: Macro variable name = must start with a letter or underscore.
ERROR: Macro variable name "ASSET FINANCE" must start with a letter or underscore.
MLOGIC(ZEROS_NUMVARS_BY):  %DO loop index variable I is now 7; loop will iterate again.
SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
MPRINT(ZEROS_NUMVARS_BY):   data LIB_WORK.help_zeros_0;
SYMBOLGEN:  Macro variable HELP_SQL_ZEROS resolves to LIB_WORK.help_sql_zeros
SYMBOLGEN:  Macro variable I resolves to 7
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_sql_zeros (drop=Nobs obs=7);
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_0 because compression overhead would increase the size of the data 
      set.
NOTE: There were 7 observations read from the data set LIB_WORK.HELP_SQL_ZEROS.
NOTE: The data set LIB_WORK.HELP_ZEROS_0 has 7 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
MPRINT(ZEROS_NUMVARS_BY):   proc transpose data=LIB_WORK.help_zeros_0 out=LIB_WORK.help_zeros_1;
MPRINT(ZEROS_NUMVARS_BY):   var _all_;
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: There were 7 observations read from the data set LIB_WORK.HELP_ZEROS_0.
NOTE: The data set LIB_WORK.HELP_ZEROS_1 has 2 observations and 9 variables.
NOTE: Compressing data set LIB_WORK.HELP_ZEROS_1 increased size by 100.00 percent. 
      Compressed is 2 pages; un-compressed would require 1 pages.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
MPRINT(ZEROS_NUMVARS_BY):   data LIB_WORK.help_zeros_2(keep=var);
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_zeros_1;
MPRINT(ZEROS_NUMVARS_BY):   var = catx('=', _NAME_, cats('"',COL1,'"') );
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: There were 2 observations read from the data set LIB_WORK.HELP_ZEROS_1.
NOTE: The data set LIB_WORK.HELP_ZEROS_2 has 2 observations and 1 variables.
NOTE: Compressing data set LIB_WORK.HELP_ZEROS_2 increased size by 100.00 percent. 
      Compressed is 2 pages; un-compressed would require 1 pages.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
24                                                         The SAS System                             09:31 Wednesday, June 17, 2020

      

MPRINT(ZEROS_NUMVARS_BY):   proc sql noprint;
SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
MPRINT(ZEROS_NUMVARS_BY):   select var INTO: get separated BY ' and ' from LIB_WORK.help_zeros_2;
MPRINT(ZEROS_NUMVARS_BY):   quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

MLOGIC(ZEROS_NUMVARS_BY):  %PUT &get
SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
MPRINT(ZEROS_NUMVARS_BY):   * data &help_zeros_3;
SYMBOLGEN:  Macro variable IN resolves to LIB_WORK.BASEX
NOTE: Line generated by the invoked macro "ZEROS_NUMVARS_BY".
25                  data &help_zeros_3;     set ∈     where &get;    run;     proc sort data=&help_zeros_3 out=&help_zeros_4;
                                            ___
                                            180
25       !  by &by;    run;     PROC TRANSPOSE data=&help_zeros_4 out=&help_zeros_5;     by &by;    RUN;            DATA
25       ! &help_zeros_6 (keep =
ERROR 180-322: Statement is not valid or it is used out of proper order.

MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.BASEX;

SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
NOTE: Line generated by the invoked macro "ZEROS_NUMVARS_BY".
25                  data &help_zeros_3;     set ∈     where &get;    run;     proc sort data=&help_zeros_3 out=&help_zeros_4;
                                                         _____
                                                         180
25       !  by &by;    run;     PROC TRANSPOSE data=&help_zeros_4 out=&help_zeros_5;     by &by;    RUN;            DATA
25       ! &help_zeros_6 (keep =
ERROR 180-322: Statement is not valid or it is used out of proper order.

MPRINT(ZEROS_NUMVARS_BY):   where APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE";

MPRINT(ZEROS_NUMVARS_BY):   run;
SYMBOLGEN:  Macro variable HELP_ZEROS_3 resolves to LIB_WORK.help_zeros_3
ERROR: File LIB_WORK.HELP_ZEROS_3.DATA does not exist.
SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
MPRINT(ZEROS_NUMVARS_BY):   proc sort data=LIB_WORK.help_zeros_3 out=LIB_WORK.help_zeros_4;
SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
MPRINT(ZEROS_NUMVARS_BY):   by APPLICATION_TYPE PRODUCT_TYPE;
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set LIB_WORK.HELP_ZEROS_4 may be incomplete.  When this step was stopped there were 0 observations and 0 
         variables.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_4 because compression overhead would increase the size of the data 
set.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
25                                                         The SAS System                             09:31 Wednesday, June 17, 2020

MPRINT(ZEROS_NUMVARS_BY):   PROC TRANSPOSE data=LIB_WORK.help_zeros_4 out=LIB_WORK.help_zeros_5;
SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
ERROR: Variable APPLICATION_TYPE not found.
MPRINT(ZEROS_NUMVARS_BY):   by APPLICATION_TYPE PRODUCT_TYPE;
ERROR: Variable PRODUCT_TYPE not found.
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set LIB_WORK.HELP_ZEROS_5 may be incomplete.  When this step was stopped there were 0 observations and 0 
         variables.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_5 because compression overhead would increase the size of the data 
set.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6


SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
MPRINT(ZEROS_NUMVARS_BY):   DATA LIB_WORK.help_zeros_6 (keep = APPLICATION_TYPE PRODUCT_TYPE _NAME_ _LABEL_ NZEROS i);
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_zeros_5;
MPRINT(ZEROS_NUMVARS_BY):   array list{*} COL: ;
WARNING: Defining an array with zero elements.
MPRINT(ZEROS_NUMVARS_BY):   NZEROS=0;
MPRINT(ZEROS_NUMVARS_BY):   do i=1 to dim(list);
MPRINT(ZEROS_NUMVARS_BY):   if list{i}=0 then NZEROS=sum(NZEROS,1);
MPRINT(ZEROS_NUMVARS_BY):   end;
MPRINT(ZEROS_NUMVARS_BY):   RUN;

WARNING: The variable APPLICATION_TYPE in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable PRODUCT_TYPE in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable _NAME_ in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable _LABEL_ in the DROP, KEEP, or RENAME list has never been referenced.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_6 because compression overhead would increase the size of the data 
      set.
NOTE: There were 0 observations read from the data set LIB_WORK.HELP_ZEROS_5.
NOTE: The data set LIB_WORK.HELP_ZEROS_6 has 0 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable OUT resolves to LIB_WORK.NZEROS_BY
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6
MPRINT(ZEROS_NUMVARS_BY):   PROC APPEND base=LIB_WORK.NZEROS_BY data=LIB_WORK.help_zeros_6;
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: Appending LIB_WORK.HELP_ZEROS_6 to LIB_WORK.NZEROS_BY.
NOTE: There were 0 observations read from the data set LIB_WORK.HELP_ZEROS_6.
NOTE: 0 observations added.
NOTE: The data set LIB_WORK.NZEROS_BY has 0 observations and 2 variables.
NOTE: PROCEDURE APPEND used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

26                                                         The SAS System                             09:31 Wednesday, June 17, 2020

SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
SYMBOLGEN:  Macro variable HELP_ZEROS_3 resolves to LIB_WORK.help_zeros_3
SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6
MPRINT(ZEROS_NUMVARS_BY):   PROC DELETE data=LIB_WORK.help_zeros_0 LIB_WORK.help_zeros_1 LIB_WORK.help_zeros_2 
LIB_WORK.help_zeros_3 LIB_WORK.help_zeros_4 LIB_WORK.help_zeros_5 LIB_WORK.help_zeros_6 (gennum=all);
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: Deleting LIB_WORK.HELP_ZEROS_0 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_1 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_2 (memtype=DATA).
WARNING: File LIB_WORK.HELP_ZEROS_3.DATA does not exist.
NOTE: Deleting LIB_WORK.HELP_ZEROS_4 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_5 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_6 (memtype=DATA gennum=ALL).
NOTE: PROCEDURE DELETE used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

MLOGIC(ZEROS_NUMVARS_BY):  %SYMDEL  &GET
SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
WARNING: Attempt to delete macro variable APPLICATION_TYPE failed. Variable not found.
ERROR: Macro variable name = must start with a letter or underscore.
ERROR: Macro variable name "PERSONAL" must start with a letter or underscore.
WARNING: Attempt to delete macro variable AND failed. Variable not found.
WARNING: Attempt to delete macro variable PRODUCT_TYPE failed. Variable not found.
ERROR: Macro variable name = must start with a letter or underscore.
ERROR: Macro variable name "ASSET FINANCE" must start with a letter or underscore.
MLOGIC(ZEROS_NUMVARS_BY):  %DO loop index variable I is now 8; loop will iterate again.
SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
MPRINT(ZEROS_NUMVARS_BY):   data LIB_WORK.help_zeros_0;
SYMBOLGEN:  Macro variable HELP_SQL_ZEROS resolves to LIB_WORK.help_sql_zeros
SYMBOLGEN:  Macro variable I resolves to 8
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_sql_zeros (drop=Nobs obs=8);
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_0 because compression overhead would increase the size of the data 
      set.
NOTE: There were 8 observations read from the data set LIB_WORK.HELP_SQL_ZEROS.
NOTE: The data set LIB_WORK.HELP_ZEROS_0 has 8 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
MPRINT(ZEROS_NUMVARS_BY):   proc transpose data=LIB_WORK.help_zeros_0 out=LIB_WORK.help_zeros_1;
MPRINT(ZEROS_NUMVARS_BY):   var _all_;
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: There were 8 observations read from the data set LIB_WORK.HELP_ZEROS_0.
NOTE: The data set LIB_WORK.HELP_ZEROS_1 has 2 observations and 10 variables.
NOTE: Compressing data set LIB_WORK.HELP_ZEROS_1 increased size by 100.00 percent. 
27                                                         The SAS System                             09:31 Wednesday, June 17, 2020

      Compressed is 2 pages; un-compressed would require 1 pages.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
MPRINT(ZEROS_NUMVARS_BY):   data LIB_WORK.help_zeros_2(keep=var);
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_zeros_1;
MPRINT(ZEROS_NUMVARS_BY):   var = catx('=', _NAME_, cats('"',COL1,'"') );
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: There were 2 observations read from the data set LIB_WORK.HELP_ZEROS_1.
NOTE: The data set LIB_WORK.HELP_ZEROS_2 has 2 observations and 1 variables.
NOTE: Compressing data set LIB_WORK.HELP_ZEROS_2 increased size by 100.00 percent. 
      Compressed is 2 pages; un-compressed would require 1 pages.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

MPRINT(ZEROS_NUMVARS_BY):   proc sql noprint;
SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
MPRINT(ZEROS_NUMVARS_BY):   select var INTO: get separated BY ' and ' from LIB_WORK.help_zeros_2;
MPRINT(ZEROS_NUMVARS_BY):   quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

MLOGIC(ZEROS_NUMVARS_BY):  %PUT &get
SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
MPRINT(ZEROS_NUMVARS_BY):   * data &help_zeros_3;
SYMBOLGEN:  Macro variable IN resolves to LIB_WORK.BASEX
NOTE: Line generated by the invoked macro "ZEROS_NUMVARS_BY".
25                  data &help_zeros_3;     set ∈     where &get;    run;     proc sort data=&help_zeros_3 out=&help_zeros_4;
                                            ___
                                            180
25       !  by &by;    run;     PROC TRANSPOSE data=&help_zeros_4 out=&help_zeros_5;     by &by;    RUN;            DATA
25       ! &help_zeros_6 (keep =
ERROR 180-322: Statement is not valid or it is used out of proper order.

MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.BASEX;

SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
NOTE: Line generated by the invoked macro "ZEROS_NUMVARS_BY".
25                  data &help_zeros_3;     set ∈     where &get;    run;     proc sort data=&help_zeros_3 out=&help_zeros_4;
                                                         _____
                                                         180
25       !  by &by;    run;     PROC TRANSPOSE data=&help_zeros_4 out=&help_zeros_5;     by &by;    RUN;            DATA
25       ! &help_zeros_6 (keep =
ERROR 180-322: Statement is not valid or it is used out of proper order.

MPRINT(ZEROS_NUMVARS_BY):   where APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE";

MPRINT(ZEROS_NUMVARS_BY):   run;
28                                                         The SAS System                             09:31 Wednesday, June 17, 2020

SYMBOLGEN:  Macro variable HELP_ZEROS_3 resolves to LIB_WORK.help_zeros_3
ERROR: File LIB_WORK.HELP_ZEROS_3.DATA does not exist.
SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
MPRINT(ZEROS_NUMVARS_BY):   proc sort data=LIB_WORK.help_zeros_3 out=LIB_WORK.help_zeros_4;
SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
MPRINT(ZEROS_NUMVARS_BY):   by APPLICATION_TYPE PRODUCT_TYPE;
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set LIB_WORK.HELP_ZEROS_4 may be incomplete.  When this step was stopped there were 0 observations and 0 
         variables.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_4 because compression overhead would increase the size of the data 
set.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
MPRINT(ZEROS_NUMVARS_BY):   PROC TRANSPOSE data=LIB_WORK.help_zeros_4 out=LIB_WORK.help_zeros_5;
SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
ERROR: Variable APPLICATION_TYPE not found.
MPRINT(ZEROS_NUMVARS_BY):   by APPLICATION_TYPE PRODUCT_TYPE;
ERROR: Variable PRODUCT_TYPE not found.
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set LIB_WORK.HELP_ZEROS_5 may be incomplete.  When this step was stopped there were 0 observations and 0 
         variables.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_5 because compression overhead would increase the size of the data 
set.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6


SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
MPRINT(ZEROS_NUMVARS_BY):   DATA LIB_WORK.help_zeros_6 (keep = APPLICATION_TYPE PRODUCT_TYPE _NAME_ _LABEL_ NZEROS i);
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_zeros_5;
MPRINT(ZEROS_NUMVARS_BY):   array list{*} COL: ;
WARNING: Defining an array with zero elements.
MPRINT(ZEROS_NUMVARS_BY):   NZEROS=0;
MPRINT(ZEROS_NUMVARS_BY):   do i=1 to dim(list);
MPRINT(ZEROS_NUMVARS_BY):   if list{i}=0 then NZEROS=sum(NZEROS,1);
MPRINT(ZEROS_NUMVARS_BY):   end;
MPRINT(ZEROS_NUMVARS_BY):   RUN;

WARNING: The variable APPLICATION_TYPE in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable PRODUCT_TYPE in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable _NAME_ in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable _LABEL_ in the DROP, KEEP, or RENAME list has never been referenced.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_6 because compression overhead would increase the size of the data 
      set.
NOTE: There were 0 observations read from the data set LIB_WORK.HELP_ZEROS_5.
29                                                         The SAS System                             09:31 Wednesday, June 17, 2020

NOTE: The data set LIB_WORK.HELP_ZEROS_6 has 0 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable OUT resolves to LIB_WORK.NZEROS_BY
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6
MPRINT(ZEROS_NUMVARS_BY):   PROC APPEND base=LIB_WORK.NZEROS_BY data=LIB_WORK.help_zeros_6;
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: Appending LIB_WORK.HELP_ZEROS_6 to LIB_WORK.NZEROS_BY.
NOTE: There were 0 observations read from the data set LIB_WORK.HELP_ZEROS_6.
NOTE: 0 observations added.
NOTE: The data set LIB_WORK.NZEROS_BY has 0 observations and 2 variables.
NOTE: PROCEDURE APPEND used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
SYMBOLGEN:  Macro variable HELP_ZEROS_3 resolves to LIB_WORK.help_zeros_3
SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6
MPRINT(ZEROS_NUMVARS_BY):   PROC DELETE data=LIB_WORK.help_zeros_0 LIB_WORK.help_zeros_1 LIB_WORK.help_zeros_2 
LIB_WORK.help_zeros_3 LIB_WORK.help_zeros_4 LIB_WORK.help_zeros_5 LIB_WORK.help_zeros_6 (gennum=all);
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: Deleting LIB_WORK.HELP_ZEROS_0 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_1 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_2 (memtype=DATA).
WARNING: File LIB_WORK.HELP_ZEROS_3.DATA does not exist.
NOTE: Deleting LIB_WORK.HELP_ZEROS_4 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_5 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_6 (memtype=DATA gennum=ALL).
NOTE: PROCEDURE DELETE used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

MLOGIC(ZEROS_NUMVARS_BY):  %SYMDEL  &GET
SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
WARNING: Attempt to delete macro variable APPLICATION_TYPE failed. Variable not found.
ERROR: Macro variable name = must start with a letter or underscore.
ERROR: Macro variable name "PERSONAL" must start with a letter or underscore.
WARNING: Attempt to delete macro variable AND failed. Variable not found.
WARNING: Attempt to delete macro variable PRODUCT_TYPE failed. Variable not found.
ERROR: Macro variable name = must start with a letter or underscore.
ERROR: Macro variable name "ASSET FINANCE" must start with a letter or underscore.
MLOGIC(ZEROS_NUMVARS_BY):  %DO loop index variable I is now 9; loop will iterate again.
SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
MPRINT(ZEROS_NUMVARS_BY):   data LIB_WORK.help_zeros_0;
SYMBOLGEN:  Macro variable HELP_SQL_ZEROS resolves to LIB_WORK.help_sql_zeros
SYMBOLGEN:  Macro variable I resolves to 9
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_sql_zeros (drop=Nobs obs=9);
30                                                         The SAS System                             09:31 Wednesday, June 17, 2020

MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_0 because compression overhead would increase the size of the data 
      set.
NOTE: There were 9 observations read from the data set LIB_WORK.HELP_SQL_ZEROS.
NOTE: The data set LIB_WORK.HELP_ZEROS_0 has 9 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
MPRINT(ZEROS_NUMVARS_BY):   proc transpose data=LIB_WORK.help_zeros_0 out=LIB_WORK.help_zeros_1;
MPRINT(ZEROS_NUMVARS_BY):   var _all_;
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: There were 9 observations read from the data set LIB_WORK.HELP_ZEROS_0.
NOTE: The data set LIB_WORK.HELP_ZEROS_1 has 2 observations and 11 variables.
NOTE: Compressing data set LIB_WORK.HELP_ZEROS_1 increased size by 100.00 percent. 
      Compressed is 2 pages; un-compressed would require 1 pages.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
MPRINT(ZEROS_NUMVARS_BY):   data LIB_WORK.help_zeros_2(keep=var);
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_zeros_1;
MPRINT(ZEROS_NUMVARS_BY):   var = catx('=', _NAME_, cats('"',COL1,'"') );
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: There were 2 observations read from the data set LIB_WORK.HELP_ZEROS_1.
NOTE: The data set LIB_WORK.HELP_ZEROS_2 has 2 observations and 1 variables.
NOTE: Compressing data set LIB_WORK.HELP_ZEROS_2 increased size by 100.00 percent. 
      Compressed is 2 pages; un-compressed would require 1 pages.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

MPRINT(ZEROS_NUMVARS_BY):   proc sql noprint;
SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
MPRINT(ZEROS_NUMVARS_BY):   select var INTO: get separated BY ' and ' from LIB_WORK.help_zeros_2;
MPRINT(ZEROS_NUMVARS_BY):   quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

MLOGIC(ZEROS_NUMVARS_BY):  %PUT &get
SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
MPRINT(ZEROS_NUMVARS_BY):   * data &help_zeros_3;
SYMBOLGEN:  Macro variable IN resolves to LIB_WORK.BASEX
NOTE: Line generated by the invoked macro "ZEROS_NUMVARS_BY".
25                  data &help_zeros_3;     set ∈     where &get;    run;     proc sort data=&help_zeros_3 out=&help_zeros_4;
31                                                         The SAS System                             09:31 Wednesday, June 17, 2020

                                            ___
                                            180
25       !  by &by;    run;     PROC TRANSPOSE data=&help_zeros_4 out=&help_zeros_5;     by &by;    RUN;            DATA
25       ! &help_zeros_6 (keep =
ERROR 180-322: Statement is not valid or it is used out of proper order.

MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.BASEX;

SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
NOTE: Line generated by the invoked macro "ZEROS_NUMVARS_BY".
25                  data &help_zeros_3;     set ∈     where &get;    run;     proc sort data=&help_zeros_3 out=&help_zeros_4;
                                                         _____
                                                         180
25       !  by &by;    run;     PROC TRANSPOSE data=&help_zeros_4 out=&help_zeros_5;     by &by;    RUN;            DATA
25       ! &help_zeros_6 (keep =
ERROR 180-322: Statement is not valid or it is used out of proper order.

MPRINT(ZEROS_NUMVARS_BY):   where APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE";

MPRINT(ZEROS_NUMVARS_BY):   run;
SYMBOLGEN:  Macro variable HELP_ZEROS_3 resolves to LIB_WORK.help_zeros_3
ERROR: File LIB_WORK.HELP_ZEROS_3.DATA does not exist.
SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
MPRINT(ZEROS_NUMVARS_BY):   proc sort data=LIB_WORK.help_zeros_3 out=LIB_WORK.help_zeros_4;
SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
MPRINT(ZEROS_NUMVARS_BY):   by APPLICATION_TYPE PRODUCT_TYPE;
MPRINT(ZEROS_NUMVARS_BY):   run;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set LIB_WORK.HELP_ZEROS_4 may be incomplete.  When this step was stopped there were 0 observations and 0 
         variables.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_4 because compression overhead would increase the size of the data 
set.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
MPRINT(ZEROS_NUMVARS_BY):   PROC TRANSPOSE data=LIB_WORK.help_zeros_4 out=LIB_WORK.help_zeros_5;
SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
ERROR: Variable APPLICATION_TYPE not found.
MPRINT(ZEROS_NUMVARS_BY):   by APPLICATION_TYPE PRODUCT_TYPE;
ERROR: Variable PRODUCT_TYPE not found.
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set LIB_WORK.HELP_ZEROS_5 may be incomplete.  When this step was stopped there were 0 observations and 0 
         variables.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_5 because compression overhead would increase the size of the data 
set.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6

32                                                         The SAS System                             09:31 Wednesday, June 17, 2020


SYMBOLGEN:  Macro variable BY resolves to APPLICATION_TYPE PRODUCT_TYPE
MPRINT(ZEROS_NUMVARS_BY):   DATA LIB_WORK.help_zeros_6 (keep = APPLICATION_TYPE PRODUCT_TYPE _NAME_ _LABEL_ NZEROS i);
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
MPRINT(ZEROS_NUMVARS_BY):   set LIB_WORK.help_zeros_5;
MPRINT(ZEROS_NUMVARS_BY):   array list{*} COL: ;
WARNING: Defining an array with zero elements.
MPRINT(ZEROS_NUMVARS_BY):   NZEROS=0;
MPRINT(ZEROS_NUMVARS_BY):   do i=1 to dim(list);
MPRINT(ZEROS_NUMVARS_BY):   if list{i}=0 then NZEROS=sum(NZEROS,1);
MPRINT(ZEROS_NUMVARS_BY):   end;
MPRINT(ZEROS_NUMVARS_BY):   RUN;

WARNING: The variable APPLICATION_TYPE in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable PRODUCT_TYPE in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable _NAME_ in the DROP, KEEP, or RENAME list has never been referenced.
WARNING: The variable _LABEL_ in the DROP, KEEP, or RENAME list has never been referenced.
NOTE: Compression was disabled for data set LIB_WORK.HELP_ZEROS_6 because compression overhead would increase the size of the data 
      set.
NOTE: There were 0 observations read from the data set LIB_WORK.HELP_ZEROS_5.
NOTE: The data set LIB_WORK.HELP_ZEROS_6 has 0 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable OUT resolves to LIB_WORK.NZEROS_BY
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6
MPRINT(ZEROS_NUMVARS_BY):   PROC APPEND base=LIB_WORK.NZEROS_BY data=LIB_WORK.help_zeros_6;
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: Appending LIB_WORK.HELP_ZEROS_6 to LIB_WORK.NZEROS_BY.
NOTE: There were 0 observations read from the data set LIB_WORK.HELP_ZEROS_6.
NOTE: 0 observations added.
NOTE: The data set LIB_WORK.NZEROS_BY has 0 observations and 2 variables.
NOTE: PROCEDURE APPEND used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

SYMBOLGEN:  Macro variable HELP_ZEROS_0 resolves to LIB_WORK.help_zeros_0
SYMBOLGEN:  Macro variable HELP_ZEROS_1 resolves to LIB_WORK.help_zeros_1
SYMBOLGEN:  Macro variable HELP_ZEROS_2 resolves to LIB_WORK.help_zeros_2
SYMBOLGEN:  Macro variable HELP_ZEROS_3 resolves to LIB_WORK.help_zeros_3
SYMBOLGEN:  Macro variable HELP_ZEROS_4 resolves to LIB_WORK.help_zeros_4
SYMBOLGEN:  Macro variable HELP_ZEROS_5 resolves to LIB_WORK.help_zeros_5
SYMBOLGEN:  Macro variable HELP_ZEROS_6 resolves to LIB_WORK.help_zeros_6
MPRINT(ZEROS_NUMVARS_BY):   PROC DELETE data=LIB_WORK.help_zeros_0 LIB_WORK.help_zeros_1 LIB_WORK.help_zeros_2 
LIB_WORK.help_zeros_3 LIB_WORK.help_zeros_4 LIB_WORK.help_zeros_5 LIB_WORK.help_zeros_6 (gennum=all);
MPRINT(ZEROS_NUMVARS_BY):   RUN;

NOTE: Deleting LIB_WORK.HELP_ZEROS_0 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_1 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_2 (memtype=DATA).
WARNING: File LIB_WORK.HELP_ZEROS_3.DATA does not exist.
NOTE: Deleting LIB_WORK.HELP_ZEROS_4 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_5 (memtype=DATA).
NOTE: Deleting LIB_WORK.HELP_ZEROS_6 (memtype=DATA gennum=ALL).
33                                                         The SAS System                             09:31 Wednesday, June 17, 2020

NOTE: PROCEDURE DELETE used (Total process time):
      real time           0.00 seconds
      cpu time            0.02 seconds
      

MLOGIC(ZEROS_NUMVARS_BY):  %SYMDEL  &GET
SYMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
WARNING: Attempt to delete macro variable APPLICATION_TYPE failed. Variable not found.
ERROR: Macro variable name = must start with a letter or underscore.
ERROR: Macro variable name "PERSONAL" must start with a letter or underscore.
WARNING: Attempt to delete macro variable AND failed. Variable not found.
WARNING: Attempt to delete macro variable PRODUCT_TYPE failed. Variable not found.
ERROR: Macro variable name = must start with a letter or underscore.
ERROR: Macro variable name "ASSET FINANCE" must start with a letter or underscore.
MLOGIC(ZEROS_NUMVARS_BY):  %DO loop index variable I is now 10; loop will not iterate again.
MLOGIC(ZEROS_NUMVARS_BY):  %GOTO EXIT (label resolves to EXIT).
MLOGIC(ZEROS_NUMVARS_BY):  Ending execution.
26         	
27         
28         GOPTIONS NOACCESSIBLE;
29         %LET _CLIENTTASKLABEL=;
30         %LET _CLIENTPROJECTPATH=;
31         %LET _CLIENTPROJECTNAME=;
32         %LET _SASPROGRAMFILE=;
33         
34         ;*';*";*/;quit;run;
35         ODS _ALL_ CLOSE;
36         
37         
38         QUIT; RUN;
39         

 

 

I cannot find the reason behind, I have not coded in SAS for years. Any help would be greatly appreciated.

 

Thanks in advance.

1 ACCEPTED SOLUTION

Accepted Solutions
ballardw
Super User

Look in your code for this section of code:

/* Here the condition is completed	*/
proc sql noprint;
	select var INTO: get separated BY ' and '
	from &help_zeros_2;
quit;
*%put &get;  <= This is the problem

/*	Here I do my subset	*/
data &help_zeros_3;
	set &in;
	where &get;
run;

When you use the * ; comment inside a macro the * is actually submitted to the macro processor. You can see this from your log:

YMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
MPRINT(ZEROS_NUMVARS_BY):   * data &help_zeros_3;
SYMBOLGEN:  Macro variable IN resolves to LIB_WORK.BASEX

See that the start of the data step has the * at the front? That means the  "data &help_zeros_3 was commented out. So the first part of the data step that is attempted to execute was the SET statement. Which without a data step start is "out of order".

 

Either always use the /*   */ style of comments or inside a macro use the %*   ;  which tells the macro processor that this is Macro comment and not to submit any of the line.

 

 

View solution in original post

6 REPLIES 6
ChrisHemedinger
Community Manager

It looks like there is a KEEP= option defined somewhere, perhaps as part of this macro var?

&help_zeros_3

 

Always good to check the current values for your macro variables to see what they might be bringing into your statements.

Check out SAS Innovate on-demand content! Watch the main stage sessions, keynotes, and over 20 technical breakout sessions!
JohnX
Fluorite | Level 6
There is a keep 2 steps ahead, regarding another dataset no part of this step, so I cannot imagine this would be the reason
ballardw
Super User

One of the first tools to consider when debugging macro code are the system options MPRINT , SYMBOLGEN and MLOGIC.

The MPRINT option will show the code as generated by the macro processor and is the first thing to consider:

Submit the statement:

 

Options mprint;

before running the macro code. The Log will have many more details.

If the issue appears to be the way one or more macro variables is constructed (from the MPRINT results) then add SYMBOLGEN, if the issue is program flow or logic then the MLOGIC option.

You can turn these off with Options NOMPRINT NOSYMBOLGEN NOMLOGIC; if they have been turned.

 

Then share the log results. It will be much easier to read and follow if you copy the text from the log and paste into a code box opened with the forum's </> icon to preserve text formatting.

The error message you show would originally have had the underscore character under the place SAS found something objectionable in the code (not always the actual error but where things became detectable).

 

It would not hurt to show the code of the entire macro and better would be to include some example data that duplicates the error. The data should be in the form of data step code. Which Instructions here: https://communities.sas.com/t5/SAS-Communities-Library/How-to-create-a-data-step-version-of-your-dat... will show how to turn an existing SAS data set into data step code that can be pasted into a forum code box using the <> icon or attached as text to show exactly what you have and that we can test code against.

 

And if you haven't been using SAS for a while you may not remember, or possibly never knew, that some types of macro errors can make the SAS system appear locked down and may require restarting the session to clean out the accumulated error behaviors.

JohnX
Fluorite | Level 6
Thanks for the answer.
I updated my post, adding the full code and the full log when the by condition is not empty. I prefer for now not to provide any example, as I think it would not necessarilly help, but I could in the future.
ballardw
Super User

Look in your code for this section of code:

/* Here the condition is completed	*/
proc sql noprint;
	select var INTO: get separated BY ' and '
	from &help_zeros_2;
quit;
*%put &get;  <= This is the problem

/*	Here I do my subset	*/
data &help_zeros_3;
	set &in;
	where &get;
run;

When you use the * ; comment inside a macro the * is actually submitted to the macro processor. You can see this from your log:

YMBOLGEN:  Macro variable GET resolves to APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
APPLICATION_TYPE="PERSONAL" and PRODUCT_TYPE="ASSET FINANCE"
MPRINT(ZEROS_NUMVARS_BY):   * data &help_zeros_3;
SYMBOLGEN:  Macro variable IN resolves to LIB_WORK.BASEX

See that the start of the data step has the * at the front? That means the  "data &help_zeros_3 was commented out. So the first part of the data step that is attempted to execute was the SET statement. Which without a data step start is "out of order".

 

Either always use the /*   */ style of comments or inside a macro use the %*   ;  which tells the macro processor that this is Macro comment and not to submit any of the line.

 

 

JohnX
Fluorite | Level 6
Thanks a lot. That was it. And thanks for the explanation too, very useful.

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 Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 6 replies
  • 834 views
  • 4 likes
  • 3 in conversation