/* REXX *** */ /* track down various name token pair pointers */ /* IPCS version */ /* process the print option */ Parse Upper ARG PRINT . PR2 = '' IF PRINT = 'PRINT' then PR2 = 'PRINT' else PR2 = 'NOPRINT' /* SAVE OLD SETDEF VALUES */ ADDRESS IPCS 'EVALDEF REXX(PRINT(PR1) ', 'TERMINAL(TE1)' SCC = RC If RC \= 0 then DO Say 'IPCS not active' EXIT 16 END /* SET NEW SETDEF VALUES */ IF PR2 ^= '' then , 'SETDEF 'PR2 /* allow user to specify TCB parameter */ /* otherwise use current TCB */ Parse Upper Arg 'TCB(' prmtcb . If prmtcb = '' then , 'EVALUATE 21C. POINTER LENGTH(4) REXX(STORAGE(tcb))' Else , tcb = prmtcb NUMERIC DIGITS 10 if tcb \= 0 then do 'EVALUATE 'tcb'.+138 POINTER LENGTH(4) REXX(STORAGE(stcb))' 'EVALUATE 'stcb'.+C8 POINTER LENGTH(4) REXX(STORAGE(nttp))' If nttp \= 0 then Call donttp nttp,'Task' End /* do current ASCB */ 'EVALUATE 224. POINTER LENGTH(4) REXX(STORAGE(tcb))' if ascb \= 0 then do 'EVALUATE 'tcb'.+150 POINTER LENGTH(4) REXX(STORAGE(assb))' 'EVALUATE 'assb'.+DC POINTER LENGTH(4) REXX(STORAGE(nttp))' If nttp \= 0 then Call donttp nttp,'Address space' End 'EVALUATE 10. POINTER LENGTH(4) REXX(STORAGE(cvt))' 'EVALUATE 'cvt'.+8c POINTER LENGTH(4) REXX(STORAGE(ecvt))' 'EVALUATE 'ecvt'.+8C POINTER LENGTH(4) REXX(STORAGE(nttp))' Call donttp nttp,'System' exit 0 /* routine to report on name token pairs */ Donttp: Parse Arg ptr,title "NOTE '"title' level NTTP at 'ptr"'" 'EVALUATE 'ptr'. CHARACTER LENGTH(4) REXX(STORAGE(eye))' If RC \= 0 then Do "NOTE '** Unable to access storage for NTTP'" Return End If eye \= 'NTTH' then Do "NOTE '** Invalid eye catcher found for NTTP'" Return End 'EVALUATE 'ptr'.+40 POINTER LENGTH(4) REXX(STORAGE(base))' Do While base \= 0 'EVALUATE 'base'.+4 POINTER LENGTH(4) REXX(STORAGE(tcbt))' 'EVALUATE 'base'.+8 CHARACTER LENGTH(16) REXX(STORAGE(name))' 'EVALUATE 'base'.+18 CHARACTER LENGTH(16) REXX(STORAGE(token))' tokx = C2X(token) "NOTE 'Name "name' from 'tcbt"'" display = X2C(tokx) /* translate out characters between 00 and 3f */ display = TRANSLATE(display,,XRANGE(,'3f'x),'00'x) "NOTE ' Token = "tokx' ('display")'" /* follow chain */ 'EVALUATE 'base'.+40 POINTER LENGTH(4) REXX(STORAGE(base))' End "NOTE ' '" Return