40 %MACRO reportSASUnit (
46 %LOCAL l_macname; %LET l_macname=&sysmacroname;
49 %IF
"&o_html" NE
"1" %THEN %LET o_html=0;
51 %IF
"&o_force" NE
"1" %THEN %LET o_force=0;
53 %_sasunit_nls (i_language=&i_language)
57 %IF %length(&o_output) %THEN %LET l_output=&o_output;
58 %ELSE %LET l_output =&g_target/rep;
59 %LET l_output=%_sasunit_abspath(&g_root,&l_output);
61 %IF %_sasunit_handleError(&l_macname, InvalidOutputDir,
62 NOT %_sasunit_existDir(&l_output),
63 Error in parameter o_output: target folder does not exist)
67 %IF %_sasunit_handleError(&l_macname, NoTestDB,
68 NOT %sysfunc(exist(target.tsu)) OR NOT %symexist(g_project),
69 %nrstr(Test database cannot be accessed, call %initSASUnit before %reportSASUnit))
84 %_sasunit_tempFilename(d_rep)
85 %_sasunit_tempFilename(d_scn)
86 %_sasunit_tempFilename(d_cas01)
87 %_sasunit_tempFilename(d_auton)
88 %_sasunit_tempFilename(d_pgm)
89 %_sasunit_tempFilename(d_pcs)
90 %_sasunit_tempFilename(d_emptyscn)
91 %_sasunit_tempFilename(d_cas)
92 %_sasunit_tempFilename(d_tst)
98 l_sEmptyScnDummyCasDesc
100 %LET l_sEmptyScnDummyCasDesc = %STR(no valid test
case found - must be red!);
103 CREATE TABLE &d_emptyscn. AS
107 WHERE t1.scn_id NOT IN
118 CREATE TABLE &d_cas. AS
141 ,
"&l_sEmptyScnDummyCasDesc."
152 CREATE TABLE &d_tst. AS
184 PROC SORT DATA=target.scn OUT=&d_scn;
192 PROC SORT DATA=&d_cas OUT=&d_cas01;
198 cas_last = last.cas_scnid;
199 cas_pgmucase = upcase(cas_pgm);
202 PROC SORT DATA=&d_cas (KEEP=cas_auton RENAME=(cas_auton=auton_id))
203 OUT=&d_auton NODUPKEY;
207 SET &d_auton END=eof;
212 SET &d_cas (KEEP=cas_auton cas_pgm RENAME=(cas_auton=pgm_auton cas_pgm=pgm_ucase));
213 pgm_ucase = upcase(pgm_ucase);
215 PROC SORT DATA=&d_pgm NODUPKEY;
216 BY pgm_auton pgm_ucase;
221 IF first.pgm_auton THEN pgm_id=0;
223 pgm_last = last.pgm_auton;
227 SET &d_cas (KEEP=cas_auton cas_pgm cas_scnid cas_id RENAME=(cas_auton=pcs_auton cas_pgm=pcs_ucase cas_scnid=pcs_scnid cas_id=pcs_casid));
228 pcs_ucase = upcase(pcs_ucase);
229 PROC SORT DATA=&d_pcs OUT=&d_pcs NODUPKEY;
230 BY pcs_auton pcs_ucase pcs_scnid pcs_casid;
234 BY pcs_auton pcs_ucase;
235 pcs_last = last.pcs_ucase;
241 CREATE TABLE &d_rep (COMPRESS=YES) AS
297 scn_id = cas_scnid AND
298 cas_scnid = tst_scnid AND
299 cas_id = tst_casid AND
300 cas_auton = auton_id AND
301 cas_auton = pgm_auton AND
302 cas_pgmucase = pgm_ucase AND
303 cas_auton = pcs_auton AND
304 cas_pgmucase = pcs_ucase AND
305 cas_scnid = pcs_scnid AND
308 CREATE UNIQUE INDEX idx1 ON &d_rep (scn_id, cas_id, tst_id);
309 CREATE UNIQUE INDEX idx2 ON &d_rep (cas_auton, pgm_id, scn_id, cas_id, tst_id);
312 %IF %_sasunit_handleError(&l_macname, ErrorTestDB,
314 %nrstr(Fehler beim Zugriff auf die Testdatenbank))
320 l_bOnlyInexistingScnFound
323 SELECT coalesce(max(scn_start),0) FORMAT=12.0 INTO :l_lastrun FROM target.scn;
327 %LET l_bOnlyInexistingScnFound = 1;
329 SET target.scn ( KEEP = scn_start );
330 IF scn_start > 0 THEN DO;
332 Call Symputx ('l_bOnlyInexistingScnFound', '0');
338 FILENAME repgen temp;
347 IF tsu_lastrep=0 OR &o_force THEN DO;
349 PUT '%_sasunit_copydir(' /
350 " &g_sasunit" '/html/%str(*.*)' /
354 PUT '%_sasunit_reportFrameHTML(' /
355 " i_repdata = &d_rep" /
356 " ,o_html = &l_output/index.html" /
360 IF tsu_lastinit > tsu_lastrep OR &o_force THEN DO;
362 PUT '%_sasunit_reportLogHTML(' /
363 " i_log = &g_log/000.log" /
364 " ,i_title = &g_nls_reportSASUnit_001" /
365 " ,o_html = &l_output/000_log.html" /
368 PUT '%_sasunit_reportHomeHTML(' /
369 " i_repdata = &d_rep" /
370 " ,o_html = &l_output/overview.html" /
374 IF &l_lastrun > tsu_lastrep OR &l_bOnlyInexistingScnFound. OR &o_force. THEN DO;
376 PUT '%_sasunit_reportTreeHTML(' /
377 " i_repdata = &d_rep" /
378 " ,o_html = &l_output/tree.html" /
381 PUT '%_sasunit_reportScnHTML(' /
382 " i_repdata = &d_rep" /
383 " ,o_html = &l_output/scn_overview.html" /
386 PUT '%_sasunit_reportCasHTML(' /
387 " i_repdata = &d_rep" /
388 " ,o_html = &l_output/cas_overview.html" /
391 PUT '%_sasunit_reportAutonHTML(' /
392 " i_repdata = &d_rep" /
393 " ,o_html = &l_output/auton_overview.html" /
399 IF first.scn_id AND scn_id NE . THEN DO;
401 IF scn_start > tsu_lastrep OR &o_force THEN DO;
403 PUT '%_sasunit_reportLogHTML(' /
404 " i_log = &g_log/" scn_id z3. ".log" /
405 " ,i_title = &g_nls_reportSASUnit_002 " scn_id z3. " (" cas_pgm +(-1) ")" /
406 " ,o_html = &l_output/" scn_id z3. "_log.html" /
412 IF cas_start > tsu_lastrep OR &o_force THEN DO;
415 IF first.cas_id AND scn_id NE . AND cas_id NE . THEN DO;
417 PUT '%_sasunit_reportLogHTML(' /
418 " i_log = &g_log/" scn_id z3. "_" cas_id z3. ".log" /
419 " ,i_title = &g_nls_reportSASUnit_003 " cas_id z3. " &g_nls_reportSASUnit_004 " scn_id z3. " (" cas_pgm +(-1) ")" /
420 " ,o_html = &l_output/" scn_id z3. "_" cas_id z3. "_log.html" /
423 PUT '%_sasunit_reportDetailHTML(' /
424 " i_repdata = &d_rep" /
425 " ,i_scnid = " scn_id z3. /
426 " ,i_casid = " cas_id z3. /
427 " ,o_html = &l_output/cas_" scn_id z3. "_" cas_id z3. ".html" /
432 IF scn_id NE . AND cas_id NE . AND tst_id NE . AND upcase(tst_type) = 'ASSERTCOLUMNS' THEN DO;
433 PUT '%_sasunit_reportCmpHTML(' /
434 " i_scnid = " scn_id z3. /
435 " ,i_casid = " cas_id z3. /
436 " ,i_tstid = " tst_id z3. /
437 " ,o_html = &l_output" /
442 IF scn_id NE . AND cas_id NE . AND tst_id NE . AND upcase(tst_type) = 'ASSERTLIBRARY' THEN DO;
443 PUT '%_sasunit_reportLibraryHTML(' /
444 " i_scnid = " scn_id z3. /
445 " ,i_casid = " cas_id z3. /
446 " ,i_tstid = " tst_id z3. /
447 " ,o_html = &l_output" /
452 IF scn_id NE . AND cas_id NE . AND tst_id NE . AND upcase(tst_type) = 'ASSERTREPORT' THEN DO;
453 PUT '%_sasunit_reportManHTML(' /
454 " i_scnid = " scn_id z3. /
455 " ,i_casid = " cas_id z3. /
456 " ,i_tstid = " tst_id z3. /
457 " ,i_extexp= " tst_exp /
458 " ,i_extact= " tst_act /
459 " ,o_html = &l_output/_" scn_id z3. "_" cas_id z3. "_" tst_id z3. "_rep.html" /
460 " ,o_output= &l_output" /
470 %INCLUDE repgen / source2;
476 SET tsu_lastrep = %sysfunc(datetime())
483 %PUT ======================== Error! reportSASUnit aborted! ==========================================;
487 PROC DATASETS NOWARN NOLIST LIB=work;
488 DELETE %scan(&d_rep,2,.) %scan(&d_scn,2,.) %scan(&d_cas01.,2,.) %scan(&d_cas.,2,.) %scan(&d_auton,2,.)
489 %scan(&d_pgm,2,.) %scan(&d_pcs,2,.) %scan(&d_emptyscn.,2,.);