00001
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 %MACRO reportSASUnit (
00034 i_language = EN
00035 ,o_html = 1
00036 ,o_force = 0
00037 ,o_output =
00038 );
00039 %LOCAL l_macname; %LET l_macname=&sysmacroname;
00040
00041
00042 %IF "&o_html" NE "1" %THEN %LET o_html=0;
00043
00044 %IF "&o_force" NE "1" %THEN %LET o_force=0;
00045
00046 %_sasunit_nls (i_language=&i_language)
00047
00048
00049 %LOCAL l_output;
00050 %IF %length(&o_output) %THEN %LET l_output=&o_output;
00051 %ELSE %LET l_output =&g_target/rep;
00052 %LET l_output=%_sasunit_abspath(&g_root,&l_output);
00053
00054 %IF %_sasunit_handleError(&l_macname, InvalidOutputDir,
00055 NOT %_sasunit_existDir(&l_output),
00056 Error in parameter o_output: target folder does not exist)
00057 %THEN %GOTO errexit;
00058
00059
00060 %IF %_sasunit_handleError(&l_macname, NoTestDB,
00061 NOT %sysfunc(exist(target.tsu)) OR NOT %symexist(g_project),
00062 %nrstr(Test database cannot be accessed, call %initSASUnit before %reportSASUnit))
00063 %THEN %GOTO errexit;
00064
00065
00066 %LOCAL d_rep d_scn d_cas d_auton d_pgm d_pcs;
00067 %_sasunit_tempFilename(d_rep)
00068 %_sasunit_tempFilename(d_scn)
00069 %_sasunit_tempFilename(d_cas)
00070 %_sasunit_tempFilename(d_auton)
00071 %_sasunit_tempFilename(d_pgm)
00072 %_sasunit_tempFilename(d_pcs)
00073
00074
00075 PROC SORT DATA=target.scn OUT=&d_scn;
00076 BY scn_id;
00077 RUN;
00078 DATA &d_scn;
00079 SET &d_scn END=eof;
00080 scn_last = eof;
00081 RUN;
00082
00083 PROC SORT DATA=target.cas OUT=&d_cas;
00084 BY cas_scnid cas_id;
00085 RUN;
00086 DATA &d_cas;
00087 SET &d_cas;
00088 BY cas_scnid;
00089 cas_last = last.cas_scnid;
00090 cas_pgmucase = upcase(cas_pgm);
00091 RUN;
00092
00093 PROC SORT DATA=target.cas (KEEP=cas_auton RENAME=(cas_auton=auton_id))
00094 OUT=&d_auton NODUPKEY;
00095 BY auton_id;
00096 RUN;
00097 DATA &d_auton;
00098 SET &d_auton END=eof;
00099 auton_last = eof;
00100 RUN;
00101
00102 data &d_pgm;
00103 SET target.cas (KEEP=cas_auton cas_pgm RENAME=(cas_auton=pgm_auton cas_pgm=pgm_ucase));
00104 pgm_ucase = upcase(pgm_ucase);
00105 RUN;
00106 PROC SORT DATA=&d_pgm NODUPKEY;
00107 BY pgm_auton pgm_ucase;
00108 RUN;
00109 DATA &d_pgm;
00110 SET &d_pgm;
00111 BY pgm_auton;
00112 IF first.pgm_auton THEN pgm_id=0;
00113 pgm_id+1;
00114 pgm_last = last.pgm_auton;
00115 RUN;
00116
00117 DATA &d_pcs;
00118 SET target.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));
00119 pcs_ucase = upcase(pcs_ucase);
00120 PROC SORT DATA=&d_pcs OUT=&d_pcs NODUPKEY;
00121 BY pcs_auton pcs_ucase pcs_scnid pcs_casid;
00122 RUN;
00123 DATA &d_pcs;
00124 SET &d_pcs;
00125 BY pcs_auton pcs_ucase;
00126 pcs_last = last.pcs_ucase;
00127 RUN;
00128
00129
00130 %LOCAL i;
00131 PROC SQL NOPRINT;
00132 CREATE TABLE &d_rep (COMPRESS=YES) AS
00133 SELECT
00134 tsu_project
00135 ,tsu_root
00136 ,tsu_target
00137 ,tsu_sasunit
00138 ,tsu_sasautos
00139 %DO i=1 %TO 9;
00140 ,tsu_sasautos&i
00141 %END;
00142 ,tsu_autoexec
00143 ,tsu_sascfg
00144 ,tsu_sasuser
00145 ,tsu_testdata
00146 ,tsu_refdata
00147 ,tsu_doc
00148 ,tsu_lastinit
00149 ,tsu_lastrep
00150 ,scn_id
00151 ,scn_path
00152 ,scn_desc
00153 ,scn_start
00154 ,scn_end
00155 ,scn_rc
00156 ,scn_res
00157 ,scn_last
00158 ,cas_id
00159 ,cas_auton
00160 ,auton_last
00161 ,cas_pgm
00162 ,pgm_id
00163 ,pgm_last
00164 ,pcs_last
00165 ,cas_desc
00166 ,cas_spec
00167 ,cas_start
00168 ,cas_end
00169 ,cas_res
00170 ,cas_last
00171 ,tst_id
00172 ,tst_type
00173 ,tst_desc
00174 ,tst_exp
00175 ,tst_act
00176 ,tst_res
00177 FROM
00178 target.tsu
00179 ,&d_scn
00180 ,&d_cas
00181 ,target.tst
00182 ,&d_auton
00183 ,&d_pgm
00184 ,&d_pcs
00185 WHERE
00186 scn_id = cas_scnid AND
00187 cas_scnid = tst_scnid AND
00188 cas_id = tst_casid AND
00189 cas_auton = auton_id AND
00190 cas_auton = pgm_auton AND
00191 cas_pgmucase = pgm_ucase AND
00192 cas_auton = pcs_auton AND
00193 cas_pgmucase = pcs_ucase AND
00194 cas_scnid = pcs_scnid AND
00195 cas_id = pcs_casid
00196 ;
00197 CREATE UNIQUE INDEX idx1 ON &d_rep (scn_id, cas_id, tst_id);
00198 CREATE UNIQUE INDEX idx2 ON &d_rep (cas_auton, pgm_id, scn_id, cas_id, tst_id);
00199
00200 QUIT;
00201 %IF %_sasunit_handleError(&l_macname, ErrorTestDB,
00202 &syserr NE 0,
00203 %nrstr(Fehler beim Zugriff auf die Testdatenbank))
00204 %THEN %GOTO errexit;
00205
00206
00207 %LOCAL l_lastrun;
00208 PROC SQL NOPRINT;
00209 SELECT coalesce(max(scn_start),0) FORMAT=12.0 INTO :l_lastrun FROM target.scn;
00210 QUIT;
00211
00212
00213 FILENAME repgen temp;
00214
00215 DATA _null_;
00216 SET &d_rep;
00217 BY scn_id cas_id;
00218 FILE repgen;
00219
00220 IF _n_=1 THEN DO;
00221
00222 IF tsu_lastrep=0 OR &o_force THEN DO;
00223
00224 PUT '%_sasunit_copydir(' /
00225 " &g_sasunit" '/html/%str(*.*)' /
00226 " ,&l_output" /
00227 ")";
00228
00229 PUT '%_sasunit_reportFrameHTML(' /
00230 " i_repdata = &d_rep" /
00231 " ,o_html = &l_output/index.html" /
00232 ")";
00233 END;
00234
00235 IF tsu_lastinit > tsu_lastrep OR &o_force THEN DO;
00236
00237 PUT '%_sasunit_reportLogHTML(' /
00238 " i_log = &g_log/000.log" /
00239 " ,i_title = &g_nls_reportSASUnit_001" /
00240 " ,o_html = &l_output/000_log.html" /
00241 ")";
00242
00243 PUT '%_sasunit_reportHomeHTML(' /
00244 " i_repdata = &d_rep" /
00245 " ,o_html = &l_output/overview.html" /
00246 ")";
00247 END;
00248
00249 IF &l_lastrun > tsu_lastrep OR &o_force THEN DO;
00250
00251 PUT '%_sasunit_reportTreeHTML(' /
00252 " i_repdata = &d_rep" /
00253 " ,o_html = &l_output/tree.html" /
00254 ")";
00255
00256 PUT '%_sasunit_reportScnHTML(' /
00257 " i_repdata = &d_rep" /
00258 " ,o_html = &l_output/scn_overview.html" /
00259 ")";
00260
00261 PUT '%_sasunit_reportCasHTML(' /
00262 " i_repdata = &d_rep" /
00263 " ,o_html = &l_output/cas_overview.html" /
00264 ")";
00265
00266 PUT '%_sasunit_reportAutonHTML(' /
00267 " i_repdata = &d_rep" /
00268 " ,o_html = &l_output/auton_overview.html" /
00269 ")";
00270 END;
00271 END;
00272
00273
00274 IF first.scn_id AND scn_id NE . THEN DO;
00275
00276 IF scn_start > tsu_lastrep OR &o_force THEN DO;
00277
00278 PUT '%_sasunit_reportLogHTML(' /
00279 " i_log = &g_log/" scn_id z3. ".log" /
00280 " ,i_title = &g_nls_reportSASUnit_002 " scn_id z3. " (" cas_pgm +(-1) ")" /
00281 " ,o_html = &l_output/" scn_id z3. "_log.html" /
00282 ")";
00283 END;
00284 END;
00285
00286
00287 IF cas_start > tsu_lastrep OR &o_force THEN DO;
00288
00289
00290 IF first.cas_id AND scn_id NE . AND cas_id NE . THEN DO;
00291
00292 PUT '%_sasunit_reportLogHTML(' /
00293 " i_log = &g_log/" scn_id z3. "_" cas_id z3. ".log" /
00294 " ,i_title = &g_nls_reportSASUnit_003 " cas_id z3. " &g_nls_reportSASUnit_004 " scn_id z3. " (" cas_pgm +(-1) ")" /
00295 " ,o_html = &l_output/" scn_id z3. "_" cas_id z3. "_log.html" /
00296 ")";
00297
00298 PUT '%_sasunit_reportDetailHTML(' /
00299 " i_repdata = &d_rep" /
00300 " ,i_scnid = " scn_id z3. /
00301 " ,i_casid = " cas_id z3. /
00302 " ,o_html = &l_output/cas_" scn_id z3. "_" cas_id z3. ".html" /
00303 ")";
00304 END;
00305
00306
00307 IF scn_id NE . AND cas_id NE . AND tst_id NE . AND upcase(tst_type) = 'ASSERTCOLUMNS' THEN DO;
00308 PUT '%_sasunit_reportCmpHTML(' /
00309 " i_scnid = " scn_id z3. /
00310 " ,i_casid = " cas_id z3. /
00311 " ,i_tstid = " tst_id z3. /
00312 " ,o_html = &l_output" /
00313 ")";
00314 END;
00315
00316
00317 IF scn_id NE . AND cas_id NE . AND tst_id NE . AND upcase(tst_type) = 'ASSERTLIBRARY' THEN DO;
00318 PUT '%_sasunit_reportLibraryHTML(' /
00319 " i_scnid = " scn_id z3. /
00320 " ,i_casid = " cas_id z3. /
00321 " ,i_tstid = " tst_id z3. /
00322 " ,o_html = &l_output" /
00323 ")";
00324 END;
00325
00326
00327 IF scn_id NE . AND cas_id NE . AND tst_id NE . AND upcase(tst_type) = 'ASSERTREPORT' THEN DO;
00328 PUT '%_sasunit_reportManHTML(' /
00329 " i_scnid = " scn_id z3. /
00330 " ,i_casid = " cas_id z3. /
00331 " ,i_tstid = " tst_id z3. /
00332 " ,i_extexp= " tst_exp /
00333 " ,i_extact= " tst_act /
00334 " ,o_html = &l_output/_" scn_id z3. "_" cas_id z3. "_" tst_id z3. "_rep.html" /
00335 " ,o_output= &l_output" /
00336 ")";
00337 END;
00338
00339 END;
00340
00341 RUN;
00342
00343
00344 ODS LISTING CLOSE;
00345 %INCLUDE repgen / source2;
00346 FILENAME repgen;
00347
00348
00349 PROC SQL NOPRINT;
00350 UPDATE target.tsu
00351 SET tsu_lastrep = %sysfunc(datetime())
00352 ;
00353 QUIT;
00354
00355 %GOTO exit;
00356 %errexit:
00357 %PUT;
00358 %PUT ======================== Error! reportSASUnit aborted! ==========================================;
00359 %PUT;
00360 %PUT;
00361 %exit:
00362 PROC DATASETS NOWARN NOLIST LIB=work;
00363 DELETE %scan(&d_rep,2,.) %scan(&d_scn,2,.) %scan(&d_cas,2,.) %scan(&d_auton,2,.)
00364 %scan(&d_pgm,2,.) %scan(&d_pcs,2,.);
00365 QUIT;
00366 %MEND reportSASUnit;