V3R1 での変更点
以下に、V3R1 において ILE COBOL に対して行われた機能強化について説明します。
- EXTERNAL データ項目
EXTERNAL 文節を使用することにより、ILE COBOL 実行単位内のすべてのプログラムで使用可能なデータ項目を定義することができます。 プログラム間で共用されるすべての変数を、CALL ステートメントの引数として渡す必要はなくなりました。 このサポートは、CALL ステートメントの引数とパラメーターを使用せずにデータを共用できるようにすることで、 アプリケーションのより大きなモジュール性を促進します。
- EXTERNAL ファイル
実行単位内のすべてのプログラムで使用可能なファイルを定義することができます。 ファイルを EXTERNAL として宣言している、実行単位内のどの ILE COBOL プログラムからでも、 同じファイルに対する入出力要求をシームレスに行うことができます。 外部ファイルの場合、そのファイルを使用しているプログラムの数には関係なく、 ファイル・カーソルは 1 つだけしかありません。 ファイルを複数のプログラムで共用することができ、それによって、より小さな、保守性に優れたプログラムを開発することができます。 EXTERNAL ファイルを使用することは、 そのファイルを使用するすべての関連プログラムについて、1 つの OPEN および CLOSE 操作しか必要がないため、 共用オープン・ファイルを使用することの利点が得られます。 ただし、EXTERNAL ファイルは、異なる活動化グループ内では共用できず、また他のプログラム言語で書かれたプログラムとも共用できません。
- ネストされたソース・プログラム
1 つの ILE COBOL ソース・プログラムに、他の ILE COBOL ソース・プログラムを含めることができます。 これらの含められたプログラムでは、それらが含められている元のプログラムのデータ項目やファイルなどの一部のリソースを参照するか、 または定義しているプログラムだけが見ることができるリソースをローカルで定義することができます。 ILE COBOL プログラムはそれ自体がリソースであるため、 その有効範囲は、そのプログラムに付加されたネスト構造および有効範囲属性によっても制御されます。 これによって、1 つの ILE COBOL プログラムによって呼び出すことができる、ILE COBOL プログラムのセットの制御の柔軟性が大幅に増します。 ネストされた ILE COBOL プログラムでは、リソースを隠蔽して、見ることができないようにするメカニズムを提供します。
- INITIAL 文節
1 つの ILE COBOL プログラムとその中に含まれるすべてのプログラムが、 呼び出されるたびに初期状態に置かれるようなメカニズムがあります。 これは、PROGRAM-ID 段落に INITIAL を指定することによって可能になります。 これによって、COBOL 実行単位の制御の柔軟性がさらに増します。
- REPLACE ステートメント
REPLACE ステートメントは、コンパイルの処理中にソース・プログラムのテキストを置き換えるのに便利です。 このステートメントは、REPLACING 句を指定した COPY ディレクティブとは異なり、 ファイル全体か、または別の REPLACE ステートメントに出会うまで操作されます。 REPLACE ステートメントは、すべての COPY ステートメントが処理された後で処理されます。 これにより、コンパイルすべき ILE COBOL テキストの変更の柔軟性がさらに増します。
- DISPLAY WITH NO ADVANCING ステートメント
DISPLAY ステートメントで NO ADVANCING 句を使用することによって、カーソルを、表示された最後の文字の後にそのまま置いておく機能が得られます。 これにより、単一行に表示すべき項目を、ILE COBOL プログラム内のさまざまな点から集めて 1 つのストリングにすることができます。
- ACCEPT FROM DAY-OF-WEEK ステートメント
ILE COBOL では、曜日 (月曜日 = 1、火曜日 = 2 ...) を受け入れ、それに ID を割り当てることができるようになりました。 このサポートは、既存の ACCEPT FROM DAY/DATE/TIME サポートを補うものです。
- 相対ファイルに対する SELECT OPTIONAL 文節
これにより、ファイルが I-O でオープンされた場合であっても、相対ファイルの自動作成が可能になります。 これは、順次ファイルの場合にすでに使用可能であるサポートを拡張するものです。
- ネストされた COPY ステートメントのサポート
COPY メンバーに COPY ステートメントを含めることができ、それによって COPY ステートメントの能力が拡張されます。 COPY メンバーに COPY ディレクティブが含まれている場合は、COPY ディレクティブを含めた側にも、含められた COPY ディレクティブにも、REPLACING 句を指定することができません。
- 拡張 ACCEPT および DISPLAY ステートメントに対する機能強化
拡張 ACCEPT ステートメントで、テーブルの作業を行うことができます。 これにより、テーブルのエレメントを、容易かつ選択的に更新することができます。
拡張 ACCEPT および DISPLAY ステートメントでは、可変長テーブルも許されます。
また、拡張 ACCEPT では、SIZE 文節もサポートされます。
- プロシージャー・ポインターのサポート
プロシージャー・ポインターは、ILE COBOL プログラムまたは非 ILE COBOL プログラムのアドレスを入れることができる新しいデータ・タイプです。 プロシージャー・ポインターは、データ項目に USAGE IS PROCEDURE-POINTER 文節を指定することによって定義されます。 この新しいデータ・タイプは、パラメーターとしてこのタイプのデータ項目を期待している、 呼び出し側プログラムまた ILE プロシージャーにとって便利です。 また、プロシージャー・ポインター・データ項目は、別のプログラムを呼び出すための CALL ステートメントのターゲットとしても使用することができます。
- 新しい特殊レジスター
- RETURN-CODE 特殊レジスター
戻り情報を ILE COBOL プログラム間で渡すことができます。 通常、このレジスターは、呼び出し先プログラムの成功または失敗に関する情報を渡すのに使用されます。
- SORT-RETURN 特殊レジスター
SORT または MERGE ステートメントの成功に関する情報を戻します。 またこれによって、エラー宣言または入出力プロシージャーから、SORT/MERGE の処理を終了させることもできます。
- RETURN-CODE 特殊レジスター
- 新しいコンパイラー・オプション
- *PICGGRAPHIC/*NOPICGGRAPHIC
*PICGGRAPHIC は CVTOPT オプションの新しいパラメーターであり、 それによって、ユーザーは DBCS データを ILE COBOL プログラムに取り込むことができます。
- *IMBEDERR/*NOIMBEDERR オプション
*IMBEDERR は新しいコンパイラー・オプションであり、それによって、コンパイラー・リストの終わり だけでなく、発生時点でコンパイル時エラーをコンパイラー・リストに組み込みます。
- *FLOAT/*NOFLOAT
*FLOAT は CVTOPT オプションの新しいパラメーターであり、 それによって、DDS 名と COMP-1 (単精度) または COMP-2 (倍精度) の USAGE を使用して、 浮動小数点データ項目を ILE COBOL プログラムに取り込むことができます。
- *NOSTDTRUNC/*STDTRUNC オプション
*NOSTDTRUNC は新しいコンパイラー・オプションであり、BINARY データ項目の切り捨てを抑止します。 このオプションは、IBM® System/390® (S/390®) からのアプリケーションのマイグレーションに便利です。
- *CHGPOSSGN/*NOCHGPOSSGN オプション
このオプションは、IBM i と IBM S/390® の間でデータを共用するのに便利です。 このオプションは、IBM System/390 との互換性のために提供されています。 このオプションは、符号付きのパックおよびゾーンのデータ項目が算術ステートメントまたは MOVE ステートメントで使用され、 それらのデータ項目の値が正である場合に、それらのビット表記を変更します。
- *PICGGRAPHIC/*NOPICGGRAPHIC
- 引用符付きシステム名のサポート
システム名が許されるところで、リテラルが許されるサポートが追加されています。 システムがサポートする名前であればどのような名前でも使用することができ、有効 COBOL 名に対する制限は無くなりました。
- 以下の機能については、COBOL での制限が無くなり、システムの制約によって決定されるようになりました。
- 宣言済みファイルの数。
- CALL ステートメントおよび手続き部 USING 句のパラメーターの数。 ここでは、ILE プロシージャーの場合の 400 というシステム制限と、 プログラム・オブジェクトの場合の 255 というシステム制限が適用されます。
- SORT-MERGE 入力ファイルの数および SORT-MERGE キーの数。 SORT-MERGE 入力ファイルの最大数は 32 であり、SORT-MERGE キーの最大長は 2000 バイトです。
- NO LOCK 付きの START ステートメント。
START ステートメントで NO LOCK 句を使用することにより、レコード上にロックを置かずに、 読み取るべき最初のレコードにファイル・カーソルが位置付けられます。 このサポートは、索引付きファイルおよび相対ファイルに対して提供され、 すでに使用可能になっている、NO LOCK 付きの READ 機能を補うものです。注: NO LOCK 付きの START は、ILE COBOL と OPM COBOL/400 の両方における新しいステートメントです。
- 静的プロシージャー呼び出しサポート
より小さく、保守性に優れたモジュール・オブジェクトでアプリケーションを開発して、それらを一緒にリンクして、 動的プログラム呼び出しのオーバーヘッドによる不利益を被ることなく、1 つのプログラム・オブジェクトにすることができます。 またこの機能は、システムによって提供される共通の実行時環境と相まって、アプリケーションを混合言語で作成する能力も向上させます。 ILE プログラム言語では、ソース言語が混合しているかどうかに関係なく、C、RPG、 COBOL、および CL を単一のプログラム・オブジェクトにバインドすることが許されます。
CALL リテラル・ステートメントの新しい構文と新しいコンパイラー・オプションが ILE COBOL に追加され、 静的プロシージャー呼び出しと動的プログラム呼び出しを区別するようになりました。
- 可変長レコード・サポート (RECORD IS VARYING 文節)
標準の ANSI COBOL 構文を使用して、同じファイル上で長さが異なるレコードを定義し、容易に使用することができます。 これは、ストレージを大幅に削減するだけでなく、他のシステムから複雑なアプリケーションをマイグレーションする作業も容易にします。
- 拡張されたコンパイラー限界値
ILE COBOL は、以下の拡張されたコンパイラー限界値を提供します。
- グループ・データ項目および基本データ項目のサイズ
- 固定長および可変長のテーブルのサイズ
- 条件ステートメントのネスト・レベルの数
- さまざまな手続き部ステートメントのオペランドの数