データベース・ユーティリティ

本章では、データベースを管理するためのユーティリティについて説明します。

1. 概要

以下は、データベース・ユーティリティの一覧です。

プログラム名 説明

DSNMTV01

アプリケーション・プログラムからESQLまたはODBCなどのデータベースへのアクセスを実行します。

DSNTEP2

DB2データベースにSQLを発行します。

DSNTIAD

データベース情報への問い合わせおよび更新のためのデータ操作言語(DML)を実行します。

DSNTIAUL

IKJEFT01ユーティリティを介してDB2データベースの表データをOpenFrameデータセットにアンロードします。

DSNUTILB

データベースにコマンドを発行します。

INZUTILB

DB2データベースの表データをOpenFrameデータセットにアンロードします。

2. DSNMTV01

DSNMTV01は、OpenFrame HiDBを介したDL/Iの呼び出しやアプリケーション・プログラムからESQLまたはODBCなどのデータベースへのアクセスを実行するユーティリティ・プログラムです。

2.1. DDの設定

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

項目 説明

DDITV02 DD

データベースの接続情報と実行するアプリケーションを指定します。

以下は、データセットに指定するパラメータです。

SSN,LIT,ESMT,RTT,REO,CRC,CONN,PLAN,PROG
  • SSN : 接続するターゲット・データベースのシステム名です。

  • LIT : 言語インターフェース・トークン(Language Interface Token)です。OpenFrameでは無視されます。

  • ESMT : DB2を使用する場合の初期化モジュール名です。OpenFrameでは無視されます。

  • RTT : リソース変換テーブル(Resource Translation Table)です。OpenFrameでは無視されます。

  • REO : 領域エラー・オプション(Region Error Option)です。OpenFrameでは無視されます。

  • CRC : コマンド認識文字(Command Recognition Character)です。OpenFrameでは無視されます。

  • CONN : 接続名です。OpenFrameでは無視されます。

  • PLAN : DB2のPLAN名です。OpenFrameでは無視されます。

  • PROG : 実行するアプリケーション・プログラム名です。

2.2. コマンドの設定

JCLでEXEC PGMを使用してDSNMTV01を直接呼び出すことはできます。JCLでDL/Iを呼び出すためにDFSRRC00ユーティリティを実行する場合は、DSNMTV01をMBRに指定して実行します。

//JOB01   JOB  CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//JOBLIB  DD   DSN=SYS1.COBLIB,DISP=SHR
//STEP    EXEC PGM=DFSRRC00,
//             PARM='DLI,DSNMTV01,HOSPPSB,,0000,,0,,N,O,T'
//SYSOUT  DD   SYSOUT=*
//DDITV02 DD   DSN=DSNMTV01.PARMLIB(SAMPLE),DISP=SHR
//*

2.3. 使用例

以下は、DFSRRC00ユーティリティでPSBにHOSPPSB、MBRにDSNMTV01を指定する例です。DFSRRC00は、PSBの情報をロードした後、DSNMTV01を呼び出して、dsnmtv01.confからDB2Qに指定されたデータベースの接続情報を読み込んでデータベースに接続し、TESTPGMというプログラムを実行します。

<JCL>

//JOB01   JOB  CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//JOBLIB  DD   DSN=SYS1.COBLIB,DISP=SHR
//STEP    EXEC PGM=DFSRRC00,
//             PARM='DLI,DSNMTV01,HOSPPSB,,0000,,0,,N,O,T'
//SYSOUT  DD   SYSOUT=*
//DDITV02 DD   DSN=DSNMTV01.PARMLIB(SAMPLE),DISP=SHR
//*

<DDITV02 DD>

DB2Q,SYS1,DSNMIN10,,A,-,MP13J120,TESTPGM,TESTPGM

2.4. 環境設定

データベースの名前と接続情報をOpenFrame環境設定のdsnmtv01サブジェクトのセクションを設定します。

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

  2. DSNMTV01では、libtdbconnswモジュールを使用してデータベースに接続するため、libtdbconnswモジュールのターゲットとなるデータベースのライブラリをリンクする必要があります。

2.5. 戻りコード

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

  • 正常に実行された場合

    バッチ・アプリケーションからの戻りコードを返します。

  • エラーが発生した場合

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

    コード 説明

    12

    次のいずれかの場合です。

    • DDITV02 DDを指定しなかった場合

    • DDITV02 DDに指定されたデータセット・フォーマットが無効な場合

    • データベースに接続できなかった場合

    • 実行するアプリケーションが見つからないか、実行できなかった場合

3. DSNTEP2

SELECT/DELETE/UPDATE/INSERT SQLとCOMMIT/ROLLBACK文を使用できます。SQLを実行した後、内部でCOMMITコマンドを実行し、ユーティリティが終了されます。

3.1. DDの設定

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

項目 説明

SYSTSPRT DD

IKJEFT01でDSNTEP2を実行する際、処理結果またはエラーメッセージを出力するデータセットを指定します。

SYSTSIN DD

IKJEFT01でDSNTEP2を実行するためのDSNコマンドとRUNコマンドを指定します。

SYSPRINT DD

SYSOUT DD

メッセージを出力するための出力データセットを指定します。

SYSOUT DDとSYSPRINT DDを両方とも使用できます。SYSOUT DDとSYSPRINT DDが同時に設定された場合は、SYSOUT DDが使用されます 。

SYSIN DD

実行するデータベースSQL問合せが含まれている入力データセットを指定するか、実行するSQL問合せを直接定義します。

1行は72文字以内にし、行継続文字として「^」を使用します。

3.2. コマンドの設定

DSNTEP2を実行するには、以下のようにJCLのEXEC文にIKJEFT01を指定し、SYSTSIN DDにDSNコマンドとRUNコマンドを指定します。SYSTSINの使用方法については、IKJEFT01のコマンド設定を参照してください。

//JOB01   JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//STEP    EXEC PGM=IKJEFT01
//SYSTSIN DD *
 DSN SYSTEM(DBPA)
 RUN PROGRAM(DSNTEP2) PLAN(DSNTEP81) LIB('DSN810.RUNLIB.LOAD')
//*

3.3. 使用例

以下は、IKJEFT01ユーティリティがデータベース・システムに接続された後、DSNTEP2ユーティリティを呼び出してSYSIN DDに記述されたSQL問合せを実行し、その結果をSYSPRINTに出力する例です。

//JOB02    JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//RUNTEP2  EXEC PGM=IKJEFT01,DYNAMNBR=20
//SYSTSPRT DD SYSOUT=*
//SYSTSIN  DD *
 DSN SYSTEM(DBPA)
 RUN PROGRAM(DSNTEP2) PLAN(DSNTEP81) LIB('DSN810.RUNLIB.LOAD')
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
  SELECT * FROM DSN8810.PROJ;
/*

上記のコマンドを実行すると、以下のような結果が得られます。

###### DSNTEP2 DB INFO : USERNAME=tibero,PASSWORD=****,DATABASE=tb_rbtest
##### time check - begin #####
PAGE    1
***INPUT STATEMENT:
    SELECT *
    FROM DSN8810.PROJ;
       +-----------------------------------+
       ! COLONE               ! COLTWO     !
       +-----------------------------------+
     1_! AAA                  !        392 !
     2_! AAA                  !        105 !
       +-----------------------------------+
SUCCESSFUL RETRIEVAL OF          2 ROW(S)
****************************************** Bottom of Data ******************************************
##### time check - end : elapsed time(sec) = 0.000983 #####

以下は、SYSIN DDにUPDATEコマンドを入力し、その実行結果をSYSPRINTに出力する例です。

//JOB02    JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//RUNTEP2  EXEC PGM=IKJEFT01,DYNAMNBR=20
//SYSTSPRT DD SYSOUT=*
//SYSTSIN  DD *
 DSN SYSTEM(DBPA)
 RUN PROGRAM(DSNTEP2) PLAN(DSNTEP81) LIB('DSN810.RUNLIB.LOAD')
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
  UPDATE TEST_TABLE SET COLONE = 'TESTVALUE'
/*

上記のコマンドを実行すると、以下のような結果が得られます。

###### DSNTEP2 DB INFO : USERNAME=tibero,PASSWORD=****,DATABASE=tb_rbtest
##### time check - begin #####
PAGE    1
***INPUT STATEMENT:
    UPDATE TEST_TABLE
    SET COLONE = 'TESTVALUE' ;
NUMBER OF ROWS AFFECTED 2
****************************************** Bottom of Data ******************************************
##### time check - end : elapsed time(sec) = 0.000350 #####

3.4. 環境設定

  • データベース接続情報

    データベースの名前と接続情報をOpenFrame環境設定のikjeft01サブジェクトのSYSTEM:{system}セクションに設定します。IKJEFT01でDSNコマンドを使用して指定したシステム名に該当する接続情報を利用します。

    ikjeft01とdbutilサブジェクトの設定方法については、OpenFrame Batch『環境設定ガイド』を参照してください。

3.5. 戻りコード

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

  • 正常に実行された場合

    バッチ・アプリケーションからの戻りコードを返します。

  • エラーが発生した場合

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

    コード 説明

    0

    コマンドが正常に処理された場合です。情報メッセージが表示されることがあります。

    4

    次のいずれかの場合です。

    • データベース実行中に警告(WARNING)が発生した場合

    • UPDATE/DELETEを実行して影響を受けたレコードがない場合

    8

    次のいずれかの場合です。

    • データベース情報を指定していない場合

    • SYSREC00 DDを指定していない場合

    • SYSIN DDを指定していない場合

    • SQL実行中にエラーが発生した場合

    12

    次のいずれかの場合です。

    • 内部ライブラリの使用中にエラーが発生した場合

    • データベース接続に失敗した場合

    • SYSINに対してLRECL値が一致しないか、または72行目以降の領域に文字が存在する場合

4. DSNTIAD

DSNTIADは、データベース情報への問合せおよび更新するためのデータ操作言語(DML)を実行するユーティリティ・プログラムです。Tibero、DB2、Oracleで使用できます。

4.1. DDの設定

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

項目 説明

SYSTSPRT DD

IKJEFT01でDSNTIADを実行する際、処理結果またはエラーメッセージを出力するデータセットを指定します。

SYSTSIN DD

IKJEFT01でDSNTIADを実行するためのDSNコマンドとRUNコマンドを指定します。

SYSPRINT DD

SYSOUT DD

メッセージを出力するための出力データセットを指定します。

SYSOUT DDとSYSPRINT DDを両方とも使用できます。SYSOUT DDとSYSPRINT DDが同時に設定された場合は、SYSOUT DDが使用されます 。

SYSIN DD

実行するデータベースSQL問合せが含まれている入力データセットを指定するか、実行するSQL問合せを直接定義します。

1行は72文字以内にし、行継続文字として「^」を使用します。

4.2. コマンドの設定

DSNTIADを実行するには、以下のようにJCLのEXEC文にIKJEFT01を指定し、SYSTSIN DDにDSNコマンドとRUNコマンドを指定します。SYSTSINの使用方法については、IKJEFT01のコマンド設定を参照してください。

//JOB01   JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//STEP    EXEC PGM=IKJEFT01
//SYSTSIN DD *
 RUN PROGRAM(DSNTIAD) PLAN(DSNTEP81) LIB('DSN810.RUNLIB.LOAD')
//*

4.3. 使用例

以下は、IKJEFT01ユーティリティがデータベース・システムに接続された後、DSNTIADユーティリティを呼び出してSYSIN DDに記述されたSQL問合せを実行し、その結果をSYSPRINTに出力する例です。

DSNTIADがサポートするコマンドには、挿入(INSERT)、更新(UPDATE)、削除(DELETE)があり、1つの制御文に複数のSQL文を使用することができます。複数のSQL文の実行中に10個のSQL文でエラーが発生すると、エラーを返します。

//JOB02    JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//RUNTEP2  EXEC PGM=IKJEFT01,DYNAMNBR=20
//SYSTSPRT DD SYSOUT=*
//SYSTSIN  DD *
 RUN PROGRAM(DSNTIAD) PLAN(DSNTEP81) LIB('DSN810.RUNLIB.LOAD')
//*
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
INSERT INTO DSNTAID_GROUP(GROUPNAME, OWNER, SUPGROUP, SUBGRPS, MODEL,
        DATA, CREATION, FLAGS)
VALUES('TESTGRP3', 'JUNG', NULL, NULL, NULL, NULL, '20101005', 0);
DELETE FROM DSNTAID_GROUP WHERE GROUPNAME = 'TESTGRP2';
UPDATE DSNTAID_GROUP SET OWNER = 'TEST01' WHERE GROUPNAME = 'TESTGRP1';
/*

4.4. 環境設定

データベースの名前と接続情報をOpenFrame環境設定のikjeft01サブジェクトのSYSTEM:{system}セクションのキーに設定します。

ikjeft01サブジェクトの設定方法については、OpenFrame Batch『環境設定ガイド』を参照してください。

4.5. 戻りコード

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

  • 正常に実行された場合

    バッチ・アプリケーションからの戻りコードを返します。

  • エラーが発生した場合

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

    コード 説明

    0

    コマンドが正常に処理された場合です。情報メッセージが表示されることがあります。

    4

    データベースでSQLの実行中に警告(WARNING)が発生したか、または結果セットがない場合です。

    8

    データベースでSQLを実行中にエラーが発生した場合です。

    12

    SYSINに無効なSQLが指定されています。

4.6. その他の事項

DSNTIADは、ODBC(Open DataBase Connectivity)とOCI(Oracle Call Interface)バージョンを提供します。以下は、OpenFrameでDSNTIADを使用する方法です。

  • ODBCは、DBMSとアプリケーション間の依存関係を排除し、DBMSの種類に関係なく、データベースを操作できるようにします。ODBCマネージャーとODBCドライバーが必要です。

  • OCIは、Oracleによって提供されるAPIです。OCIを使用するには、Oracleクライアントに含まれているOCIライブラリが必要です。

    ODBCバージョンのDSNTIADは、Tibero、DB2、OracleなどのDBMSをサポートし、OCIバージョンのDSNTIADは、Oracleのみサポートしています。

5. DSNTIAUL

IKJEFT01ユーティリティを介してDB2データベースの表データをOpenFrameデータセットにアンロードするユーティリティ・プログラムです。

SYSINデータセットにアンロードを実行するSQLを指定します。基本的には、INZUTILBユーティリティと似ていますが、INZUTILBはEXEC文に直接実行し、DSNTIAULはIKJEFT01を介して実行する点が異なります。

5.1. DDの設定

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

項目 説明

SYSIN DD

データベース・テーブルをUNIXファイルに変換するための入力データセットを指定します。

SYSPRINT DD

メッセージを出力するための出力データセットを指定します。SYSOUTとSYSPRINT DDの両方が存在する場合、IKJEFT01の出力メッセージはSYSOUTに、DSNTIAULの出力メッセージはSYSPRINTに出力されます。その他の場合は、IKJEFT01とDSNTIAULの両方がSYSPRINTまたはSYSOUT DDにメッセージを出力します。

SYSTSIN DD

DSNTIAULを実行するためのDSNコマンドとRUNコマンドを指定します。

SYSPUNCH DD

データベースのテーブル構造のバックアップ・ファイルをロードする際に必要な情報を保存するデータセットを指定します。

使用しない場合は、DUMMYに指定します。

SYSRECnn DD

出力データセットを指定します。

DSNTIAULを一回実行すると、出力データセットに最大100のバックアップ・ファイルを作成することができます。SYSIN DDの入力データセットで指定した1つのSELECT文またはデータベース・テーブル名に対して、データのアンロード結果が順次保存されます。したがって、出力データセット数は、入力データセットのSELECT文またはデータベース・テーブル名の数と一致する必要があります。

nnに出力データセットの番号を00から99までの範囲で指定します。

このDDに指定されたデータセットが新規作成されるデータセットであり、JCLでLRECLが指定されていない場合、アンロードするデータセットのLRECLは、表の列の数と長さによって決定されます。

5.2. コマンドの設定

DSNTIAULを実行するには、以下のようにJCLのEXEC文にIKJEFT01を指定し、SYSTSIN DDにDSNコマンドとRUNコマンドを指定してから、PARMコマンドを使用して’SQL’パラメータを指定します。SYSTSINの使用方法については、IKJEFT01のコマンド設定を参照してください。

//JOB01   JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//STEP    EXEC PGM=IKJEFT01
//SYSTSIN DD *
 RUN PROGRAM(DSNTIAUL) PLAN(DSNTEP81) LIB('DSN810.RUNLIB.LOAD') PARM('SQL')
//*

SQLクエリを使用せずに、表名のみを使用してUNLOADを実行する場合は、PARMコマンドを使用しません。

//JOB01   JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//STEP    EXEC PGM=IKJEFT01
//SYSTSIN DD *
RUN PROGRAM(DSNTIAUL) PLAN(DSNTEP81) LIB('DSN810.RUNLIB.LOAD')
//*

5.3. 使用例

以下は、IKJEFT01ユーティリティがデータベース・システムに接続された後、DSNTIAULユーティリティを呼び出してDSN8810.PROJというデータベース・テーブルから、テーブル・データとテーブル構造をDSN8UNLD.SYSREC00とDSN8UNLD.SYSPUNCHにバックアップする例です。

//JOB02    JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//UNLOAD   EXEC PGM=IKJEFT01,DYNAMNBR=20
//SYSTSPRT DD SYSOUT=*
//SYSTSIN  DD *
 RUN PROGRAM(DSNTIAUL) PLAN(DSNTEP81) LIB('DSN810.RUNLIB.LOAD') PARM('SQL')
//*
//SYSPRINT DD SYSOUT=*
//SYSREC00 DD DSN=DSN8UNLD.SYSREC00,
//         UNIT=SYSDA,SPACE=(32760,(1000,500)),
//         DISP=(NEW,CATLG),VOL=SER=SCR03
//SYSPUNCH DD DSN=DSN8UNLD.SYSPUNCH,
//         UNIT=SYSDA,SPACE=(800,(15,15)),DISP=(NEW,CATLG),
//         VOL=SER=SCR03,RECFM=FB,LRECL=120,BLKSIZE=1200
//SYSIN    DD *
 SELECT * FROM DSN8810.PROJ
/*

以下は、SQLを使用せずに表名を使用してアンロードするためにSYSTSINとSYSINを変更した例です。

//JOB02    JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//UNLOAD   EXEC PGM=IKJEFT01,DYNAMNBR=20
//SYSTSPRT DD SYSOUT=*
//SYSTSIN  DD *
 RUN PROGRAM(DSNTIAUL) PLAN(DSNTEP81) LIB('DSN810.RUNLIB.LOAD')
//*
//SYSPRINT DD SYSOUT=*
//SYSREC00 DD DSN=DSN8UNLD.SYSREC00,
//         UNIT=SYSDA,SPACE=(32760,(1000,500)),
//         DISP=(NEW,CATLG),VOL=SER=SCR03
//SYSPUNCH DD DSN=DSN8UNLD.SYSPUNCH,
//         UNIT=SYSDA,SPACE=(800,(15,15)),DISP=(NEW,CATLG),
//         VOL=SER=SCR03,RECFM=FB,LRECL=120,BLKSIZE=1200
//SYSIN    DD *
 DSN8810.PROJ
/*

5.4. 環境設定

データベースの名前と接続情報をOpenFrame環境設定のikjeft01サブジェクトのSYSTEM:{system}セクションのキーに設定します。

ikjeft01サブジェクトの設定方法については、OpenFrame Batch『環境設定ガイド』を参照してください。

5.5. 戻りコード

DSNTIAULユーティリティプログラムは、LOB型カラム(BLOB、CLOB)を含むテーブルの処理をサポートしていません。そのため、対象テーブルがVARCHAR型カラムの範囲内である場合は、カラムの型を変更することを検討する必要があります。

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

  • 正常に実行された場合

    バッチ・アプリケーションからの戻りコードを返します。

  • エラーが発生した場合

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

    コード 説明

    0

    コマンドが正常に処理された場合です。情報メッセージが表示されることがあります。

    4

    データベースでSQLの実行中に警告(WARNING)が発生したか、または結果セットがない場合です。

    8

    次のいずれかの場合です。

    • データベース情報を指定しなかった場合

    • SYSREC00 DDを指定しなかった場合

    • SYSIN DDを指定しなかった場合

    • SQLの実行中にエラーが発生した場合

6. DSNUTILB

DSNUTILBは、データベースにコマンドを発行するユーティリティ・プログラムです。

OpenFrameでは、LOADコマンド、UNLOADコマンド、QUIESCEコマンド、TEMPLATEコマンドをサポートしています。LOADコマンドは、データセットに指定されたデータをデータベースのテーブルにロードするために使用されます。UNLOADコマンドは、データベース・テーブルのレコードをデータセットに保存するために使用されます。QUIESCEコマンドは、ターゲット・データベースにチェックポイントを指定するために使用され、TEMPLATEコマンドは、アンロードに使用されるPDSデータセットを割り当てるために使用されます。

Tibero環境で稼働するDSNUTILBは、LOADおよびUNLOADコマンドの実行時に、入力または出力するデータセット名やテーブル名に対応したコピーブック・ファイルを要求します。このコピーブック・ファイルを利用することで、TiberoにおいてDB2の「DECIMAL」列のパック10進数とゾーン10進数の値を処理することが可能です。

  1. QUIESCEコマンドは、システムの構造上DSNUTILBでのサポートに制約があるため、ユーザーが作成したモジュールを介して呼び出されます。

  2. Tibero環境において、DSNUTILBがLOADおよびUNLOADコマンドを実行する際に要求するコピーブック・ファイルは、INDDNとUNLDDNオプションで指定するデータセット名を使用します。該当する名前のコピーブック・ファイルが存在しない場合は、対象テーブル名を持つコピーブック・ファイルの有無を確認し、こちらも存在しない場合にはエラーが発生します。

6.1. DDの設定

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

項目 説明

SYSIN DD

データベースで実行するコマンドを指定します。

SYSPRINT DD

メッセージを出力するための出力データセットを指定します。

LOADコマンドの場合、SYSINにLOADターゲットのDDを指定する必要があるため、SYSINのINDDN文に指定されたDD名を追加で指定する必要があります。

6.2. コマンドの設定

以下は、DSNUTILBのコマンドです。

EXEC

DSNUTILBを実行するには、JCLのEXEC文に以下のように指定します。

//STEP EXEC PGM=DSNUTILB[,PARM='system,[uid],[utproc]']
パラメータ 説明

system

システム名を指定します。OpenFrame環境設定のikjeft01サブジェクトのSYSTEM:{system}セクションからシステムのユーザー情報を読み込みます。

uid

DB2がメインフレームにインストールされた場合、ストアド・プロシージャを呼び出す際にUID情報を渡します。それ以外の場合は無視されます。

utproc

無視されます。

LOAD

以下は、LOADコマンドの構文です。

LOAD DATA
    INDDN ddname1
    [REPLACE]
    INTO TABLE table_name [field_name [POSITION ( field_position : field_length )]]
    [DELIMITED [COLDEL del_char1][CHARDEL del_char2][DECPT del_char3]]
    [WORKDDN (ddname2, ddname3)]
    [ENFORCE NO]
    [DISCARDS discard_number]
    [DISCARDDDN discard_ddname]
    [ERRDDN SYSERR]
    [MAPDDN SNAP]
パラメータ 説明

INDDN

ロード対象のデータセットを指定したDD名を指定します。

DELIMITED

ロード対象のデータセットのレコード形式が区切り文字で区切られている場合に使用します。UNLOADコマンドまたはDSNTIAULユーティリティによって作成されたデータセットが、DELIMITEDオプションを使用して作成された場合に使用できます。このオプションを使用すると、フィールド情報に指定された長さと位置情報は無視されます。

  • COLDEL : 列データの区切り文字を指定します。指定しない場合は、コンマが使用されます。

  • CHARDEL : 文字列を表すデータに使用する区切り文字を指定します。指定しない場合は、二重引用符が使用されます。

  • DECPT : 数値データの小数点を表す区切り文字を指定します。指定しない場合は、ピリオドが使用されます。

DISCARDS

データセット・レコードのロードの失敗を許可する回数を指定します。ロードに失敗したレコードが設定値を超えると、ユーティリティはエラーを返して終了されます。指定しない場合は、0が使用されます。この場合、ロードに失敗したレコードの数に関係なく、ロードを続行します。

DISCARDDN

ロードに失敗したデータセット・レコードを記録するDD名を指定します。指定しない場合は、「SYSDISC」が使用されます。JCLにDISCARDDNのためのデータセットが指定されていない場合は、失敗レコードを記録しません。

REPLACE

ロード対象のテーブル・データを削除するかどうかを指定します。

REPLACEを指定すると、既存のテーブル・データを削除します。

INTO TABLE

ロード対象のテーブル名と列情報を指定します。フィールドの場合は、データセットでの位置と長さを指定します。フィールド情報が指定されていない場合は、テーブルの列の順序と長さによってデータセットから読み込む各列の位置情報が決まります。

WORKDDN、ENFORCE、ERRDDN、MAPDDNは、OpenFrameではサポートされません。

UNLOAD

以下は、UNLOADコマンドの構文です。

UNLOAD DATA
    UNLDDN ddname1 | (ddname1)
    PUNCHDDN  ddname2
    FROM TABLE (table_name [field_name field_type(field_length) [CLOBF template_ddname] [EXTERNAL] ])
    [WHEN (where_condition)]
    [DELIMITED [COLDEL del_char1][CHARDEL del_char2][DECPT del_char3]]
パラメータ 説明

UNLDDN

アンロード対象のデータセットを指定したDD名を指定します。

PUNCHDDN

アンロードの実行時にテーブルの列の名前、長さ、位置を記録するデータセットのDDを指定します。データセットに作成された構文は、LOADコマンドで使用できます。

DELIMITED

アンロードの実行時にレコードを区切り文字で区切られた文字列形式で指定する場合に使用します。このオプションを使用してアンロードされたデータセットは、LOADコマンドの実行時にDELIMITEDオプションを使用する必要があります。このオプションを使用した場合、PUNCHDDN DDに長さと位置情報は作成されません。

  • COLDEL : 列データの区切り文字を指定します。指定しない場合は、コンマが使用されます。

  • CHARDEL : 文字列を表すデータに使用する区切り文字を指定します。指定しない場合は、二重引用符が使用されます。

  • DECPT : 数値データの小数点を表す区切り文字を指定します。指定しない場合は、ピリオドが使用されます。

FROM TABLE

アンロード対象のテーブル名を指定します。アンロードするためのフィールドを指定する場合は、フィールドの名前、タイプ、長さを指定します。

  • CLOBF template_ddname : アンロードするフィールドのタイプがLOBの場合は、TEMPLATE文を使用して別途のPDSを作成し、キーワードとtemplate_ddnameを指定してアンロードします。

  • EXTERNAL : データを文字列形式でアンロードする場合に使用します。たとえば、DECIMALタイプの列にEXTERNALを使用すると、パック10進数のデータではなく、数値を文字列にしてアンロードします。

UNLOADコマンドを実行する際、テーブルのレコードが出力されるデータセットに対して個別のDCB情報が指定されていない場合、そのデータセットはレコード長32760、レコード形式VBで作成されます。

QUIESCE

以下は、QUIESCEコマンドの構文です。

QUIESCE TABLESPACE tablespace_name
        ...
パラメータ 説明

TABLESPACE

QUIESCEを処理する対象の表領域名を指定します。

TEMPLATE

以下は、TEMPLATEコマンドの構文です。

TEMPLATE ddname DSN 'dsname' DSNTYPE(dsntype) UNIT(unit) SPACE(primary,secondary) [CYL]
パラメータ 説明

DSN

アンロード中に使用するデータセット名を指定し、ddnameで割り当てます。このデータセットは、UNLOADコマンドのFROM TABLE文でLOBタイプのフィールドをアンロードするときに使用されます。

DSNTYPE

割り当てを実行するデータセットのタイプを指定します。現在は、PDSのみサポートされます。

UNIT、SPACE、CYLは、OpenFrameではサポートされません。

6.3. 使用例

LOAD

以下は、DSNUTILBユーティリティを実行して、UNIXバックアップ・ファイルのDSN8UNLD.SYSREC00をSYSIN DDに指定された情報でロードする例です。

//JOB01    JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//RUNLOAD  EXEC PGM=DSNUTILB
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSREC   DD DSN=DSN8UNLD.SYSREC00,DISP=(SHR,KEEP)
//SYSIN    DD *
LOAD DATA
 INDDN SYSREC
 REPLACE
 LOG NO
 SORTDEVT DISK
 INTO TABLE
 TEST_TABLE
 (
 PO_NBR POSITION ( 1: 11 ) CHAR
 )
 WORKDDN (SYSUT101,SORTOUT)
 ENFORCE NO
 DISCARDDN SYSDISC
 ERRDDN SYSERR
 MAPDDN SMAP
/*
//
UNLOAD

以下は、DSNUTILBユーティリティを実行し、TEMPLATE構文を使用してSYS1.TSTLIB PDSを割り当てた後、SYSREC00 DDにアンロードする例です。DATA_XML列は、LOBタイプの列データをSYS1.TSTLIB PDS内にDATA_XMLというメンバーとしてアンロードします。

//ULDT1    JOB
//STP1     EXEC PGM=DSNUTILB,PARM='DBTW,A,B'
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSPUNCH DD SYSOUT=*
//SYSREC00 DD DSN=ULDTEST.ULD,DISP=(NEW,CATLG,DELETE)
//SYSIN    DD *
TEMPLATE LOBFRW DSN 'SYS1.TSTLIB'
                DSNTYPE(PDS) UNIT(3390)
                SPACE(50,250) CYL
UNLOAD DATA FROM TABLE DATA_UNLOAD HEADER NONE
  (
   NUMBER     CHAR(10)
  ,QUOTE_ID       DECIMAL
  ,CLASS_ID       CHAR(08)
  ,DATA_XML     VARCHAR CLOBF LOBFRW
  ,ADDED_DATE     TIMESTAMP EXTERNAL(26)
  ,ADDED_LOGON    CHAR(15)
  ,REVISED_DATE   TIMESTAMP EXTERNAL(26)
  ,REVISED_LOGON  CHAR(15)
  )
  WHEN (ADDED_DATE >= (CURRENT_TIMESTAMP - 1 YEAR))
       UNLDDN     SYSREC00
       PUNCHDDN   SYSPUNCH
       DELIMITED  COLDEL X'09'
       SHRLEVEL CHANGE
/*
QUIESCE

以下は、DSNUTILBユーティリティを実行して、DEFSPACEという表領域にQUIESCEを実行する例です。

//JOB01    JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//RUNLOAD  EXEC PGM=DSNUTILB
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
 QUIESCE TABLESPACE DEFSPACE
/*
//

6.4. 環境設定

  • データベース接続情報

    データベースの名前と接続情報は、OpenFrame環境設定のikjeft01サブジェクトのSYSTEM:{system}セクションに設定します。

    $ ofconfig list -n NODE1 -s ikjeft01 -sec "SYSTEM:DBPA"
    
    ==============================================================================
        SUBJECT     |    SECTION    |         KEY          |            VALUE
    ==============================================================================
        ikjeft01    |  SYSTEM:DBPA  |       DATABASE       |           oframe3
                    |               |        DBAUTH        |            PUBLIC
                    |               |        DBTYPE        |            TIBERO
                    |               |       INSTANCE       |           oframe3
                    |               |       PASSWORD       |             tmax
                    |               |       USERNAME       |            tibero
    ==============================================================================
  • Tibero用DSNUTILBのためのコピーブックのパスを指定

    Tibero環境で動作するDSNUTILBでは、UNLOADおよびLOADコマンドの実行中にDB2の「DECIMAL」列を処理するため、各テーブルに対応するコピーブックファイルのパスを指定する必要があります。OpenFrame環境設定のdbutilサブジェクトのDIRECTORYセクションにそのパスを定義します。コピーブックのファイル名には、データセット名またはテーブル名を使用し、拡張子は「.cpy」とする必要があります。

    $  ofconfig list -n NODE1 -s dbutil -sec DIRECTORY -k DBUTIL_COPYBOOK_DIR
    
    ===================================================================================
        SUBJECT     |    SECTION    |         KEY          |           VALUE
    ===================================================================================
         dbutil     |   DIRECTORY   | DBUTIL_COPYBOOK_DIR  |   ${OPENFRAME_HOME}/data
    ===================================================================================
  • Tibero用DSNUTILBのための「NVARCHAR/NCHAR」列対応を指定

    Tibero環境で動作するDSNUTILBがUNLOADおよびLOADコマンドを実行する際、対象テーブルにNVARCHARまたはNCHAR列が存在する場合、これらの列の長さをどのように設定するかを指定します。設定値が「EBCDIC」の場合、NVARCHARおよびNCHARの列長と同じバイト長を使用し、「NORMAL」の場合はTibero ESQLの動的SQLによって決定されるバイト長が使用されます。この設定は、OpenFrame環境設定のdbutilサブジェクトのDSNUTILBセクションに記述します。また、NVARCHARおよびNCHAR列に対応するCOBOLのフィールドは、「PIC N(n)」という形式で宣言する必要があります。

    $  ofconfig list -n NODE1 -s dbutil -sec DSNUTILB -k NVARCHAR_LENGTH
    
    ===================================================================================
        SUBJECT     |    SECTION    |         KEY          |           VALUE
    ===================================================================================
         dbutil     |   DSNUTILB    |   NVARCHAR_LENGTH    |   EBCDIC
    ===================================================================================
  • Tibero用DSNUTILBのための「NULL INDICATOR」位置を指定

    Tibero環境で動作するDSNUTILBがUNLOADおよびLOADコマンドを実行する際、対象テーブルの列がNULL可能な場合、NULLを示すインジケータの位置を指定することができます。この位置は、DSNTIAULの動作のように列データの後方(後置)にするか、IBM用DSNUTILBのように前方(前置)にするかを選択できます。この設定を行わない場合、デフォルトの動作は列データの後方にインジケータを配置します。

    $  ofconfig list -n NODE1 -s dbutil -sec DSNUTILB -k NULL_INDICATOR_POSITION
    
    ===================================================================================
        SUBJECT     |    SECTION    |         KEY               |           VALUE
    ===================================================================================
         dbutil     |   DSNUTILB    |  NULL_INDICATOR_POSITION  |   FORWARD
    ===================================================================================
  • QUIESCEを処理するためのモジュールを指定

    QUIESCEコマンドは、ユーザー指定のモジュールを呼び出す方法で実行されます。QUIESCEの処理を実行したモジュールのパスを、OpenFrame環境設定のdbutilサブジェクトに指定します。

    $ ofconfig list -n NODE1 -s dbutil -sec DSNUTILU
    
    ==============================================================================
        SUBJECT     |    SECTION    |         KEY      |      VALUE
    ==============================================================================
        dbutil      |   DSNUTILU    |        PATH      | ${OPENFRAME_HOME}/temp
    ==============================================================================
  • Tibero用DSNUTILBのための「tbloader」ユーティリティ・ベースのLOADを実行

    DSNUTILBが直接INSERTコマンドを実行せず、Tiberoのユーティリティであるtbloaderを利用してLOADを実行する場合に使用します。

    $  ofconfig list -n NODE1 -s dbutil -sec DSNUTILB -k LOAD_WITH_TBLOADER
    
    ===================================================================================
        SUBJECT     |    SECTION    |         KEY               |           VALUE
    ===================================================================================
         dbutil     |   DSNUTILB    |  LOAD_WITH_TBLOADER       |       YES
    ===================================================================================
  • Tibero用DSNUTILBがtbloaderを使用してLOADを実行する際に作成する一時ファイルのパスを指定

    上記の設定により、DSNUTILBがtbloaderを利用してLOADを実行する場合、その過程で使用される一時ファイルのパスを指定します。

    $  ofconfig list -n NODE1 -s dbutil -sec DIRECTORY -k DBUTIL_TEMP_DIR
    
    ===================================================================================
        SUBJECT     |    SECTION    |         KEY          |           VALUE
    ===================================================================================
         dbutil     |   DIRECTORY   |   DBUTIL_TEMP_DIR    |   ${OPENFRAME_HOME}/temp
    ===================================================================================
  • QUIESCEコマンドのユーザー定義関数のプロトタイプ

    QUIESCEのユーザー定義関数を以下のように定義します。DSNUTILBでは、uid_nameにEXEC文で指定したPARMからuidを渡し、SYSINで指定した文をstatementに渡します。

    int DSNUTILU(char *uid_name, char *statement)
    {
        ...
    }
  1. OpenFrame環境設定の詳細については、OpenFrame Batch『環境設定ガイド』を参照してください。

  2. Tibero用DNSUTILBでない場合、DNSUTILBでは、libtdbconnswモジュールを介してデータベースに接続します。したがって、LOADコマンドを使用する場合は、libtdbconnswモジュールが対象となるデータベースのライブラリをリンクする必要があります。QUIESCEコマンドを使用する場合は、DSNUTILBでデータベースへの接続を実行しません。

6.5. 戻りコード

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

  • 正常に実行された場合

    バッチ・アプリケーションからの戻りコードを返します。

  • エラーが発生した場合

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

    コード 説明

    0

    コマンドが正常に処理された場合です。情報メッセージが表示されることがあります。

    4

    データベースでSQLの実行中に警告(WARNING)が発生したか、または結果セットがない場合です。

    8

    次のいずれかの場合です。

    • SYSINの指定が正しくない場合

    • データベース情報を指定しなかった場合

    • Tibero用DSNUTILBでテーブルに対応するコピーブック・ファイルが見つからなかった場合

    • QUIESCEを実行するための外部モジュールが見つからなかった場合

7. INZUTILB

INZUTILBは、DB2データベースの表データをOpenFrameデータセットにアンロードするユーティリティ・プログラムです。SYSINデータセットにアンロードを実行するSQLを指定します。

7.1. DDの説明

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

項目 説明

SYSIN DD

DB2データベースで実行するSELECT SQLを指定します。

SYSREC DD

SQLを実行した結果を保存する出力データセットを指定します。

7.2. コマンドの設定

EXEC

INZUTILBを実行するには、JCLのEXEC文に以下のように指定します。

//STEP EXEC PGM=INZUTILB
SYSIN DD

DB2に発行するSQLを記述します。

//SYSIN DD *
 SELECDT * FROM EMPLOYEE
/*

7.3. 使用例

以下は、INZUTILBユーティリティを実行してDB2のEMPLOYEEテーブルをTEST.EMPLOYEEデータセットにアンロードする例です。SYSINには、SQL文を1のみ指定できます。

//JOB01    JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//UNLOAD   EXEC PGM=INZUTILB
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSREC   DD DSN=TEST.EMPLOYEE,DISP=(NEW,CATLG,DELETE)
//SYSIN    DD *
 SELECT * FROM EMPLOYEE
/*
//

7.4. 環境設定

データベースの名前と接続情報をOpenFrame環境設定のikjeft01サブジェクトのSYSTEM:{system}セクションのキーに設定します。

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

  2. INZUTILBでは、libtdbconnswモジュールを介してデータベースに接続します。libtdbconnswモジュールの対象となるデータベースのライブラリをリンクする必要があります。

7.5. 戻りコード

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

  • 正常に実行された場合

    バッチ・アプリケーションからの戻りコードを返します。

  • エラーが発生した場合

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

    コード 説明

    0

    コマンドが正常に処理された場合です。情報メッセージが表示されることがあります。

    4

    データベースでSQLの実行中に警告(WARNING)が発生したか、または結果セットがない場合です。

    16

    次のいずれかの場合です。

    • データベース情報を指定しなかった場合

    • SYSREC DDを指定しなかった場合

    • SYSIN DDを指定しなかった場合

    • SQLの実行中にエラーが発生した場合