出力仕様書の使用
外部記述ファイルの場合には、出力仕様書は任意指定です。 また、サブプロシージャー内のローカル・ファイルまたは修飾ファイルでは 使用できません。 RPG は、外部記述ファイルの出力仕様書を 必要とせずに外部レコード様式記述 を使用して出力レコードを記述する、WRITE や UPDATE などのファイル命令コー ドをサポートします。
出力仕様書を使用して、データを書き出す時点を制御するか、あるいは書き出す 選択フィールドを指定することができます。 外部記述ファイルのフィールド記述行の有効な項目は、出力標識 (21 ~ 29 桁 目)、フィールド名 (30 ~ 43 桁目)、および後で消去 (45 桁目) です。 外部記述ファイルに書き出されるフィールドの編集語および編集コードは、 ファイルの DDS で指定します。 外部記述ファイルの場合には、ページ・オーバーフロー・ルーチン (18 桁目) またはスペース/スキップ (40 ~ 51 桁目) などの装置依存の従属機能は RPG プログラムでは有効ではありません。 オーバーフロー標識は 外部記述ファイルには正しくありません。 DDS の中で編集を指定する方法の詳細については、Web サイト http://www.ibm.com/systems/i/infocenter/ で IBM® i Information Center の中の『データベースおよびファイル・システム』カテゴリーの『DB2® for i』の節を参照してください。
外部記述ファイルに出力仕様書を使用する場合には、7 ~ 16 桁目にファイル名 の代わりにレコード様式名を指定します。
外部記述ファイル中のすべてのフィールドが出力レコードに入れられる場合に は、フィールド記述行の 30 ~ 43 桁目に *ALL を指定してください。 *ALL を指定した場合には、そのレコードに他のフィールド記述行を指定するこ とはできません。
出力レコードに一定のフィールドだけを入れたい場合には、30 ~ 43 桁目に フィールド名を入力してください。 これらの桁に指定するフィールド名は、入力仕様書でフィールドの名前が変更され ない限り外部レコード記述で定義されたフィールド名でなければなりません。 図 1を参照してください。
- 更新レコードの出力では、出力フィールド仕様に指定された フィールド、および出力標識によって指定された条件に一致するフィールドだけが、 再度書き出される出力レコードに入れられます。 出力仕様書に指定されていないフィールドは、読み取られた値を使用して再書き出しされます。 この手法は、すべてのフィールドを更新する UPDATE 命令コードとは対照的に、有効な制御の方法を提供します。
- 新しいレコードの作成では、出力フィールド仕様書に指定 されたフィールドはレコードに入れられます。 出力フィールド仕様書に指定されていないフィールド、または出力標識で指定さ れた条件を満たしていないフィールドは、デフォルト値として書き出されます。 これは外部記述に指定されたデータ形式によって異なります (例えば、文字 フィールドの場合はブランクで、数字フィールドの場合はゼロです)。
*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... *
OFilename++DF..N01N02N03Excnam++++B++A++Sb+Sa+............................*
OITMREC D 20
O..............N01N02N03Field+++++++++YB.End++PConstant/editword/DTformat++
O *ALL 1
*
OSLSREC D 30
O SLSNAM 2
O COMRAT
O 15 BONUS
*
- 1
- 更新ファイルの場合、レコードのすべてのフィールドは、
レコードのすべてのフィールドに対する、プログラムの現在の値を使用して
外部記述レコード ITMREC に書き出されます。
新しいレコードの作成の場合、レコードのすべてのフィールドは、 プログラム中のレコードのそのフィールドに対する現在の値を使用して 外部記述レコード ITMREC に書き出されます。
- 2
- レコードを更新するために、標識 30 がオンの時に、フィールド
SLSNAM および COMRAT が外部記述レコード SLSREC に書き出されます。 フィールド BONUS は標識 30 および 15 がオンの場合に、SLSREC レコードに
書き出されます。 レコード中のその他のフィールドはすべて、読み取られた値を用いて
書き出されます。
新しいレコードを作成するために、標識 30 がオンの時に、フィールド SLSNAM および COMRAT が外部記述レコード SLSREC に書き出されます。 フィールド BONUS は標識 30 および 15 がオンの場合に、 書き出されます。 レコード中のその他のフィールドはすべて、デフォルト値として書き出されます。 これはデータ・タイプによって異なります (例えば、文字 フィールドの場合はブランクで、数字フィールドの場合はゼロです)。