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,.);