/* REXX */ Address TSO /* capture the internal text dataset */ /* for the current job */ 'ALLOC SP(1) TRACK UNIT(VIO) RECFM(F B) LRECL(80) BLKSIZE(4000) REU', 'FI(ISFIN)' /* generate SDSF control statements */ out.1 = 'DA OJOB' /* capture the jobname */ out.2 = 'INPUT ON' myjob = MVSVAR('SYMDEF','JOBNAME') out.3 = 'Find 'myjob out.4 = '++?' out.5 = "Find '$INTTEXT'" out.6 = '++S' out.7 = 'Print File ITXT' out.8 = 'Print' out.9 = 'Print Close' 'EXECIO 8 DISKW ISFIN (STEM out. FINIS)' 'ALLOC SP(1) TRACK UNIT(VIO) RECFM(V B) LRECL(8200) BLKSIZE(8204) REU', 'FI(ITXT)' 'ALLOC DUMMY FI(ISFOUT) RECFM(V B) LRECL(150) BLKSIZE(150) REU' "CALL *(SDSF)" /* read the captured output */ 'EXECIO * DISKR ITXT 1 (STEM in. FINIS)' Do i = 1 to in.0 Txtlen = C2D(Substr(in.i,1,2)) Txttyp = C2D(Substr(in.i,3,1)) // 16 dsn = '' Select When txttyp = 1 then Do Type = 'JOB ' If Substr(in.i,7,1) = 'B4'x then Do llen = C2D(Substr(in.i,9,1)) lab = 'Name='Substr(in.i,10,llen) End End When txttyp = 2 then Do Type = 'EXEC ' If Substr(in.i,5,1) = '94'x then Do llen = C2D(Substr(in.i,7,1)) lab = 'Stepname='Substr(in.i,8,llen) End End When txttyp = 4 then Do Type = 'DD ' If Substr(in.i,5,1) = '6E'x then Do llen = C2D(Substr(in.i,7,1)) lab = 'DDNAME='Substr(in.i,8,llen) End /* find DSN if present */ ix = 5 Do While ix < txtlen If Substr(in.i,ix,1) = '4A'x then Do dlen = C2D(Substr(in.i,ix+2,1)) dsn = 'DSN='Substr(in.i,ix+3,dlen) Leave End /* skip over unwanted stuff */ count = C2D(Substr(in.i,ix+1,1)) Do j = 1 to count ix = ix + C2D(Substr(in.i,ix+2,1))+3 End j End End When txttyp = 8 then Do Type = 'PROC ' If Substr(in.i,5,1) = '94'x then Do llen = C2D(Substr(in.i,7,1)) lab = 'Label='Substr(in.i,8,llen) End End Otherwise Do If (C2D(Substr(in.i,3,1)) % 32 // 2) == 1 Then Do klen = C2D(Substr(in.i,7,1)) Type = Left(Substr(in.i,8,klen),8) If C2D(Substr(in.i,6,1)) >= 2 then Do llen = C2D(Substr(in.i,8+klen,1)) lab = 'Label='Substr(in.i,9+klen,llen) End End Else Do Type = '????' Lab = '??' End End End /* report what we found */ Say Type 'Statement' lab dsn End i 'FREE FI(ISFIN ISFOUT ITXT)' EXIT 0