既存のフィールド記述およびフィールド参照ファイルを使用したデータベース・ファイルの記述
既存のファイルにあるフィールド記述を使用する場合、そのフィールド記述を新しいファイル記述にコピーできます。 また、任意のファイル・グループに必要なフィールド記述を含むフィールド参照ファイルを作成することもできます。
DDS キーワード REF および REFFLD を使用すると、 既存のファイル内のフィールド記述を参照できます。このようにすると、DDS ステートメントをコーディングする手間を省くことができます。また、そのフィールドを使用するすべてのファイルにおいて、 フィールド属性の一貫性が保証されることになります。
さらに、単にフィールド記述を使用する目的だけで 物理ファイルを作成することもできます。つまり、ファイルを作成してもデータを入れずに、別のファイルで フィールド記述を参照するためだけにそれを使用します。このようなタイプのファイルのことを、フィールド参照ファイルといいます。フィールド参照ファイルは、データを含まず、 フィールド記述だけを含む物理ファイルです。
フィールド参照ファイルを使用すると、レコード様式の記述を簡素化すること ができ、一貫したフィールド記述が保証されることになります。フィールド参照ファイルを作成するには、 DDS および物理ファイルの作成 (CRTPF) コマンドを使用します。
フィールド参照ファイルを作成した後は、各ファイルの個々のフィールドの 特性を記述しなくても、このフィールド参照ファイルから物理ファイルの レコード様式を作成することができます。物理ファイルを作成する際に必要なことは、 (REF キーワードおよび REFFLD キーワードを用いて) フィールド参照ファイルを参照し、 変更内容を指定することだけです。新しいファイルで指定するフィールド記述とキーワードへの変更内容により、 フィールド参照ファイル内の記述が一時変更されます。
以下の例では、DSTREFP という名前のフィールド参照ファイルが配布アプリケーション用に 作成されます。以下の例は、DSTREFP の記述に必要とされた DDS を示します。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
A* FIELD REFERENCE FILE (DSTREFP)
A R DSTREF TEXT('Field reference file')
A
A* FIELDS DEFINED BY CUSTOMER MASTER RECORD (CUSMST)
A CUST 5 0 TEXT('Customer numbers')
A COLHDG('CUSTOMER' 'NUMBER')
A NAME 20 TEXT('Customer name')
A ADDR 20 TEXT('Customer address')
A
A CITY 20 TEXT('Customer city')
A
A STATE 2 TEXT('State abbreviation')
A CHECK(MF)
A CRECHK 1 TEXT('Credit check')
A VALUES('Y' 'N')
A SEARCH 6 0 TEXT('Customer name search')
A COLHDG('SEARCH CODE')
A ZIP 5 0 TEXT('Zip code')
A CHECK(MF)
A CUTYPE 15 COLHDG('CUSTOMER' 'TYPE')
A RANGE(1 5)
A
A* FIELDS DEFINED BY ITEM MASTER RECORD (ITMAST)
A ITEM 5 TEXT('Item number')
A COLHDG('ITEM' 'NUMBER')
A CHECK(M10)
A DESCRP 18 TEXT('Item description')
A PRICE 5 2 TEXT('Price per unit')
A EDTCDE(J)
A CMP(GT 0)
A COLHDG('PRICE')
A ONHAND 5 0 TEXT('On hand quantity')
A EDTCDE(Z)
A CMP(GE 0)
A COLHDG('ON HAND')
A WHSLOC 3 TEXT('Warehouse location')
A CHECK(MF)
A COLHDG('BIN NO')
A ALLOC R REFFLD(ONHAND *SRC)
A TEXT('Allocated quantity')
A CMP(GE 0)
A COLHDG('ALLOCATED')
A
A* FIELDS DEFINED BY ORDER HEADER RECORD (ORDHDR)
A ORDER 5 0 TEXT('Order number')
A COLHDG('ORDER' 'NUMBER')
A ORDATE 6 0 TEXT('Order date')
A EDTCDE(Y)
A COLHDG('DATE' 'ORDERED')
A CUSORD 15 TEXT('Cust purchase ord no.')
A COLHDG('P.O.' 'NUMBER')
A SHPVIA 15 TEXT('Shipping instructions')
A ORDSTS 1 TEXT('Order status code')
A COLHDG('ORDER' 'STATUS')
A OPRNME R REFFLD(NAME *SRC)
A TEXT('Operator name')
A COLHDG('OPERATOR NAME')
A ORDAMT 9 2 TEXT('Total order value')
A COLHDG('ORDER' 'AMOUNT')
A INVNBR 5 0 TEXT('Invoice number')
A COLHDG('INVOICE' 'NUMBER')
A PRTDAT 6 0 EDTCDE(Y)
A COLHDG('PRINTED' 'DATE')
A SEQNBR 5 0 TEXT('Sequence number')
A COLHDG('SEQ' 'NUMBER')
A OPNSTS 1 TEXT('Open status')
A COLHDG('OPEN' 'STATUS')
A LINES 3 0 TEXT('Lines on invoice')
A COLHDG('TOTAL' 'LINES')
A ACTMTH 2 0 TEXT('Accounting month')
A COLHDG('ACCT' 'MONTH')
A ACTYR 2 0 TEXT('Accounting year')
A COLHDG('ACCT' 'YEAR')
A
A* FIELDS DEFINED BY ORDER DETAIL/LINE ITEM RECORD (ORDDTL)
A LINE 3 0 TEXT('Line no. this item')
A COLHDG('LINE' 'NO')
A QTYORD 3 0 TEXT('Quantity ordered')
A COLHDG('QTY' 'ORDERED'
A CMP(GE 0)
A EXTENS 6 2 TEXT('Ext of QTYORD x PRICE')
A EDTCDE(J)
A COLHDG('EXTENSION')
A
A* FIELDS DEFINED BY ACCOUNTS RECEIVABLE
A ARBAL 8 2 TEXT('A/R balance due')
A EDTCDE(J)
A
A* WORK AREAS AND OTHER FIELDS THAT OCCUR IN MULTIPLE PROGRAMS
A STATUS 12 TEXT('status description')
A A
CRTPF FILE(DSTPRODLB/DSTREFP)
SRCFILE(QGPL/FRSOURCE) MBR(*NONE)
TEXT('Distribution field reference file')
パラメーター MBR (*NONE) は、メンバーをファイルに追加しないように システムに指示するためのものです (これは、フィールド参照ファイルには データがなく、メンバーを必要としないからです)。
DSTREFP を参照して物理ファイル ORDHDRP を記述するには、 以下の例のような DDS を使用します。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
A* ORDER HEADER FILE (ORDHDRP) - PHYSICAL FILE RECORD DEFINITION
A REF(DSTREFP)
A R ORDHDR TEXT('Order header record')
A CUST R
A ORDER R
A ORDATE R
A CUSORD R
A SHPVIA R
A ORDSTS R
A OPRNME R
A ORDAMT R
A CUTYPE R
A INVNBR R
A PRTDAT R
A SEQNBR R
A OPNSTS R
A LINES R
A ACTMTH R
A ACTYR R
A STATE R
A
フィールド記述の基礎とするファイルを指示するために、 DSTREFP (フィールド参照ファイル名) を付けて REF キーワード (45 列から 80 列) を指定しています。各フィールドの 29 列の R は、フィールド記述を参照ファイルから得ることを示します。
CRTPF FILE(DSTPRODLB/ORDHDRP)
TEXT('Order Header physical file')