| Code executed | Function performed | 
|  
 %MACRO xamine(xpath,etype);
  
 | Start Macro definition with name and positional parameters xpath and etype | 
|  
 %GLOBAL ne ie dir;
  
 |  | 
|  
 %LOCAL xpath xentry entry etype;
  
 |  | 
|  
 filename entries pipe "dir /b &XPATH." lrecl = 256;
  
 |  | 
|  
 filename dirs pipe "dir /b /ad &XPATH." lrecl = 256;
  
 |  | 
|  
 data entries;
  
 |  | 
|  
 length entry $256;
  
 |  | 
|  
 infile entries length = lrecl end = EOF;
  
 |  | 
|  
 input entry $varying256. lrecl;
  
 |  | 
|  
 if EOF then call symput('ne',trim(left(put(_N_,8.))));
  
 |  | 
|  
 run;
  
 |  | 
|  
 data dirs;
  
 |  | 
|  
 length dir $256;
  
 |  | 
|  
 infile dirs length = lrecl end = EOF;
  
 |  | 
|  
 input dir $varying256. lrecl;
  
 |  | 
|  
 run;
  
 |  | 
|  
 %DO ie = 1 %TO &NE.;
  
 |  | 
|  
 data _NULL_;
  
 |  | 
|  
 set entries(firstobs = &IE. obs = &IE.);
  
 |  | 
|  
 call symput('entry',compress(translate(entry,'_','(-)')));
  
 |  | 
|  
 call symput('xentry',trim(left(entry)));
  
 |  | 
|  
 run;
  
 |  | 
|  
 %PUT |;
  
 |  | 
|  
 %PUT &XPATH.&XENTRY.;
  
 |  | 
|  
 %LET dir =;
  
 |  | 
|  
 data _NULL_;
  
 |  | 
|  
 set dirs(where = (dir = "&XENTRY.")) end = EOF;
  
 |  | 
|  
 if EOF then call symput('dir',trim(left(put(_N_,8.))));
  
 |  | 
|  
 run;
  
 |  | 
|  
 %IF &DIR. = 1 %THEN %DO;
  
 |  | 
|  
 %PUT +----;
  
 |  | 
|  
 %XDIR(&XPATH.&XENTRY.);
  
 |  | 
|  
 %PUT +----;
  
 |  | 
|  
 %END;
  
 |  | 
|  
 %ELSE %DO;
  
 |  | 
|  
 %IF %LENGTH(&ETYPE.) ne 0 %THEN %DO;
  
 |  | 
|  
 %IF %INDEX(%SCAN(&ETYPE.,2,_),%SCAN(&XENTRY,2,.)) != 0 %THEN %DO;
  
 |  | 
|  
 %GLOBAL windir;
  
 |  | 
|  
 %XSET(windir);
  
 |  | 
|  
 %PUT +----;
  
 |  | 
|  
 %PUT | File &XENTRY. opened in external editor WordPad.;
  
 |  | 
|  
 SYSTASK command "&WINDIR.\write.exe ""&XPATH.\&XENTRY.""";
  
 |  | 
|  
 %PUT +----;
  
 |  | 
|  
 %END;
  
 |  | 
|  
 %IF %INDEX(%SCAN(&ETYPE.,1,_),%SCAN(&XENTRY,2,.)) != 0 %THEN %DO;
  
 |  | 
|  
 %PUT +----;
  
 |  | 
|  
 %PUT | File &XENTRY. opened in SAS program editor window.;
  
 |  | 
|  
 %XEDIT(&XENTRY.,&XPATH.);
  
 |  | 
|  
 %PUT +----;
  
 |  | 
|  
 %END;
  
 |  | 
|  
 %END;
  
 |  | 
|  
 %END;
  
 |  | 
|  
 %END;
  
 |  | 
|  
 proc sql;
  
 |  | 
|  
 drop table dirs;
  
 |  | 
|  
 drop table entries;
  
 |  | 
|  
 quit;
  
 |  | 
|  
 filename entries clear;
  
 |  | 
|  
 filename dirs clear;
  
 |  | 
|  
 %MEND xamine;
  
 | End Macro definition with name |