PREFIX(接頭部{:置き換えられる文字数})

PREFIX キーワードによって、定義中の外部記述データ構造のサブフィールド名の接頭部となる文字ストリングまたは文字リテラルを指定することができます。 さらに、既存の名前の中で置き換えられる文字 (それがあった場合) の数を指示する 数値をオプションで指定することができます。 パラメーター「置き換えられる文字数」が指定されない場合には、 そのストリングが名前の先頭に付加されます。 それぞれの名前の先頭から文字を削除するには、 最初のパラメーターとして空のストリングを PREFIX('':削除する数) のように指 定します。

「置き換えられる文字数」を指定する場合には、小数点以下の桁数のない 0 から 9 の数 値を表していなければなりません。 ゼロの値の指定は、「置き換えられる文字数」をまったく指定しないことと同じです。 たとえば、PREFIX(YE:3) の指定によって、フィールド名 'YTDTOTAL' が 'YETOTAL' に変更されます。

「置き換えられる文字数」パラメーターは、数値リテラル、数値を戻す組み込み関数、 または数値定数とすることができます。 それが名前付き定数の場合には、PREFIX キーワードが含まれる指定に先立っ て定数が定義されていなければなりません。 さらに、それが組み込み関数の場合には、PREFIX キーワードが含まれる指定に先立ってすべてのパラメーターが組み込み関数に対して定義されていなければなりません。

適用される規則は次のとおりです。

図 132. PREFIX を使用して、名前から文字を削除する

次の例は、外部記述データ構造 DS1 および DS2 で PREFIX('':2) を使用します。 ファイル FILE1 のフィールドは、すべて文字 X4 で始まり、ファイル FILE2 のフィールドは、すべて文字 WR で始まります。2 つのファイルに、最初の 2 文字を除いて同じ名前のフィールドがある場合は、 外部記述データ構造に PREFIX('':2) を指定することによって、サブフィールドの名前は RPG プログラム内で同一になります。 これにより、そのサブフィールドは、EVAL-CORR 命令を使用して割り当てることができます。

Ffile1     if   e             disk
Ffile2     o    e             disk
D ds1           e ds                  extname(file1) prefix('':2)
D                                     qualified
D ds2           e ds                  extname(file2) prefix('':2)
D                                     qualified
 /free
     read file1 ds1;      // Read into data structure
     eval-corr ds2 = ds1; // Assign fields with same name
     write file2 ds2;     // Write from data structure
 /end-free

その他の例については、PREFIX(接頭部{:置き換えられる文字数})を参照してください。