5.5.3 固定長データ形式の場合

固定長データ形式の場合,入力データは文字,又はデータベースに格納される形で記述します。

抽象データ型に格納するデータをコンストラクタ関数で生成する場合は,入力パラメタを文字データ,又は関数の引数の型で記述します。

なお,文字列形式の数値データ,及び文字列形式の文字データとは,それぞれ次の表に示すデータ型の列に格納する文字列データのことです。

表5-30 文字列形式の数値データと文字列形式の文字データ

文字列形式の数値データ文字列形式の文字データ
  • INTEGER
  • SMALLINT
  • DECIMAL
  • FLOAT
  • SMALLFLT
  • DATE
  • INTERVAL YEAR TO DAY
  • TIME
  • INTERVAL HOUR TO SECOND
  • TIMESTAMP
  • CHAR
  • VARCHAR
  • MCHAR
  • MVARCHAR
  • NCHAR
  • NVARCHAR
<この項の構成>
(1) 記述形式
(2) 規則
(3) 固定長データ形式固有の入力データ型
(4) 記述例

(1) 記述形式

入力データを文字で記述する場合は,「5.5.1 DAT形式の場合」を参照してください。データベースに格納される形で記述する場合は,「5.5.2 バイナリ形式の場合」を参照してください。

(2) 規則

(凡例)-:該当しません。

表5-32 入力データを文字列形式で記述した場合の格納データ(固定長データ形式)

表の列のデータ型,又はコンストラクタ関数のパラメタのデータ型列名文及びoption文の指定内容入力データファイルの記述データ格納データ
INTEGER,SMALLINT,DECIMAL,FLOAT,及びSMALLFLTtype=char(3)1△△各データ型の1
△△1
△1△
+△1入力データエラー
1△1
type=char(3)option文allspaceオペランドの指定あり△△△各データ型の「0」
option文allspaceオペランドの指定なし△△△入力データエラー
CHAR(7)及びMCHAR(7)type=char(7)又はtype=char(7),mode=textABC△△△△ABC△△△△
"ABC"△△
"ABC△△"
""ABC"""ABC"△△
△△△△△△△△△△△△△△
""△△△△△
△"△A△"△△"△A△"△
type=char(7),mode=binABC△△△△ABC△△△△
"ABC"△△"ABC"△△
"ABC△△""ABC△△"
""ABC""""ABC""
△△△△△△△△△△△△△△
""△△△△△""△△△△△
△"△A△"△△"△A△"△
NCHAR(3)type=char(6)あ▲▲あ▲▲
"あ"▲"あ"▲
"あ▲"あ▲▲
""あ"""あ"▲
▲▲▲▲▲▲
""▲▲""▲▲
VARCHAR(7)及びMVARCHAR(7)type=char(7)又はtype=char(7),enclose_del=yesABC△△△△ABC(3バイト)
"ABC"△△
"ABC△△"ABC△△(5バイト)
""ABC"""ABC"(5バイト)
△△△△△△△△(1バイト)
""△△△△△(0バイト)
△"△A△"△△"△A△"
type=char(7),enclose_del=noABC△△△△ABC(3バイト)
"ABC"△△"ABC"(5バイト)
"ABC△△""ABC△△"(7バイト)
""ABC""""ABC""(7バイト)
△△△△△△△△(1バイト)
""△△△△△""(2バイト)
△"△A△"△△"△A△"△
NVARCHAR(3)type=char(6)あ▲▲あ▲▲(6バイト)
"あ"▲"あ"▲(6バイト)
"あ▲"あ▲(4バイト)
""あ"""あ"(4バイト)
▲▲▲▲▲▲(6バイト)
""▲▲""▲▲(6バイト)
DATEtype=char(12)2003-12-31△△2003-12-31
△△2003-12-31
△2003-12-31△
INTERVAL YEAR TO DAYtype=char(11)00010101​.△△+00010101​.
△△00010101​.
△00010101​.△
TIMEtype=char(10)08:45:00△△08:45:00
△△08:45:00
△08:45:00△
INTERVAL HOUR TO SECONDtype=char(9)010101.△△+010101.
△△010101.
△010101.△
TIMESTAMPtype=char(21)1991-01-01_11:22:33△△1991-01-01_11:22:33
△△1991-01-01_11:22:33
△1991-01-01_11:22:33△
BLOBtype=char(13)c:¥pdload¥file01△△c:¥pdload¥file01のデータ
△△c:¥pdload¥file01エラー
△c:¥pdload¥file01△
BINARY(7)type=char(7)△△△△△△△△△△△△△△
(凡例)
△:半角の空白(0x20)
▲:全角の空白

(3) 固定長データ形式固有の入力データ型

固定長データ形式の入力データファイルは,表の列データ型と同じデータ形式,又は列データ型にデータ変換可能な文字列で作成しますが,DECIMAL型の列に格納する入力データ型として,ADEC(ASCII CODE DECIMAL)型とBDEC(BINARY DECIMAL)型を使用できます。

(a) ADEC型(ASCII CODE DECIMAL)

ADEC型は,文字列形式で数値データを記述します。データ中には小数点を持たないで,列構成情報ファイルで小数点の位置を指定するデータ型です。ADEC型の形式を次に示します。

[図データ]

<規則>
  • 使用できる文字を次に示します。
    +,-,空白(0x20),タブ(0x09),ナル文字(0x00),0~9
    ただし,データ中に1バイト以上の空白,タブ,又はナル文字を含むと,小数点を持たない整数値と解釈します。そのため,typeオペランドで指定した精度と位取りで小数点位置を解釈するデータを作成する場合は,「0」でパディングする必要があります。
  • 符号(+又は-)だけの入力データは,入力データエラーとなります。
  • option文のallspaceオペランド指定ありの場合だけ,空白だけの入力データを許可します。この場合,0が格納されます。allspaceオペランド指定なしの場合は入力データエラーとなります。
  • 入力データ中には小数点は記述しません。列構成情報ファイルのtypeオペランドで精度と位取りを指定します。精度(m)と位取り(n)の関係を次に示します。
    1≦m≦38  0≦n≦38  m≧n
  • 入力データに符号(+又は-)を持つ場合,精度(m)には符号部1バイトを含めたけた数を指定します。
  • typeオペランドで指定した精度と位取りは,格納する列のDECIMAL型にデータ変換可能(けた落ちが発生しない)値を指定します。データ変換不可の場合,制御文エラーとなります。
<データの格納例>
次の場合のデータの格納例を次の表に示します。
  • 格納する表の列定義:DECIMAL(10,4)
  • 入力データ:ADEC型
  • 列構成情報ファイルの指定:type=adec(10,4)

    表5-33 ADEC型で記述したデータをDECIMAL(10,4)に格納した場合の例

    入力データファイルに記述したデータDECIMAL(10,4)に格納するデータ説明
    1△△△△△△△△△+000001.00001バイトでも空白を含むと,typeオペランドに指定した精度と位取りは無視され,小数点がない値と解釈します。
    △△△△△△△△△1+000001.0000
    △△△△△1△△△△+000001.0000
    △△△△△10000+010000.0000
    000001△△△△+000001.0000
    1000000000​+100000.00000~9だけの場合,typeオペランドに指定した精度と位取りで小数点の位置を決定します。
    0000000001​+000000.0001
    0000010000​+000001.0000
    +000010000​+000001.00000~9の値と符号部の場合,小数点の位置はデータの後方から解釈します。
    -000010000​-000001.0000
(凡例)
△:空白(0x20)
(b) BDEC型(BINARY DECIMAL)

BDEC型は,2進数で記述されたバイナリデータを10進数で記述し,10進数のけた数に合わせて,表の列データ型から小数点の位置を決定するデータ型です。BDEC型は先頭1ビットを符号として扱います。形式を次に示します。

[図データ]

<規則>
  • 列構成情報ファイルのtypeオペランドでバイナリデータの長さを指定します。
  • BDEC型のけた数(m)を次に示します。
    32ビットモードの場合:1~4バイト
    64ビットモードの場合:1~8バイト
  • BDEC型に実際に指定できる値を次に示します。
    32ビットモードの場合:-2147483648~2147483647
    64ビットモードの場合:-9223372036854775808~9223372036854775807
  • DECIMAL列に実際に格納できる値を次に示します。
    32ビットモードの場合:精度は10けたまで
    64ビットモードの場合:精度は19けたまで
<データの格納例>
次の場合のデータの格納例を次の表に示します。
  • 入力データ:4バイトの2進数
  • 列構成情報ファイルの指定:type=bdec(4)

    表5-34 BDEC型で記述したデータをDECIMAL列に格納した場合の例

    入力データファイルに記述したデータ格納先の列定義格納するデータ
    0xff 0xff 0xfc 0xf7DECIMAL(10,0)-0000000777​
    DECIMAL(10,2)-00000007​.77
    DECIMAL(10,10)-0.0000000777​
このように,同じ値でも格納先のDECIMAL列の精度と位取りによって,格納するデータが異なります。

(4) 記述例

固定長データ形式のデータ記述例を次の図に示します。

図5-16 固定長データ形式のデータ記述例

[図データ]