OpenFrame HiDBの再編成ユーティリティ

本章では、OpenFrame HiDBデータベースの再編成ユーティリティについて説明します。

1. 概要

以下は、OpenFrame HiDB(以下、HiDB)データベースを再編成するためのユーティリティです。各ユーティリティについての詳細は、各節で説明します。

プログラム名 説明

DFSURGL0

HD再編成アンロード・ユーティリティであるDFSURGU0によって作成されたデータセットをHDデータベースにリロードします。

DFSURGU0

HDAM、HIDAM、またはHISAM編成法で定義されたデータベースを順次データセット(SDS)にアンロードします。

2. DFSURGL0

DFSURGL0は、HD再編成アンロード・ユーティリティであるDFSURGU0によって作成されたデータセットをHDAM、HIDAMまたはHISAMデータベースにリロードするためのユーティリティ・プログラムです。

以下は、DFSURGL0が提供する機能です。

  • DFSURGU0によって作成された再編成アンロード・データセットをHDAM、HIDAM、HISAMデータベースにリロードします。

  • 論理関係または二次索引の情報が含まれた作業データセットを作成します。

  • データベースをリロードした後、セグメントの統計情報を出力します。

HiDBのDFSURGL0ユーティリティは、IBM IMS/DBのDFSURGL0ユーティリティに対応されます。

2.1. EXEC文の設定

以下は、EXEC文の構文です。

PGM=DFSRRC00,PARM='ULU,DFSURGL0,dbd-name'
項目 説明

PGM

DFSURGL0は、IMS/DBを使用するプログラムの実行ユーティリティであるDFSRRC00を介して実行されます。

PARM

  • ULU,DFSURGL0: ユーティリティ領域のDFSURGL0を実行します。

  • dbd-name: リロード対象データベースのDBD名を指定します。

2.2. DD文の設定

以下は、DDの設定項目です。

項目 説明

IMS DD

EXEC文でパラメータとして入力したDBDが入っているライブラリを指定します。(必須項目)

database DD

アンロード対象のデータベース・データセットを指定します。(必須項目)

データベースのDD名はDBDにあるDD名と一致している必要があります。HIDAMデータベースの場合は、関連する索引データセットも一緒に指定します。

SYSPRINT DD

DFSURGL0ユーティリティのメッセージが出力されます。(必須項目)

DFSUINPT DD

リロード対象の入力データセットを指定します。HD再編成アンロード・ユーティリティであるDFSURGU0によって作成されたデータセットです。(必須項目)

入力データセットをDUMMYと記述した場合は、HDAMとHIDAMデータベースが初期化されます。

DFSURWF1 DD

リロード対象のデータベースがセグメント間の論理関係を持つ場合に作成する作業データセットを指定します。

データセットは接頭部解決ユーティリティであるDFSURGL0によって入力データセットとして使用され、リロード時に発生した論理関係または二次索引関連の情報が含まれます。

DFSURCDS DD

HiDBでは、構文解析のみサポートします。

DFSURLOG DD

リロード・ログを出力するデータセットを指定します。(選択項目)

リロードに失敗した場合、その原因となるセグメント・データを見つける際に使用します。ログ・データセットには、リロード入力データセットのセグメント順番、セグメント名、ステータス・コード、セグメント・キー値が記録されます。

2.3. コマンドの設定

OpenFrameのDFSURGL0ユーティリティはコマンドを使用しません。したがって、IBMメインフレームの制御文を記述しても無視されます。

2.4. 統計情報

データベースのリロードが正常に終了すると、SYSPRINT DDに以下のような統計情報が出力されます。

*** HIERARCHICAL DIRECT DB REORG RELOAD ***

          SEGMENT  LEVEL  STATISTICS

        TOTAL SEGMENTS BY SEGMENT TYPE
 ===========================================
 SEGMENT   SEGMENT
 NAME      LEVEL       RELOADED  DIFFERENCE
 -------------------------------------------
 PBM01VAA     1            9628
 PBM01VAD     2            9628
 PBM01VAE     2               0
 PBM01VAB     2           28243
 PBM01VAF     3           28243
 PBM01VAC     3           15586
 PBM01VAG     2               0
 -------------------------------------------
          TOTAL SEGMENTS IN DATABASE
 UNLOADED          RELOADED      DIFFERENCE
    91328             91328
 ===========================================
  • SEGMENT LEVEL STATISTICSフィールドの項目

    項目 説明

    SEGMENT NAME

    同一行の統計情報が適用されるセグメント名です。

    SEGMENT LEVEL

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

    RELOADED

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

    DIFFERENCE

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

    アンロードよりもリロードの数が大きければプラス記号(+)が、アンロードの数が大きければマイナス記号(-)が付けられます。

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

    項目 説明

    UNLOADED

    HD再編成アンロード・ユーティリティであるDFSURGU0によってカウントされたすべてのセグメント・インスタンスの総数です。

    RELOADED

    HD再編成リロード・ユーティリティであるDFSURGL0によってカウントされたすべてのセグメント・インスタンスの総数です。

    DIFFERENCE

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

2.5. 使用例

以下は、HD再編成アンロード・ユーティリティであるDFSURGU0によって作成されたTMAX01.DB1データセットをDFSUINPT DDに指定し、TMAX01DB DBDに定義されているデータベースにリロードする例です。

//DFSURGL0    JOB   MSGLEVEL=1,MSGCLASS=X,CLASS=A,REGION=4096K
//*******************************************************************
//*    R E L O A D  ( H I D A M )
//*******************************************************************
//STEP020    EXEC   PGM=DFSRRC00,PARM='ULU,DFSURGL0,TMAX01DB'
//STEPLIB      DD   DSN=IMSVS.RESLIB,DISP=SHR
//IMS          DD   DSN=IMS.DBDMOD,DISP=SHR
//SYSPRINT     DD   SYSOUT=*
//DFSUINPT     DD   DSN=TMAX01.DB1,DISP=SHR
//DFSURWF1     DD   DSN=TMAX01.DFSURWF1,UNIT=3380,
//             SPACE=(TRK,(5000,500),RLSE),
//             DCB=(BLKSIZE=1008,LRECL=300,RECFM=VB),
//             DISP=(,CATLG,DELETE)
//DFSURCDS     DD   DSN=TMAX01.DFSURCDS,DISP=SHR
//TMAX01I1     DD   DSN=TMAX01.IX1,DISP=SHR
//TMAX01D1     DD   DSN=TMAX01.DD1,DISP=SHR
//TMAX01D2     DD   DSN=TMAX01.DD2,DISP=SHR

TMAX01I1 DDは、索引データセットを指定したものであり、TMAX01D1とTMAX01D2 DDは、データベース・データセットを指定したものです。DFSURWF1 DDは、論理関係情報が含まれたTMAX01. DFSURWF1データセットを指定したものであり、リロード中に作成され、接頭部解決ユーティリティのDFSURGL0で入力データセットとして使用されます。

2.6. 戻りコード

以下は、DFSURGL0ユーティリティの戻りコードです。

  • 正常に実行された場合

    戻りコード0を返します。

  • エラーが発生した場合

    SYSPRINT DDにエラーメッセージを出力し、該当するエラーコードを返します。

    コード 説明

    4

    リロード対象のセグメントが存在しない場合に発生します。

    8

    リロードとアンロードの数が一致しない場合に発生します。

    16

    プログラム処理またはシステム・エラーです。次のような場合に発生します。

    • OpenFrameシステム・ライブラリの初期化に失敗した場合

    • データベース・リロードに失敗した場合

    • その他のDFSURGL0ユーティリティ・プログラムのエラー

3. DFSURGU0

DFSURGU0は、HDAM、HIDAMまたはHISAMアクセス方式で定義されたデータベースを読み取り、データベースの再編成に必要な順次データセット(SDS)を作成するためのユーティリティ・プログラムです。

以下は、DFSURGU0が提供する機能です。

  • HDAM、HIDAM、HISAMデータベースを再編成するためのアンロード・データセットを作成します。

  • アンロード・データセットのセグメント統計情報の出力します。

HiDBのDFSURGU0ユーティリティは、IBM IMS/DBのDFSURGU0ユーティリティに対応されます。

3.1. EXEC文の設定

以下は、EXEC文の構文です。

PGM=DFSRRC00,PARM='ULU,DFSURGU0,dbd-name,[formatopt]'
項目 説明

PGM

DFSURGU0は、IMS/DBを使用するプログラムの実行ユーティリティであるDFSRRC00を介して実行されます。

PARM

  • ULU, DFSURGU0 : ユーティリティ領域のDFSURGU0を実行します。

  • dbd-name : アンロード・ターゲット・データベースのDBD名を指定します。

  • [formatopt]

    • NOSEGNAME : 出力形式からセグメント名を省略します。

    • -IXPDTFDV : 出力形式を元のデータベースのデータ出力形式に合わせます。

3.2. DD文の設定

以下は、DDの設定項目です。

項目 説明

IMS DD

EXEC文でパラメータとして入力したDBDが入っているライブラリを指定します。(必須項目)

database DD

アンロード対象のデータベース・データセットを指定します。(必須項目)

データベースのDD名はDBDにあるDD名と一致している必要があります。HIDAMデータベースの場合は、関連する索引データセットも一緒に指定します。

SYSPRINT DD

DFSURGU0ユーティリティのメッセージが出力されます。(必須項目)

DFSURGU1 DD

データベースをアンロードして出力する順次データセットを指定します。(必須項目)

アンロード・データセットのフォーマットについては、HiDBマイグレーション・データ・フォーマットを参照してください。

3.3. コマンドの設定

OpenFrameのDFSURGU0ユーティリティはコマンドを使用しません。したがって、IBMメインフレームの制御文を記述しても無視されます。

3.4. 統計情報

データベースのアンロードが正常に終了すると、SYSPRINT DDに以下のような統計情報が出力されます。

 ******************** HIERARCHICAL DIRECT DB REORG UNLOAD **********************

                     D A T A B A S E    S T A T I S T I C S
 SEGMENT LEVEL STATISTICS                          RECORD LEVEL STATISTICS
 ===============================================================================
 MAXMUM  AVG    MAXIMUM  AVG      SEGMENT  SEGMENT TOTAL SEGMENTS  AVG COUNT PER
 TWINS   TWINS  CHILDREN CHILDREN NAME     LEVEL   BY SEG TYPE     DB RECORD
 -------------------------------------------------------------------------------
       1  1.00      1873  8.48    PBM01VAA       1           9628        1.00
       1  1.00         0  0.00    PBM01VAD       2           9628        1.00
       0  0.00         0  0.00    PBM01VAE       2              0        0.00
     567  2.93        12  1.55    PBM01VAB       2          28243        2.93
       1  1.00         0  0.00    PBM01VAF       3          28243        2.93
      11  0.55         0  0.00    PBM01VAC       3          15586        1.61
 -------------------------------------------------------------------------------
 TOTAL SEGMENTS IN DATABASE=   91328 AVERAGE DATABASE RECORD LENGTH=  2271 BYTES
 ===============================================================================
  • SEGMENT LEVEL STATISTICSフィールドの項目

    項目 説明

    MAXIMUM TWINS

    同じ親セグメント・インスタンスの下にあるツイン・セグメント・インスタンスの最大数です。ルート・セグメントの値は、常に1です。

    AVG TWINS

    同じ親セグメント・インスタンスの下にあるツイン・セグメント・インスタンスの平均数です。

    MAXIMUM CHILDREN

    同じ親セグメント・インスタンスの下にある子セグメント・インスタンスの最大数です。

    AVG CHILDREN

    同じ親セグメント・インスタンスの下にある子セグメント・インスタンスの平均数です。最下位にあるセグメントの値は0です。

    SEGMENT NAME

    同じ行の統計情報が適用されるセグメント名です。

    SEGMENT LEVEL

    セグメントの階層レベルです、上位から順にリストされます。

  • RECORD LEVEL STATISTICSフィールドの項目

    項目 説明

    TOTAL SEGMENTS BY SEG TYPE

    同じセグメント・タイプを持つインスタンスの総数です。

    AVG COUNT PER DB RECORD

    1つのレコードに入っている同じセグメント・タイプを持つインスタンスの平均数です。

3.5. 使用例

以下は、TMAX01DB DBDに定義されているデータベースを読み取り、DFSURGU1 DDのTMAX01.DB1データセットにアンロードする例です。

//DFSURGU0    JOB   MSGLEVEL=1,MSGCLASS=X,CLASS=A,REGION=4096K
//******************************************************************
//*    HD REORGANIZATION UNLOAD UTILITY (DFSURGU0)                 *
//******************************************************************
//STEP010    EXEC   PGM=DFSRRC00,PARM='ULU,DFSURGU0,TMAX01DB'
//STEPLIB      DD   DSN=IMSVS.RESLIB,DISP=SHR
//IMS          DD   DSN=IMS.DBDMOD,DISP=SHR
//SYSPRINT     DD   SYSOUT=*
//TMAX01I1     DD   DSN=TMAX01.IX1,DISP=SHR
//TMAX01D1     DD   DSN=TMAX01.DD1,DISP=SHR
//TMAX01D2     DD   DSN=TMAX01.DD2,DISP=SHR
//DFSURGU1     DD   DSN=TMAX01.DB1,DISP=(,CATLG,DELETE),
//             UNIT=3380,LABEL=(,SL)

TMAX01I1 DDは、索引データセットを指定したものであり、TMAX01D1とTMAX01D2 DDは、データベース・データセットを指定したものです。

3.6. 戻りコード

以下は、DFSURGU0ユーティリティの戻りコードです。

  • 正常に実行された場合

    戻りコード0を返します。

  • エラーが発生した場合

    SYSPRINT DDにエラーメッセージを出力し、該当するエラーコードを返します。

    コード 説明

    8

    プログラム処理またはシステム・エラーです。次のような場合に発生します。

    • OpenFrameシステム・ライブラリの初期化に失敗した場合

    • その他のDFSURGU0ユーティリティ・プログラムのエラー