/* REXX *** */ ADDRESS SYSCALL PARSE ARG fnames /* this is a list of variables returned by the service */ /* in numerical order */ /* it will be used as a lookup table for variable names */ stname = , 'TYPE '||, 'MODE '||, 'INO '||, 'DEV '||, 'NLINK '||, 'UID '||, 'GID '||, 'SIZE '||, 'ATIME '||, 'MTIME '||, 'CTIME '||, 'SETUID '||, 'SETGID '||, 'MAJOR '||, 'MINOR '||, 'AAUDIT '||, 'UAUDIT '||, 'BLKSIZE '||, 'CRTIME '||, 'AUDITID '||, 'CCSID '||, 'BLOCKS '||, 'STICKY '||, 'EXTLINK '||, 'GENVALUE '||, 'RTIME '||, 'FID '||, 'FILEFMT '||, 'ACCESSACL '||, 'FMODELACL '||, 'DMODELACL ' Do k = 1 to WORDS(fnames) fname = WORD(fnames, k) 'stat 'fname' stat.' src = RC SAY 'Fname = 'fname 'realpath 'fname' path' Say 'Real path = 'path If src \= 0 then Do Say 'Stat returned 'src Exit src End DO i = 1 to stat.0 j = 10*i-9 sname = "ST_"SUBSTR(stname,j,10) /* look up name */ SELECT WHEN i = ST_ATIME then call dotime stat.i WHEN i = ST_MTIME then call dotime stat.i WHEN i = ST_CTIME then call dotime stat.i WHEN i = ST_CRTIME then call dotime stat.i WHEN i = ST_FID then svalue = C2X(stat.i) WHEN i = ST_CCSID then svalue = C2X(stat.i) WHEN i = ST_GENVALUE then svalue = C2X(stat.i) WHEN i = ST_AUDITID then , svalue = C2X(LEFT(stat.i,1)) , SUBSTR(stat.i,2,6)' 'C2X(SUBSTR(stat.i,8))' ' WHEN i = ST_RTIME then DO IF stat.i = 0 then svalue = 0 else call dotime stat.i END OTHERWISE svalue = stat.i END If svalue \= '' then , SAY sname svalue END i End k exit 0 /* format posix time values */ dotime: procedure expose svalue tm_hour tm_min tm_mon tm_mday tm_year arg gt 'gmtime 'gt' gm.' day = right(gm.tm_mday,2,0) /* derive day */ min = right(gm.tm_min,2,0) /* derive min */ mo = right(gm.tm_mon,2,0) /* derive month */ hr = right(gm.tm_hour,2,0) /* derive hour */ svalue = gm.tm_year'/'mo'/'day' 'hr':'min return