V3R6/V3R2 での変更点

V3R1 以降の RPG IV の主な拡張機能は、1 つのモジュールを複数のプロシージャーを使用してコーディングする機能です。 これは何を意味するでしょう? 簡単に言えば、1 つのモジュールを 1 つ以上のプロトタイプ・プロシージャーを使用してコーディングできることを意味します。この場合、プロシージャーは RPG サイクルを使用しないで戻り値を持ち、実行することができます。

1 つのモジュールを複数のプロシージャーを使用して作成すると、 作成するアプリケーションの機能を高めることができます。すべてのアプリケーションは、 特定のタスクを実行すると考えられる一連の論理単位から構成されます。柔軟性を保持して アプリケーションを開発するには、 各論理単位をできるだけ独立させることが重要です。各単位を独立させることによって、 以下のことが可能になります。

複数のプロシージャーを使用して 1 つのモジュールをコーディングする主な利点は、 モジュラー・アプリケーションのコーディングの制御が容易になり、効率が上がることです。 この利点はいくつかの方法で実現することができます。 以下を行うことができます。

モジュール内のメイン・プロシージャーの実行時の動作は、V3R1 プロシージャーの場合と同じです。 それ以降のプロシージャーの実行時の動作は、V3R1 プログラムとはいくらか異なります。プロシージャーの最後および例外処理の領域で特に異なります。 これらの相違点は、これらのプロシージャーについてはサイクル・コードが生成されないために生じます。

他の拡張は、このリリースについても行われています。次のような機能強化がなされました。

以下の表に、影響を受ける言語の部分別に、変更のあった言語要素と新しい言語要素を 要約します。

表 15. V3R1 以降に変更された言語要素
言語単位 要素 説明
ファイル仕様書のキーワード PREFIX(接頭部ストリング {:置換する文字数}) フィールド名に対するストリングの接頭部を付けること、またはフィールド名の部分的な変更を可能にします。
定義仕様書キーワード CONST{(定数)} 名前付き定数の値を指定するか、または参照によって渡されるプロトタイプ・パラメーターが定数値を持っていることを示します。
PREFIX(接頭部ストリング {:置換する文字数}) フィールド名に対するストリングの接頭部を付けること、またはフィールド名の部分的な変更を可能にします。
命令コード RETURN 呼び出し元に制御を戻し、指定されている場合は、値を戻します。
表 16. V3R1 以降の新しい言語要素
言語単位 新規 説明
制御仕様書キーワード COPYRIGHT('版権ストリング') 版権情報をモジュールおよびプログラムに関連付けることができるようにします。
EXTBININT{(*NO | *YES)} プログラム処理中に、外部記述ファイル内の 2 進数フィールドに整数形式を割り当ていることを指定します。
NOMAIN モジュールにサブプロシージャーのみがあることを示します。
ファイル仕様書のキーワード BLOCK(*YES |*NO) レコードのブロック化の発生を制御できるようにします (他の条件が満たされた場合)
定義仕様書キーワード ALIGN 整数フィールドまたは符号なしフィールドの位置合わせを行うかどうかを指定します。
EXTPGM(名前) プロトタイプ・プログラムの外部名を示します。
EXTPROC(名前) プロトタイプ・プロシージャーの外部名を示します。
OPDESC プロトタイプ・バインド呼び出しで、操作記述子を渡すかどうかを指定します。
OPTIONS(*NOPASS *OMIT *VARSIZE) プロトタイプ・パラメーターに関する各種のオプションを指定します。
STATIC ローカル変数が静的記憶域を使用するように指定します。
VALUE プロトタイプ・パラメーターを値によって渡すように指定します。
組み込み関数 %PARMS 呼び出しで渡すパラメーターの個数を戻します。
命令コード CALLP プロトタイプ・プログラムまたはプロシージャーを呼び出します。
仕様書タイプ プロシージャー仕様書 サブプロシージャー定義の先頭と終端を示します。
定義のタイプ PR プロトタイプ定義の先頭を示します。
PI プロシージャー・インターフェース定義の先頭を示します。
24〜25 桁目のブランク プロトタイプ・パラメーターを定義します。