Rational Developer for System z
Enterprise COBOL for z/OS バージョン 4.1 コンパイラーおよびランタイム 移行ガイド


アセンブラー・プログラムの呼び出し

アセンブラー・プログラムが呼び出し元であるときには、R13 は呼び出し元の レジスター保存域 (18 ワード) を指さなければならず、保存域の 最初の 2 バイト はゼロでなければなりません。保存域の逆チェーンが有効な 31 ビット・アドレスで設定されなければなりません (すなわち、AMODE 24 での実行時には高位バイトをクリアしなければなりません)。

レジスター保存域アドレスを確立するための推奨される方法は、次のとおりです。
          LA   13, SAVEAREA
          .
          .
          .
SAVEAREA  DS   18F
上記のようにすれば、AMODE 24 プログラムの場合は高位バイトがクリアされます。
分岐リンク・タイプの命令を使用して保存域をジャンプし、保存域のアドレスを設定する 必要がある場合は、次の方法をお勧めします。
          BAS  13,SKIP
SAVEAREA  DS   18F
SKIP      DS   0H
BAL 命令を使用する場合は、ご自分で次のようにして高位バイトをクリアする必要があります。
          BAL  13,SKIP
SAVEAREA  DS   18F
SKIP      LA   13,0(,13)

この BAL 命令は、命令長コード、条件コード (CC)、およびプログラム・マスクを レジスターの高位バイトに入れます。BAL 命令ではなく BAS 命令を使用することをお勧めします。BAS 命令はゼロを高位バイトに 入れて、24 ビット・アドレッシング問題を防止するからです。

プログラムがパラメーターを渡す場合は、パラメーター・リストを準備して、このリストの アドレスを R1 にロードしなければなりません。パラメーター・リストを渡さない場合は、R1 をゼロに設定してください。R14 にはアセンブラー・プログラム内の戻りアドレスを入れなければならず、R15 に は COBOL プログラムの入り口点のアドレスを入れなければなりません。

注: パラメーター・リストを渡す場合、それは 1 つ以上の隣接する フルワード (それぞれに、COBOL プログラムに渡されるデータ項目のアドレスが入って いる) のグループでなければなりません。最後のフルワード・アドレスの高位ビットを 1 に設定して、リストの終わりをフラグで示す ことをお勧めします。

ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)