Macro XAMINE (from Fraktal SAS Programming): Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Die Seite wurde neu angelegt: „Kategorie:Zazy {{SeitenNavigation1 |hoch=Duck_zazy_com.png |links=xx_left.png |rechts=xx_right.png |übersicht=Macro Programming (from Fraktal SAS Programm…“ |
KKeine Bearbeitungszusammenfassung |
||
| Zeile 9: | Zeile 9: | ||
}} | }} | ||
%MACRO xamine(xpath,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.; | |||
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; | |||
%LET dir =; | |||
%END; | |||
proc sql; | |||
drop table dirs; | |||
drop table entries; | |||
quit; | |||
filename entries clear; | |||
filename dirs clear; | |||
%MEND xamine; | |||
{{SeitenNavigation1 | {{SeitenNavigation1 | ||
Version vom 29. Juli 2014, 17:00 Uhr
%MACRO xamine(xpath,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.;
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;
%LET dir =;
%END;
proc sql;
drop table dirs;
drop table entries;
quit;
filename entries clear;
filename dirs clear;
%MEND xamine;