Macro rXDIR (from Fraktal SAS Programming): Unterschied zwischen den Versionen

Aus phenixxenia.org
Zur Navigation springen Zur Suche springen
K
K
Zeile 27: Zeile 27:
 
|
 
|
 
<font face="Courier New">  
 
<font face="Courier New">  
;%GLOBAL rpath;
+
:%GLOBAL rpath;
 
</font>  
 
</font>  
 
|
 
|
Zeile 33: Zeile 33:
 
|
 
|
 
<font face="Courier New">  
 
<font face="Courier New">  
;%LET xpath = ;
+
:%LET xpath = ;
 
</font>  
 
</font>  
 
|
 
|
Zeile 45: Zeile 45:
 
|
 
|
 
<font face="Courier New">  
 
<font face="Courier New">  
;irow = 20 rows = 14 icolumn = 130 columns = 64  
+
:irow = 20 rows = 14 icolumn = 130 columns = 64  
 
</font>  
 
</font>  
 
|
 
|
Zeile 51: Zeile 51:
 
|
 
|
 
<font face="Courier New">  
 
<font face="Courier New">  
;#3 @5 "Current Path: &RPATH."  
+
: #3 @5 "Current Path: &RPATH."  
 
</font>  
 
</font>  
 
|
 
|
Zeile 57: Zeile 57:
 
|
 
|
 
<font face="Courier New">  
 
<font face="Courier New">  
;#5 @5 'Enter path: ' xpath 40 attr = blink  
+
: #5 @5 'Enter path: ' xpath 40 attr = blink  
 
</font>  
 
</font>  
 
|
 
|
Zeile 69: Zeile 69:
 
|
 
|
 
<font face="Courier New">  
 
<font face="Courier New">  
;%DISPLAY path;  
+
:%DISPLAY path;  
 
</font>  
 
</font>  
 
|
 
|
Zeile 81: Zeile 81:
 
|
 
|
 
<font face="Courier New">  
 
<font face="Courier New">  
;%LET rpath = &RPATH.&XPATH.\;
+
:%LET rpath = &RPATH.&XPATH.\;
 
</font>  
 
</font>  
 
|
 
|
Zeile 93: Zeile 93:
 
|
 
|
 
<font face="Courier New">  
 
<font face="Courier New">  
;%PUT ---&RPATH.---;
+
:%PUT ---&RPATH.---;
 
</font>  
 
</font>  
 
|
 
|
Zeile 105: Zeile 105:
 
|
 
|
 
<font face="Courier New">  
 
<font face="Courier New">  
;length entry $256;  
+
:length entry $256;  
 
</font>  
 
</font>  
 
|
 
|
Zeile 111: Zeile 111:
 
|
 
|
 
<font face="Courier New">  
 
<font face="Courier New">  
;infile path length = lrecl;  
+
:infile path length = lrecl;  
 
</font>  
 
</font>  
 
|
 
|
Zeile 117: Zeile 117:
 
|
 
|
 
<font face="Courier New">  
 
<font face="Courier New">  
;input entry $varying256. lrecl;  
+
:input entry $varying256. lrecl;  
 
</font>  
 
</font>  
 
|
 
|
Zeile 123: Zeile 123:
 
|
 
|
 
<font face="Courier New">  
 
<font face="Courier New">  
;put entry;  
+
:put entry;  
 
</font>  
 
</font>  
 
|
 
|
Zeile 135: Zeile 135:
 
|
 
|
 
<font face="Courier New">  
 
<font face="Courier New">  
;%RXDIR(&RPATH.)
+
:%RXDIR(&RPATH.)
 
</font>  
 
</font>  
 
|
 
|
Zeile 141: Zeile 141:
 
|
 
|
 
<font face="Courier New">  
 
<font face="Courier New">  
;%LEAVE:
+
:%LEAVE:
 
</font>  
 
</font>  
 
|
 
|
Zeile 148: Zeile 148:
 
<font face="Courier New">  
 
<font face="Courier New">  
 
;filename path clear;  
 
;filename path clear;  
 +
</font>
 +
|
 +
|-
 +
|
 +
<font face="Courier New">
 +
:%LET rpath = ;
 
</font>  
 
</font>  
 
|
 
|

Version vom 3. September 2014, 15:30 Uhr

Zurück

Übersicht

Vorwärts

What it does

This SAS Macro provides the function from XDIR in an interactive mode.

  • The recursive use of macro invocation keeps the macro "alive" until no further user input is made.
  • It might be of some interest to the novice user, how easy it is, to turn a simple "home-grew" function into an interactive tool.
Code executed Function performed

%MACRO rxdir(xpath);

%GLOBAL rpath;

%LET xpath = ;

%WINDOW path

irow = 20 rows = 14 icolumn = 130 columns = 64

#3 @5 "Current Path: &RPATH."

#5 @5 'Enter path: ' xpath 40 attr = blink

 ;

%DISPLAY path;

%IF %LENGTH(&XPATH.) = 0 %THEN %GOTO leave;

%LET rpath = &RPATH.&XPATH.\;

filename path pipe "dir /b ""&RPATH.""" lrecl = 256;

%PUT ---&RPATH.---;

data _NULL_;

length entry $256;

infile path length = lrecl;

input entry $varying256. lrecl;

put entry;

run;

%RXDIR(&RPATH.)

%LEAVE:

filename path clear;

%LET rpath = ;

%MEND rxdir;

END macro definition with name

Zurück

Übersicht

Vorwärts