入力仕様書を使用した外部記述の変更

入力仕様書を使用して、入力ファイルの外部記述中の一定の情報を一時変更するか、 あるいは外部記述に RPG 機能を追加することができます。 入力仕様書では次のことを行うことができます。

入力仕様書を使用して外部記述ファイル中のフィールドの位置を一時変更することはできません。 外部記述ファイル中のフィールドは、データ記述仕様にリストされた順序でレコードに入れられます。 また、外部記述ファイルの場合には、用紙制御などの装置従属機能は、RPG プログラムでは有効ではありません。

注:
PREFIX キーワードがファイルに指定されている場合でも、 入力仕様書で明示的にフィールド名を変更することができます。 コンパイラーは、ユーザーのプログラムで最初に 使用される 名前を認識 (および必要と) します。 例えば、フィールドを標識と関連付けるために入力仕様書に接頭部付きの名前 を指定し、接頭部付きでない名前を参照するフィールドの名前を変更しようと した場合には、エラーになります。 逆に、最初にフィールドを接頭部付きの名前以外のものに名前変更し、 仕様書に接頭部付きの名前を使用した場合には、エラーになります。
図 154. 外部記述への RPG 機能の一時変更および追加
*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... *
IRcdname+++....In.........................................................*
IMSTRITEM      01  1 
I..............Ext-field+..................Field+++++++++L1M1..PlMnZr......
I              ITEMNUMB  2                 ITEM          L1  3 
 *
IMSTRWHSE      02
I              ITEMNUMB                    ITEM          L1
 *
 1 
外部記述ファイル中のレコードにレコード識別標識を割り当てるためには 、入力仕様書の 7 〜 16 桁目にレコード様式名を指定し、21 〜 22 桁目に有効な レコード識別標識を割り当ててください。 外部記述ファイルでの入力仕様書の代表的な使用法は、レコード識別標識の割り当てです。

この例では、レコード識別標識 01 がレコード MSTRITEM に割り当てられ、 標識 02 がレコード MSTRWHSE に割り当てられています。

 2 
外部記述レコード中のフィールドを名前変更するためには、 フィールド記述行の 21 〜 30 桁目にフィールドの外部名を左寄せで指定してください。 49 〜 62 桁目には、プログラムで使用される名前を指定してください。

この例では、両方のレコードのフィールド ITEMNUMB が このプログラムで ITEM に名前変更されます。

 3 
外部記述レコード中のフィールドに制御レベル標識を割り当てるためには 、49 〜 62 桁目にフィールドの名前を指定し、63 〜 64 桁目に制御レベル標識を 指定してください。

この例では、 レコード MSTRITEM と MSTRWHSE の両方でフィールド ITEM が L1 制御フィールドとなるように 指定されています。

図 155. 外部記述への RPG 機能の追加
*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... *
IFilename++SqNORiPos1+NCCPos2+NCCPos3+NCC..................................
IMSTREC        01  1 
I..............Ext-field+..................Field+++++++++L1M1..PlMnZr......
I                                          CUSTNO          M1  1 
 *
IWKREC       02
I                                          CUSTNO          M1
I                                          BALDUE                  98  2 
 *
 1 
外部記述レコード中のフィールドに突き合わせ値を割り当てるためには、 レコード識別行の 7 〜 16 桁目にレコード様式名を指定してください。 フィールド記述行では、49 〜 62 桁目にフィールドの名前を指定し、65 〜 66 桁 目に突き合わせレベル値を割り当ててください。

この 例では、MSTREC と WKREC の両方のレコードの CUSTNO フィールドに 突き合わせレベル値 M1 が割り当てられています。

 2 
外部記述レコード中のフィールドにフィールド標識を割り当てるためには 、レコード識別行の 7 〜 16 桁目にレコード様式名を指定してください。 フィールド記述行では、49 〜 62 桁目にフィールドの名前を指定し、69 〜 74 桁 目に標識を指定してください。

この例では、レコード WKREC 中のフィールド BALDUE をプログラムで 読み取った時点で、ゼロか否かテストします。 フィールドの値がゼロの場合には、標識 98 がオンに設定されます。