変更の始まり

このリリースにおける新しい機能

このセクションでは、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;
ヌル可能フィールドに関連した機能拡張
  • データ構造が 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) を使用することができます。
変更の始まり
表 1. 7.2 以降に変更された言語要素: 制御仕様書キーワード
要素 説明
PGMINFO キーワード *DCLCASE プログラム・インターフェース情報内の名前を、RPG ソース・ファイルに定義されている名前と同じケース (大 /小文字) で生成するための *DCLCASE パラメーター。
変更の終わり
変更の始まり
表 2. 7.2 以降に変更された言語要素: ファイル仕様書キーワード
要素 説明
ALIAS キーワード すべての外部記述ファイルで許可されます。
変更の終わり
変更の始まり
表 3. 7.2 以降に変更された言語要素: 定義仕様書キーワード
要素 説明
EXTNAME キーワード 抜き出しタイプ *NULL。
LIKEREC キーワード 抜き出しタイプ *NULL。
変更の終わり
変更の始まり
表 4. 7.2 以降で変更された言語要素: 組み込み関数
要素 説明
%SCAN 組み込み関数 %SCAN 組み込み関数は、検索対象の長さを示す、4 番目のパラメーターをサポートするようになりました。
変更の終わり
変更の始まり
表 5. 7.2 以降の新しい言語要素: ディレクティブ
要素 説明
特殊ディレクティブ **FREE **FREE は、ソースが完全自由形式、すなわち 1 桁からソース行の最後までが RPG コードであることを示しています。
変更の終わり
変更の始まり
表 6. 7.2 以降の新しい言語要素: 制御仕様書キーワード
要素 説明
DCLOPT (*NOCHGDSLEN) キーワード 入力仕様書、出力仕様書、または演算仕様書を使用したデータ構造のサイズ変更を不許可にします。
変更の終わり
変更の始まり
表 7. 7.2 以降の新しい言語要素: 定義仕様書キーワード
要素 説明
NULLIND キーワード ある項目を別の項目のヌル標識 (複数可) として関連付けます。
変更の終わり
変更の始まり
表 8. 7.2 以降の新しい言語要素: プロシージャー仕様書キーワード
要素 説明
PGMINFO キーワード モジュールの作成中にどのプロシージャーのインターフェースをプログラム・インターフェース情報内で記述するかを制御できます。
変更の終わり
変更の始まり
表 9. 7.2 : 移行の新しい言語要素: 組み込み関数
要素 説明
%SCANR (逆方向の走査) 別のストリング内で、あるストリングの最後のオカレンスを検出します。
変更の終わり
変更の終わり