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
|