表 1 には、CICS で実行される Enterprise COBOL プログラム用の主要なコンパイラー・オプションがリストされています。
| コンパイラー・オプション | 説明 |
|---|---|
| CICS |
CICS コンパイラー・オプションは、組み込みの CICS 変換プログラム機能を使用可能にします。ソース・プログラムに CICS ステートメントが含まれており、単独の CICS 変換プログラムによってまだ処理されていない場合、CICS オプションを指定する必要があります。 CICS オプションを指定する場合は、LIB、NODYNAM、および RENT オプションも有効にする必要があります。Enterprise COBOL では、NOLIB、DYNAM、または NORENT が CICS オプションと同じレベルで指定された場合、これらのオプションが強制的に指定されます。 CICS 変換プログラム・オプション COBOL3 が推奨されていますが、 COBOL2 もサポートされます。このセクションでは、CICS Transaction Server for z/OS バージョン 2 リリース 2 以降で使用可能な新規の COBOL2 CICS 変換プログラム・オプションについて説明します。 .一時変数を使用する必要がある以前のプログラムを再変換する場合、COBOL2 オプションを選択します。 特に注意すべき点は、一時変数を使用すると、プログラム内の引数値が正しく定義されていない場合に通常発生するようなエラーが回避されることがある点です。この COBOL2 オプションでは、一時変数の宣言が提供されます。 この機能のために、COBOL2 で変換されたプログラム内では、実行時には気付かなくても、正しくない引数値の定義がある場合があります。 このようなプログラムでは、COBOL3 オプションで変換するときに初めて、エラーが見つかることがあります。 例えば、以下のようにコーディングしたとします。
EXEC CICS LINK PROGRAM('XXXXXXX')
COMMAREA(WS-COMMAREA)
LENGTH('1000')
END-EXEC.
長さはバイナリー・ハーフワードにする規則になっていますが、引用符で囲まれているため、文字ストリングとして扱われます。 COBOL3 では、この文字ストリングは CALL の時点で直接 CICS に渡されるので、エラーが発生します。COBOL2 オプションでは、この長さは中間変数に移動され、 さらに COBOL はそれを移動の一部として、文字ストリングからバイナリー・ハーフワードに変換します。COBOL2 オプションを使用すれば、プログラム内のエラーを修正せずに、 その発生を従来どおり回避することができ、CICS の新しいリリースへのマイグレーションが容易になります。 NOCICS オプションが有効な場合は、検出されたすべての CICS ステートメントは S レベル診断のフラグが立てられ、廃棄されます。 |
| DATA | 以下の 2 つのケースでは、DATA(24) を使用してください。
|
| DBCS | DBCS オプションは Enterprise COBOL のデフォルトです。 COBOL2 CICS 変換プログラムのオプションを使用している場合は 、CICS プログラムに問題が発生することがあります。 COBOL3 変換プログラムのオプションを使用して修正してください。 |
| LIB | CICS 変換プログラムによって変換されるプログラムの場合、LIB が必要です。 |
| NODYNAM | CICS 変換プログラムによって変換されるプログラムの場合、NODYNAM が必要です。これは、CICS コマンド・レベル・スタブを動的に呼び出すことができないためです。 |
| RENT | CICS プログラムの場合、RENT が必要です。RENT を指定すると、コンパイラーは再入可能コードを生成するため、COBOL モジュールを LPA (リンク・パック域) または ELPA (拡張リンク・パック域) に置くことができるので、それを CICS のもとで複数のアドレス・スペースで共用することができます。 また、LPA および ELPA は読取専用ストレージなので、 モジュールに上書きすることはできません。 |
| TRUNC | EXEC CICS コマンドを含んでいる CICS プログラムの場合に、プログラムによる
バイナリー・データ項目の使用法がそのデータ項目についての PICTURE お
よび USAGE 文節に従っている場合は、TRUNC(OPT) を使用してください。 プログラムによるバイナリー・データ項目の使用法がそのデータ項目についての PICTURE および USAGE 文節に従っていない場合は、TRUNC(BIN) を使用してください。たとえば、データ項目が PIC S9(8) BINARY として定義され、それが 8 桁よりも大きい値を受け取る可能性がある場合は TRUNC(BIN) を使用してください。 |