順次ファイルにエクスポートしたデータを記述するコピーブックを定義する方法

シナリオ: Db2® 表にデータがあり、FM/Db2 エクスポート・ユーティリティーを使用して、 データを順次ファイルにコピーしていました。エクスポートしたデータを記述するコピーブックを定義する必要があります。

コピーブックを、COBOL、HLASM、または PL/I のいずれかでコーディングする必要があります。Db2® データ・タイプごとのエクスポート・データ・セットに必要なスペースの量は、次の例で要約しています。
  • 以下の定義を使用して作成した表からデータをエクスポートする必要があるものとします。
     CREATE TABLE SAMPLE.EXPORT_EX
        (COL1   INTEGER         NOT NULL
        ,COL2   SMALLINT        NOT NULL
        ,COL3   FLOAT(21)       NOT NULL
        ,COL4   FLOAT(53)       NOT NULL
        ,COL5   DECIMAL(1,0)    NOT NULL
        ,COL6   DECIMAL(15,7)   NOT NULL
        ,COL7   CHAR(10)        NOT NULL
        ,COL8   VARCHAR(10)     NOT NULL
        ,COL9   DATE            NOT NULL
        ,COL10  TIME            NOT NULL
        ,COL11  TIMESTAMP       NOT NULL
        ,COL12  ROWID  GENERATED ALWAYS NOT NULL
        )
    エクスポートしたデータを記述する COBOL コピーブックは次のとおりです。
     01  EXPORT-EXAMPLE.
    * INTEGER DATA TYPE
         10 COL1                 PIC S9(6) USAGE COMP.
    * SMALLINT DATA TYPE
         10 COL2                 PIC S9(4) USAGE COMP.
    * FLOATING POINT (4 BYTES) DATA TYPE
         10 COL3                 USAGE COMP-1.
    * FLOATING POINT (8 BYTES) DATA TYPE
         10 COL4                 USAGE COMP-2.
    * PACKED DECIMAL DATA TYPE
         10 COL5                 PIC S9(1)V USAGE COMP-3.
         10 FILLER               PIC X(15).
    * PACKED DECIMAL DATA TYPE
         10 COL6                 PIC S9(8)V9(7) USAGE COMP-3.
         10 FILLER               PIC X(8).
    * CHARACTER DATA TYPE
         10 COL7                 PIC X(10).
    * VARCHAR DATA TYPE
         10 COL8.
            49 COL8-LEN          PIC S9(4) USAGE COMP.
            49 COL8-TEXT         PIC X(10).
    * DATE DATA TYPE
         10 COL9                 PIC X(10).
    * TIME DATA TYPE
         10 COL10                PIC X(8).
    * TIMESTAMP DATA TYPE
         10 COL11                PIC X(26).
    * ROWID DATA TYPE
         10 COL12.
            49 COL12-LEN         PIC S9(4) USAGE COMP.
            49 COL12-TEXT        PIC X(40).
    HLASM では、コピーブックは次のようになります。
    EXAMPLE  DSECT
    * Integer data type
    COL1     DS    F
    * Smallint data type
    COL2     DS    H
    * Floating point (4 bytes) data type
    COL3     DS    E
    * Floating point (8 bytes) data type
    COL4     DS    D
    * Packed decimal data type (1 byte)
    COL5     DS    PL1
    * Packed decimal data type (8 bytes)
    COL6     DS    PL8
    * Character data type
    COL7     DS    CL10
    * VARCHAR data type
    COL8_LEN DS    H
    COL8_TXT DS    CL10
    * DATE data type
    COL9     DS    CL10
    * TIME data type
    COL10    DS    CL8
    * TIMESTAMP data type
    COL11    DS    CL26
    * ROWID data type
    COL12_LEN DS   H
    COL12_TXT DS   CL40
             END
    PL/I では、コピーブックは次のようになります。
     DCL 1  EXPORT_EXAMPLE UNALIGNED,
    /* INTEGER DATA TYPE                                                 */
         2 COL1                  BIN(31,0),
    /* SMALLINT DATA TYPE                                                */
         2 COL2                  BIN(15,0),
    /* FLOATING POINT (4 BYTES) DATA TYPE                                */
         2 COL3                  FLOAT,
    /* FLOATING POINT (8 BYTES) DATA TYPE                                */
         2 COL4                  FLOAT(8),
    /* PACKED DECIMAL DATA TYPE                                          */
         2 COL5                  FIXED DEC(1,0),
         2 COL5_PAD              CHAR(15),
    /* PACKED DECIMAL DATA TYPE                                          */
         2 COL6                  FIXED DEC(15,7),
         2 COL6_PAD              CHAR(8),
    /* CHARACTER DATA TYPE                                               */
         2 COL7                  CHAR(10),
    /* VARCHAR DATA TYPE                                                 */
         2 COL8,
            3 COL8_LEN           BIN(15,0),
            3 COL8_TEXT          CHAR(10),
    /* DATE DATA TYPE                                                    */
         2 COL9                  CHAR(10),
    /* TIME DATA TYPE                                                    */
         2 COL10                 CHAR(8),
    /* TIMESTAMP DATA TYPE                                               */
         2 COL11                 CHAR(26),
    /* ROWID DATA TYPE                                                   */
         2 COL12,
            3 COL12_LEN          BIN(15,0),
            3 COL12_TEXT         CHAR(40);
    以下の点に注意してください。
    Db2® データ・タイプ
    エクスポートされたデータ・セットではスペース。
    INTEGER
    4 バイト。
    SMALLINT
    2 バイト。
    REAL (4 バイト)
    4 バイト。
    FLOAT (8 バイト)
    8 バイト。
    パック 10 進数
    合計で 16 バイト。データは左寄せされます。未使用バイトには、2 進ゼロが入ります。DECIMAL(n,m) フィールドは、16 バイトのフィールド内の TRUNC(n/2) + 1 バイト分を占めます。
    CHAR(n)
    n バイト。
    VARCHAR(n)
    n+2 バイト。データの前に、VARCHAR フィールド内の文字数が入った 2 バイトの 2 進数フィールドが置かれます。
    DATE
    10 バイト。注 1 を参照してください。
    TIME
    8 バイト。注 1 を参照してください。
    TIMESTAMP
    26 バイト。
    ROWID
    42 バイト。VARCHAR(40) 列に関して ROWID 列を定義します。
    注:
    1. 日付または時刻の出口が使用中の場合、DATE フィールドおよび TIME フィールドに必要な長さは異なる場合があります。
  • Db2® 表にヌルを許可する列があり、以下の定義を使用して作成されている場合は、
    CREATE TABLE SAMPLE.EXPORT_EX_NULL
       (COL1   INTEGER
       ,COL2   SMALLINT
       ,COL3   FLOAT(21)
       ,COL4   FLOAT(53)
       ,COL5   DECIMAL(1,0)
       ,COL6   DECIMAL(15,7)
       ,COL7   CHAR(10)
       ,COL8   VARCHAR(10)
       ,COL9   DATE
       ,COL10  TIME
       ,COL11  TIMESTAMP
       ,COL12  ROWID  GENERATED ALWAYS NOT NULL
       )
    エクスポートしたデータを記述する COBOL コピーブックは次のとおりです。
     01  EXPORT-EXAMPL2.
    * INTEGER DATA TYPE WITH NULL INDICATOR
         10 COL1-NULL            PIC S9(4) USAGE COMP.
         10 COL1                 PIC S9(6) USAGE COMP.
    * SMALLINT DATA TYPE WITH NULL INDICATOR
         10 COL2-NULL            PIC S9(4) USAGE COMP.
         10 COL2                 PIC S9(4) USAGE COMP.
    * FLOATING POINT (4 BYTES) DATA TYPE WITH NULL INDICATOR
         10 COL3-NULL            PIC S9(4) USAGE COMP.
         10 COL3                 USAGE COMP-1.
    * FLOATING POINT (8 BYTES) DATA TYPE WITH NULL INDICATOR
         10 COL4-NULL            PIC S9(4) USAGE COMP.
         10 COL4                 USAGE COMP-2.
    * PACKED DECIMAL DATA TYPE WITH NULL INDICATOR
         10 COL5-NULL            PIC S9(4) USAGE COMP.
         10 COL5                 PIC S9(1)V USAGE COMP-3.
         10 FILLER               PIC X(15).
    * PACKED DECIMAL DATA TYPE WITH NULL INDICATOR
         10 COL6-NULL            PIC S9(4) USAGE COMP.
         10 COL6                 PIC S9(8)V9(7) USAGE COMP-3.
         10 FILLER               PIC X(8).
    * CHARACTER DATA TYPE WITH NULL INDICATOR
         10 COL7-NULL            PIC S9(4) USAGE COMP.
         10 COL7                 PIC X(10).
    * VARCHAR DATA TYPE WITH NULL INDICATOR
         10 COL8-NULL            PIC S9(4) USAGE COMP.
         10 COL8.
            49 COL8-LEN          PIC S9(4) USAGE COMP.
            49 COL8-TEXT         PIC X(10).
    * DATE DATA TYPE WITH NULL INDICATOR
         10 COL9-NULL            PIC S9(4) USAGE COMP.
         10 COL9                 PIC X(10).
    * TIME DATA TYPE WITH NULL INDICATOR
         10 COL10-NULL           PIC S9(4) USAGE COMP.
         10 COL10                PIC X(8).
    * TIMESTAMP DATA TYPE WITH NULL INDICATOR
         10 COL11-NULL           PIC S9(4) USAGE COMP.
         10 COL11                PIC X(26).
    * ROWID DATA TYPE
         10 COL12.
            49 COL12-LEN         PIC S9(4) USAGE COMP.
            49 COL12-TEXT        PIC X(40).
    HLASM では、コピーブックは次のようになります。
    EXAMPLE2  DSECT
    * Integer data type with null indicator
    COL1_NI  DS    H
    COL1     DS    F
    * Smallint data type with null indicator
    COL2_NI  DS    H
    COL2     DS    H
    * Floating point (4 bytes) data type with null indicator
    COL3_NI  DS    H
    COL3     DS    E
    * Floating point (8 bytes) data type with null indicator
    COL4_NI  DS    H
    COL4     DS    D
    * Packed decimal data type (1 byte) with null indicator
    COL5_NI  DS    H
    COL5     DS    PL1
    * Packed decimal data type (8 bytes) with null indicator
    COL6_NI  DS    H
    COL6     DS    PL8
    * Character data type with null indicator
    COL7_NI  DS    H
    COL7     DS    CL10
    * VARCHAR data type with null indicator
    COL8_NI  DS    H
    COL8_LEN DS    H
    COL8_TXT DS    CL10
    * DATE data type with null indicator
    COL9_NI  DS    H
    COL9     DS    CL10
    * TIME data type with null indicator
    COL10_NI DS    H
    COL10    DS    CL8
    * TIMESTAMP data type with null indicator
    COL11_NI DS    H
    COL11    DS    CL26
    * ROWID data type
    COL12_LEN DS   H
    COL12_TXT DS   CL40
             END
    PL/I では、コピーブックは次のようになります。
     DCL 1  EXPORT_EXAMPLE UNALIGNED,
    /* INTEGER DATA TYPE WITH NULL INDICATOR                             */
         2 COL1_NULL             BIN(15,0),
         2 COL1                  BIN(31,0),
    /* SMALLINT DATA TYPE WITH NULL INDICATOR                            */
         2 COL2_NULL             BIN(15,0),
         2 COL2                  BIN(15,0),
    /* FLOATING POINT (4 BYTES) DATA TYPE WITH NULL INDICATOR            */
         2 COL3_NULL             BIN(15,0),
         2 COL3                  FLOAT,
    /* FLOATING POINT (8 BYTES) DATA TYPE WITH NULL INDICATOR            */
         2 COL4_NULL             BIN(15,0),
         2 COL4                  FLOAT(8),
    /* PACKED DECIMAL DATA TYPE WITH NULL INDICATOR                      */
         2 COL5_NULL             BIN(15,0),
         2 COL5                  FIXED DEC(1,0),
         2 COL5_PAD              CHAR(15),
    /* PACKED DECIMAL DATA TYPE WITH NULL INDICATOR                      */
         2 COL6_NULL             BIN(15,0),
         2 COL6                  FIXED DEC(15,7),
         2 COL6_PAD              CHAR(8),
    /* CHARACTER DATA TYPE WITH NULL INDICATOR                           */
         2 COL7_NULL             BIN(15,0),
         2 COL7                  CHAR(10),
    /* VARCHAR DATA TYPE WITH NULL INDICATOR                             */
         2 COL8_NULL             BIN(15,0),
         2 COL8,
            3 COL8_LEN           BIN(15,0),
            3 COL8_TEXT          CHAR(10),
    /* DATE DATA TYPE WITH NULL INDICATOR                                */
         2 COL9_NULL             BIN(15,0),
         2 COL9                  CHAR(10),
    /* TIME DATA TYPE WITH NULL INDICATOR                                */
         2 COL10_NULL            BIN(15,0),
         2 COL10                 CHAR(8),
    /* TIMESTAMP DATA TYPE WITH NULL INDICATOR                           */
         2 COL11_NULL            BIN(15,0),
         2 COL11                 CHAR(26),
    /* ROWID DATA TYPE                                                   */
         2 COL12,
            3 COL12_LEN          BIN(15,0),
            3 COL12_TEXT         CHAR(40);
    最初と 2 番目の定義セットの違いは、Db2® ヌル値を許可している列の列定義の 直前に 2 バイトの 2 進数フィールドが追加されている点だけです。

関連するタスク

関連する参照先