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…“) |
K |
||
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;