/* REXX *** */ /* THIS IS AN IPCS EXEC TO PROVIDE INFORMATION ABOUT */ /* AN SVC 99 REQUEST BLOCK */ PARSE ARG reg1 ADDRESS IPCS 'EVALUATE 'reg1'.? UNSIGNED LENGTH(1) CLIST(STORAGE(s99len))' IF RC ^= 0 then DO Say 'Unable to evaluate argument R1 ='reg1 EXIT 12 END /* R1 points to a request block */ 'EQUATE S99RB 'reg1'.? LENGTH('s99len')' /* Analyze the verb */ 'EVALUATE S99RB+1 HEX LENGTH(1) CLIST(STORAGE(s99vrb))' SELECT WHEN s99vrb = 01 then verb = 'ALLOCATE' WHEN s99vrb = 02 then verb = 'UNALLOCATE' WHEN s99vrb = 03 then verb = 'CONCATENATE' WHEN s99vrb = 04 then verb = 'DECONCAT' WHEN s99vrb = 05 then verb = 'REM-IN-USE' WHEN s99vrb = 06 then verb = 'DDNAME' WHEN s99vrb = 07 then verb = 'GETINFO' OTHERWISE verb = UNKNOWN END "NOTE 'DYNALLOC VERB "s99vrb'= 'verb"'" /* Report the flags and return info */ 'EVALUATE S99RB+2 HEX LENGTH(2) CLIST(STORAGE(s99flg))' 'EVALUATE S99RB+4 UNSIGNED LENGTH(2) CLIST(STORAGE(S99RC))' 'EVALUATE S99RB+6 UNSIGNED LENGTH(2) CLIST(STORAGE(S99INF))' "NOTE 'FLAGS="s99flg" REASON CODE="S99RC" INFO CODE="S99INF"'" /* Analyze the text units */ 'EVALUATE S99RB+8 POINTER LENGTH(4) CLIST(STORAGE(s99txt))' DO tuix = 0 by 4 UNTIL LEFT(tubit,1) = 8 'INTEGER 'tuix' OFFSET CLIST(STORAGE(tuixi))' 'EVALUATE 's99txt||tuixi' HEX LENGTH(1) CLIST(STORAGE(tubit))' 'EVALUATE 's99txt||tuixi' POINTER LENGTH(4) CLIST(STORAGE(tuptr))' IF tuptr ^= '00000000' THEN DO /* report the key in hex */ 'EVALUATE 's99txt||tuixi'? HEX LENGTH(2) CLIST(STORAGE(tukey))' "NOTE 'TEXT UNIT KEY="tukey"'" 'EVALUATE 's99txt||tuixi'?+2 UNSIGNED ', 'LENGTH(2) CLIST(STORAGE(tunum))' off = 4 /* report the key values in hex and display */ DO I = 1 TO tunum 'INTEGER 'off' OFFSET CLIST(STORAGE(tuoff))' 'EVALUATE 's99txt||tuixi'?'tuoff' UNSIGNED ', 'LENGTH(2) CLIST(STORAGE(tulen))' 'EVALUATE 's99txt||tuixi'?+'tuoff+2' CHARACTER ', 'LENGTH('tulen') CLIST(STORAGE(TUVAL))' 'EVALUATE 's99txt||tuixi'?+'tuoff+2' HEX ', 'LENGTH('tulen') CLIST(STORAGE(TUHEX))' "NOTE 'X''"TUHEX"'' = "TUVAL"'" off = off+tulen END END END EXIT 0