23 %MACRO _reportAutonHTML (i_repdata =
31 %LOCAL d_rep1 d_rep2 l_tcg_res l_pgmLibraries l_pgmLib l_title l_logpath l_cAuton;
33 %_tempFileName(d_rep1)
34 %_tempFileName(d_rep2)
36 PROC MEANS NOPRINT NWAY missing DATA=&i_repdata(KEEP=cas_auton pgm_id scn_id cas_id);
37 class cas_auton pgm_id scn_id cas_id;
38 OUTPUT OUT=&d_rep1. (rename=(_FREQ_=scn_tst));
41 PROC MEANS NOPRINT NWAY missing DATA=&d_rep1.(KEEP=cas_auton pgm_id scn_id scn_tst);
42 class cas_auton pgm_id scn_id;
43 OUTPUT OUT=&d_rep2. (rename=(_FREQ_=scn_cas)) sum(scn_tst)=scn_tst;
46 proc sort data=&i_repdata. out=work._auton_report;
47 by cas_auton pgm_id scn_id;
50 data work._auton_report;
51 set work._auton_report;
52 by cas_auton pgm_id scn_id;
56 data work._auton_report;
57 merge work._auton_report &d_rep2.;
58 by cas_auton pgm_id scn_id;
61 %IF &g_testcoverage. EQ 1 %THEN %DO;
66 %let l_rc =%_delFile("&g_log/000.tcg");
68 %let l_logpath=%_escapeBlanks(&g_log.);
70 FILENAME allfiles "&l_logpath.
84 SELECT DISTINCT cas_pgm
85 INTO :l_unitUnderTestList SEPARATED BY '*'
86 FROM work._auton_report;
89 DATA work._auton_report (COMPRESS=YES);
91 SET work._auton_report;
95 %LET l_listCount=%sysfunc(countw(&l_unitUnderTestList.,'*'));
96 %do i = 1 %to &l_listCount;
97 %LET l_currentUnit=%lowcase(%scan(&l_unitUnderTestList,&i,*));
98 %IF "%sysfunc(compress(&l_currentUnit.))" EQ "" %THEN %DO;
103 %let l_currentUnitLocation=;
104 %let l_currentUnitFileName=;
105 %IF (%SYSFUNC(FILEEXIST(&l_currentUnit.))) %THEN %DO;
106 %_getAbsPathComponents(
107 i_absPath = &l_currentUnit
108 , o_fileName = l_currentUnitFileName
109 , o_pathWithoutName = l_currentUnitLocation
113 %IF (%SYSFUNC(FILEEXIST(&g_root./&l_currentUnit.))) %THEN %DO;
114 %_getAbsPathComponents(
115 i_absPath = &g_root./&l_currentUnit.
116 , o_fileName = l_currentUnitFileName
117 , o_pathWithoutName = l_currentUnitLocation
121 %IF (%SYSFUNC(FILEEXIST(&g_sasunit./&l_currentUnit.))) %THEN %DO;
122 %_getAbsPathComponents(
123 i_absPath = &g_sasunit./&l_currentUnit.
124 , o_fileName = l_currentUnitFileName
125 , o_pathWithoutName = l_currentUnitLocation
128 %ELSE %IF (%SYSFUNC(FILEEXIST(&g_sasunit_os./&l_currentUnit.))) %THEN %DO;
129 %_getAbsPathComponents(
130 i_absPath = &g_sasunit_os./&l_currentUnit.
131 , o_fileName = l_currentUnitFileName
132 , o_pathWithoutName = l_currentUnitLocation
137 %DO %UNTIL ("&l_currentUnitLocation." NE "" OR &j. EQ 10);
138 %IF (%SYSFUNC(FILEEXIST(&&g_sasautos&j/&l_currentUnit.))) %THEN %DO;
139 %_getAbsPathComponents(
140 i_absPath = &&g_sasautos&j/&l_currentUnit.
141 , o_fileName = l_currentUnitFileName
142 , o_pathWithoutName = l_currentUnitLocation
145 %LET j = %EVAL(&j + 1);
152 %IF ("&l_currentUnitFileName." NE "" AND "&l_currentUnitLocation." NE ""
153 AND %SYSFUNC(FILEEXIST(&l_currentUnitLocation./&l_currentUnitFileName.))
154 AND %SYSFUNC(FILEEXIST(&g_log./000.tcg)) ) %THEN %DO;
155 %_reporttcghtml(i_macroName = &l_currentUnitFileName.
156 ,i_macroLocation = &l_currentUnitLocation.
157 ,i_mCoverageName = 000.tcg
158 ,i_mCoverageLocation = &g_log
159 ,o_outputFile = tcg_%SCAN(&l_currentUnitFileName.,1,.)
160 ,o_outputPath = &g_target/rep
161 ,o_resVarName = l_tcg_res
168 UPDATE work._auton_report
169 SET tcg_pct=&l_tcg_res.
170 WHERE upcase(cas_pgm) EQ "%upcase(&l_currentUnit.)";
177 SELECT DISTINCT cas_auton
178 INTO :l_pgmLibraries SEPARATED BY '§'
179 FROM work._auton_report;
186 %let l_title=%str(&g_nls_reportAuton_001 | &g_project - SASUnit &g_nls_reportAuton_002);
187 title j=c "&l_title.";
189 %if (&o_html.) %then %do;
190 ods html4 file="&o_path./&o_file..html"
192 headtext='<link href="tabs.css" rel="stylesheet" type="text/css"/><link rel="shortcut icon" href="./favicon.ico" type="image/x-icon" />'
193 metatext="http-equiv=""Content-Style-Type"" content=""text/css"" /><meta http-equiv=""Content-Language"" content=""&i_language."" /"
194 style=styles.SASUnit stylesheet=(URL="SAS_SASUnit.css");
195 %_reportPageTopHTML(i_title = &l_title.
201 %LET l_listCount=%sysfunc(countw(&l_pgmLibraries.,'§'));
202 %do i = 1 %to &l_listCount.;
203 %LET l_pgmLib=%lowcase(%scan(&l_pgmLibraries,&i,§));
205 %IF (l_pgmLib ne .) %THEN %DO;
206 %LET l_cAuton=%sysfunc (putn(&l_pgmLib.,z3.))_;
208 data work._current_auton;
209 length pgmColumn scenarioColumn caseColumn assertColumn
210 %IF &g_testcoverage. EQ 1 %THEN %DO;
214 linkTitle0 linkTitle1 LinkTitle2 LinkTitle3
215 linkColumn0 linkColumn1 LinkColumn2 LinkColumn3 $1000
216 _autonColumn autonColumn cas_abs_path scn_abs_path $400;
217 set work._auton_report (where=(cas_auton=&l_pgmLib.));
218 ARRAY sa(0:9) tsu_sasautos tsu_sasautos1-tsu_sasautos9;
220 pgmColumn="&g_nls_reportAuton_005."
221 scenarioColumn="&g_nls_reportAuton_006."
222 caseColumn="&g_nls_reportAuton_007."
223 assertColumn="&g_nls_reportAuton_014."
224 %IF &g_testcoverage. EQ 1 %THEN %DO;
225 coverageColumn="&g_nls_reportAuton_016." [%]
227 resultColumn="&g_nls_reportAuton_008.";
229 if (cas_pgm="^_") then cas_pgm="";
230 IF cas_auton = . THEN DO;
231 cas_abs_path = resolve ('%_abspath(&g_root,' !! trim(cas_pgm) !! ')');
233 ELSE IF cas_auton = 0 THEN DO;
234 cas_abs_path = resolve ('%_abspath(&g_sasunit,' !! trim(cas_pgm) !! ')');
236 ELSE IF cas_auton = 1 THEN DO;
237 cas_abs_path = resolve ('%_abspath(&g_sasunit_os,' !! trim(cas_pgm) !! ')');
240 cas_abs_path = resolve ('%_abspath(&g_sasautos' !! put (cas_auton-2,1.) !! ',' !! trim(cas_pgm) !! ')');
242 scn_abs_path = resolve ('%_abspath(&g_root,' !! trim(scn_path) !! ')');
244 %_render_dataColumn(i_sourceColumn=scn_cas
245 ,o_targetColumn=caseColumn
247 %_render_dataColumn(i_sourceColumn=scn_tst
248 ,o_targetColumn=assertColumn
250 %_render_iconColumn(i_sourceColumn=scn_res
252 ,o_targetColumn=resultColumn
254 if (cas_auton = .) then do;
255 _autonColumn = "&g_nls_reportAuton_015.";
258 if (cas_auton = 0) then do;
259 _autonColumn = tsu_sasunit;
260 linkTitle0 = symget("g_sasunit");
262 else if (cas_auton = 1) then do;
263 _autonColumn = tsu_sasunit_os;
264 linkTitle0 = symget("g_sasunit_os");
267 _autonColumn = sa(cas_auton-2);
268 linkTitle0 = symget("g_sasautos" !! put(cas_auton-2, z1.));
271 linkTitle0 = "&g_nls_reportAuton_009. " !! linkTitle0;
273 %_render_dataColumn(i_sourceColumn=_autonColumn
274 ,i_linkColumn=LinkColumn0
275 ,i_linkTitle=LinkTitle0
276 ,o_targetColumn=autonColumn
278 autonColumn="&g_nls_reportAuton_003.: " !! trim(autonColumn);
280 *** Any destination that renders links shares this if ***;
281 %if (&o_html.) %then %do;
282 LinkTitle1 = "&g_nls_reportAuton_009." !! byte(13) !! cas_abs_path;
283 LinkTitle2 = "&g_nls_reportAuton_010." !! byte(13) !! scn_abs_path;
284 LinkTitle3 = "&g_nls_reportAuton_017. " !! cas_pgm;
286 *** HTML-links are destinations specific ***;
287 %if (&o_html.) %then %do;
289 LinkColumn2 = catt("cas_overview.html
#SCN", put(scn_id,z3.), "_");
290 if compress(cas_pgm) ne '' then do;
291 if index(cas_pgm,'/') GT 0 then do;
292 LinkColumn3 = 'tcg_'||trim(left(scan(substr(cas_pgm, findw(cas_pgm, scan(cas_pgm, countw(cas_pgm,'/'),'/'))),1,".") !! ".html"));
295 LinkColumn3 = 'tcg_'||trim(left(scan(cas_pgm,1,".") !! ".html"));
300 %_render_dataColumn(i_sourceColumn=cas_pgm
301 ,i_linkColumn=LinkColumn1
302 ,i_linkTitle=LinkTitle1
303 ,o_targetColumn=pgmColumn
305 %_render_dataColumn(i_sourceColumn=scn_id
307 ,i_linkColumn=LinkColumn2
308 ,i_linkTitle=LinkTitle2
309 ,o_targetColumn=scenarioColumn
311 %IF &g_testcoverage. EQ 1 %THEN %DO;
312 %_render_dataColumn(i_sourceColumn=tcg_pct
314 ,i_linkColumn=LinkColumn3
315 ,i_linkTitle=LinkTitle3
316 ,o_targetColumn=coverageColumn
322 %if (&i. = &l_listCount.) %then %do;
323 %_reportFooter(o_html=&o_html.);
326 %if (&o_html.) %then %do;
327 ods html4 anchor="AUTON&l_cAuton.";
330 proc report data=work._current_auton nowd missing spanrows
331 style(lines)=blindData
334 columns pgm_id pgmColumn scenarioColumn caseColumn assertColumn
335 %IF &g_testcoverage. EQ 1 %THEN %DO;
338 resultColumn autonColumn;
340 define autonColumn / noprint;
341 define pgm_id / group noprint;
342 define pgmColumn / group;
343 define scenarioColumn / group style(column)=[just=right];
344 define caseColumn / group style(column)=[just=right];
345 define assertColumn / group style(column)=[just=right];
346 %IF &g_testcoverage. EQ 1 %THEN %DO;
347 define coverageColumn / group style(column)=[just=right];
349 define resultColumn / group style(COLUMN)=[background=white];
351 compute before _page_;
352 line @1 autonColumn $;
356 *** Supress title between testcases ***;
357 %if (&i. = 1) %then %do;
361 *** Render separation line between program libraries ***;
362 %if (&o_html. AND &i. ne &l_listCount.) %then %do;
363 ods html4 text="^{RAW <hr size=
""1
"">}
";
366 proc delete data=work._current_auton;
372 %if (&o_html.) %then %do;
381 proc delete data=work._auton_report;
383 %MEND _reportAutonHTML;