フィールド長を指定する方法は数通りあります。それぞれの指定方法で異なる値を指定して、値が競合する場合は、そのうちの1つの値が優先されます。競合が発生した時点で警告が出されます。どのフィールド長を採用するかは、次の規則に基づいて決定されます。
POSITION
句で指定されたバイト数に関係なく、SMALLINT
、FLOAT
およびDOUBLE
のデータ・サイズは固定長です。
DECIMAL
、INTEGER
、ZONED
、GRAPHIC
、GRAPHIC EXTERNAL
またはRAW
で指定されたフィールド長(または精度)が、POSITION
(start:end)
から計算されたサイズと異なる場合は、指定されたフィールド長(または精度)を採用します。
文字フィールドまたはVARGRAPHIC
フィールドにおいて指定された最大長が、POSITION
(start:end)
から計算されたフィールド長と異なる場合は、指定された最大長を採用します。
たとえば、システム固有のデータ型INTEGER
が4バイトであるときに、次のようなフィールドが指定されたとします。
column1 POSITION(1:6) INTEGER
この場合、警告が出力され、正しいフィールド長である4バイトが採用されます。実際に使用されたフィールド長は、ログ・ファイル内の列表の「Len」という見出しの箇所に記録されます。
Column Name Position Len Term Encl Data Type ----------------------- --------- ----- ---- ---- --------- COLUMN1 1:6 4 INTEGER