V5R1 での変更点
ILE RPG コンパイラーは、 新たに C/C++ および COBOL コンパイラーが組み込まれた IBM® Rational® Development Studio for i 製品の一部であり、 アプリケーション開発ツールセット・ツールです。
V4R4 以降の RPG IV の主要な機能強化は、Java™ との簡単なインターフェース接続、 新しい組み込み関数、自由形式演算仕様書、オープンにするファイルの制御、修飾サブフィールド名、およびエラー処理の拡張です。
以下に、これらの強化機能について説明します。
- Java と ILE RPG 間の呼び出しのサポートが、Java Native Interface (JNI) の使用により改善されました。
- 新しいデータ・タイプ: オブジェクト
- 新しい定義仕様書キーワード: CLASS
- LIKE 定義仕様書キーワードが拡張され、オブジェクトをサポートするようになりました。
- EXTPROC 定義仕様書キーワードが拡張され、Java プロシージャーをサポートするようになりました。
- 新しい状況コード。
- 新しい組み込み関数。
- 数字を期間に変換する次の関数。これらは算術式の中で使用することができます: %MSECONDS、%SECONDS、%MINUTES、%HOURS、%DAYS、%MONTHS、および %YEARS。
- %DIFF 関数。ある日付、時刻、またはタイム・スタンプの値を、もう 1 つの値から減算します。
- 文字ストリング (または日付またはタイム・スタンプ) を日付、時刻、またはタイム・スタンプに変換する次の関数: %DATE、%TIME、および %TIMESTAMP。
- %SUBDT 関数。日付、時刻、またはタイム・スタンプのサブセットを取り出します。
- 記憶域の割り振りまたは再割り振りを行なう関数: %ALLOC および %REALLOC。
- 配列の要素を検索する次の関数: %LOOKUP、%LOOKUPGT、%LOOKUPGE、%LOOKUPLT、および %LOOKUPLE。
- テーブルの要素を検索する次の関数: %TLOOKUP、%TLOOKUPGT、%TLOOKUPGE、%TLOOKUPLT、および %TLOOKUPLE。
- 指定された文字だけを含むストリングを検査する関数: %CHECK および %CHECKR。
- %XLATE 関数。変換元文字と変換先文字のリストに基づいてストリングの変換を行います。
- %OCCUR 関数。複数オカレンス・データ構造において現行のオカレンスを入手したり設定したりします。
- %SHTDN 関数。オペレーターがシャットダウンを要求したかどうかを判断します。
- %SQRT 関数。数値の平方根を計算します。
- 演算仕様書の新たな自由形式構文。自由形式演算仕様書のブロックは、コンパイラー指示 /FREE および /END-FREE で区切ります。
注:
これらのディレクティブは不要になりました。

- ファイル仕様に EXTFILE キーワードおよび EXTMBR キーワードを指定して、ファイルがオープンされる時にどの外部ファイルが使用されるかを制御することができます。
- データ構造の中で次の通り修飾名がサポートされます。
- 新しい定義仕様書キーワード: QUALIFIED。 このキーワードは、サブフィールド名がデータ構造名によって修飾されることを示します。
- 新しい定義仕様書キーワード: LIKEDS。 このキーワードは、サブフィールドが別のデータ構造から複製されることを指定します。 サブフィールド名は新しいデータ構造名によって修飾されます。 LIKEDS はプロトタイプ化されたパラメーターに使用できます。 このキーワードにより、パラメーターのサブフィールドを直接に呼び出し先プロシージャーで使用することができます。
- INZ 定義仕様書キーワードが拡張され、データ構造をその親データ構造を基にして初期化できるようになりました。
- 次のような、エラー処理の機能拡張。
- 新しい 3 つの演算コード (MONITOR、ON-ERROR、および ENDMON) によって、状況コードに合わせた条件付きエラー処理を伴う命令グループを定義できるようになりました。
このリリースでは、これ以外の拡張も行われています。次のような機能強化がなされました。
- パラメーターを持たないプロシージャー呼び出しにおいて、括弧を指定することができます。
- プロシージャーが ILE C 呼び出し規則または ILE CL 呼び出し規則を使用することを、EXTPROC 定義仕様書キーワードで指定することができます。
- 次の /DEFINE 名が事前定義されています: *VnRnMn、*ILERPG、 *CRTBNDRPG、および *CRTRPGMOD。
- %SCAN 命令における検索ストリングが、検索対象となるストリングよりも長くてもかまいません。(そのストリングは検索されないことになりますが、これによってエラー条件が生成されることはなくなりました。)
- DIM キーワード、OCCURS キーワード、および PERRCD キーワードのパラメーターは、事前に定義されている必要がなくなりました。
- %PADDR 組み込み関数は、その引数に応じて、プロトタイプ名または入り口点名のいずれかをとることができるようになりました。
- 新しい命令コード ELSEIF は、ELSE 命令コードと IF 命令コードを結合したもので、追加の ENDIF は必要ありません。
- DUMP 命令コードは、DEBUG(*NO) が指定されていても必ずダンプが生成されるという意味の A 拡張を、新しくサポートするようになりました。
- 新しい指示 /INCLUDE は、/INCLUDE が SQL プリプロセッサーによって展開されない点を除けば、/COPY と同等です。組み込みファイルは、組み込み SQL またはホスト変数を含むことはできません。
- OFLIND ファイル仕様書キーワードは、名前付き標識を含むすべての標識を、引数として取ることができるようになりました。
- LICOPT (ライセンス内部コード・オプション) キーワードが、CRTRPGMOD コマンドおよび CRTBNDRPG コマンドで使用可能になりました。
- PREFIX ファイル記述キーワードが、引数として上段シフト文字リテラルを取ることができるようになりました。リテラルはピリオドで終わることができ、ファイルはこのピリオドがあれば修飾付きサブフィールドで使用できるようになります。
- PREFIX 定義仕様書キーワードも、引数として上段シフト文字リテラルを 取ることができるようになりました。このリテラルはピリオドで終わることはできません。
以下の表に、影響を受ける言語の部分別に、変更のあった言語要素と新しい言語要素を 要約します。
| 言語単位 | 要素 | 説明 |
|---|---|---|
| 組み込み関数 | %CHAR(式 {:形式}) | オプションである 2 番目のパラメーターには、使用したい日付、時刻、またはタイム・スタンプの形式を指定します。 結果は、指定された形式と形式のセパレーターを使用し、入力の形式とセパレーターは使用しません。 |
| %PADDR(プロトタイプ名) | この関数は、その引数に応じて、プロトタイプ名または入り口点名のいずれかをとることが できるようになりました。 | |
| 定義仕様書キーワード | EXTPROC(*JAVA:クラス名:プロシージャー名) | これを指定すると、Java メソッドが呼び出されます。 |
| EXTPROC(*CL:プロシージャー名) | プロシージャーが戻り値に ILE CL 規則を使用することを指定します。 | |
| EXTPROC(*CWIDEN:プロシージャー名) | プロシージャーが、パラメーター拡大付きで ILE C 規則を使用することを指定します。 | |
| EXTPROC(*CNOWIDEN:プロシージャー名) | プロシージャーが、パラメーター拡大なしで ILE C 規則を使用することを指定します。 | |
| INZ(*LIKEDS) | LIKEDS キーワードを指定して定義されたデータ構造が、その親データ構造から初期化を継承することを指定します。 | |
| LIKE(オブジェクト名) | オブジェクトが、別のオブジェクトと同じクラスを持つことを指定します。 | |
| PREFIX(文字リテラル {:数値}) | 指定された文字リテラルでサブフィールドに接頭語を付け、任意指定で指定された文字数を置換します。 | |
| ファイル仕様書のキーワード | OFLIND(名前) | このキーワードは、任意の名前付き標識をパラメーターとしてとることができるようになりました。 |
| PREFIX(文字リテラル {:数値}) | 指定された文字リテラルでサブフィールドに接頭語を付け、任意指定で指定された文字数を置換します。 | |
| 命令コード | DUMP (A) | この命令コードは、DEBUG(*NO) が指定されていてもダンプが生成される、 A 拡張を今後取ることができるようになりました。 |
| 言語単位 | 要素 | 説明 |
|---|---|---|
| データ・タイプ | オブジェクト | Java オブジェクトに使用されます。 |
| コンパイラー指示 | /FREE ... /END-FREE | /FREE... /END-FREE コンパイラー指示は、自由形式演算仕様書ブロックを示します。 |
| /INCLUDE | SQL プリプロセッサーによって展開されない点を除き、/COPY と同等です。 コピーされたファイルの中にある、ネストされたファイルを組み込むために使用できます。 コピーされたファイルは、組み込み SQL またはホスト変数を持つことはできません。 | |
| 定義仕様書キーワード | CLASS(*JAVA:クラス名) | オブジェクトのクラスを指定します。 |
| LIKEDS(データ構造名) | データ構造、プロトタイプ化されたパラメーター、あるいは戻り値が、 別のデータ構造のサブフィールドを継承することを指定します。 | |
| QUALIFIED | データ構造内のサブフィールド名が、データ構造名によって修飾されることを示します。 | |
| ファイル仕様書のキーワード | EXTFILE(ファイル名) | どのファイルをオープンするか指定します。値はリテラルまたは変数を指定できます。 デフォルトのファイル名は、ファイル仕様書の位置 7 で指定されている名前になります。 デフォルトのライブラリーは *LIBL です。 |
| EXTMBR(メンバー名) | どのメンバーをオープンするか指定します。 値はリテラルまたは変数を指定できます。 デフォルト値は *FIRST です。 | |
| 組み込み関数 | %ALLOC(数値) | 指定された容量の記憶域を割り振ります。 |
| %CHECK(コンパレーター:基本 {:開始}) | コンパレーターの中になく基本ストリングの中にある先頭文字を検索します。 | |
| %CHECKR(コンパレーター:基本 {:開始}) | コンパレーターの中になく基本ストリングの中にある末尾文字を検索します。 | |
| %DATE(式 {:日付の形式}) | 式を日付に変換します。 | |
| %DAYS(数値) | 数値を日単位の期間に変換します。 | |
| %DIFF(オプション 1 :オプション 2 :単位) | 2 つの日付、時刻、またはタイム・スタンプの値の間の差 (期間) を、指定された単位で計算します。 | |
| %HOURS(数値) | 数値を時間単位の期間に変換します。 | |
| %LOOKUPxx(引数:配列 {:開始索引 {:要素の数}}) | 指定された引数に近い引数、または指定されたタイプに近いタイプを、指定された配列内で検索します。 | |
| %MINUTES(数値) | 数値を分単位の期間に変換します。 | |
| %MONTHS(数値) | 数値を月単位の期間に変換します。 | |
| %MSECONDS(数値) | 数値をマイクロ秒単位の期間に変換します。 | |
| %OCCUR(データ構造名) | 複数オカレンス・データ構造の現在位置を設定するか、または入手します。 | |
| %REALLOC(ポインター:数値) | 指定された容量の記憶域を、指定されたポインター用に再割り振りします。 | |
| %SECONDS(数値) | 数値を秒単位の期間に変換します。 | |
| %SHTDN | システム・オペレーターがシャットダウンを要求しているかどうかをチェックします。 | |
| %SQRT(数値式) | 指定された数値の平方根を計算します。 | |
| %SUBDT(値:単位) | 日付、時刻、またはタイム・スタンプの値から、指定された部分を抽出します。 | |
| %THIS | 代わりに固有メソッドが呼び出されるクラス・インスタンスへの参照を含むオブジェクト値を戻します。 | |
| %TIME(式 {:時刻形式}) | 式を時刻に変換します。 | |
| %TIMESTAMP(式 {:*ISO|*ISO0}) | 式をタイム・スタンプに変換します。 | |
| %TLOOKUP(引数:検索テーブル {:代替テーブル}) | 指定された引数に近い引数、または指定されたタイプに近いタイプを、指定されたテーブル内で検索します。 | |
| %XLATE(変換元:変換先:ストリング {:開始位置}) | 指定されたストリングを、変換元ストリングから変換先ストリングにもとづいて変換します。 | |
| %YEARS(数値) | 数値を年単位の期間に変換します。 | |
| 命令コード | MONITOR | 条件付きエラー処理を持つ命令のグループを開始します。 |
| ON-ERROR | 状況コードに基づいて、条件付きエラー処理を実行します。 | |
| ENDMON | 条件付きエラー処理を持つ命令のグループを終了します。 | |
| ELSEIF | ELSE 命令コードに IF 命令コードを続けたものと同等です。 | |
| CRTBNDRPG キーワードおよび CRTRPGMOD キーワード | LICOPT(オプション) | ライセンス内部コード・オプションを指定します。 |