42 %MACRO _sasunit_checkScenario(
 
   51 %_sasunit_tempFileName(d_pgm)
 
   59 %let l_scnfile = %_sasunit_stdPath (&g_root, &i_scnfile);
 
   62 %local ll_scnid l_lastrun;
 
   66    select scn_id, compress(put(scn_start,best32.)) into :ll_scnid, :l_lastrun
 
   68    where upcase(scn_path) = "%upcase(&l_scnfile)";
 
   72 %if &l_lastrun<&i_changed %then %do;
 
   73    %put _sasunit_checkScenario <1>;
 
   74    %let &r_scnid = &ll_scnid;
 
   83    select count(*) into :l_pgmcount
 
   86          on upcase(cas.cas_pgm) = upcase(scan(dir.filename,-1,'/'))
 
   87             and cas.cas_auton = dir.auton
 
   88    where cas.cas_scnid = &ll_scnid
 
   89       and (&l_lastrun<dir.changed or dir.changed=.)
 
   90       and cas.cas_auton ne .
 
   95 %if &l_pgmcount %then %do;
 
   96    %put _sasunit_checkScenario <2>;
 
   97    %let &r_scnid = &ll_scnid;
 
  104    create table &d_pgm as
 
  107       where cas.cas_scnid = &ll_scnid
 
  113 %if %_sasunit_nobs(&d_pgm) = 0 %then %do;
 
  114    %put _sasunit_checkScenario <3>;
 
  115    %let &r_scnid = &ll_scnid;
 
  122 %do i=1 %to %_sasunit_nobs(&d_pgm);
 
  127    call symput ('l_pgm' !! compress(put(_n_,8.)), trim(cas_pgm));
 
  128    call symput ('l_pgmcount', compress(put(_n_,8.)));
 
  131 %do i=1 %to &l_pgmcount;
 
  132    %let l_pgm&i = %_sasunit_absPath(&g_root,&&l_pgm&i);
 
  133    %_sasunit_dir(i_path=&&l_pgm&i, o_out=&d_pgm)
 
  138       select compress(put(changed,best32.)) into :l_pgmchanged
 
  144    %if &l_lastrun < &l_pgmchanged or &l_pgmchanged=0 %then %do;
 
  145       %put _sasunit_checkScenario <4>;
 
  146       %let &r_scnid = &ll_scnid;
 
  154 %put _sasunit_checkScenario <5>;
 
  155 %let &r_scnid = &ll_scnid;
 
  160 proc datasets nolist nowarn;
 
  161    delete %scan(&d_pgm,2,.);
 
  164 %MEND _sasunit_checkScenario;