65 %MACRO assertColumns (
70 ,i_allow = DSLABEL LABEL COMPVAR
97 %LOCAL l_i l_j l_symboli l_symbolj l_potenz l_mask;
100 %DO %WHILE(%length(%scan(&i_allow,%eval(&l_i+1),%str( ))));
101 %LET l_i = %eval (&l_i + 1);
102 %LET l_symboli = %upcase(%scan(&i_allow, &l_i, %str( )));
105 %DO %WHILE(%length(%scan(&l_allowSymbols,%eval(&l_j+1),%str( ))));
106 %LET l_j = %eval (&l_j+1);
107 %LET l_symbolj = %scan(&l_allowSymbols, &l_j, %str( ));
108 %IF &l_symboli = &l_symbolj %THEN %
goto label1;
109 %LET l_potenz = &l_potenz*2;
111 %PUT &g_error: assertColumns: invalid symbol &l_symboli in parameter i_allow;
114 %LET l_mask = %sysfunc(bor(&l_mask, &l_potenz));
118 %IF %length(&i_maxReportObs) %then %LET o_maxReportObs = &i_maxReportObs;
121 %GLOBAL g_inTestcase;
122 %IF &g_inTestcase EQ 1 %THEN %DO;
125 %ELSE %IF &g_inTestcase NE 2 %THEN %DO;
126 %PUT &g_error: assert can only be called after initTestcase;
131 %LOCAL l_casid l_tstid;
133 i_type = assertColumns
134 ,i_expected = %upcase(&i_allow)
143 %LOCAL l_rc l_actual;
144 %IF NOT %sysfunc(exist(&i_actual,DATA)) AND NOT %sysfunc(exist(&i_actual,VIEW)) %THEN %DO;
146 %LET l_actual=ERROR: actual table not found.;
150 %ELSE %IF NOT %sysfunc(exist(&i_expected,DATA)) AND NOT %sysfunc(exist(&i_expected,VIEW))%THEN %DO;
152 %LET l_actual=&l_actual ERROR: expected table not found.;
158 %LOCAL l_formchar l_compResult;
159 %LET l_formchar=%sysfunc(getoption(formchar));
160 OPTIONS FORMCHAR="|----|+|---+=|-/\<>*";
162 ODS DOCUMENT NAME=testout._%substr(00&g_scnid,%length(&g_scnid))_&l_casid._&l_tstid._columns_rep(WRITE);
168 %IF %quote(&i_fuzz) NE %THEN CRITERION=&i_fuzz METHOD=ABSOLUTE;
170 %IF %quote(&i_id) NE %THEN %str(ID &i_id;);
172 %PUT sysinfo = &sysinfo;
173 %LET l_compResult = &sysinfo;
176 OPTIONS FORMCHAR="&l_formchar";
179 %LET l_rc=%eval(%sysfunc(bxor(%sysfunc(bor(&l_mask,&l_compResult)),&l_mask)) NE 0);
184 %DO %WHILE(%length(%scan(&l_allowSymbols,%eval(&l_j+1),%str( ))));
185 %LET l_j = %eval (&l_j+1);
186 %LET l_symbolj = %scan(&l_allowSymbols, &l_j, %str( ));
187 %IF %sysfunc(band(&l_compResult, &l_potenz)) %THEN %DO;
188 %LET l_actual = &l_actual &l_symbolj;
190 %LET l_potenz = &l_potenz*2;
200 ,tst_act = "&l_actual"
202 tst_scnid = &g_scnid AND
203 tst_casid = &l_casid AND
209 %IF &o_maxreportobs NE 0 %THEN %DO;
210 %IF %sysfunc(exist(&i_expected,DATA)) OR %sysfunc(exist(&i_expected,VIEW)) %THEN %DO;
211 DATA testout._%substr(00&g_scnid,%length(&g_scnid))_&l_casid._&l_tstid._columns_exp;
212 SET &i_expected (obs=&o_maxReportObs.);
216 %IF %sysfunc(exist(&i_actual,DATA)) OR %sysfunc(exist(&i_actual,VIEW)) %THEN %DO;
217 DATA testout._%substr(00&g_scnid,%length(&g_scnid))_&l_casid._&l_tstid._columns_act;
218 SET &i_actual (obs=&o_maxReportObs.);