別の言語からの PL/I サブルーチンの呼び出しを有効にするには、最初に PL/I ランタイム システム (RTS) を初期化し、サブルーチンの実行後にそれを終了する必要があります。静的呼び出しまたは動的呼び出しを使用できます。
サブルーチンで PL/I アプリケーション ロジックを実行するには、PL/I API を使用して次のように 1 回ずつ PL/I RTS を初期化してから終了します。
必要な初期化および終了は、プログラミングのニーズに応じてさまざまな方法で実装できます。次のリストで、いくつかの例を紹介します。
メインの COBOL プログラムを -initcall 指令を使用してコンパイルします。指定された initcall ルーチンで以下を実行します。
次の説明は両方のルーチンに該当します。
いずれの場合も、PL/I サブルーチンの全体的な設計と、プログラム内のサブルーチンの使用方法を検討してください。PL/I の作業が完了するまで、PL/I RTS が終了しないようにする必要があります。最初に 1 つのルーチンを呼び出して PL/I RTS を初期化し、COBOL 環境の破棄によって RTS を終了させ、環境を初期化解除することをお勧めします。
* この方法に関して、複数の CICS リンク レベルから PL/I サブルーチンを呼び出す場合は例外となります。この場合、API __lpi_get_kix_level() 呼び出しを使用して、リンク レベルごとに 1 回ずつ初期化と終了を管理し、現在のリンク レベルを判別して、所定の PL/I RTS コンテキストをインスタンス化するか破棄するかを判別する必要があります。__lpi_init() への後続の各呼び出しは、新しいスタック RTS コンテキストを作成し、__lpi_fini_and_return() は現在のコンテキストを削除します。次に例を示します。
int __lpi_get_kix_level(); 注意:
これは高度な手順であるため、CICS リンク レベルおよび PL/I API の概念の理解が十分でない場合は実行しないでください。
|
PL/I ルーチンは、静的または動的にリンクして呼び出せます。動的リンクまたは動的呼び出しを行う場合は、上記の「RTS の初期化および終了」セクションに記載の設計上の推奨事項を必ず考慮してください。