PREFIX キーワードは、外部記述ファイル中のフィールドの名前を部分的に変更す るために使用されます。 最初のパラメーターで指定された文字は、7 から 16 桁目に指定されたファイルのすべてのレコードに定義されたすべてのフィールドの名前に対する接頭部になります。 文字は、名前 (例えば PREFIX(F1_))、または文字リテラル (例えば PREFIX('F1_')) として指定できます。 接頭部にピリオドが含まれる場合 (例えば PREFIX('F1DS.') または PREFIX('F1DS.A')) には、文字リテラルを使用する必要があります。 それぞれの名前の先頭から文字を削除するには、 最初のパラメーターとして空のストリングを PREFIX('':削除する数) のように指 定します。 さらに、既存の名前の中で置き換えられる文字 (それがあった場合) の数を指示する 数値をオプションで指定することができます。 「置き換えられる文字数」を指定しない場合には、名前の先頭にストリングが付加さ れます。
「置き換えられる文字数」を指定する場合には、0 から 9 の値を含み、小数点以下の桁数 のない数値定数としなければなりません。 たとえば、PREFIX(YE:3) の指定によって、フィールド名 'YTDTOTAL' が 'YETOTAL' に変更されます。ゼロの値の指定は、「置き換えられる文字数」をまったく指定しないことと同じです。
規則は次のとおりです。
ファイルの PREFIX | 外部記述データ構造の PREFIX | 内部名 |
---|---|---|
PREFIX(A) | PREFIX(A) | AXYNAME |
PREFIX(A:2) | PREFIX(A:2) | ANAME |
PREFIX('D.') | なし | D.XYNAME |
PREFIX('D.' : 2) | PREFIX('' : 2) | D.NAME |
PREFIX('D.A') | PREFIX(A) | D.AXYNAME |
PREFIX('D.A' : 2) | PREFIX(A : 2) | D.ANAME |
PREFIX('':2) | PREFIX('' : 2) | NAME |
例:
以下の例では、ファイル NEWFILE のフィールド名の先頭に接頭部「NEW_」を追加し、ファイル OLDFILE のフィールド名の先頭に「OLD_」を追加しています。
Fnewfile o e disk prefix(NEW_) Foldfile if e disk prefix(OLD_) C READ OLDREC C EVAL NEWIDNO = OLD_IDNO C EVAL NEWABAL = OLD_ABAL C WRITE NEWREC
以下の例では、ファイル FILE1 および外部記述データ構造 DS1 の両方で PREFIX(N:2) を使用しています。 ファイル指定の接頭部により、FILE1 のフィールド XYIDNUM および XYCUSTNAME はプログラム内で NIDNUM および NCUSTNAME として認識される ようになります。また、データ指定の接頭部により、データ構造にはサブフィールド NIDNUM および NCUSTNAME が存在するようになります。 READ 命令時にレコードからのデータは DS1 のサブフィールドに移動され、サブプロシージャー processRec に受け渡されてレコード内のデータが処理されます。
Ffile1 if e disk prefix(N:2) D ds1 e ds extname(file1) prefix(N:2) C READ file1 C CALLP processRec (ds1)
以下の例では、MYFILE 内のフィールドを修飾されたデータ構造 MYDS のサブフィールドに関連付けるために、接頭部 'MYDS.' を使用します。
Fmyfile if e disk prefix('MYDS.') D myds e ds qualified extname(myfile)
次の例では、MYFILE 内のフィールドを修飾されたデータ構造 MYDS2 のサブフィールドに関連付けるために、接頭部 'MYDS.F2':3 を使用します。サブフィールドそのものには、先頭の 3 文字を 'F2' で置き換えることにより、さらに接頭部が付きます。このファイルが使用するフィールドは、MYDS2.F2FLD1 と MYDS2.F2FLD2 になります。 (データ構造 MYDS2 は同じ接頭部を使用して定義される必要がありますが、 これはデータ構造名は含まないために、まったく同じ名前にはなりません。)
A R REC A ACRFLD1 10A A ACRFLD2 5S 0 Fmyfile2 if e disk prefix('MYDS2.F2':3) D myds2 e ds qualified extname(myfile) D prefix('F2':3)
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.