데이터베이스 유틸리티

본 장에서는 데이터베이스를 관리하기 위한 유틸리티에 대해 기술한다.

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
//*

<dsnmtv01.conf>

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

2.4. 環境設定

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

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

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

2.5. 戻りコード

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

  • 正常に実行された場合

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

  • エラーが発生した場合

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

    コード 説明

    12

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

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

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

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

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

3. DSNTEP2

DSNTEP2は、DB2データベースにSQLを発行するユーティリティ・プログラムです。

SELECT SQLに対してのみ使用できます。OpenFrameでは、SQLを直接発行せず、db2コマンドを使用して実行します。

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の使用方法については、[sect_etc_utility_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;
/*

3.4. 環境設定

  • データベース接続情報

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

  • DB2コマンドの戻りコード

    DB2コマンドによってDSNTEP2が実行されるとき、DB2コマンドの戻りコードをユーティリティの戻りコードに変換できます。OpenFrame環境設定のdbutilサブジェクトのUTIL_RETURNセクションに設定します。

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

3.5. 注意事項

DSNTEP2ユーティリティは、DB2コマンドの実行結果を返します。そのとき、特定のSQLコードは、OpenFrame 環境設定のdbutilサブジェクトのUTIL_RETURNセクションの設定を利用します。

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の使用方法については、[sect_etc_utility_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 環境設定ガイド』を参照してください。

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の使用方法については、[sect_etc_utility_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 環境設定ガイド』を参照してください。

5.5. 戻りコード

以下は、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データセットを割り当てるために使用されます。

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

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
    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進数のデータではなく、数値を文字列にしてアンロードします。

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
    ==============================================================================
  • QUIESCEを処理するためのモジュールを指定

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

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

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

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

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

6.5. 戻りコード

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

  • 正常に実行された場合

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

  • エラーが発生した場合

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

    コード 説明

    0

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

    4

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

    8

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

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

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

    • 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 環境設定ガイド』を参照してください。

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

7.5. 戻りコード

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

  • 正常に実行された場合

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

  • エラーが発生した場合

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

    コード 説明

    0

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

    4

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

    16

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

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

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

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

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