call "MFJZS099" using s99rb caller-id returning retcode
| s99rb | See below | SVC 99 request block mapped by IDAS99RB.CPY. You may use IDAS99TU.CPY to assist you in the construction of the Text Units (TUs). |
| caller-id | See Below | While using this parameter is recommended, it is not a requirement for COBOL programs compiled as INTs and GNTs. For non-COBOL programs, it is required and is used by the SVC 99 handler to interpret format of addresses and CHARSET of the character data. Binary data must always in z/OS (Big-Endian) format. |
| retcode | pic 9(8) comp | SVC 99 return code that would have been placed in the general purpose register 15. All other error and info codes are stored in SVC99RB. |
A program running with NOAMODE:
copy idas99rb
replacing ==()== by ==s99rb==.
copy idas99tu
replacing ==()== by ==s99tu==.
01 caller-id.
03 caller-id-char pic x(04) value 'S099'.
03 caller-id-ptr pointer.*> ptr to s99rb
03 caller-id-bin pic 9(8) comp value 1.
03 caller-id-float comp-1 value 1.
01 .
03 tu-ptr-list.
05 tu-ptr-ddn pointer.
05 tu-ptr-dsn pointer.
05 etc pointer.
05 pic x(4) value s99rb-last-ptr-val-x4-val.
move low-values to s99rb
move s99rb-len-mf-ext to s99rb-len
move s99rb-last-ptr-val-x4-val to s99rb-last-ptr-val-x4
set s99rb-s99tu-array-ptr to address tu-ptr-list
set caller-id-ptr to address s99rb
call 'MFJZS099' using s99rb caller-id returning retcode
if retcode = 0
*> SVC99 ok
else
*> SVC99 not ok – check for errors
end-if
A program running with AMODE:
copy idas99rb
replacing ==()== by ==s99rb==.
copy idas99tu
replacing ==()== by ==s99tu==.
01 caller-id.
03 caller-id-char pic x(04) value 'S099'.
03 caller-id-ptr pointer.*> ptr to s99rb
03 caller-id-bin pic 9(8) comp value 1.
03 caller-id-float comp-1 value 1.
01 .
03 tu-ptr-list.
05 tu-ptr-ddn pointer.
05 tu-ptr-dsn pointer.
05 etc pointer.
05 pic x(4) value x'80000000'
move low-values to s99rb
move s99rb-len-mf-ext to s99rb-len
move s99rb-last-ptr-val-x4-val to s99rb-last-ptr-val-x4
set s99rb-s99tu-array-ptr to address tu-ptr-list
set caller-id-ptr to address s99rb
call 'MFJZS099' using s99rb caller-id returning retcode
if retcode = 0
*> SVC99 ok
else
*> SVC99 not ok – check for errors
end-if
Comments:
SVC99 uses the high-order bit of a TU (Text Unit) address to interpret it as the last TU address in the TU address array.
When the calling program is compiled with NOAMODE, the high order bit of a TU address will not be interpreted as an indication of the last address in the TU pointer array. In this case, you have two options:
If the calling program is compiled with AMODE, no changes are required. It is recommended that you use a null address to signify the last address. For example, set TU last address to x’80000000’.