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’.