Language Environment PL/I アプリケーションのコーディング要件
すべての PL/I プログラムは、 Language Environment® が提供するランタイム・サポートの下で実行される。 Language Environment PL/I 以前のプログラムと比較すると、いくつかのコーディング要件が追加される。
Language Environment 実行時オプションは、必要であれば plixopt 文字列で指定することができる。 ランタイム・オプションのカスタマイズについては、 Language Environment のランタイム・オプションの定義および z/OS Language Environment プログラミング・リファレンスを参照のこと。
Language Environment に準拠していないコンパイラでコンパイルされた PL/I プログラムを変換する場合は、 plixopt 文字列で NOSTAE と NOSPIE が指定されていないことを確認する必要があります。これらのどちらかが指定されていると、 Language Environment で TRAP (OFF) が設定されるからです。 アプリケーションが正常に動作するには、TRAP (ON) が有効になっていなければなりません。
エントリー・ポイント
CEESTART は、 Language Environment で動作する PL/I アプリケーションのための唯一のエントリーポイントです。 この入り口点は、言語環境プログラム準拠のコンパイラーを使用してコンパイルされたプログラム用に設定されています。
INCLUDE SYSLIB(CEESTART)
INCLUDE SYSLIB(CEESG010)
INCLUDE SYSLIB(DFHELII)
REPLACE PLISTART
CHANGE PLIMAIN(CEEMAIN)
INCLUDE mainprog
INCLUDE subprog1
.......
.......
ORDER CEESTART
ENTRY CEESTART
NAME progname(R)
オブジェクト・モジュールの INCLUDE ステートメントは、CHANGE ステートメントの直後に配置する必要があります。 また、 Language Environment では、サブルーチンの前にメイン・プログラムが含まれていなければならないという要件もある。 (準拠していないコンパイラーで作成されたモジュールには、このような要件はありません)。
OPTIONS(FETCHABLE) を使用してコンパイルされた Enterprise PL/I プログラムの場合には、バインダーの ENTRY ステートメントを PROCEDURE の名前にする必要があります。
PL/I の再リンク・ユーティリティー
準拠していないコンパイラでコンパイルされた CICSのロードモジュールしかない場合、 CICS専用のリンカ・エディタ入力ファイルIBMWRLKCがサンプル・ライブラリSCEESAMPに用意されています。 この入力ファイルは、不適合な実行プログラム中の OS PL/I ライブラリ・ルーチンを Language Environment ルーチンに置き換える。
IBMWRLKC の使用に関する詳細は Enterprise PL/I for z/OSの製品情報にある、該当するバージョンの 「コンパイラおよびランタイム移行ガイド」 を参照してください。
準拠と非準拠の各 PL/I ルーチン間の通信
言語環境プログラム準拠の PL/I プログラムは、FETCH または RELEASE ステートメントで表示されるプログラムを呼び出したり、そのプログラムをあとで解放したりすることができます。
言語環境プログラムに準拠していない PL/I サブルーチンを、言語環境プログラム準拠のメインプログラムとリンク・エディットすることができます。
静的呼び出しは、PL/I のどのバージョンからでもサポートされていますが、動的呼び出しは、言語環境プログラム準拠のプロシージャーからしかサポートされていません。
サブルーチンが呼び出されると、EIB のアドレスがサブルーチンで利用可能であれば CICS コマンドを発行できます。 これを実現するには、EIBのアドレスをサブルーチンに渡すか、 CICSを発行する前に、サブルーチン内で CICS とコード化します。
異常終了処理
CICS PL/I プログラムが Language Environment の下でアベンドした場合、 CICS アベンド・ハンドラーには、 PL/I アベンド・コードではなく、 Language Environment アベンド・コードが与えられる。
プログラムの変更を避けるために、SCEESAMP ライブラリ内の Language Environment が提供するサンプル・ユーザー条件ハンドラ CEEWUCHA を変更することができます。 このユーザー・コンディション・ハンドラーは、 Language Environment コードの代わりに、 PL/I アベンド・コードを返すようにすることができる。 USRHDLR ランタイム・オプションを使用し、これを実行するように登録してください。 このオプションの詳細については、 z/OS Language Environment Programming Guideを参照。
サンプルのユーザー条件処理ルーチン CEEWUCHA が、実行時に使用可能であることを (例えば、 STEPLIB 連結または LPA を使用して) 確認します。 プログラムの自動インストールを使用するのではなく、 CICS 領域の CICS システム定義データ セット (CSD) で条件ハンドラーを定義します。