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

本章では、OpenFrame HiDBシステムが提供するマイグレーション・ツールの使用方法について説明します。

1. 概要

以下は、メインフレームで使用されていた階層型データベースのデータを移行するためのツールです。

ツール 説明

dbdcpybkgen

メインフレームのIMS/DBの特定のDBDからSEGMENTとFIELD情報を抽出してレイアウト(COBOLコピーブック)を作成します。

dliprep

アプリケーションのEXEC DLIインターフェースをプリコンパイルし、HiDBの内部インターフェースに変換します。

hdgensch

データ・マイグレーションのためのスキーマ・ファイルを作成します。

hdload

HiDB標準形式のデータの入力を受けて、HiDBデータベースにロードします。

hdpcdf01

メインフレームのアンロード・ユーティリティで作成したデータをHiDBの標準形式に変換します。

hidbptrmgr

HiDBの二次索引表と論理子表のIDマッピング情報を管理します。

hidbreconv

HiDBでアンロードしdsmigoutツールで処理したデータを、メインフレームのロード・ユーティリティの入力形式に変換します。

2. dbdcpybkgen

dbdcpybkgenは、メインフレームIMS/DBの特定のDBDからセグメントとフィールド情報を抽出して、レイアウト(COBOLコピーブック)を作成するツールです。

索引DBDまたはDBD内に可変長セグメントが存在する場合は、既存のレイアウトではなく、dbdcpybkgenを使用して作成したレイアウトを使用する必要があります。

使用方法

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

Usage: dbdcpybkgen [options] <file> ...
  • [options]

    オプション 説明

    [-D]

    dbdcpybkgenをデバッグ・モードで実行します。

    [-h]

    ツールのヘルプを表示します。

  • 入力項目

    項目 説明

    file

    レイアウトを作成するDBDスクリプトを指定します。

使用例

以下は、dbdcpybkgenを実行して一般的なDBDセグメントのレイアウトを作成する例です。

$ dbdcpybkgen EXHIDAM

上記のコマンドが正常に実行されると、以下のようなメッセージが表示されます。

dbdcpybkgen version 7.2.0(10) jjeong@:ofsrc/ims(#1) 2018-02-05 11:32:29
Database Description Block Copybook Generation Program

DBDCPYBKGEN FCOUNT=1
--HiDB runs on debug mode
--HiDB connection name is HIDB_NX_CONN
--HiDB DLI functions show data buffer
--HiDB resets application buffer if GET request fails
--HiDB alters key sequences
  -HiDB use CONVERT('WE8EBCDIC1047', 'MSWIN949') key sequence
--HiDB requests SELECT query with LEAD for GET NEXT without SSA
--HiDB requests SELECT query with LEAD for GET NEXT IN PARENT without SSA
--HiDB uses RDB indicator to check column status
--HiDB use 0x20 to default value of fetched columns
------------------------------------------------------------
*** Processing DBD script "EXHIDAM"
------------------------------------------------------------

>>>>> Processing DBD "EXHIDAM"
 *** DBD information
  DBD NAME=EXHIDAM,ACCESS=(8,2),RMNAME=(,1,16,0)
    DATASET LABEL=,DD1=HIDAMD,DD2=,CISZ1=0,CISZ2=0
            BLOCK=(0,0),DEVICE=3380,SCAN=0,FRSPC(0,0)
    SEGM NAME=SEG1,PARENT=(,(,)),SOURCE=((,),(,))
      LCHILD NAME=(POINTER,EXHIIND),PAIR=,INDEX=
      LCHILD NAME=(POINTE1,EXHIIX1),PAIR=,INDEX=
      LCHILD NAME=(POINTE2,EXHIIX2),PAIR=,INDEX=
      LCHILD NAME=(POINTE3,EXHIIX3),PAIR=,INDEX=
      FIELD NAME=SEG1KEY,BYTES=6,START=1,ATTR=(SEQ,U)
      FIELD NAME=KOSI,BYTES=4,START=7,ATTR=
      XDFLD NAME=SEG1KE1,SEGMENT=SEG1
      XDFLD NAME=SEG2KE2,SEGMENT=SEG2
      XDFLD NAME=SEG3KE3,SEGMENT=SEG3
    SEGM NAME=SEG2,PARENT=(SEG1,(,)),SOURCE=((,),(,))
      LCHILD NAME=(POINTE4,EXHIIX4),PAIR=,INDEX=
      FIELD NAME=SEG2KEY,BYTES=6,START=1,ATTR=(SEQ,U)
      FIELD NAME=HAHA,BYTES=4,START=7,ATTR=
      FIELD NAME=/SX2,BYTES=4,START=0,ATTR=
      XDFLD NAME=SEG4KE4,SEGMENT=SEG4
    SEGM NAME=SEG3,PARENT=(SEG2,(,)),SOURCE=((,),(,))
      FIELD NAME=SEG3KEY,BYTES=6,START=1,ATTR=(SEQ,U)
      FIELD NAME=KAKA,BYTES=4,START=7,ATTR=
      FIELD NAME=CACA,BYTES=4,START=11,ATTR=
    SEGM NAME=SEG4,PARENT=(SEG2,(,)),SOURCE=((,),(,))
      FIELD NAME=SEG4KEY,BYTES=6,START=1,ATTR=(SEQ,U)
      FIELD NAME=BABA,BYTES=4,START=7,ATTR=
      FIELD NAME=/CKXX,BYTES=18,START=1,ATTR=
      FIELD NAME=/SX1,BYTES=4,START=0,ATTR=
    SEGM NAME=SEG5,PARENT=(SEG1,(,)),SOURCE=((,),(,))
      LCHILD NAME=(POINTE5,EXHIIX5),PAIR=,INDEX=
      FIELD NAME=SEG5KEY,BYTES=6,START=1,ATTR=(SEQ,U)
      FIELD NAME=DADA,BYTES=4,START=7,ATTR=
      XDFLD NAME=SEG5KE5,SEGMENT=SEG5
 *** Generating copybooks for the physical DBD segment SEG1 to /home/jjeong/prog_test/hidb_project/sears_20180423/copybook/EXHIDAM/SEG1.cpy
 *** Generating copybooks for the physical DBD segment SEG2 to /home/jjeong/prog_test/hidb_project/sears_20180423/copybook/EXHIDAM/SEG2.cpy
 *** Generating copybooks for the physical DBD segment SEG3 to /home/jjeong/prog_test/hidb_project/sears_20180423/copybook/EXHIDAM/SEG3.cpy
 *** Generating copybooks for the physical DBD segment SEG4 to /home/jjeong/prog_test/hidb_project/sears_20180423/copybook/EXHIDAM/SEG4.cpy
 *** Generating copybooks for the physical DBD segment SEG5 to /home/jjeong/prog_test/hidb_project/sears_20180423/copybook/EXHIDAM/SEG5.cpy
>>>>> Successfully generated copybooks for DBD "EXHIDAM"

PROGRAM COMPLETED SUCCESSFULLY. Total : [1]

デフォルトのコピーブック・ディレクトリを確認すると、以下のようなレイアウト・ファイルが作成されていることが確認できます。

$ ls -al
-rw-rw-r--  1 jjeong jjeong  136  9월 10 09:46 SEG1.cpy
-rw-rw-r--  1 jjeong jjeong  109  9월 10 09:46 SEG2.cpy
-rw-rw-r--  1 jjeong jjeong  162  9월 10 09:46 SEG3.cpy
-rw-rw-r--  1 jjeong jjeong  109  9월 10 09:46 SEG4.cpy
-rw-rw-r--  1 jjeong jjeong  136  9월 10 09:46 SEG5.cpy

レイアウト・ファイルの内容は以下のとおりです。

$ vim SEG1.cpy
      *generated by DBDCPYBKGEN
        01 SEG1.
         03 SEG1KEY PIC X(6).
         03 KOSI PIC X(4).
         03 FILLER PIC X(38).

以下は、dbdcpybkgenを実行してDBD内部に可変長セグメントのレイアウトを作成する例です。

$ dbdcpybkgen EXHIDAM

上記のコマンドが正常に実行されると、以下のメッセージが表示されます。

dbdcpybkgen version 7.2.0(0) oframe@:ofsrc/ims(#1) 2018-02-05 11:32:29
Database Description Block Copybook Generation Program

DBDCPYBKGEN FCOUNT=1
--HiDB runs on debug mode
--HiDB connection name is HIDB_NX_CONN
--HiDB DLI functions show data buffer
--HiDB resets application buffer if GET request fails
--HiDB alters key sequences
  -HiDB use CONVERT('WE8EBCDIC1047', 'MSWIN949') key sequence
--HiDB requests SELECT query with LEAD for GET NEXT without SSA
--HiDB requests SELECT query with LEAD for GET NEXT IN PARENT without SSA
--HiDB uses RDB indicator to check column status
--HiDB use 0x20 to default value of fetched columns
------------------------------------------------------------
*** Processing DBD script "EXHIDAM4"
------------------------------------------------------------

>>>>> Processing DBD "EXHIDAM4"
 *** DBD information
  DBD NAME=EXHIDAM4,ACCESS=(8,2),RMNAME=(,1,16,0)
    DATASET LABEL=,DD1=HIDAMD,DD2=,CISZ1=0,CISZ2=0
            BLOCK=(0,0),DEVICE=3380,SCAN=0,FRSPC(0,0)
    SEGM NAME=SEG1,PARENT=(,(,)),SOURCE=((,),(,))
      LCHILD NAME=(POINTER,EXHIIN4),PAIR=,INDEX=
      FIELD NAME=SEG1KEY,BYTES=4,START=3,ATTR=(SEQ,U)
      FIELD NAME=KOSI,BYTES=4,START=7,ATTR=
 *** Generating copybooks for the physical DBD segment SEG1 to /home/jjeong/prog_test/hidb_project/sears_20180423/copybook/EXHIDAM4/SEG1.cpy
>>>>> Successfully generated copybooks for DBD "EXHIDAM4"

PROGRAM COMPLETED SUCCESSFULLY. Total : [1]

レイアウト・ファイルの内容は以下のとおりです。

$ vim SEG1.cpy
      *generated by DBDCPYBKGEN
        01 SEG1.
         03 DATALEN PIC 9(4) COMP.
         03 SEG1KEY PIC X(4).
         03 VARDATA2 PIC X(42).
環境設定

OpenFrame環境設定のhidbサブジェクトのHIDB_DEFAULTセクションのCOPYBOOK_DIRキーのVALUE項目に作成されたレイアウトを保存するディレクトリ・パスを設定します。

$ ofconfig list -s hidb -sec HIDB_DEFAULT -k COPYBOOK_DIR

===================================================================================
  SUBJECT   |     SECTION      |        KEY         |             VALUE
===================================================================================
    hidb    |   HIDB_DEFAULT   |    COPYBOOK_DIR    |    /home/openframe/copybook
===================================================================================

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

3. dliprep

dliprepは、アプリケーションのEXEC DLIインターフェースをプリコンパイルし、HiDBの内部インターフェースに変換するツールです。

使用方法

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

Usage: dliprep [options] <file>
  • [options]

    オプション 説明

    [-v]

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

    [-h]

    ツールのヘルプを表示します。

  • 入力項目

    項目 説明

    file

    プリコンパイルするアプリケーション・ソース・ファイル名を指定します。

使用例

以下は、dliprepを実行して一般的なアプリケーション・ソースをプリコンパイルし、HiDBの内部インターフェースに置換されたアプリケーション・ソースを作成する例です。

$ dliprep EXAM.cob

上記のコマンドが正常に実行されると、以下のメッセージが表示されます。

dliprep: EXAM.cob: preprocessed successfully.

dliprepを実行したディレクトリから、以下の出力ファイルが作成されたことが確認できます。

$ ls -al
-rw-rw-r-- 1 oframe oframe   5568  5월 20 10:32 dliprep_EXAM.cob

以下は、入力ファイルの内容です。

$ vim EXAM.cob
       IDENTIFICATION DIVISION.
       PROGRAM-ID.    EXAMPLE.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       DATA DIVISION.
       FILE SECTION.
       WORKING-STORAGE SECTION.
       01  CONSTANT-AREA.
         03  OUTREC-LEN PIC 9(4) COMP VALUE 300.
       01  PSBNAME PIC X(8) VALUE 'EXAMPSB '.
       01  SEGMENT-NAME PIC X(8).
       01  SEGMENT-DATA PIC X(10).
       01  WHERE-RHS1 PIC X(5).
       01  WHERE-RHS2 PIC X(5).
       LINKAGE SECTION.
       01  DB-PCB.
         03  DBD-NAME     PIC X(8).
         03  SEG-LEVEL    PIC XX.
         03  STATUS-CODE  PIC XX.
         03  PROCOPT      PIC X(4).
         03  RESERVED     PIC X(4).
         03  SEG-NAME     PIC X(8).
         03  KEYLEN       PIC 9(8) COMP.
         03  NSENSEG      PIC 9(8) COMP.
         03  CCATKEY      PIC X(6).

       PROCEDURE DIVISION.

           ENTRY 'DLITCBL' USING DB-PCB.
           EXEC DLI SCHEDULE PSB((PSBNAME))
           END-EXEC.

       EXIT.

以下は、出力ファイルの内容です。

$ vim dliprep-EXAM.cob
       IDENTIFICATION DIVISION.
       PROGRAM-ID.    EXAMPLE.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       DATA DIVISION.
       FILE SECTION.
       WORKING-STORAGE SECTION.
       01  CONSTANT-AREA.
         03  OUTREC-LEN PIC 9(4) COMP VALUE 300.
       01  PSBNAME PIC X(8) VALUE 'EXAMPSB '.
       01  SEGMENT-NAME PIC X(8).
       01  SEGMENT-DATA PIC X(10).
       01  WHERE-RHS1 PIC X(5).
       01  WHERE-RHS2 PIC X(5).
       01 HIDB-DLI-REQ.
            03 HIDB-FUNCTYPE     PIC X(8).
            03 HIDB-CHKPID       PIC X(8).
            03 HIDB-PSBNAME      PIC X(8).
            03 HIDB-CHKPAREA     USAGE POINTER OCCURS 3 TIMES.
            03 HIDB-CHKPLEN      PIC 9(8) COMP-5 OCCURS 3 TIMES.
            03 HIDB-PCBNO        PIC 9(8) COMP-5.
            03 HIDB-MAXLEN       PIC 9(8) COMP-5.
            03 HIDB-FEEDBACKLEN  PIC 9(8) COMP-5.
            03 HIDB-SCHDFLAGS    PIC 9(8) COMP-5.
            03 HIDB-SEGMCOUNT    PIC 9(8) COMP-5.
            03 HIDB-SEGM     OCCURS 16 TIMES.
               05 HIDB-SEGMNAME     PIC X(8).
               05 HIDB-SEGMLEN      PIC 9(8) COMP-5.
               05 HIDB-OFFSET       PIC 9(8) COMP-5.
               05 HIDB-SEGDATAAREA  USAGE POINTER.
               05 HIDB-KEYAREA      USAGE POINTER.
               05 HIDB-KEYLEN       PIC 9(8) COMP-5.
               05 HIDB-FIELDLEN     PIC 9(8) COMP-5.
               05 HIDB-SEGMFLAGS    PIC 9(8) COMP-5.
               05 HIDB-QUALSCNT     PIC 9(8) COMP-5.
               05 HIDB-QUALS     OCCURS 16 TIMES.
                  07 HIDB-LOP       PIC X(8).
                  07 HIDB-KEYFLD    PIC X(8).
                  07 HIDB-ROP       PIC X(2).
                  07 FILLER    PIC X(6).
                  07 HIDB-VADDR     USAGE POINTER.
                  07 HIDB-VADDRLEN  PIC 9(8) COMP-5.
                  07 FILLER    PIC X(4).
               05 HIDB-OCCTYPE      PIC X(1).
               05 HIDB-SETZERO      PIC X(1).
               05 HIDB-LOCKCLASS    PIC X(1).
               05 HIDB-MOVENEXT     PIC X(1).
               05 HIDB-GETFIRST     PIC X(1).
               05 HIDB-SEGMSET      PIC X(1).
               05 HIDB-SETCOND      PIC X(1).
               05 FILLER       PIC X(1).
            03 HIDB-KEYFEEDBACK   USAGE POINTER.
            03 HIDB-DATAAREA     USAGE POINTER.
            03 DLZDIB.
               05 DIBVER         PIC X(2).
               05 DIBSTAT        PIC X(2).
               05 DIBSEGM        PIC X(8).
               05 DIBFIL01       PIC X(1).
               05 DIBFIL02       PIC X(1).
               05 DIBSEGLV       PIC X(2).
               05 DIBKFBL        PIC S9(4) COMP-5.
               05 DIBDBDNM       PIC X(8).
               05 DIBDBORG       PIC X(8).
               05 DIBFIL03       PIC X(6).
       LINKAGE SECTION.
       01  DB-PCB.
         03  DBD-NAME     PIC X(8).
         03  SEG-LEVEL    PIC XX.
         03  STATUS-CODE  PIC XX.
         03  PROCOPT      PIC X(4).
         03  RESERVED     PIC X(4).
         03  SEG-NAME     PIC X(8).
         03  KEYLEN       PIC 9(8) COMP.
         03  NSENSEG      PIC 9(8) COMP.
         03  CCATKEY      PIC X(6).

       01 DLIUIB.
          02 UIBPCBAL USAGE IS POINTER.
          02 UIBRCODE.
            03 UIBFCTR PIC X.
              88 FCNORESP VALUE X'00'.
              88 FCNOTOPEN VALUE X'0C'.
              88 FCINVREQ VALUE X'08'.
              88 FCINVPCB VALUE X'10'.
            03 UIBDLTR PIC X.
              88 DLPSBNF VALUE X'01'.
              88 DLTASKNA VALUE X'02'.
              88 DLPSBSCH VALUE X'03'.
              88 DLLANGCON VALUE X'04'.
              88 DLPSBFAIL VALUE X'05'.
              88 DLPSBNA VALUE X'06'.
              88 DLTERMNS VALUE X'07'.
              88 DLFUNCNS VALUE X'08'.
              88 DLINA VALUE X'FF'.
       PROCEDURE DIVISION.

           ENTRY 'DLITCBL' USING DB-PCB.
      *    EXEC DLI  SCHEDULE PSB (( PSBNAME )) END-EXEC.
        INITIALIZE HIDB-DLI-REQ.
        MOVE "SCHD    " TO HIDB-FUNCTYPE OF HIDB-DLI-REQ.
        MOVE PSBNAME TO HIDB-PSBNAME OF HIDB-DLI-REQ.
        CALL 'ims_cdli_execute' USING BY REFERENCE HIDB-DLI-REQ.

       EXIT.

4. hdgensch

hdgenschは、メインフレームのIMS/DBデータセットをOpenFrameのHiDBデータセットに移行する際に必要なデータセット・マイグレーション用のスキーマ・ファイルを作成するツールです。

通常スキーマ・ファイルは、cobgenschツールまたはpligenschツールを使用して作成し、データセット・マイグレーション・ツールであるdsmiginの入力として指定されますが、HiDBデータセットのスキーマ・ファイルは、cobgenschツールまたはpligenschツールの代わりにhdgenschツールを使用して作成します。一般的なデータセットは1つのコピーブックがマッピングされますが、HiDBデータセットは、セグメントごとに定義された1つ以上のコピーブックにマッピングされます。hdgenschは、各セグメントのコピーブックごとにcobgenschツールまたはpligenschツールを呼び出して、作成されたスキーマ・ファイルを1つのスキーマ・ファイルとして統合します。

また、各セグメントの表とDMLファイルを作成するためのCOBOLレイアウトをOFM_HIDB_DBD_COLUMNメタ表に保存します。

hdgenschが正常に終了すると、OpenFrame環境設定のdsサブジェクトに設定されたデフォルト・スキーマ・ディレクトリにDBD名と「.conv」拡張子で構成されたファイル名のスキーマが作成され、各セグメントのCOBOLレイアウト情報がメタ表に保存されます。作成されたスキーマは、cobgenschツールまたはpligenschツールで作成したスキーマと同じ文法を使用します。

スキーマの構文およびマルチ・レイアウトの使用については、OpenFrame 『マイグレーションガイド』の「データセット・マイグレーション」を参照してください。

使用方法

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

Usage: hdgensch <schema|meta|all> dbd-name [copybook-dir-name] [options]
  • 入力項目

    項目 説明

    <schema | meta | all>

    • schema : 指定されたDBDのスキーマ・ファイルを作成します。

    • meta : COBOLコピーブックを参照して、指定されたDBDのセグメント・レイアウト情報をメタ表に保存します。

    • all : 上記の2両方の機能を実行します。

    dbd-name

    作成するスキーマまたはCOBOLレイアウトのメタデータを保存する対象となるデータベースを定義したDBD名を指定します。

    このDBDは、hdgenschを実行する前にデフォルトのDBDLIBに登録されている必要があり、最大8文字以内で指定します。DBDLIBの登録については、dbdgenツールを参照してください。

    copybook-dir-name

    HiDBデータセットのフィールド情報が含まれているコピーブックが存在するディレクトリ名を指定します。COBOLコピーブックのファイル名は、DBDで定義したセグメント名と「.cpy」拡張子で構成され、PL/Iコピーブックのファイル名は、DBDで定義したセグメント名と「.inc」拡張子で構成されます。

    このパスを指定しない場合は、HiDB環境設定のhidbサブジェクトのHIDB_DEFAULTセクションのCOPYBOOK_DIRキーに指定されたパスを参照します。

  • [options]

    オプション 説明

    [-v]

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

    [-t] <n|b|t>

    列情報を保存する際にOCCURS属性の列の処理方法を指定します。

    • n (normal) : OCCURS属性の列に番号を付与してメタデータとして保存します。

    • b (bulk) : OCCURS属性の列を1つにまとめてメタデータとして保存します。長さは、OCCURSの値を乗算したすべての列の長さの合計と同じです。

    • t (table) : OCCURS属性の列を別の表に分離します。現在はサポートしていません。

    [-h]

    ツールのヘルプを表示します。

    [-f]

    既存のDBDの列情報を削除して再作成します。

    [-u]

    列名を作成時に、レイアウト(コピーブック、インクルード・ファイル)に存在するダッシュ(-)文字をアンダースコア(_)文字に変換します。

    [-p]

    コピーブックがPL/I言語で作成された場合に指定します。指定しない場合のデフォルト値はCOBOLです。

    [-he]

    変換中にセグメント名をEBCDICタイプとして処理します。

使用例

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

$ hdgensch all TMAX01PD -f

上記のコマンドが正常に実行されると、以下のメッセージが表示されます。

hdgensch Version 7.2.0(0) oframe@:ofsrc7/ims(#3) 2018-02-10 16:35:34
HiDB Schema File Generation Program.

--HiDB runs on debug mode
--HiDB connection name is HIDB_NX_CONN
--HiDB will automatically fix data errors
--HiDB DLI functions show data buffer
column information for dbd TMAX01PD removed.

column information for segment REAL generated.

column information for segment TRFC generated.

column information for segment PAYR generated.

column information for segment REGS generated.

copybook information generated.

input filename = /home/arena/oframe_7_fix3/hidb_test/cpybook/TMAX01PD/REAL.cpy
scheme filename = /home/arena/oframe_7_fix3/schema/REAL.conv

 -> Segment('REAL') schema was merged.

input filename = /home/arena/oframe_7_fix3/hidb_test/cpybook/TMAX01PD/TRFC.cpy
scheme filename = /home/arena/oframe_7_fix3/schema/TRFC.conv

 -> Segment('TRFC') schema was merged.

input filename = /home/arena/oframe_7_fix3/hidb_test/cpybook/TMAX01PD/PAYR.cpy
scheme filename = /home/arena/oframe_7_fix3/schema/PAYR.conv

 -> Segment('PAYR') schema was merged.

input filename = /home/arena/oframe_7_fix3/hidb_test/cpybook/TMAX01PD/REGS.cpy
scheme filename = /home/arena/oframe_7_fix3/schema/REGS.conv

 -> Segment('REGS') schema was merged.

HiDB schema('TMAX01PD.conv') was generated successfully.

デフォルトのスキーマ・ディレクトリから、以下のスキーマ・ファイルが作成されていることが確認できます。

$ ls -al
-rw-r--r--   1 adb adb 13862 Oct  6 10:41 TMAX01PD.conv
環境設定
  • 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/openframe/schema
    ===================================================================================
  • OpenFrame環境設定のimsサブジェクトのIMS_DEFAULTセクションのDBDLIB_NAMEキーのVALUE項目に対象データベースのDBDが登録されているDBDLIBを設定します。

    $ ofconfig list -s ims -sec IMS_DEFAULT -k DBDLIB_NAME
    
    ==================================================================================
      SUBJECT   |       SECTION        |       KEY        |             VALUE
    ==================================================================================
        ims     |     IMS_DEFAULT      |   DBDLIB_NAME    |          IMS.DBDLIB
    ===================================================================================

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

5. hdload

hdloadは、ASCIIコードに変換されたOpenFrame標準形式のデータセットの入力を受けて、HiDBデータベースにロードするツールです。

入力データセットは、以下のようなフォーマットで構成されます。DFSURGU0ユーティリティが作成したアンロード・データセットと同じフォーマットです。

figure 1 1
OpenFrame標準データ形式
使用方法

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

Usage: hdload [options] dbd-name load-data-file [log=log-file]
  • [options]

    オプション 説明

    [-v]

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

    [-h]

    ツールのヘルプを表示します。

    [-q]

    二次索引表への挿入なしでロードを実行します。

    [-rmpk]

    hdpcdf01のaddpkで生成したデータを処理する場合にのみ使用します。

    [-mk]

    データをtbLoaderまたはsqlldrでロードするためのフォーマットのファイルを作成します。

    OpenFrame環境設定のhidbサブジェクトのHIDB_DEFAULTセクションのHIDB_IMPORT_DIRキーのVALUE項目にファイルが作成されるパスを指定します。

    [-ld]

    tbLoader(Oracleのsqlldr)を使用して従来型パス・ロードでロードします。

    -mkオプションで作成されたデータをロードします。

    [-ld2]

    tbLoader(Oracleのsqlldr)を使用してダイレクト・パス・ロード(DPL)でロードします。

    -mkオプションで作成されたデータをロードします。

    [-p]

    tbloader DPLをセグメントごとに並列に実行してロードします。

    [-bs] <n>

    tbloaderのブロック・サイズを指定します。

    [-pc] <n>

    tbloaderの並列数を指定します。

    [-mg]

    tbloaderを使用してマージします。

    ロードするデータのキー・フィールドがすでにロードされているキー・フィールドのデータと同じである場合は、REPLACEを実行します。(OCC_IDはアップデートされません)

    ロードするデータのキー・フィールドがすでにロードされているキー・フィールドのデータと異なる場合は、INSERTを実行します

    -mkオプションで作成されたデータをtbloaderを使用してマージします。

    dbd-nameとload-data-fileを指定する必要があります。

    [-qimd]

    -mkオプションと-im2オプションの両方を同時に実行します。

    dbd-nameとload-data-fileを指定する必要があります。

    [-qld]

    -mkオプションと-ldオプションの両方を同時に実行します。

    dbd-nameとload-data-fileを指定する必要があります。

    [-qldd]

    -mkオプションと-ld2オプションの両方を同時に実行します。

    dbd-nameとload-data-fileを指定する必要があります。

    [-qmg]

    -mkオプションと-mgオプションの両方を同時に実行します。

    dbd-nameとload-data-fileを指定する必要があります。

  • 入力項目

    項目 説明

    dbd-name

    入力ファイルのデータベースを定義したDBDの名前を指定します。

    このDBDは、hdloadを実行する前にデフォルトのDBDLIBに登録されている必要があり、最大8文字以内で指定します。

    DBDLIBの登録については、dbdgenツールを参照してください。

    load-data-file

    hdloadでロードする入力ファイルを指定します。ファイルのサイズが0の場合、HDAM、HIDAMデータベースについてはデータセットの初期化(pre-format)が実行されます。

    [log=log-file]

    指定したログ・ファイルにセグメントごとにロード処理に関するログを記録します。ロードが失敗した場合、原因となるセグメント・データを見つける際に有用です。

    ログ・ファイルには、ロード・セグメントの順序、セグメント名、ステータス・コード、セグメント・キー値が記録されます。

使用例

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

$ hdload TMAX01PD tmax01pd.hdb

「TMAX01PD」はロード対象のデータベースを定義したDBDの名前であり、「tmax01pd.hdb」はHiDB標準形式に変換された入力ファイルです。「TMAX01PD.dd」はロード対象データベースのデータセットを動的に割り当てるための情報が入っているファイルで、「res_out」はプレフィックス解決のための出力ファイルです。

hdloadが正常に実行されると、以下のメッセージが表示されます。

hdload Version 7.2.0(0) oframe@tplinux32:ofsrc7/ims(#1) 2017-11-09 23:14:22
HiDB Data Load Program

 (*) HiDB DATA LOAD 100% COMPLETED.

*** HIERARCHICAL DIRECT DB REORG RELOAD ***

         SEGMENT  LEVEL  STATISTICS

       TOTAL SEGMENTS BY SEGMENT TYPE
===========================================
SEGMENT   SEGMENT
NAME      LEVEL       RELOADED  DIFFERENCE
-------------------------------------------
TMAX1VAA     1            9628
TMAX1VAD     2            9628
TMAX1VAE     2               0
TMAX1VAB     2           28243
TMAX1VAF     3           28243
TMAX1VAC     3           15586
TMAX1VAG     2               0
-------------------------------------------
         TOTAL SEGMENTS IN DATABASE
UNLOADED          RELOADED      DIFFERENCE
   91328             91328
===========================================

EXECUTION TIME(USER/SYS/REAL): 11.62, 5.34, 148.01
  • SEGMENT LEVEL STATISTICSフィールドの項目

    項目 説明

    SEGMENT NAME

    対象セグメントの名前です。

    SEGMENT LEVEL

    データベース内セグメントの階層レベル番号です。

    RELOADED

    データベースにリロードされたセグメント・インスタンスの合計です。

    DIFFERENCE

    リロード件数とアンロード件数が一致すると、空白で表示されます。

    リロード件数が多い場合はプラス記号(+)、アンロード件数が多い場合はマイナス記号(-)と共に差異件数が表示されます。

  • TOTAL SEGMENTS IN DATABASEフィールドの項目

    項目 説明

    UNLOADED

    HD再編成アンロード・ユーティリティであるDFSURGU0でアンロードするときに計数したすべてのセグメント・インスタンスの数です。

    RELOADED

    HD再編成リロード・ユーティリティであるDFSURGL0でリロードするときに計数したすべてのセグメント・インスタンスの数です。

    DIFFERENCE

    リロード件数とアンロード件数が一致すると、空白で表示されます。一致しない場合は差異件数が表示されます。

環境設定

OpenFrame環境設定のimsサブジェクトのIMS_DEFAULTセクションのDBDLIB_NAMEキーのVALUE項目にターゲット・データベースのDBDが登録されているDBDLIBを設定します。

$ ofconfig list -s ims -sec IMS_DEFAULT -k DBDLIB_NAME

===================================================================================
  SUBJECT   |     SECTION      |        KEY         |             VALUE
===================================================================================
    ims     |   IMS_DEFAULT    |    DBDLIB_NAME     |           IMS.DBDLIB
===================================================================================

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

6. hdpcdf01

hdpcdf01は、メインフレームIMS/DBのアンロード・ユーティリティであるDFSURGU0で作成したデータセットの入力を受けて、HiDBのリロード・ツールであるhdloadで使用可能なHiDB標準形式のデータセットを作成するツールです。

DFSURGU0で作成したアンロード・データセットはHiDBデータベースにリロードが不可能なため、メインフレームで作成したアンロード・データセットの内部フォーマットを分析し、ヘッダーとトレーラーを削除して、OpenFrameでリロード可能な形態のデータセットに再作成します。

出力データセットは以下のフォーマットで構成されます。

figure 1 1
OpenFrame標準データ形式
使用方法

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

Usage: hdpcdf01 [options] [format] if=input-file of=output-file dbd=dbd-name
  • [options]

    オプション 説明

    [-v]

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

    [-h]

    ツールのヘルプを表示します。

    [-d]

    hdpcdf01を実行中に入力ファイルの現在の処理段階を表示します。

    [-hp number]

    入力ファイルの内部フォーマットを分析する際に、ヘッダーの長さを計算する場合にバイト値を追加します。

    [-dp number]

    入力ファイルの内部フォーマットを分析する際に、セグメント・データの長さを計算する場合にバイト値を追加します。

    [-rdw]

    入力ファイルがRDW(4バイト)が含まれた可変長のデータセットである場合に指定します。

    [-addpk]

    データセットのマイグレーション・プロセスで子セグメントを変換する際に親セグメントのキー領域を参照することがあります。このオプションを指定すると、子セグメント・レコードの先頭に親セグメントのキー領域を追加します。

  • [format]

    オプション 説明

    [-f1]

    入力ファイルがSHISAMデータベースをアンロードしたデータセットの場合に指定します。

    [-dedb]

    入力ファイルがDEDBデータベースをアンロードしたデータセットの場合に指定します。

  • 入力項目

    項目 説明

    if=input-file

    hdpcdf01の入力ファイルを指定します。メインフレームIMS/DBのアンロード・ユーティリティであるDFSURGU0により作成されたデータセットのファイル名を指定します。

    of=output-file

    hdpcdf01の出力ファイルを指定します。出力ファイルはマイグレーション・ツールのdsmiginの入力として使用されます。

    dbd=dbd-name

    入力ファイルのデータベースを定義したDBDの名前を指定します。

    このDBDは、hdpcdf01を実行する前にデフォルトのDBDLIBに登録されている必要があり、最大8文字以内で指定します。DBDLIBの登録については、dbdgenツールを参照してください。

使用例

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

$ hdpcdf01 if=tmax01uld.dat of=tmax01uld.hdb dbd=TMAX01PD

上記のコマンドが正常に実行されると、以下のようなメッセージが表示されます。

hdpcdf01 version 7.2.0(1) obuild@tplinux32:ofsrc7/ims(#1) 2017-11-09 23:14:22
HiDB Pre-conversion Program

 * Bytes of Header Part    : 243
 * Bytes of Trailer Part   : 245
 * Bytes of Input file     : 23147438
 * Position of Trailer part: 23147193
 * Current Position of Reading:23146727, Segment:TMAX1VAA
 * MESSAGE: input data reading success.

   *** HDPCDF01  DATA CONVERSION  ***

         SEGMENT  LEVEL  STATISTICS
       TOTAL SEGMENTS BY SEGMENT TYPE
===========================================
SEGMENT                     READ
NAME                        COUNT
-------------------------------------------
TMAX1VAA                    9629
TMAX1VAD                    9628
TMAX1VAE                       0
TMAX1VAB                   28243
TMAX1VAF                   28243
TMAX1VAC                   15586
-------------------------------------------
TOTAL SEGMENTS IN DATABASE = 91329
===========================================

デフォルト・スキーマ・ディレクトリから、以下のスキーマ・ファイルが作成されていることが確認できます。

$ ls -al
-rw-r--r--   1 adb adb 13862 Oct  6 10:41 TMAX01PD.conv
環境設定
  • 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/openframe/schema
    ===================================================================================
  • OpenFrame環境設定のimsサブジェクトのIMS_DEFAULTセクションのDBDLIB_NAMEキーのVALUE項目にターゲット・データベースのDBDが登録されているDBDLIBを設定します。

    $ ofconfig list -s ims -sec IMS_DEFAULT -k DBDLIB_NAME
    
    ===================================================================================
      SUBJECT   |     SECTION      |        KEY         |             VALUE
    ===================================================================================
        ims     |   IMS_DEFAULT    |    DBDLIB_NAME     |           IMS.ACBLIB
    ===================================================================================

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

7. hidbptrmgr

hidbptrmgrは、HiDBの二次索引セグメント表と論理関係で使用されるIDマッピング情報を管理するためのツールです。

二次索引では、ターゲットDBDに存在するセグメント関連の索引セグメント表にデータを挿入し、論理関係では、ターゲットDBDに論理子セグメントが存在する場合は、論理親を見つけてLPARENT_ID列を更新します。

hidbptrmgrは、OpenFrame環境設定のhidbサブジェクトのHIDB_DEFAULTセクションのNO_INDEX_TABLEキーのVALUE項目の設定値がNOに設定されている環境で索引ソース・セグメントを持つDBDをhdload -qオプションで実行した場合や論理関係を使用する環境で論理子セグメントを持つDBDをhdloadコマンドで実行した場合、このツールを使用する必要があります。

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

使用方法

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

Usage: hidbptrmgr <command> dbd-name
  • <command>

    コマンド 説明

    si

    ターゲットDBDに存在する二次索引ソース・セグメントに関連する二次索引表にデータを入力します。

    lr

    ターゲットDBDに存在する論理子セグメント表のLPARENT_ID列(論理親ID列)を更新します。

    all

    siコマンドとlrコマンドの両方を処理します。

    sil

    tbloader(Oracleのsqlldr)を使用して従来の方法でsiオプションをロードします。

    sil2

    tbloader(Oracleのsqlldr)を使用してDPL方式でsiオプションをロードします。

    lr2

    lrオプションと同じですが、内部でクエリの発行を減らします。

    lr3

    lr2オプションと同じですが、merge文を使用します。

    lr4

    論理子セグメント表のLPARENT_ID列(論理親ID列)を表単位で更新します。

  • 入力項目

    項目 説明

    dbd-name

    処理するDBD名を指定します。

使用例

以下は、hidbptrmgrの実行例です。

$ hidbptrmgr si TESTDBD1
$ hidbptrmgr lr TESTDBD2

上記のコマンドが正常に実行されると、以下のメッセージが表示されます。

HIDBPTRMGR version 7.2.0(0) tmaxtp@:oframe/ims(#1) 2017-11-29 09:50:54
HiDB secondary index build tool - insert data to secondary index segment table

HIDBPTRMGR: successfully finished the request for the DBD TESTDBD

EXECUTION TIME(USER/SYS/REAL): 0.02, 0.00, 0.08

8. hidbreconv

hidbreconvは、HiDBのデータを再びソース・データベースにロードする場合に、OpenFrame/HiDBの出力データ形式をソース・データベースの入力データ形式に変換するツールです。hdpcdf01の操作を反対に行います。

HiDBのデータをDFSURGU0でアンロードしてdsmigoutを実行すると、ソース・データベースと同じ文字セットのデータに変換されます。ソース・データベースのロード・ユーティリティを使用するためには、hdpcdf01で削除したヘッダーを再作成する必要があります。このツールは、dsmigoutの実行で生成されたデータにソース・データベースのヘッダー情報を追加します。

使用方法

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

Usage: hidbreconv <dbd_name> <input_filepath> [output_filepath] [options]
  • 入力項目

    項目 説明

    dbd_name

    入力ファイルのデータベースを定義したDBDの名前を指定します。

    input_filepath

    DFSURGU0でアンロードし、dsmigoutで移行した入力ファイルを指定します。

    output_filepath

    出力ファイルを指定します。この値を指定しない場合、現在のディレクトリに「入力ファイル名.rfm」という名前で作成されます。

  • [options]

    オプション 説明

    [-v]

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

    [-h]

    ツールのヘルプを表示します。

    [-ftpb]

    FTP -B形式で出力ファイルを作成します。

使用例

以下は、hidbreconvを実行してソース・データベースにロードするデータを作成する例です。

$ hidbreconv TSTDBD hidbuld.dat hidbuld.rfm

上記のコマンドが正常に実行されると、以下のメッセージが表示されます。

hidbreconv version 7.2.0(0) oframe@:ofsrc7/ims(#2) 2017-11-29 09:50:54
Convert HiDB segment data

hidbreconv: process request
  --DBD: TSTDBD
  --Input file: hidbuld.dat
  --Output file: hidbuld.rfm
EXECUTION TIME(USER/SYS/REAL): 0.00, 0.00, 0.00

hidbreconv: request for the DBD TSTDBD is finished successfully
  --Input file: hidbuld.dat
  --Output file: hidbuld.rfm