/*--------------------------------------------------------------------*\ |* *| |* MODULE NAME = SWAREQ *| |* *| |* DESCRIPTIVE NAME = Convert an SVA to a 31-bit address *| |* *| |* STATUS = R200 *| |* *| |* FUNCTION = The SWAREQ function simulates the SWAREQ macro to *| |* convert an SWA Virtual Address (SVA) to a full 31-bit *| |* address which can be used to access SWA control blocks *| |* in the SWA=ABOVE environment. The input is a 3-byte *| |* SVA; the output value is a 10-digit decimal number. *| |* *| |* AUTHOR = Gilbert Saint-flour *| |* *| |* DEPENDENCIES = TSO/E V2 *| |* *| |* SYNTAX = SWAREQ(sva) *| |* *| |* sva must contain a 3-byte SVA. *| |* *| |* Sample Invocation: *| |* *| |* NUMERIC DIGITS 10 *| |* tcb = C2D(STORAGE(21C,4)) /* TCB PSATOLD */ *| |* tiot= C2D(STORAGE(D2X(tcb+12),4)) /* TIOT TCBTIO */ *| |* sva = STORAGE(D2X(tiot+36),3) /* First JFCB TIOEJFCB */ *| |* jfcb=SWAREQ(sva) /* convert SVA to 31-bit addr */ *| |* dsn=STORAGE(D2X(jfcb),44) /* dsname JFCBDSNM */ *| |* vol=STORAGE(D2X(jfcb+118),6) /* volser JFCBVOLS */ *| |* SAY 'sva='C2X(sva) 'jfcb='D2X(jfcb) 'dsn='dsn 'vol='vol *| |* *| \*--------------------------------------------------------------------*/ /*SWAREQ: PROCEDURE */ IF RIGHT(C2X(ARG(1)),1) \= 'F' THEN /* SWA=BELOW ? */ RETURN C2D(ARG(1))+16 /* yes, return sva+16 */ NUMERIC DIGITS 10 /* allow up to 7FFFFFFF */ sva=C2D(ARG(1)) /* convert to decimal */ tcb = C2D(STORAGE(21C,4)) /* TCB PSATOLD */ jscb = C2D(STORAGE(D2X(tcb+180),4)) /* JSCB TCBJSCB */ qmpl = C2D(STORAGE(D2X(jscb+244),4)) /* QMPL JSCBQMPI */ qmat = C2D(STORAGE(D2X(qmpl+24),4)) /* QMAT QMADD */ DO WHILE sva>65536 qmat = C2D(STORAGE(D2X(qmat+12),4)) /* next QMAT QMAT+12 */ sva=sva-65536 /* 010006F -> 000006F */ END RETURN C2D(STORAGE(D2X(qmat+sva+1),4))+16