V3R1 の後の RPG IV の主な拡張機能は、1 つのモジュールを複数のプロシージャーを使用してコーディングする機能です。これは何を意味するでしょう? 簡単に言えば、1 つのモジュールを 1 つ以上のプロトタイプ・プロシージャーを使用してコーディングできることを意味します。この場合、プロシージャーは RPG サイクルを使用しないで戻り値を持ち、実行することができます。
1 つのモジュールを複数のプロシージャーを使用して作成すると、作成するアプリケーション の機能を高めることができます。 すべてのアプリケーションは、特定のタスクを実行するために作成された一連の論理単位から構成されます。 最も柔軟にアプリケーションを開発するには、各論理単位をできるだけ独立させることが重要です。各単位を 独立させることによって、以下のことが可能になります。
複数のプロシージャーを使用して 1 つのモジュールをコーディングする主な利点は、 モジュラー・アプリケーションのコーディングの制御が容易になり、効率が上がる ことです。 この利点はいくつかの方法で実現することができます。 以下を行うことができます。
モジュール内のメイン・プロシージャーの実行時の動作は、V3R1 プロシージャーの場合 と同じです。 その後のプロシージャーの実行時の動作は、V3R1 プログラムとは いくらか異なります。プロシージャーの最後および例外処理の領域で特に 異なります。これらの相違点は、これらのプロシージャーについてはサイクル・コード が生成されないために生じます。
他の拡張は、このリリースについても行われています。次のような機能強化がなされました。
整数データ・タイプによって、2 進データ・タイプより広い範囲の値を使用することができます。 整数データ・タイプは、整数計算の パフォーマンスを向上することもできます。
既にこのデータ形式であるシステム値を処理するために、特定の命令の 中で *CYMD 日付形式を 使用できるようになりました。
このキーワードを使用して指定した 著作権情報は、DSPMOD、DSPPGM、 または DSPSRVPGM 情報の一部になります。
DISK または SEQ ファイルに SETLL、SETGT、または CHAIN 命令が使用されている 場合でも、ファイルのレコードのブロック化を要求することが できます。ブロック化を実行しないように要求することもできます。 このような場合でのブロック化の使用によって、実行時のパフォーマンスがかなり向上する可能性があります。
ファイル記述および定義仕様書に関する PREFIX キーワードへの変更によって、 既存のフィールド名内の文字を接頭部ストリングで置換 できるようになりました。
トリガー・プログラム・エラーを示すために 2 つの 状況コード 1223 および 1224 が追加されました。
次の表は、影響を受けた言語の部分に基づいて、変更された言語要素および新 しい言語要素を要約したものです。
| 言語単位 | 要素 | 説明 |
|---|---|---|
| ファイル仕様書キーワード | PREFIX(接頭部ストリング {:置換する文字数 }) | フィールド名に対するストリングの接頭部を付けること、 またはフィールド名の部分的な変更を可能にします。 |
| 定義仕様書キーワード | CONST {(定数) } | 名前付き定数の値を指定するか、または参照によって渡される プロトタイプ・パラメーターが 定数値を持っていることを示します。 |
| PREFIX(接頭部ストリング {:置換する文字数 }) | フィールド名に対するストリングの接頭部を付けること、 またはフィールド名の部分的な変更を可能にします。 | |
| 命令コード | RETURN | 呼び出し元に制御を戻し、 指定されている場合は、値を戻します。 |
| 言語単位 | 新規 | 説明 |
|---|---|---|
| 制御仕様書キーワード | 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 桁目のブランク | プロトタイプ・パラメーターを定義します。 |