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