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

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

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

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

適用される規則は次のとおりです。
  • EXTFLD キーワードを使用して明示的に名前が変更されたサブフィールドは このキーワードの影響を受けません。
  • 接頭部を適用した後の名前の合計長が RPG フィールド名の最大長を超えては なりません。
  • 接頭部が付けられる名前の中の文字数が「置き換えられる文字数」パラメーター によって表された値より小さいかまたは等しい場合には、その名前全体が接頭 部ストリングによって置き換えられます。
  • 接頭部はピリオドで終わることはできません。
  • 接頭部が文字リテラルの場合は英大文字でなければなりません。

PREFIX キーワードと ALIAS キーワードの相互の影響については、ALIAS キーワードを参照してください。

図 1. 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(接頭部 {:置き換えられる文字数 })を参照してください。