SQLTP2 ツール - 動的 SQL 文の実行

SQLTP2 ツールは、DB2 DSNTEP2 に相当します。Enterprise Server で XAR 定義によって確立されている ODBC データベース接続を前提として、JCL に埋め込まれた動的 SQL 文を実行するために使用します。データベース移行プロセスでは、これを使用して DBMS に対して DDL を実行し、スキーマ オブジェクトを作成および変更します。

重要: メインフレームの DB2 と他の DBMS では参照整合性の実装に違いがあるため、初期 DSNTEP2 ステップを含めてテーブルを作成することをお勧めします。データのロード後、追加の DSNTEP2 ステップを実行して、索引および制約を作成できます。

SQLTP2 の実行

SQLTP2 を使用するには、JCL アプリケーション プロジェクトを作成するか、Enterprise Server の JES CONTROL 機能を使用して JCL を直接サブミットします。JCL 構文は、z/OS DB2 互換である必要があります。

MBDT 構成ユーティリティを実行する場合、SQL 文を処理するためのオプションが 2 つあります。これらのオプションは、データベース タイプとして指定します。ネイティブの DBMS SQL 方言を使用するにはデフォルトの A[gnostic] に設定し、SQL Server 用の DB2 方言を使用するには H[COSS] に設定します。データベース タイプを HCOSS (SQL Server 用の DB2 方言) に設定した場合、SQLTP2 ツールは、z/OS DB2 SQL 文を SQL Server 文に変換してからディスパッチして実行するよう OpenESQL ランタイムに命令します。

注: 環境のセットアップの一環として、SQLTP2 は、CHAR および VARCHAR のフィールドの X"00" null 文字を維持するように ALLOWNULLCHAR SQL コンパイラ指令オプションを初期化します。詳細については、「ALLOWNULLCHAR」を参照してください。

SQL Server 用の DB2 方言を使用した CREATE TABLE 文の JCL の例を次に示します。

注: MBDT 構成ユーティリティの HCOSS オプションでは、方言が混在する SQL 文をサポートしていません。また、SQL 文に SQL Server 固有の構文が含まれる場合は、エラーが発生します。
//DDLJOB2 JOB 
//RESETDB  EXEC PGM=IKJEFT01
//SYSTSPRT DD  SYSOUT=*
//SYSPRINT DD  SYSOUT=*
//SYSPUNCH DD  SYSOUT=*                                
//SYSUDUMP DD  SYSOUT=*
//SYSOUT   DD  SYSOUT=*
//SYSTSIN  DD  *
 DSN SYSTEM(HCOD)
 RUN  PROGRAM(DSNTEP2)
 END
/*
//SYSIN DD *
CREATE TABLE HCOSQL.EMP
(
EMPNO       CHAR(6) NOT NULL,
FIRSTNME    VARCHAR(12) NOT NULL,
MIDINIT     CHAR(1) NOT NULL,
LASTNAME    VARCHAR(15) NOT NULL,
WORKDEPT    CHAR(3),
PHONENO     CHAR(4),
HIREDATE    DATE,
JOB         CHAR(8),
EDLEVEL     SMALLINT,
SEX         CHAR(1),
BIRTHDATE    DATE,
SALARY      DECIMAL(9,2),
BONUS       DECIMAL(9,2),
COMM        DECIMAL(9,2),
PRIMARY KEY (EMPNO)
) IN XDBIBMDB.XDBIBMTS;

/*
//

ここで、HCOD はデータベース接続の ODBC XAR ID であり、SQLTP2 は DSNTEP2 のエイリアスとして確立されており、セミコロン (;) は SQL 終了文字です。

パラメーター

サポートされている SQLTP2 パラメーターは、次のとおりです。

  • ALIGN (MID)、ALIGN(LHS)
  • MIXED、NOMIXED
  • TOLWARN(YES)、TOLWARN(NO)
  • SQLTERM (termchar)

制御文

SYSIN データ セットの制御文では次の構文を使用します。
--#SET control-option-value
ここで、control-option-value には、次のいずれかを指定できます。
  • TERMINATOR
  • ROWS_FETCH
  • ROWS_OUT
  • MAXERRORS
  • TOLARTHWRN
  • TOLWARN
次の制御オプション値およびエラー発生値はサポートされていません。
  • MULTI-FETCH
  • PREPWARN
  • SQLFORMAT
注: To ensure proper parsing of SYSIN, do not include the tab character (ASCII decimal character code 9; EBCDIC decimal character code 5) in its contents. When parsed, the tab character could cause spurious, unintended errors.