/* LISTMEM: version for OS/2 similar to @DIR on MVS*/
/* Created by David McRitchie, "The REXX Macros Toolbox", 1994/02/07 */
Address 'ISREDIT'
'MACRO (argx)'; /* NOPROCESS if adding cc-range later */
'(member) = member';
'(dataset) = dataset';
parse version v1 v2 v3 v4 v5
if v1 \= "REXXSAA" then do
Say "THIS IS FOR OS/2 ONLY for SPF/PC on DOS try @STRAP"
Say "==> @STRAP DIR *.*"
exit 8
end
parse var argx before 'pattern(' pattern ')' after
if pattern \= '' then argx = before after
pattern = translate(pattern)
if pattern = "HTML" then
pattern = """
""filename"""""
else if pattern = "" then pattern="PATTERN"
member=dataset
date1 = left(date('s'),4)"/"substr(date('s'),5,2)"/"right(date('s'),2)
/* listmem listmem c:\spfmacro\*.* */
/* listmem spf listmem c:\spfmacro\*.spf */
/* listmem * listmem c:*.* */
/* listmem a: listmem a:\*.* */
/* listmem pattern(html) */
additions = 0
"loc .patt"
if rc = 0 then do
"(pattern) = line .patt"
end
if argx = '' then argx = "*"
if length(argx) > 8 | substr(argx,2,1) = ":" then
do;arg1 = argx;member=argx;end
else arg1 = '*.'argx
i=pos(':',member); if i=0 then member="c:"member
l=length(member);
x = substr(member,l,1)
do i=l to 1 by -1 until x = '\';
x = substr(member,i,1);
end;
say '1...5...10...15...20...25'
say member 'x='||x 'i='i
if x \= '\' then return 0
arg0 = substr(member,1,i)
say arg1
Call RxFuncAdd "SysFileTree", "REXXUTIL", "SysFileTree";
d=0
say 'begin phase 1 -- SysFileTree('arg1','stem','"BST"')'
/* SysFileTree options .... (BST will be used) */
/* F Search for files only */
/* D Search for directories only */
/* B Search for both files and directories. (default) */
/* S Scan subdirectories recursively. (non-default) */
/* T Return time and date fields in the form: */
/* YY/MM/DD/HH/MM as opposed to MM/DD/YY HH:MMa */
/* O Only report fully qualified file names (no dates)*/
rc = SysFileTree(arg1,stem,"FO")
say 'rc='rc', end of phase 1 -- records in stem.0 =' stem.0
if rc \= 0 then signal error
"label .zlast = .LAST 0"
do k = 1 to stem.0;
if pattern \= "PATTERN" then do
filename = stem.k
interpret 'line='pattern
"line_after .last = dataline (line)"
iterate k
end
l=length(stem.k);
x = substr(stem.k,l,1)
do i=l to 1 by -1 until x = '\';
x = substr(member,i,1);
end;
var = substr(stem.k,i+1)
var3 = strip(var); lvar3=length(var3);
if lvar3 < 13 then do;
kk=pos('.',var);km1=kk-1
if kk < 9 then if kk > 1 then
var3 = left(substr(var,1,km1),8)||strip(substr(var,kk))
end
"FIND '"var3"' 1 word first nx .zfirst .LAST"
if rc \= 0 then do
additions = 1
if length(arg0) < 15 then dash = '--';
else dash = '--' arg0||var
line = substr(var3,1,14)substr(arg0,1,15)dash
"LINE_AFTER .ZL = (LINE)"
end
end
if additions = 1 then do
line = '======listmem' date1 time('n') arg0
"line_after .LAST = (line)"
line = 'return 0 /*This line added before LISTMEM results*/'
"line_after .LAST = (line)"
end
return 0 /*This line added before LISTMEM results*/