/* REXX *** */ PARSE ARG PRINT REST /* THIS IS AN IPCS CLIST TO PROVIDE INFORMATION */ /* ABOUT JOB MEMORY USE */ 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 /* FIND THE CURRENT ASID */ /* SELECT CURRENT NOLIST */ "EVALMAP >= 0. AREA REXX(ADDRESS(A) ", 'QUALIFICATION(Q) DATATYPE(T))' EXIT = 0 DO WHILE EXIT=0 IF T = 'AREA(CURRENT)' then DO QLEN = LENGTH(Q) ASIDX = SUBSTR(Q,QLEN-5,4) "INTEGER X'"ASIDX"' CLIST(STORAGE(ASID)) UNSIGNED" EXIT = 1 END else DO "INTEGER X'"A"' CLIST(STORAGE(N)) UNSIGNED" IF RC = 0 AND N > 4096 then DO A = '7FFFFFFF.:7FFFFFFF' T = '' END 'EVALMAP > 'A'. 'Q' 'T' REXX(QUALIFICATION(Q) ', 'ADDRESS(A) DATATYPE(T))' EXIT = RC END END /* FIND OUR ASID */ 'EVALUATE ASCB'ASID'+11C POINTER LENGTH(4) REXX(STORAGE(TCB))' IF TCB = '00000000' then DO "NOTE 'TCB NOT FOUND'" EXIT 8 END 'EVALUATE ASCB'ASID'+30 POINTER LENGTH(4) REXX(STORAGE(LDA))' IF LDA = '00000000' then DO "NOTE 'LDA NOT FOUND'" EXIT 8 END 'EVALUATE 'TCB'.+A4 POINTER LENGTH(4) REXX(STORAGE(TCT))' IF TCT = '00000000' then , "NOTE 'TCT NOT FOUND'" ELSE DO TCT = '0'SUBSTR(TCT,2,7) 'EVALUATE 'TCT'.+D0 CHARACTER LENGTH(8) REXX(STORAGE(EYE))' "NOTE ' '" IF EYE ^= 'TCT ' then DO "NOTE 'INVALID TCT POINTER AT "TCT"'" EXIT 8 END 'EVALUATE 'TCT'.+8 POINTER LENGTH(4) REXX(STORAGE(TCTCORE))' TCTCORE=RIGHT(TCTCORE,7,'0') /* ADJUST FOR 31 bit address */ 'EVALUATE 'TCT'.+C8 CHARACTER LENGTH(8) REXX(STORAGE(STEPN))' 'EVALUATE 'TCTCORE'. UNSIGNED LENGTH(4) REXX(STORAGE(LWM))' 'EVALUATE 'TCTCORE'.+4 UNSIGNED LENGTH(4) REXX(STORAGE(HWM))' 'EVALUATE 'TCTCORE'.+10 UNSIGNED LENGTH(4) REXX(STORAGE(EHWM))' 'EVALUATE 'TCTCORE'.+14 UNSIGNED LENGTH(4) REXX(STORAGE(ELWM))' 'EVALUATE 'TCTCORE'.+20 UNSIGNED LENGTH(4) REXX(STORAGE(REGN))' 'EVALUATE 'TCTCORE'.+18 UNSIGNED LENGTH(4) REXX(STORAGE(RGNB))' 'EVALUATE 'TCTCORE'.+1C UNSIGNED LENGTH(4) REXX(STORAGE(ERGNB))' 'EVALUATE 'TCT'.+8C POINTER LENGTH(4) REXX(STORAGE(T30J))' 'EVALUATE 'TCT'.+90 POINTER LENGTH(4) REXX(STORAGE(T30S))' LWM = TRUNC(LWM/1024) HWM = TRUNC(HWM/1024) ELWM = TRUNC(ELWM/1024) EHWM = TRUNC(EHWM/1024) REGN = REGN*2 RGNB = TRUNC(RGNB/1024) ERGNB = TRUNC(ERGNB/1024000) "NOTE 'TCT INFO'" "NOTE 'STEP "STEPN' ', 'REQUESTED REGION:'REGN'K MAX AVAIL:BELOW='RGNB'K ABOVE='ERGNB"M'" "NOTE ' MAXIMUM USED:", 'PRIVATE 'LWM'K SYSTEM 'HWM'K EPRIVATE 'ELWM'K ESYSTEM 'EHWM"K'" "NOTE ' '" "NOTE 'SMF 30 RECORDS: JOB "T30J' STEP 'T30S' (TCT AT 'TCT")'" "NOTE ' '" END 'EVALUATE 'LDA'.+CC UNSIGNED LENGTH(4) REXX(STORAGE(REGN))' 'EVALUATE 'LDA'.+D0 UNSIGNED LENGTH(4) REXX(STORAGE(RGNB))' 'EVALUATE 'LDA'.+D8 UNSIGNED LENGTH(4) REXX(STORAGE(ERGNB))' 'EVALUATE 'LDA'.+E8 UNSIGNED LENGTH(4) REXX(STORAGE(LWM))' 'EVALUATE 'LDA'.+EC UNSIGNED LENGTH(4) REXX(STORAGE(HWM))' 'EVALUATE 'LDA'.+F0 UNSIGNED LENGTH(4) REXX(STORAGE(ELWM))' 'EVALUATE 'LDA'.+F4 UNSIGNED LENGTH(4) REXX(STORAGE(EHWM))' REGN = TRUNC(REGN/1024) RGNB = TRUNC(RGNB/1024) ERGNB = TRUNC(ERGNB/1024) LWM = TRUNC(LWM/1024) HWM = TRUNC(HWM/1024) ELWM = TRUNC(ELWM/1024) EHWM = TRUNC(EHWM/1024) "NOTE 'LDA INFO'" "NOTE '", 'REQUESTED REGION:'REGN'K LIMIT:BELOW='RGNB'K ABOVE='ERGNB"M'" "NOTE ' MAXIMUM ALLOCATED:", 'PRIVATE 'LWM'K SYSTEM 'HWM'K EPRIVATE 'ELWM'K ESYSTEM 'EHWM"K'" /* RESTORE ORIGINAL SETDEF VALUES */ 'SETDEF 'PR1 EXIT 0