入力仕様書を使用した外部記述の変更
グローバルな非修飾ファイルの場合、入力仕様書を使用して、
入力ファイルの外部記述内の特定の情報を一時変更するか、
あるいは外部記述に RPG 機能を追加することができます。入力仕様書では次のことを行うことができます。
入力仕様書を使用して外部記述ファイル中のフィールドの位置を一時変更することはできません。
外部記述ファイル中のフィールドは、データ記述仕様にリストされた順序でレコードに入れられます。
また、外部記述ファイルの場合には、用紙制御などの装置従属機能は、RPG プログラムでは有効ではありません。
注: PREFIX キーワードがファイルに指定されている場合でも、
入力仕様書で明示的にフィールド名を変更することができます。
コンパイラーは、ユーザーのプログラムで最初に
使用される 名前を認識 (および必要と) します。
例えば、フィールドを標識と関連付けるために入力仕様書に接頭部付きの名前
を指定し、接頭部付きでない名前を参照するフィールドの名前を変更しようと
した場合には、エラーになります。
逆に、最初にフィールドを接頭部付きの名前以外のものに名前変更し、
仕様書に接頭部付きの名前を使用した場合には、エラーになります。
図 1. 外部記述への 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 制御フィールドとなるように 指定されています。
図 2. 外部記述への 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 がオンに設定されます。