マイグレーション・ツール

本章では、マイグレーション・ツールを使用してマイグレーションを行う方法について説明します。

1. 概要

以下は、OpenFrameのマイグレーション・ツールの一覧です。

ツール 説明

cobgensch

メインフレーム・データセットをOpenFrameデータセットにマイグレーションする際に必要なスキーマ・ファイルを作成するツールです。COBOLコピーブックのソース・ファイルを参照してスキーマ・ファイルを作成します。

cpmmgr

CPMデータを読み込んで、マッピング情報を表示または編集することができ、簡単な文やファイルの変換テストも行えます。

dsmigin

EBCDICコードのメインフレーム・データセットをASCIIコードのOpenFrameデータセットにマイグレーションします。

dsmigout

ASCIIコードのOpenFrarmeデータセットをEBCDICコードのメインフレーム・データセットに変換してUNIXファイルにエクスポートします。

pligensch

メインフレーム・データセットをOpenFrameデータセットにマイグレーションする際に必要なスキーマ・ファイルを作成するツールです。PL/Iソース・ファイルを参照してスキーマ・ファイルを作成します。

sqlgensch

メインフレーム・データセットをOpenFrameデータセットにマイグレーションする際に必要なスキーマ・ファイルを作成するツールです。SQL表作成スクリプトを参照してスキーマ・ファイルを作成します。

2. cobgensch

cobgenschは、メインフレーム・データセットをOpenFrameデータセットにマイグレーションする際に必要なデータセット・マイグレーション・スキーマ・ファイルを作成するツールです。データセット・マイグレーション・スキーマ・ファイルを作成するツールは、cobgensch以外にpligenschとsqlgenschがあります。cobgenschはCOBOLコピーブック・ソース・ファイルを参照してスキーマ・ファイルを作成し、pligenschはPL/Iソース・ファイルを、またsqlgenschはSQL表作成スクリプトを参照してスキーマ・ファイルを作成します。

データセットをマイグレーションするとき、元のデータ・ファイルであるUNIXソース・ファイルの1つのレコードに様々な文字セットが混用されている場合(EBCDIC、ASCIIコードが混用されていたり、2バイト文字、パック10進数、ゾーン10進数などが使用されている場合など)は、レコード単位の一括コード変換はできません。そのため、レコードの各フィールドに対するコード変換のルールをスキーマ・ファイルに定義する必要があります。以降、dsmiginツールを実行するとき、各データセットに該当するスキーマ・ファイルを指定し、データセットのマイグレーションを行います。

cobgenschツールはCOBOLソース・ファイル、またはCOBOLコピーブック・ファイルでマイグレーション・スキーマ・ファイルを作成します。作成されたスキーマ・ファイルを保存するディレクトリ・パスは、OpenFrame環境設定のdsサブジェクトのDATASET_DIRECTORYセクションのSCHEMA_DIRキーのVAULE項目に指定します。

OpenFrame環境設定の詳細については、OpenFrame Base『環境設定ガイド』を参照してください。

使用方法

以下は、cobgenschツールの実行方法です。

Usage: cobgensch input_file [options]
  • 入力項目

    項目 説明

    input_file

    COBOLソース・ファイル、またはCOBOLコピーブック・ファイルを指定します。

  • [options]

    項目 説明

    [-r rec_len]

    スキーマ・ファイルを使用するデータセットが固定長レコードで、レコード長を知っている場合にレコード長を指定すると、スキーマ・ファイルの作成時にレコード長の整合性をチェックします。

    [-o output]

    作成するスキーマ・ファイルの名前を指定します。

    このオプションを指定しない場合、input_file名をデフォルトで使用します。

    このオプションを指定した場合、ボリューム・シリアルの設定有無によって、「<volser>_<output>.conv」または「<output>.conv」という名前でスキーマ・ファイルが作成されます。

    [-v volser]

    作成するスキーマ・ファイル名に使用されるボリューム・シリアルを指定します。

    このオプションを指定しない場合、作成するスキーマ・ファイル名はボリューム・シリアルを含みません。

    このオプションを指定した場合、「<volser>_<output>.conv」という名前でスキーマ・ファイルが作成されます。

    [-f format]

    コピーブック・ファイルの形式を指定します。

    以下の値のいずれかを指定できます。このオプションを指定しない場合、固定形式をデフォルトで使用します。

    • F(固定形式) : 8-72列をコピーブックのソースとして処理します。

    • V(可変形式) : 8-251列をコピーブックのソースとして処理します。

    • R(自由形式) : 1-251列をコピーブックのソースとして処理します。

    [-d]

    スキャナーとパーサーを含むすべてのデバッグ・メッセージを表示します。

    [-cs currency_sign]

    スキーマ・ファイルを作成する際に、COBOLソースまたはCOBOLコピーブックのPICTURE句の通貨記号を指定します。

    PICTURE句で使用した記号と同じ1バイトの記号を指定する必要があります。以下のようなPICTURE記号が指定された場合、ユーザーが指定した記号は無視され、既存のコード変換ルールに従ってスキーマ・ファイルが作成されます。

    • S , (comma) . (dot) 0 / + - C R D B A X 9 Z 1 G N P V

    [-p]

    COPY OF <library-name>で指定したライブラリ・ディレクトリのパスを指定します。指定しない場合は、以下の優先順位でライブラリ・ディレクトリのパスを検索します。

    • OpenFrame環境設定のdstoolサブジェクト、COBGENSCHセクションのCOBCOPYキーのVALUE項目に指定されたパス (詳細については、『OpenFrame 環境設定ガイド』を参照してください)

    • ${COBGENSCH_COBCOPY}環境変数に指定されたパス

    • ${PWD}現在のパス

    [-D]

    動的変換スキーマ・ファイルを作成します。このオプションを指定した場合、dsmiginまたはdsmigoutを利用して動的にマイグレーションを行うために[-y]オプションを指定する必要があります。

    [-cp2]

    COMP-2浮動小数点データをIEEE 754形式に変換します。

    [-V]

    ツールのバージョン情報を表示します。

使用例(1)

以下は、COBOLコピーブック・ファイルの例です。

<COB.TESTDATA1.cpy>

FD  I-FILE
    RECORDING MODE IS F
    RECORD CONTAINS  95 CHARACTERS
    BLOCK CONTAINS 0 RECORDS
    LABEL RECORDS ARE STANDARD
    DATA RECORD ARE I-REC.

01  I-REC.
    05  I-SAGNO                   PIC  X(11).
    05  I-DAMBO                   PIC  X(02).
    05  I-PHNO                    PIC  X(03).
    05  I-BKNO                    PIC  9(03).
    05  I-BKDT                    PIC  X(10).
    05  I-BKDT-I                  PIC  X(01).
    05  I-BSGB                    PIC  X(02).
    05  I-BSHG                    PIC  X(02).
    05  I-CIGB                    PIC  X(02).
    05  I-CIHG                    PIC  X(02).
    05  I-JHGB                    PIC  X(02).
    05  I-TTJC                    PIC S9(13) COMP-3.
    05  I-TTIC                    PIC S9(13).
    05  I-NAME                    PIC  X(20).
    05  I-TEST1                   PIC  Z(10).
    05  I-TEST2                   PIC  +(10).
    05  I-TEST3                   PIC  -(10).
    05  I-TEST4                   PIC  ---------9.
    05  I-TEST5                   PIC  ----------.

以下は、cobgenschを実行してスキーマ・ファイルを作成する例です。

$ cobgensch COB.TESTDATA1.cpy

以下は、上記の実行結果、スキーマ・ファイルが正常に作成された例です。

input filename = COB.TESTDATA1.cpy
schema filename = /home/tmax/openframe/schema/COB.TESTDATA1.conv

以下は、cobgenschを実行して誤ったレコード長を指定して場合、整合性をチェックする例です。

$ cobgensch COB.TESTDATA1.cpy -r 100

以下は、上記の実行結果、レコード長の整合性チェックでエラーが発生した例です。

input filename = COB.TESTDATA1.cpy
input record length = 100
** input record length is different from scheme record length!!!
** (input reclen = 100, scheme reclen = 130)

Failed to generate a schema file. rc - -1
schema filename = /home/tmax/openframe/schema/COB.TESTDATA1.conv

以下は、正しいレコード長を指定してcobgenschを実行する例です。

$ cobgensch COB.TESTDATA1.cpy -r 130

以下は、上記の実行結果、スキーマ・ファイルが正常に作成された例です。レコード長が130バイトで、指定値と一致するため、整合性をチェックする際にエラーが発生しませんでした。

input filename = COB.TESTDATA1.cpy
input record length = 130
scheme filenama = /home/tmax/openframe/schema/COB.TESTDATA1.conv

以下は、上記で作成されたスキーマ・ファイルの例です。

<COB.TESTDATA1.conv>

* Schema Version 7.3
L1, 01, I-REC, NULL, NULL, 0, 1:1,
L2, 05, I-SAGNO, EBC_ASC, NULL, 11, 1:1,
L3, 05, I-DAMBO, EBC_ASC, NULL, 2, 1:1,
L4, 05, I-PHNO, EBC_ASC, NULL, 3, 1:1,
L5, 05, I-BKNO, U_ZONED, NULL, 3, 1:1,
L6, 05, I-BKDT, EBC_ASC, NULL, 10, 1:1,
L7, 05, I-BKDT-I, EBC_ASC, NULL, 1, 1:1,
L8, 05, I-BSGB, EBC_ASC, NULL, 2, 1:1,
L9, 05, I-BSHG, EBC_ASC, NULL, 2, 1:1,
L10, 05, I-CIGB, EBC_ASC, NULL, 2, 1:1,
L11, 05, I-CIHG, EBC_ASC, NULL, 2, 1:1,
L12, 05, I-JHGB, EBC_ASC, NULL, 2, 1:1,
L13, 05, I-TTJC, PACKED, NULL, 7, 1:1,
L14, 05, I-TTIC, ZONED, TRAILING, 13, 1:1,
L15, 05, I-NAME, EBC_ASC, NULL, 20, 1:1,
L16, 05, I-TEST1, U_ZONED, NULL, 10, 1:1,
L17, 05, I-TEST2, EBC_ASC, NULL, 10, 1:1,
L18, 05, I-TEST3, EBC_ASC, NULL, 10, 1:1,
L19, 05, I-TEST4, EBC_ASC, NULL, 10, 1:1,
L20, 05, I-TEST5, EBC_ASC, NULL, 10, 1:1,

* Condition
L0, "\0", ( L1 L2 L3 L4 L5 L6 L7 L8 L9 L10 L11 L12 L13 L14 L15 L16 L17 L18 L19 L20 )
使用例(2)

以下は、通貨記号($)を使用するCOBOLコピーブック・ファイルの例です。

<COB.TESTDATA2.cpy>

FD  I-FILE
    RECORDING MODE IS F
    RECORD CONTAINS  95 CHARACTERS
    BLOCK CONTAINS 0 RECORDS
    LABEL RECORDS ARE STANDARD
    DATA RECORD ARE I-REC.

01  I-REC.
    05  I-TEST1                   PIC  X(11).
    05  I-TEST2                   PIC  9(03).
    05  I-TEST3                   PIC  S9(13) COMP-3.
    05  I-TEST4                   PIC  $$,$$$,$$$.99.

以下は、コピーブックで使用している通貨記号($)を指定してcobgenschを実行する例です。

$ cobgensch -cs $ COB.TESTDATA2.cpy

cobgenschを実行した結果、正常にスキーマ・ファイルが作成されました。

<COB.TESTDATA2.conv>

* Schema Version 7.3
L1, 01, I-REC, NULL, NULL, 0, 1:1,
L2, 05, I-TEST1, EBC_ASC, NULL, 11, 1:1,
L3, 05, I-TEST2, U_ZONED, NULL, 3, 1:1,
L4, 05, I-TEST3, PACKED, NULL, 7, 1:1,
L5, 05, I-TEST4, EBC_ASC, NULL, 13, 1:1,

* Condition
L0, "\0", ( L1 L2 L3 L4 L5 )

以下は、コピーブックで使用されていない記号「@」を指定してcobgenschを実行する例です。

$ cobgensch -cs @ COB.TESTDATA2.cpy

cobgenschを実行した結果、以下のようなエラーが発生しました。

input filename = COB.TESTDATA2.cpy
Invalid PICTURE string => $$,$$$,999.99 at COB.TESTDATA2.cpy(line near 13)

以下は、通貨記号を使用していないCOBOLコピーブック・ファイルの簡単な例です。

<COB.TESTDATA3.cpy>

01  I-REC.
    05  I-TEST1                   PIC  X(11).
    05  I-TEST2                   PIC  9(03).

以下は、通貨記号として符号なしゾーン10進数を意味するPICTURE記号「9」を付与してcobgenschを実行する例です。

$ cobgensch -cs 9 COB.TESTDATA3.cpy

cobgenschを実行した結果、以下のようなスキーマ・ファイルが正常に作成されました。

<COB.TESTDATA3.conv>

* Schema Version 7.3
L1, 01, I-REC, NULL, NULL, 0, 1:1,
L2, 05, I-TEST1, EBC_ASC, NULL, 11, 1:1,
L3, 05, I-TEST2, U_ZONED, NULL, 3, 1:1,

* Condition
L0, "\0", ( L1 L2 L3 )
使用例(3)

以下は、重複するフィールドを含むCOBOLコピーブック・ファイルの例です。

重複フィールドを含むCOBOLコピーブックを変換するには、OpenFrame環境設定のdsサブジェクトのDATASET_DEFAULTセクションのALLOW_FIELD_DUPキーのVAULE項目の値が「YES」に設定されている必要があります。そうでない場合は、変換する際にエラーが出力されます。

重複フィールドの後ろに「_[数字]」形式で番号が付きます。$$COND文で重複フィールドの1つを特定のするためには、以下の例のように順番に番号を付けて指定することができます。

<COB.TESTDATA4.cpy>

01  I-REC.
    05  I-FLD-DUP                 PIC X(02).
    05  I-FLD-DUP                 PIC X(02).
    05  I-TEST1                   PIC X(11).
    05  I-TEST2                   PIC X(11).
    05  I-TEST-DUP                PIC X(11) REDEFINES I-TEST1.
    05  I-TEST-DUP                PIC X(11) REDEFINES I-TEST2.
    05  I-TEST3                   PIC 9(02).

$$COND : I-FLD-DUP_1 : "AB" : I-TEST-DUP_1

以下は、cobgenschを実行してスキーマ・ファイルを作成する例です。

$ cobgensch COB.TESTDATA4.cpy

cobgenschを実行した結果、以下のようなスキーマ・ファイルが正常に作成されました。

<COB.TESTDATA4.conv>

Schema Version 7.3
L1, 01, I-REC, NULL, NULL, 0, 1:1,
L2, 05, I-FLD-DUP_1, EBC_ASC, NULL, 2, 1:1,
L3, 05, I-FLD-DUP_2, EBC_ASC, NULL, 2, 1:1,
L4, 05, I-TEST1, EBC_ASC, NULL, 11, 1:1,
L5, 05, I-TEST2, EBC_ASC, NULL, 11, 1:1,
L6, 05, I-TEST-DUP_1, EBC_ASC, NULL, 11, 1:1,  # REDEFINES I-TEST1
L7, 05, I-TEST-DUP_2, EBC_ASC, NULL, 11, 1:1,  # REDEFINES I-TEST2
L8, 05, I-TEST3, U_ZONED, NULL, 2, 1:1,

* Condition
L2, "AB", ( L1 L2 L3 L5 L6 L8 )
L0, "\0", ( L1 L2 L3 L4 L5 L8 )
使用例(4)

以下は、COPY OF文を使用したCOBOLコピーブック・ファイルの例です。

<${OPEFNRAME_HOME}/COB.TESTDATA5.cpy>

01 REC.
  03 FLD-KEY PIC X(10).
  03 FLD-DAT PIC X(60).
  03 FLD-COPY.
      COPY COPY001 OF CPYDIR.

以下は、COPY OF文で指定されたCOBOLコピーブック・ファイルの例です。

<${OPENFRAME_HOME}/CPYDIR/COPY001>

05 FLD-AAA PIC X(02).
05 FLD-BBB PIC X(02).
05 FLD-CCC PIC X(02).
05 FLD-DDD PIC X(02).
05 FLD-EEE PIC X(02).

以下は、cobgenschを実行してスキーマ・ファイルを作成する例です。

$ cobgensch COB.TESTDATA5.cpy

上記のcobgenschを実行した結果、以下のスキーマ・ファイルが作成されました。

<COB.TESTDATA5.conv>

* Schema Version 7.3
L1, 01, REC, NULL, NULL, 0, 1:1,
L2, 03, FLD-KEY, EBC_ASC, NULL, 10, 1:1,
L3, 03, FLD-DAT, EBC_ASC, NULL, 60, 1:1,
L4, 03, FLD-COPY, NULL, NULL, 0, 1:1,
L5, 05, FLD-AAA, EBC_ASC, NULL, 2, 1:1,
L6, 05, FLD-BBB, EBC_ASC, NULL, 2, 1:1,
L7, 05, FLD-CCC, EBC_ASC, NULL, 2, 1:1,
L8, 05, FLD-DDD, EBC_ASC, NULL, 2, 1:1,
L9, 05, FLD-EEE, EBC_ASC, NULL, 2, 1:1,

* Condition
L0, "\0", ( L1 L2 L3 L4 L5 L6 L7 L8 L9 )
使用例(5)

以下は、CP文を使用したCOBOLコピーブック・ファイルの例です。

<${OPEFNRAME_HOME}/COB.TESTDATA6.cpy>

01 REC.
    03 STRFLD  PIC X(10).
    03 STRFLD2 PIC X(10) CP.

以下は、cobgenschを実行してスキーマ・ファイルを作成する例です。

$ cobgensch COB.TESTDATA6.cpy

上記のcobgenschを実行した結果として、下記のようなスキーマ・ファイルが正常に作成されました。

<COB.TESTDATA6.conv>

* Schema Version 7.3
L1, 01, REC, NULL, NULL, 0, 1:1,
L2, 03, STRFLD, EBC_ASC, NULL, 10, 1:1,
L3, 03, STRFLD2, COPY, NULL, 10, 1:1,

* Condition
L0, "\0", ( L1 L2 L3 )
関連環境設定

OpenFrame環境設定で以下の情報を設定します。

  • dsサブジェクトのDATASET_DIRECTORYセクションのSCHEMA_DIRキーのVALUE項目に作成されたスキーマ・ファイルを保存するディレクトリ・パスを指定します。

    $ ofconfig list -s ds -sec DATASET_DIRECTORY -k SCHEMA_DIR
    
    ===================================================================================
       SUBJECT   |      SECTION      |       KEY         |           VALUE
    ===================================================================================
         ds      | DATASET_DIRECTORY |     SCHEMA_DIR    | /home/tmax/oframe_7_1/schema
    ===================================================================================
  • dsサブジェクトのDATASET_DEFAULTセクションのALLOW_FIELD_DUPキーのVALUE項目にコピーブックの重複するフィールドを許可してスキーマ・ファイルを作成するかどうかを設定します。本設定値はTSAMの動作にも影響を及ぼします。「YES」に指定した場合、スキーマを作成するときに重複フィールドのチェックを省略し、重複フィールドの後ろには「[フィールド名]_[数字]」形式で番号を付けてスキーマ・ファイルを作成します。「NO」に指定した場合、重複フィールドを見つけたときにエラーを発生させます。

    $ ofconfig list -s ds -sec DATASET_DEFAULT -k ALLOW_FIELD_DUP
    
    ===================================================================================
       SUBJECT   |      SECTION      |          KEY            |        VALUE
    ===================================================================================
         ds      |  DATASET_DEFAULT  |     ALLOW_FIELD_DUP     |         NO
    ===================================================================================
  • dstoolサブジェクトのCOBGENSCHセクションのODO_MIN_ZERO_AVAILABLEキーのVALUE項目にODOフィールドの最小値として0を使用するかどうかを設定します。「YES」に指定した場合、ODOフィールドの最小値を0まで指定可能であり、「NO」に指定した場合は1まで指定可能です。デフォルト値は「NO」です。

    $ ofconfig list -s dstool -sec COBGENSCH -k ODO_MIN_ZERO_AVAILABLE
    
    ===================================================================================
       SUBJECT   |      SECTION      |          KEY            |        VALUE
    ===================================================================================
       dstool    |     COBGENSCH     | ODO_MIN_ZERO_AVAILABLE  |        DEFVOL
    ===================================================================================
  • dstoolサブジェクトのCOBGENSCHセクションのCOBCOPYキーのVALUE項目にライブラリ・ディレクトリのパスを指定します。

    $ ofconfig list -s dstool -sec COBGENSCH -k COBCOPY
    
    ===================================================================================
       SUBJECT   |      SECTION      |          KEY            |        VALUE
    ===================================================================================
       dstool    |     COBGENSCH     |         COBCOPY         |    /home/openframe
    ===================================================================================
  1. スキーマ・ファイルの構造については、OpenFrame『マイグレーションガイド』を参照してください。

  2. OpenFrame環境設定の詳細については、OpenFrame Base『環境設定ガイド』を参照してください。

3. cpmmgr

cpmmgrは、CPMデータを読み込んでマッピング情報を表示または編集できるツールです。また、簡単な構文やファイルの変換テストを実行します。

使用方法

以下は、cpmmgrツールの実行方法です。ツールを実行した後、コマンド・プロンプトを介してcpmmgrのコマンドを入力します。

Usage: cpmmgr <file>
  • 入力項目

    項目 説明

    <file>

    cpmmgrで管理するCPMファイルを指定します。

  • [options]

    コマンド 説明

    cc (Change Code Mapping)

    現在CPMデータにマッピングされたコードのいずれかをマッピング・コードに変換します。

    cf (Convert File)

    任意のファイルを現在のCPMデータを使用して変換します。

    ct (Convert Text)

    ユーザーが入力する任意の文字列または16進数値を、現在のCPMデータを使用して変換します。

    pd (Print Double-Byte Code Mapping)

    現在のCPMデータに保存されている2バイト・コードのマッピング情報を表示します。

    ps (Print Single-Byte Code Mapping)

    現在のCPMデータに保存されている1バイト・コードのマッピング情報を表示します。

    pr (Print Single/Double Byte Code Range)

    現在のCPMデータに保存されているコードのマッピングの範囲を表示します。

    pc (Print Code Not Exist in CPM)

    ファイルで2バイト・コード情報の入力を受け、現在のCPMデータに保存されていない2バイト・マッピング情報を表示します。

    pt (Print mapping Table into Text File)

    マッピング情報をテキスト・ファイルに出力します。

    rr (Reset single/double byte Code Range)

    現在のCPMデータに保存されているコード・マッピング情報を初期化します。

    cr (Change single/double byte Code Range)

    現在のCPMデータに保存されているコード・マッピング情報を変更します。

使用例

以下は、ASCEBCKR.cpmファイルを管理する例です。

$ cpmmgr ASCEBCKR.cpm

>> help

 help
 cc     - change code mapping.
 cf     - convert file.
 ct     - convert text.
 pd     - print double byte code mapping.
 ps     - print single byte code mapping.
 pr     - print single/double byte code range.
 pc     - print code which is not inside in *.cpm file.
 pt     - print mapping table into text file.
 rr     - reset single/double byte code range.
 cr     - change single/double byte code range.
 quit

>>

4. dsmigin

dsmiginは、EBCDIC形式のメインフレーム・データセットをASCII形式のOpenFrameデータセットにマイグレーションするときに使用するツールです。以下は、メインフレーム・データセットをUNIX環境のOpenFrameデータセットにマイグレーションするときの一般的なプロセスです。

  1. FTPを使用してメインフレーム・データセットをUNIXファイルとしてダウンロードします。バイナリ・モードでダウンロードします。

  2. データセットをマイグレーションする際にスキーマ・ファイルが必要な場合、そのデータセットを使用するCOBOLまたはPL/Iソース・ファイルを参照してスキーマ・ファイルを作成します。

  3. dsmiginツールを使用して、UNIXにダウンロードされたファイルをOpenFrameデータセットにインポートします。

関連ツールには、dsmigoutがあります。

使用方法

以下は、dsmiginツールの実行方法です。

Usage: dsmigin <src_file> <dest_file | dataset_name> [options]
  • 入力項目

    項目 説明

    <src_file>

    マイグレーションを実行するUNIXソース・ファイル名、またはファイル・パスを指定します。

    <dest_file | dataset_name>

    作成するファイルまたはデータセットの名前を指定します。

  • [options]

    オプション 説明

    [-C]

    EBCDIC文字コードで作成されたファイルをASCII文字コードに変換するだけで、OpenFrameにインポートしない場合に指定します。出力ファイルとしてOpenFrameデータセット名ではなく、一般のテキスト・ファイルを指定する必要があります。

    変換のみ実行する場合は、Tmaxサーバーは使用されません。

    [-I]

    [-C]オプションとは逆に、入力ファイルを変換せずに直接OpenFrameにインポートする場合に指定します。

    [-S]

    入力ファイルとして与えられたデータがソース・ファイルである場合に指定します。このオプションを設定すると、レコード形式(RECFM)はLタイプになります。

    [-m member_name]

    作成するメンバー名(PDSを作成する場合)、または相対世代番号(GDGを作成する場合)を指定します。

    • SDS(Sequential Data Set)を作成する場合は、<dataset_name>のみを指定します。

    • PDS(Partitioned Data Set)を作成する場合は、<dataset_name>と[member_name]の両方を指定します。

    • GDS(Generation Data Set)を作成する場合は、<dataset_name>と正数の世代番号(+1, +2, …​)を[member_name]に指定します。[-R(recatalog)]オプションを使用して、すでに存在するGDSを再登録する場合は、世代番号に負数またはゼロを指定します。

    [-u unit]

    データセットを作成するUNITグループ名を指定します。

    [-v volume]

    データセットを作成するボリューム・シリアルを指定します。

    このオプションを指定しない場合、OpenFrame環境設定のdsサブジェクトのDATASET_DEFAULTセクションのDEFAULT_VOLSERキーのVAULE項目に設定されているデフォルト・ボリューム・シリアルにデータセットが作成されます。ただし、[-F]オプションを指定し、[-v]オプションを指定していない場合は、該当するデータセットがすでにカタログされていれば、カタログからボリューム・シリアルを取得します。

    [-c user_catalog]

    データセットを登録するユーザー・カタログを指定します。

    このオプションを指定しない場合、エイリアスの設定の有無によって、修飾(qualified)エントリ名と一致するユーザー・カタログ、またはマスター・カタログにデータセットを登録します。

    [-e encoding_code]

    EBCDICからASCIIに変換するとき、EBCDICの2バイト文字をどのASCII文字コードに変換するかを指定します。

    encoding_code値による変換処理は以下のとおりです。

    • US : 英語(デフォルト値)

    • KR : 韓国語(EUC-KR)

    • JP : 日本語(Shift-JIS)

    • JAK : 日本語(JEF - 富士通メインフレーム)

    • KEIS : 日本語(日立メインフレーム)

    OpenFrameがデフォルトで提供するエンコーディング・コード以外に、ユーザーが作成したエンコーディング・コードを使用する場合には、以下のように指定します。

    • EBCDICからASCIIに変換するファイルとASCIIからEBCDICに変換するファイルの両方が必要です。

    • EBCDICからASCIIに変換するファイル名は、EBCASC + <エンコーディング名>.cpmに指定します。

    • ASCIIからEBCDICに変換するファイル名は、 ASCEBC + <エンコーディング名>.cpmに指定します。

    • 既存のエンコーディング・コードのSO/SIの値を使用する場合は、以下のように指定します。

      SO/SI値を使用するencoding_code:ユーザーが作成したencoding_code

    [-s schema]

    UNIXソース・ファイルの1つのレコードに複数の文字セットが混用されている場合(EBCDICコードとASCIIコードが混用されているか、2バイト文字、パック10進数、ゾーン10進数が使用されている場合など)は、レコード単位の一括コード変換が不可能です。そのため、cobgenschまたはpligenschツールを利用してスキーマ・ファイルを作成した後、そのスキーマ・ファイルを指定します。

    スキーマ・ファイルを指定しない場合、OpenFrame環境設定のdsサブジェクトのDATASET_DIRECTORYセクションのSCHEMA_DIRキーのVALUE項目に設定されているディレクトリからソース・ファイル名と一致するスキーマ・ファイルを使用します。

    [-t]

    EBCDIC全角文字をASCII半角文字に変換するために、変換するコード・リストが含まれているカスタム・ファイルを指定します。このオプションを指定しない場合、EBCDIC全角文字はASCII全角文字に変換されます。

    ファイルの形式は、以下のとおりです。

    ____,__ => [EBCDIC全角ヘキサコード],[ASCII半角ヘキサコード]
    EBC1,A1
    EBC2,A2
    EBC3,A3
    ...

    [-um usermap]

    ユーザー定義の変換マップを含むファイル名を指定します。

    [-cob cobol_type]

    使用されたCOBOL言語のタイプを指定します。次のいずれかの値を指定します。

    • MF(MicroFocus COBOL)

    • NET(Net COBOL)

    このオプションを指定しない場合、OpenFrame環境設定のofsysサブジェクトのCOMPILERセクションのCOBOL_COMPILERキーのVAULE項目に指定した値を使用します。詳細については、関連環境設定を参照してください。

    OpenFrame環境設定のofsysサブジェクトのCOBOL_COMPILERキーが存在しない場合は、デフォルト値としてMFを使用します。

    [-map]

    BMSマップを変換する際、SOとSIで囲まれた2バイト文字列が長すぎて改行され、SOとSIが同じ行に存在しない場合も考慮して、2バイト文字列部分が認識できるようにします。

    [-S]オプションと一緒に指定しない場合、無視されます。

    [-dpl]

    VSAMデータセットに対してDPLを使用するかどうかを設定します。

    [-o dsorg]

    作成するデータセットの編成を指定します。

    以下の値から1つをdsorgに設定することができます。このオプションを指定しない場合は、PSが指定されます。

    • PS

    • PSU

    • DA

    • DAU

    • IS(現在サポートしていません)

    [-k keylen]

    マイグレーションされるデータセットがISAM型である場合、キー長を指定します。DSORGをISに設定する必要があります。(現在サポートしていません)

    [-p keypos]

    マイグレーションされるデータセットがISAM型である場合、キーの位置を指定します。DSORGをISに設定する必要があります。(現在サポートしていません)

    [-l rec_len]

    データセットのレコード長(LRECL)を指定します。

    固定長レコードの場合は、マイグレーションされるデータセットの実際のレコード長が、指定したレコード長と一致するかどうかをチェックすることができます。可変長レコードの場合は、最大レコード長を指定します。

    レコード長を指定しない場合は、スキーマ・ファイルから取得したレコード長をデフォルト値として使用します。

    [-b blksize]

    データセットのブロック・サイズを指定します。

    [-f recfm]

    データセットのレコード形式を指定します。

    以下のレコード形式が指定できます。

    • F(Fixed: 固定長)

    • FB(Fixed Blocked: ブロック化された固定長)

    • V(Variable: 可変長)

    • VB(Variable Blocked: ブロック化された可変長)

    • L(Line)

    [-d delimiter]

    UNIXソース・ファイルでレコードを区切るために使われるデリミターを指定します。

    改行文字、タブなどの文字をデリミターとして使用する場合は、二重引用符(" ")内にエスケープ文字を使用して「"\n"」、「"\t"」のように表現します。

    [-i]

    マイグレーションの途中で、変換に失敗したレコードが見つかっても無視し、最後までマイグレーションを実行する場合に指定します。変換に失敗したレコードの情報は、標準出力ストリーム(stdout)に出力されます。ツールの終了時に、変換に失敗したレコードの数が出力されます。

    [-w lockwait]

    インポート対象のデータセットにロックが実行されている場合、ロックが解除されるまで待機し、解除されたら処理を実行します。このオプションを指定しない場合、インポート対象データセットにすでにロックが実行されていると、エラー・メッセージを出力して処理を中断します。

    [-n]

    OpenFrameにインポートせず、変換のみ実行する場合は、レコードを区切るためにレコードごとに改行文字をデリミターとして付けます。

    [-y]

    マイグレーションの実行中に、スキーマの条件文をチェックしながら、マイグレーションの対象を選択します。このオプションを指定しない場合、レコードごとに最初に1回マイグレーションの対象を選択した後、マイグレーションを進めます。このオプションを使用する場合は、cobgenschを利用してスキーマを作成するときに、-Dオプションを指定する必要があります。

    [-a]

    各レコードの最初の列にASA制御文字が含まれている場合、これを考慮してタイプ7、8のSOSIを処理するときに指定します。

    [-sosi sosi_type]

    SOSI文字は、レコードの1バイト文字フィールドに2バイト文字が混用された場合、2バイト文字を区別するために使用されます。

    設定可能なSOSIタイプは、以下のとおりです。デフォルト値は、SOSI文字を変換せずにそのまま維持するタイプ1です。

    [SOSIタイプ]

    • 1 = so[EBC]si → so[ASC]si
      SOSIを変換しません。(デフォルト値)

    • 2 = so[EBC]si →_[ASC]_
      SOSIを空白に変換します。

    • 3 = so[EBC]si → [ASC]
      SOSIを削除し、削除されたSOSI領域を変換対象フィールドの右に空白で埋めます。

    • 4 = so[JEF]si → so[ASC]si
      JEF SOSIをASCII SOSIに変換します。

    • 5 = BMSマップを変換
      マッピングされない文字を、「0x00」の代わりに「0x2E」に変換します。BMSマップをマイグレーションする場合に有効です。INITIAL文の値の元のBMSマップが、SOSIなしに2バイト文字が直接表れた場合に、このオプションを指定します。

      [参考] BMSマップをマイグレーションする場合、dsmigin処理後に使用するmscadjustツールは、ファイルの中に「0x00」が存在すると異常動作するため、このオプションを指定して、dsmigin処理した結果ファイルに対して、mscadjustツールが正常に動作できるようにします。

    • 6 = No SOSI conversion
      SOSI値の有無を問わず、1バイト文字と見なして変換します。

    • 7 = so[EBC]si → [ASC] __
      SOSIを削除し、72列のすぐ前の桁に削除されたSOSI領域分の空白を挿入します。COBOLアプリケーションのように、72列からコメント領域であるリソースのマイグレーションに利用されます。

    • 8 = so[EBC]si → __ [ASC]
      SOSIを削除し、7列のすぐ後ろの桁に削除されたSOSI領域分の空白を挿入します。COBOLアプリケーションのように、1~7列がコメント領域であるリソースのマイグレーションに利用されます。

    • 9 = so[EBC]si → ?[ASC]?
      SOSI文字を変換するとき、CPMに登録されているSOSI文字を使って変換します。

    [-ef error_format]

    エラー出力形式を指定します。LINEまたはHEXのいずれかを指定できます。デフォルト値はLINEです。

    [-ep error_partial]

    エラー情報を出力する際に各フィールドの最初の100件のエラーのみを出力し、以降は無視します。

    [-ed error_detection]

    EBCDICからASCIIに変換するとき、Low (0x00)、High (0xFF)、Space (0x40)だけで埋められた符号付き(符号なし)パック10進数とゾーン10進数タイプのフィールドの変換エラーを検出します。

    -zオプションと一緒に使用することはできません。-iオプションと一緒に使用する場合は、-iオプションの動作に従います。

    [-z zero]

    EBCDICからASCIIに変換するとき、Low(0x00)、High(0xFF)、Space(0x40)など、符号付き(符号なし)パック10進数/ゾーン10進数タイプのフィールド形式に適合しない値をZero(0x30)に変換します。

    -edオプションと一緒に使用することはできません。

    [-psmsb]

    EBCDICからASCIIに変換するとき、パック10進数の符号ビットを最後の4ビットから最上位ビット(MSB)に変換します。

    • 符号なしの場合は、最後の4ビットのFを最上位ビット0に変換します。

    • 符号付きの場合は、最後の4ビットのCを最上位ビット0に、最後の4ビットのDを最上位ビット1に変換します。

    [-N]

    マイグレーションの際に、データセットをカタログに登録しない場合に指定します。つまり、指定したデータセットの名前がすでにカタログに登録されている場合であっても、そのカタログ項目を更新しません

    [-R]

    データセットがすでにカタログに登録されている場合、再カタログのためのオプションです。このオプションを指定すると、unit(-u)やvolume(-v)パラメータは無視されます。カタログで対象データセットの登録情報を見つけて、該当するボリュームにデータセットをインポートします。UNIT、ボリューム情報はそのまま維持し、その他のDCB情報は更新します。

    このオプションを指定しない場合、インポート対象データセットがすでにカタログに登録されていると、エラー・メッセージを出力して処理を中断します。

    [-F]

    対象データセットがすでにカタログに登録されている場合、そのデータセットとカタログ項目を削除し、再度データセットのインポートを実行してからカタログに登録します。UNIT、ボリューム、作成日など、データセットの既存の登録情報はすべて更新されます。ただし、[-N]オプションを指定した場合は、カタログ項目を処理しません。

    このオプションを指定しない場合、インポート対象データセットがすでにカタログに登録されていると、エラー・メッセージを出力して処理を中断します。

    [-D]

    EBCDICからASCIIに文字コードを変換したり、パック10進数またはゾーン10進数フィールド値を変換する時に不正データが見つかった場合に、詳細情報やマイグレーションに関する問題の分析に有効なデバッグ情報を画面に表示します。

    1から3までの値が指定できます 。

    • 1 : マイグレーションを行い、重要情報を表示します。

    • 2 : 1を指定した場合のアクションに追加して、コード変換の際に発生するエラー情報を表示します。

    • 3 : 2を指定した場合のアクションに追加して、レコードの変換前後のデータを表示します。

    [-tl track_limit]

    ACTUAL KEYを使用するデータセット内で1トラックに格納できるレコード数を指定します。

    [-ts track_start]

    ACTUAL KEYを使用するデータセット内でトラックの開始番号を指定します。

    [-P]

    進行状況を画面に表示します。

    [-V]

    ツールのバージョン情報を表示します。

BDAMデータセットがACTUAL KEYを使用する場合、0以上のtrack_limitと4以上のkeylenを必ず指定する必要があります。

使用例

以下は、PDSメンバーを作成する例です。

$ dsmigin OFR.DATA.PDSEXAM01.TXT OFR.DATA.PDSEXAM01 -m MEMBER1

以下は、SDSを作成する例です。

$ dsmigin OFR.DATA.SDSEXAM01.TXT OFR.DATA.SDSEXAM01

以下は、GDSを作成する例です。

$ dsmigin OFR.DATA.GDGEXAM01.TXT OFR.DATA.GDGEXAM01 -m +1

以下は、スキーマ・ファイルの簡単な例です。

<DSI.TESTDATA1.conv>

############################
# conversion schema sample #
############################

* Schema Version 7.1
L1, 01, A-REC, NULL, NULL, 0, 1:1,
L2, 03, FIELD1, EBC_ASC, NULL, 80, 1:1,
L3, 03, FIELD2, U_PACKED, NULL, 3, 1:1,

* Condition
L0, "\0", ( L1 L2 L3 )
############################

以下は、UNIXファイルをデータセットにインポートする例です。

$ dsmigin DSI.TESTDATA1.txt DSI.TESTDATA1 -s DSI.TESTDATA1.conv -l
80 -v 100000 -e KR

上記のdsmiginを実行した結果は以下のとおりです。

=====< DSMIGIN START >=====
source file : DSI.TESTDATA1.txt
dataset name: DSI.TESTDATA1
member name :
unit:
volume: 100000
schema file  : DSI.TESTDATA1.conv
encoding type: KR
record length: 80
record format: F
dsorg:
delimiter:

DSMIGIN: (record count = 100)
=====< DSMIGIN FINISH >====

以下は、dsmiginを実行した後、データセットの登録情報を確認する例です。

$ tjesmgr psds DSI.TESTDATA1

上記のtjesmgrを実行した結果は以下のとおりです。

  Data Set Name . . . : DSI.TESTDATA1
  Data Set Type . . . : NONVSAM
  Catalog Name  . . . : SYS1.MASTER.ICFCAT

  Management Class  . : MCLAS001
    Creation Date . . : 2019/01/29      Data Set Owner  . : OpenFrame
    Expiration Date . : 9999/12/31

  Storage Class . . . :
    Volume Serial . . : 100000          Device Type . . . : 3380

  Data Class  . . . . :
    Organization  . . : PS              Record Format . . : F
    KEYLEN  . . . . . : 0               Record Length . . : 80
    KEYPOS  . . . . . : 0               Block Size  . . . : 80

  Current Allocation
    Primary Space . . : N.A.            Number of Extents : N.A.
    Secondaty Space . : N.A.            Data Set Size . . : 16700

  Last Access Date
    Last Access Date  : 2019/01/29      Last Access Time  : 12:08:47
関連環境設定

OpenFrame環境設定で以下の情報を設定します。

  • dsサブジェクトのDATASET_DEFAULTセクションのDEFAULT_VOLSERキーのVALUE項目にデフォルト・ボリューム・シリアルを指定します。この値は、[-v volume]オプションを指定していない場合に使用されます。

    $ ofconfig list -n NODE1 -s ds -sec DATASET_DEFAULT -k DEFAULT_VOLSER
    
    ===================================================================================
       SUBJECT   |      SECTION      |          KEY            |        VALUE
    ===================================================================================
         ds      |  DATASET_DEFAULT  |     DEFAULT_VOLSER      |        DEFVOL
    ===================================================================================
  • dsサブジェクトのDATASET_DIRECTORYセクションのSCHEMA_DIRキーのVALUE項目にデフォルト・スキーマ・ディレクトリを指定します。[-s schema]オプションでスキーマ・ファイルの相対パスを指定した場合、デフォルト・スキーマ・ディレクトリから該当するファイルを検索します。スキーマ・ファイルの絶対パスを指定した場合は、指定したパスに存在するファイルを使用します。

    $ ofconfig list -n NODE1 -s ds -sec DATASET_DIRECTORY -k SCHEMA_DIR
    
    ===================================================================================
       SUBJECT   |      SECTION      |       KEY         |        VALUE
    ===================================================================================
         ds      | DATASET_DIRECTORY |      SCHEMA_DIR   |/home/tmax/oframe_7_1/schema
    ===================================================================================
  • ofsysサブジェクトのCOMPILERセクションのCOBOL_COMPILERキーのVALUE項目にデフォルトのCOBOLタイプを指定します。この値は、[-cob cobol_type]オプションを指定していない場合に使用されます。COBOL_COMPILERキーの値がNETCOBOLの場合はNETを、その他の場合にはMFを使用します。

    $ ofconfig list -n NODE1 -s ofsys -sec COMPILER -k COBOL_COMPILER
    
    ===================================================================================
       SUBJECT   |      SECTION     |          KEY           |         VALUE
    ===================================================================================
        ofsys    |     COMPILER     |     COBOL_COMPILER     |         OFCOBOL
    ===================================================================================
  • dstoolサブジェクトのDSMIGINセクションのIGNORE_MAPPING_ERRORキーのVALUE項目に変換マップに指定されていないコード変換が行われた場合にエラーとして処理するかどうかを指定します。この値は、[-i]オプションを指定していない場合に使用されます。

    $ ofconfig list -n NODE1 -s dstool -sec DSMIGIN -k IGNORE_MAPPING_ERROR
    
    ===================================================================================
       SUBJECT   |      SECTION      |            KEY           |        VALUE
    ===================================================================================
       dstool    |      DSMIGIN      |   IGNORE_MAPPING_ERROR   |        YES
    ===================================================================================
  • ofsysサブジェクトのSYSTEM_INFOセクションのBATCH_OS_TYPEキーのVALUE項目の値がVOS3の場合、SOSIの間に1バイトの空白文字が存在しても正常に変換されます。

    $ ofconfig list -n NODE1 -s ofsys -sec SYSTEM_INFO -k BATCH_OS_TYPE
    
    ===================================================================================
       SUBJECT   |      SECTION      |            KEY           |        VALUE
    ===================================================================================
       ofsys     |      SYSTEM_INFO  |   BATCH_OS_TYPE          |        VOS3
    ===================================================================================

OpenFrame環境設定の詳細については、OpenFrame Base『環境設定ガイド』を参照してください。

5. dsmigout

dsmigoutは、ASCII形式のOpenFrarmeデータセットをEBCDIC形式のメインフレーム・データセットに変換してUNIXファイルにエクスポートするツールです。可変長データセットをエクスポートするとき、レコード長を表示するためにレコードごとにRDW(Record Descriptor Word)を付けます。また、Lタイプのデータセットをエクスポートするときは、改行文字をデリミターとして使用し、各レコードを区切ります。

関連ツールには、dsmiginがあります。

使用方法

以下は、dsmigoutツールの実行方法です。

Usage: dsmigout <dataset_name> <dest_file> [options]
  • 入力項目

    項目 説明

    <dataset_name>

    エクスポートするデータセットの名前を指定します。データセットはカタログに登録されている必要があります。

    <dest_file>

    出力(Output)ファイル名を指定します。

  • [options]

    項目 説明

    [-X]

    OpenFrameにASCII文字でインポートされたファイルを、EBCDIC文字に変換せずにエクスポートする場合に指定します。

    [-S]

    入力ファイルがOpenFrameにインポートされたソース・ファイルである場合に使用します。このオプションを指定すると、インポート時に指定されたLタイプをFタイプのレコード形式(RECFM)に変換してエクスポートします。レコード長は、インポート時に登録されたレコード長の情報に従います。

    [-U]

    入力ファイルがOpenFrameにインポートされたソース・ファイルではなく、一般のUNIXソース・ファイルの場合に使用します。このオプションを指定すると、[-S]オプションと同様、Lタイプのレコード形式(RECFM)がFタイプに変換されます。レコード長は、80に指定されます。

    [-m member]

    入力ファイルがPDSメンバーの場合に指定します。

    [-v]

    エクスポートするデータセットが位置しているボリューム・シリアル番号を指定します。指定のボリュームにデータセットが存在しない場合はエラー・メッセージが出力され、ツールが終了します。

    [-c user_catalog]

    更新するデータセットがユーザー・カタログに登録されている場合に指定します。ただし、ユーザー・カタログにエイリアスが設定されていて、データセット名だけで検索できる場合は、このオプションを指定しなくても構いません。

    [-e encoding_code]

    ASCIIからEBCDICにコードを変換するとき、2バイトASCII文字をどのEBCDIC文字コードに変換するかを指定します。

    encoding_code値による変換処理は、以下のとおりです。

    • US : 英語(デフォルト値)

    • KR : 韓国語(EUC-KR)

    • JP : 日本語(Shift-JIS)

    • JAK : 日本語(JEF - 富士通メインフレーム)

    • KEIS : 日本語(日立メインフレーム)

    [-s schema]

    OpenFrameデータセットの1つのレコードに複数の文字セットが混用されている場合(EBCDICコードとASCIIコードが混用されているか、2バイト文字、パック10進数、ゾーン10進数が使用されている場合など)は、レコード単位の一括コード変換が不可能です。そのため、cobgenschまたはpligenschプログラムを使用してスキーマ・ファイルを作成します。スキーマ・ファイルが作成されたら、そのファイルを指定します。

    [-um usermap_file]

    ユーザーが直接指定したCPMファイルを利用して変換する場合に使用します。

    [-cob cobol_type]

    使用されたCOBOL言語のタイプを指定します。次のいずれかの値を指定します。

    • MF (MicroFocus COBOL)

    • NET (Net COBOL)

    このオプションを指定しない場合、以下の手順でデフォルト値が設定されます。

    OpenFrame環境設定のofsysサブジェクトのCOMPILERセクションのCOBOL_COMPILERキーに指定した値を使用します。詳細については、関連環境設定を参照してください。

    OpenFrame環境設定のofsysサブジェクトのCOBOL_COMPILERキーが存在しない場合は、デフォルト値としてMFを使用します。

    [-sosi sosi_type]

    dsmiginツールでEBCDIC文字列をASCII文字列に変換する場合、EBCDICコードの特性上、SOSI文字を利用して1バイト文字フィールドと2バイト文字フィールドを区別する必要があります。

    しかし、dsmigoutによるASCII文字列からEBCDIC文字列への変換は、SOSIがなくてもASCIIコード値によって1バイト文字か2バイト文字かが区別できるため、このオプションを指定しない場合は、SOSIに対する別途の処理を行わず、CPMコード表のみを利用して逆変換します。

    [SOSIタイプ]

    • 1 = so[ASC]si → so[EBC]si
      SOSIを使用してASCII文字をEBCDIC文字に逆変換します。SOSI値はそのまま維持します。dsmiginツールでSOSIは変換せずに文字列のみ変換した場合は、このオプションを使って、同じくSOSIはそのままにして、文字列のみ逆変換することができます。

    • 2 = _[ASC]_ → so[EBC]si
      SOSIを使用せず、ASCIIコード値に従ってASCII文字をEBCDIC文字に逆変換します。逆変換される文字列の前後の空白文字はSOSIに復元します。dsmiginツールでSOSIを空白に変換した場合は、このオプションを使って、空白からSOSIに復元することができます。

    • 3 = [ASC]__ → so[EBC]si
      SOSIを使用せず、ASCIIコード値に従ってASCII文字をEBCDIC文字に逆変換します。逆変換される文字列の前後にSOSIを復元します。dsmiginツールでSOSIを削除し、変換の結果としてフィールド長が変更されることを防ぐために後ろの余分空間を空白で埋める方法を取った場合は、このオプションを使ってSOSIを復元することができます。

    • 4 = ?[ASC]? → so[EBC]si
      SOSI文字を変換するとき、CPMに登録されているSOSI文字を使って変換します。

    [-sp]

    -sosi 2を指定したのと同様です。dsmigout -hで使用方法を表示する場合、このオプションは表示されません。

    [-i]

    マイグレーションの途中で、変換に失敗したレコードが見つかっても無視し、最後までマイグレーションを続ける場合に指定します。変換に失敗したレコードの情報は標準出力ストリーム(stdout)に出力されます。ツールの終了時に変換に失敗したレコード数が出力されます。

    [-ef error_format]

    エラー出力形式を指定します。LINEまたはHEXのいずれかを指定できます。デフォルト値はLINEです。

    [-ep error_partial]

    エラー情報を出力する際に各フィールドの最初の100件のエラーのみを出力し、以降は無視します。

    [-znpsign zoned_positivesign]

    ゾーン10進数のプラス記号(A/C/E/F)を指定します。

    [-psmsb]

    ASCIIからEBCDICに変換するとき、パック10進数の符号ビットを最上位ビット(MSB)から最後の4ビットに変換します。

    • 符号なしの場合は、最上位ビット0を最後の4ビットのFに変換します。

    • 符号付きの場合は、最上位ビット0を最後の4ビットのCに、最上位ビット1を最後の4ビットのDに変換します。

    [-y]

    マイグレーションの実行中に、スキーマの条件文をチェックしながら、マイグレーションの対象を選択します。このオプションを指定しない場合、レコードごとに最初に1回マイグレーションの対象を選択した後、マイグレーションを進めます。このオプションを使用する場合は、cobgenschを利用してスキーマを作成するときに、-Dオプションを指定する必要があります。

    [-ftpb]

    VBデータセットを変換する際に、レコードにRDWの代わりに3バイトのFTPタイプBヘッダーを与えて変換します。

    [-D]

    ASCIIからEBCDICに文字コードを変換したり、パック10進数またはゾーン10進数フィールド値を変換する時に不正データが見つかった場合に、具体的な情報やマイグレーション作業に関する問題の分析に有用なデバッグ情報を画面に表示します。

    1から3までの値が指定できます。

    • 1 : マイグレーションを行い、重要情報を表示します。

    • 2 : 1を指定した場合のアクションに追加して、コード変換の際に発生するエラー情報を表示します。

    • 3 : 2を指定した場合のアクションに追加して、レコードの変換前後のデータを表示します。

    [-V]

    ツールのバージョン情報を表示します。

使用例

以下は、スキーマ・ファイルの簡単な例です。

<DSI.TESTDATA1.conv>

############################
# conversion schema sample #
############################

* Schema Version 7.1
L1, 01, A-REC, NULL, NULL, 0, 1:1,
L2, 03, FIELD1, EBC_ASC, NULL, 80, 1:1,
L3, 03, FIELD2, U_PACKED, NULL, 3, 1:1,

* Condition
L0, "\0", ( L1 L2 L3 )
############################

以下は、dsmigoutの結果を示す例です。

$ dsmigout DSI.TESTDATA1 DSI.TESTDATA1.out -e KR -s DSI.TESTDATA1.conv

上記のdsmigoutを実行した結果は以下のとおりです。

DSMIGOUT: (record count = 100, conversion error count = 0)

DSI.TESTDATA1のレコードがEBC_ASCの変換方式によって変換され、DSI.TESTDATA1.outに出力されます。

関連環境設定

OpenFrame環境設定で以下の情報を設定します。

  • dsサブジェクトのDATASET_DIRECTORYセクションのSCHEMA_DIRキーのVALUE項目にデフォルト・スキーマ・ディレクトリを指定します。

    $ ofconfig list -s ds -sec DATASET_DIRECTORY -k SCHEMA_DIR
    
    ===================================================================================
       SUBJECT   |      SECTION      |        KEY        |        VALUE
    ===================================================================================
         ds      | DATASET_DIRECTORY |     SCHEMA_DIR    |/home/tmax/oframe_7_1/schema
    ===================================================================================
  • dstoolサブジェクトのDSMIGINセクションのIGNORE_MAPPING_ERRORキーのVALUE項目に変換マップに指定されていないコード変換が行われた場合にエラーとして処理するかどうかを指定します。この値は、[-i]オプションを指定していない場合に使用されます。

    $ ofconfig list -s dstool -sec DSMIGIN -k IGNORE_MAPPING_ERROR
    
    ===================================================================================
       SUBJECT   |      SECTION      |          KEY             |        VALUE
    ===================================================================================
       dstool    |      DSMIGIN      |   IGNORE_MAPPING_ERROR   |        YES
    ===================================================================================

OpenFrame環境設定の詳細については、OpenFrame Base『環境設定ガイド』を参照してください。

6. pligensch

pligenschは、メインフレーム・データセットをOpenFrameデータセットにマイグレーションする際に必要なスキーマ・ファイルを作成するツールです。

pligenschはcobgenschツールと同じスキーマ・ファイルを作成します。ただし、cobgenschはCOBOLコピーブックを使用するのに対し、pligenschはPL/Iソース・ファイルを参照してメインフレーム・データセットのレコード構造を把握した後、スキーマ・ファイルを作成します。作成されたスキーマ・ファイルを保存するディレクトリ・パスは、OpenFrame環境設定のdsサブジェクトのDATASET_DIRECTORYセクションのSCHEMA_DIRキーのVAULE項目に指定します。

以下は、PL/Iスキーマ・ファイルとOpenFrameデータセットの作成プロセスを示した図です。

figure 3 1
PL/Iスキーマ・ファイルとOpenFrameデータセットの作成プロセス

上記図のようにpligenschにPL/Iソースを入力すると、レコード構造を含むスキーマ・ファイルが作成されます。dsmiginを実行して、スキーマ・ファイルとメインフレーム・データセットを入力パラメータとして指定し、OpenFrameデータセットを作成します。

使用方法

以下は、pligenschツールの実行方法です。

Usage: pligensch [options] file...
  • [options]

    オプション 説明

    [-h]

    pligenschで使用可能なオプション情報を表示します。

    [-y]

    パーサーで生成されたデバッグ・メッセージを表示します。

    [-l]

    スキャナーで生成されたデバッグ・メッセージを表示します。

    [-d]

    パーサーとスキャナーで生成されたデバッグ・メッセージを含むすべてのデバッ グ・メッセージを表示します。

    [-I dir]

    PL/Iのインクルード・ファイルが存在する場所を指定します。

    [-r reclen]

    スキーマ・ファイルを使用するデータセットが固定長レコード・データセットであり、レコード長を知っている場合に、その長さを指定すると、スキーマ・ファイルの作成時にレコード長の整合性をチェックします。

    [-o output]

    作成するスキーマ・ファイルの名前を指定します。

    このオプションを指定しない場合、file#に指定した入力ファイル名がデフォルト値として使用されます。

    このオプションを指定した場合、ボリューム・シリアルの設定有無によって、「<volser>_<output>.conv」または「<output>.conv」という名前でスキーマ・ファイルが作成されます。

    [-v volser]

    作成するスキーマ・ファイル名に使用されるボリューム・シリアルを指定します。

    このオプションを指定しない場合、作成するスキーマ・ファイル名はボリューム・シリアルを含みません。

    このオプションを指定した場合、「<volser>_<output>.conv」という名前でスキーマ・ファイルが作成されます。

    [-s]

    入力ファイルがサブ構造のみを含むファイルである場合に指定します。

    [-f aix]

    入力されるPL/IソースがAIX PL/Iの場合に指定します。このオプションを指定しない場合、デフォルトでAIX PL/Iに認識します。

    [-f liant]

    入力されるPL/IソースがLiant Open PL/Iの場合に指定します。

    [-V]

    ツールのバージョン情報を表示します。

  • 入力項目

    項目 説明

    file

    PL/Iソース・ファイル名を指定します。

使用例

以下は、PL/Iインクルード・ファイルの簡単な例です。

<PLI.TESTDATA1.inc>

    3   TEST1                    CHAR(02)   ,
    3   TEST2                    CHAR(05)   ,
    3   TEST3                               ,
    5   TEST4                    PIC ‘(03)9’ ,
    5   TEST5                    PIC ‘(03)X’ ,
    3   TEST6                    FIXED DEC (3, 0);

以下は、pligenschを実行してCOBOLスキーマ・ファイルを作成する例です。上記のPL/Iインクルード・ファイルは、DECLARE文で開始されず、サブ構造のみを含んでいるため、[-s]オプションを指定して実行します。

$ pligensch –s PLI.TESTDATA1.inc

上記の実行結果、正常にCOBOLスキーマ・ファイルが作成されました。

input filename = PLI.TESTDATA1.inc
Schema filename = /home/tmax/openframe/schema/PLI.TESTDATA1.conv - created

以下は、pligenschを実行してPL/Iスキーマ・ファイルを作成し、整合性をチェックする例です。

$ pligensch -r 10 –s PLI.TESTDATA1.inc

上記の実行結果、レコード長の整合性チェックでエラーが発生しました。

input filename = PLI.TESTDATA1.inc
input record length = 10
** input record length is different from schema record length!!!
** (input reclen = 10, schema reclen = 15)

Failed to generate a schema file. rc=-1

以下は、正しいレコード長を指定してpligenschを実行する例です。

$ pligensch -r 15 –s PLI.TESTDATA1.inc

上記を実行すると、正常にスキーマ・ファイルが作成されます。レコード長が15バイトで、指定値と一致するので、整合性をチェックする際にエラーが発生しません。

input filename = PLI.TESTDATA1.inc
input record length = 15
Schema filename = /home/tmax/openframe/schema/PLI.TESTDATA1.conv - created

以下は、pligenschを実行して作成されたスキーマ・ファイルの例です。

<PLI.TESTDATA1.conv>

* scheme
L1, 01, TEST1_STRUCTURE, NULL, 0, 1,
L2, 03, TEST1, EBC_ASC, 2, 1,
L3, 03, TEST2, EBC_ASC, 5, 1,
L4, 03, TEST3, NULL, 0, 1,
L5, 05, TEST4, ZONED, 3, 1,
L6, 05, TEST5, EBC_ASC, 3, 1,
L7, 03, TEST6, PACKED, 2, 1,

* condition
L0, "\0", ( L1 L2 L3 L4 L5 L6 L7 )
関連環境設定

OpenFrame環境設定のdsサブジェクトのDATASET_DIRECTORYセクションのSCHEMA_DIRキーのVALUE項目に作成されたスキーマ・ファイルを保存するディレクトリ・パスを指定します。

以下は、環境設定の例です。

$ ofconfig list -s ds -sec DATASET_DIRECTORY -k SCHEMA_DIR

====================================================================================
   SUBJECT   |       SECTION       |       KEY         |          VALUE
====================================================================================
     ds      |  DATASET_DIRECTORY  |     SCHEMA_DIR    |/home/tmax/oframe_7_1/schema
====================================================================================
  1. スキーマ・ファイルの構造については、OpenFrame『マイグレーションガイド』を参照してください。

  2. OpenFrame環境設定の詳細については、OpenFrame Base『環境設定ガイド』を参照してください。

7. sqlgensch

sqlgenschは、メインフレームで利用していたデータベースのDDL(Data Definition Language)ファイルを使用してデータベースのマイグレーションに必要なスキーマ、コピーブック、Tibero用のDDL、Tiberoインポート用の制御ファイルを作成するツールです。メインフレームで利用していたデータベースをOpenFrameのデータベースにマイグレーションする際に必要です。

使用方法

以下は、sqlgenschツールの実行方法です。

Usage: sqlgensch <src_file> ... [options]
  • 入力項目

    オプション 説明

    src_file

    メインフレームで利用したデータベースのDDLファイル名を指定します。

  • [options]

    オプション 説明

    [-c]

    COBOLコピーブックを作成します。

    [-s]

    スキーマ・ファイルを作成します。

    このオプションを使って作成されたスキーマ・ファイルは、pligenschツールにより作成されたスキーマ・ファイルと同じです。このスキーマ・ファイルは最新バージョンのスキーマ・ファイルと異なるので、最新バージョンのスキーマ・ファイルを作成するためには、cobgenschツールを使用する必要があります。

    [-t]

    Tiberoにインポートするための制御ファイルを作成します。

    [-q]

    データベースの表作成のためのDDL文を作成します。

    [-y symfoware]

    Symfoware SQL用に動作します。(デフォルト値)

    [-b db2]

    DB2 SQL用に動作します。

    [-d debug]

    デバッグ・モードで動作します。

    [-V]

    ツールのバージョン情報を表示します。

使用例

以下は、sqlgenschを実行してCOBOLコピーブックを作成する例です。

$ sqlgensch –c dbddl.txt

以下は、sqlgenschを実行してスキーマを作成する例です。

$ sqlgensch -s dbddl.txt

以下は、sqlgenschを実行してTiberoインポート用の制御ファイルを作成する例です。

$ sqlgensch -t dbddl.txt

以下は、sqlgenschを実行してTibero用のDDL文を作成する例です。

$ sqlgensch -q dbddl.txt

スキーマ・ファイルの構造については、OpenFrame『マイグレーションガイド』を参照してください。