s99rb | 下記参照 | IDAS99RB.CPY によってマップされた SVC 99 要求ブロック。IDAS99TU.CPY を使用して、テキスト ユニット (Text Units; TU) の構成を支援することもできます。 |
caller-id | 下記参照 | このパラメーターを使用することをお奨めしますが、INT および GNT としてコンパイルされた COBOL プログラムの場合は必須ではありません。非 COBOL プログラムの場合、このパラメーターは必須であり、アドレスのフォーマットと文字データの CHARSET を解釈するために SVC 99 ハンドラーによって使用されます。バイナリ データは、常に z/OS (ビッグエンディアン) フォーマットでなければなりません。 |
retcode | pic 9(8) comp | 汎用レジスター 15 に配置されている SVC 99 戻りコード。他のエラーおよび情報コードは、SVC99RB に格納されます。 |
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
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
コメント:
SVC99 は、TU (テキスト ユニット) アドレスの上位ビットを使用して、それを TU アドレス配列内の最後の TU アドレスとして解釈します。
呼び出しプログラムを NOAMODE でコンパイルすると、TU アドレスの上位ビットは TU ポインター配列内の最終アドレスを示すものとしては解釈されません。この場合は、次の 2 つのオプションがあります。
呼び出しプログラムを AMODE でコンパイルした場合は、変更は不要です。null アドレスを使用して最終アドレスを示すことをお奨めします。例えば、TU 最終アドレスを x'80000000' に設定します。