このリリースにおける新しい機能
このセクションでは、ILE RPG 7.3 で行われた機能強化について説明します。
- 完全自由形式ソースのサポート
- 1 行目に特殊ディレクティブ **FREE が指定された RPG ソースには、自由形式コードのみが含まれます。コードは 1 桁目から開始し、行の終わりまで拡張できます。
完全自由形式ソースの場合、ソース行の長さに実際的制限はありません。
完全自由形式ソースでは固定形式コードは許可されませんが、/COPY ディレクティブまたは /INCLUDE ディレクティブを使用して、6 桁から 80 桁のみを使用する、桁制限ソースを組み込むことができます。
- 新しい組み込み関数 %SCANR (逆方向の走査)
- %SCANR 組み込み関数は %SCAN 組み込み関数に似ていますが、この関数が検出するのは、検索引数の最初のオカレンスではなく、最後のオカレンスです。
以下の例では、%SCAN を使用してストリング内の "***" の最初のオカレンスを検出し、%SCANR を使用して最後のオカレンスを検出しています。
string = 'The title is *** Chapter 1 ***.'; p1 = %SCAN ('***' : string); p2 = %SCANR ('***' : string); // p1 = 14 // p2 = 28 - 組み込み関数 %SCAN の長さパラメーター
- 長さパラメーターにより、検索するソース・ストリングの量を制限することができます。
以下の例では、最初の %SCAN 組み込み関数は 26 を返します。2 番目の %SCAN 組み込み関数は 0 を返します。この理由は、値 "abc" が、開始位置 1 と長さ 10 によって示されたサブストリング内で検出されないためです。
string = 'The alphabet begins with abc.'; p1 = %SCAN ('abc' : string); p2 = %SCAN ('abc' : string : 1 : 10); // p1 = 26 // p2 = 0 - ファイルの拡張 ALIAS サポート
- どの外部記述ファイルにも ALIAS キーワードを指定できるようになりました。
修飾されていないグローバル・ファイルに対して ALIAS キーワードが指定された場合、RPG プログラム内でフィールドの代替名が使用可能になります。
以下の例で、MYFILE ファイル内の REQALC フィールドには REQUIRED_ALLOCATION という代替名があります。ALIAS キーワードは、RPG プログラム内でのこのフィールドの名前が REQUIRED_ALLOCATION になることを示しています。
dcl-f myfile ALIAS; read myfile; if required_allocation <> 0 and size > 0; ... - 入出力操作でのデータ構造の規則の緩和
- タイプ *ALL によって定義された外部記述データ構造または LIKEREC データ構造は、どの入出力操作の結果データ構造としても使用できます。
dcl-f myfile usage(*input : *output : *update); dcl-ds ds extname('MYFILE' : *ALL); read myfile ds; update myfmt ds; write myfmt ds; - データ構造が、DISK ファイルのレコード様式に対して、2 番目のパラメーターなしの LIKEREC を使用して定義されており、出力バッファーのレイアウトが入力バッファーのレイアウトと全く同じ場合、そのデータ構造はどの入出力操作の結果データ構造としても使用できます。
dcl-f myfile usage(*input : *output : *update); dcl-ds ds likerec(fmt); read myfile ds; update myfmt ds; write myfmt ds;
- タイプ *ALL によって定義された外部記述データ構造または LIKEREC データ構造は、どの入出力操作の結果データ構造としても使用できます。
- ヌル可能フィールドに関連した機能拡張
- データ構造が EXTNAME キーワードまたは LIKEREC キーワードによって定義されている場合、サブフィールドがすべて標識であることを指定して、*NULL を追加の抜き出しタイプとしてコーディングすることができます。外部ファイルがデータベース・ファイルの場合、結果データ構造は、そのファイルのヌル・バイト・マップに一致します。
- NULLIND キーワードを使用して以下のことを実行します。
- フィールドをヌル可能として定義する
- 独自の標識フィールドを、フィールドのヌル標識になるように定義する
- EXTNAME(*NULL) または LIKEREC(*NULL) によって定義された独自の標識データ構造を、別のデータ構造のヌル標識になるように定義する
- PCML の機能拡張
- PGMINFO 制御仕様書キーワードの *DCLCASE パラメーターを指定して、プログラム・インターフェース情報内の名前が、RPG ソース・ファイルに定義されている名前と同じケース (大 /小文字) で生成されるようにします。
- モジュールの作成時にプログラム・インターフェース情報に組み込むプロシージャーに対してプロシージャー仕様書キーワードに PGMINFO(*YES) を指定するか、組み込まないプロシージャーに対して PGMINFO(*NO) を指定します。
- DCLOPT(*NOCHGDSLEN)
- DCLOPT(*NOCHGDSLEN) を指定して、入力仕様書、出力仕様書、または演算仕様書を使用してデータ構造の長さが変更されないようにします。DCLOPT(*NOCHGDSLEN) を指定すると、より自由な形式の宣言で %SIZE(data-structure) を使用することができます。

| 要素 | 説明 |
|---|---|
| PGMINFO キーワード | *DCLCASE プログラム・インターフェース情報内の名前を、RPG ソース・ファイルに定義されている名前と同じケース (大 /小文字) で生成するための *DCLCASE パラメーター。 |


| 要素 | 説明 |
|---|---|
| ALIAS キーワード | すべての外部記述ファイルで許可されます。 |


| 要素 | 説明 |
|---|---|
| EXTNAME キーワード | 抜き出しタイプ *NULL。 |
| LIKEREC キーワード | 抜き出しタイプ *NULL。 |


| 要素 | 説明 |
|---|---|
| %SCAN 組み込み関数 | %SCAN 組み込み関数は、検索対象の長さを示す、4 番目のパラメーターをサポートするようになりました。 |


| 要素 | 説明 |
|---|---|
| 特殊ディレクティブ **FREE | **FREE は、ソースが完全自由形式、すなわち 1 桁からソース行の最後までが RPG コードであることを示しています。 |


| 要素 | 説明 |
|---|---|
| DCLOPT (*NOCHGDSLEN) キーワード | 入力仕様書、出力仕様書、または演算仕様書を使用したデータ構造のサイズ変更を不許可にします。 |


| 要素 | 説明 |
|---|---|
| NULLIND キーワード | ある項目を別の項目のヌル標識 (複数可) として関連付けます。 |


| 要素 | 説明 |
|---|---|
| PGMINFO キーワード | モジュールの作成中にどのプロシージャーのインターフェースをプログラム・インターフェース情報内で記述するかを制御できます。 |


| 要素 | 説明 |
|---|---|
| %SCANR (逆方向の走査) | 別のストリング内で、あるストリングの最後のオカレンスを検出します。 |

