SQL 批次公用程式

使用「SQL 批次」公用程式,透過 JCL 來呼叫批次程式,以執行多個 SQL 陳述式。

「SQL 批次」公用程式隨附於 IMS Universal JDBC driver ,並使用 type-4 連線來提交 SQL 陳述式。 必須使用「 IBM® Java™ for z/OS® (JZOS) 批次啟動程式」來執行「SQL 批次」公用程式。

圖 1. SQL Batch 公用程式輸入及輸出資料集
開始圖說明: SQL 陳述式是「SQL 批次」公用程式的輸入。 公用程式的輸出包括 IMS 型錄的更新項目、資料庫及輸出訊息。 結束圖說明。

限制

目前未記載 SQL Batch 公用程式的任何限制。

必要條件

若要執行「SQL 批次」公用程式,必須符合下列必要條件:
  • 已安裝 IBM Java for z/OS (JZOS) 批次啟動程式。
  • 已安裝 IMS 開放式資料存取解決方案。
  • 已安裝並配置 IMS 型錄。

<

您可以啟用「SQL 批次」公用程式來產生 RACF ® PassTickets ,以鑑別 JDBC 應用程式的使用者來存取 IMS DB。 PassTickets 是 RACF 密碼和密碼詞組的替代方案,因為 PassTickets 不需要透過網路以明碼傳送密碼和密碼詞組。 如果您需要「SQL 批次」公用程式產生 RACF PassTickets,請確定符合下列所有條件:
  • IRRRacf.jaribmjzos.jar 檔案都位於工作的類別路徑中。
  • DriverManager.getConnection 方法的 applName URL 內容中,指定在 IMS DB 的 DRDA 用戶端存取的 PTKTDATA 類別中,定義給 RACF 的 1 到 8 個字元應用程式名稱。
  • 下列值彼此相同:
    • DriverManager.getConnection 方法的 applName URL 內容值。
    • ODACCESS 陳述式的 APPL= 參數值,該陳述式位於 IMS PROCLIB 資料集的 HWSCFGxx 成員中。
  • 在 SQL Batch 公用程式 JCL 的 JOB 陳述式上,指定了與工作相關聯的 z/OS 使用者 ID。

建議

目前未記載 SQL Batch 公用程式的任何建議。

輸入與輸出

「SQL 批次」公用程式的輸入是您可以使用下列任何方式提供的 SQL 陳述式:
  • 與 JCL 行內
  • 在 JCL 所參照的資料集中
  • 在「UNIX ® 系統服務」上 JCL 所參照的檔案中
公用程式會將訊息傳回至 JCL 中定義的訊息輸出資料集。

回覆碼

在程式終止時提供下列回覆碼。
代碼
意義
0
未偵測到任何錯誤。
11 日
IMS Connect 連線失敗。 請驗證連線參數是否正確。
12
無法執行 SQL 陳述式,且所有工作已回復至前一個確定點。 請驗證 SQL 陳述式是否有效。
13
確定未順利完成。
14
回復未順利完成。
15
未適當地清除連線。
16
指定了無效的 SQL 陳述式。 請驗證輸入檔只包含有效的 SQL 陳述式。
100
找不到 Java main 類別,或 main 方法擲出異常狀況。
101
發生配置或設定錯誤。 如需相關資訊,請參閱 SYSOUT 訊息。
102
發生系統或內部錯誤。 如需相關資訊,請參閱 SYSOUT 訊息。

如需回覆碼 11-16 的相關資訊,請參閱 STDOUT 及 STDERR 中的輸出訊息。

JZOS 批次啟動程式會發出回覆碼 0、100、101 和 102。

JCL 規格

「SQL 批次」公用程式是透過使用「JZOS 批次啟動程式」來啟動公用程式的標準 z/OS 工作來執行。 需要下列 JCL 陳述式:
  • 您定義以符合安裝規格的 JOB 陳述式。
  • SET P1 陳述式
  • EXEC 陳述式
  • 定義輸入及輸出的 DD 陳述式
SET P1 陳述式

SET P1 陳述式必須採用下列格式:

// SET P1='com.ibm.ims.jdbc.batch.BatchUtil'

在 SET P1 陳述式中, com.ibm.ims.jdbc.batch.BatchUtil 是主要「SQL 批次」公用程式類別。 此公用程式類別位於 IMS JDBC 驅動程式 (imsudb.jar) 中。

EXEC 陳述式

EXEC 陳述式必須採用下列格式:
//JAVAJVM EXEC PGM=JVMLDMxx,REGION=0M,                         
//   PARM='/ &P1'                       

變數 JVMLDMxx 必須取代為「JZOS 批次啟動程式」的 IBM SDK for z/OS 版本。 例如,若為 IBM 64 位元 SDK 第 7 版,請指定 JVMLDM76

DD 陳述式

STEPLIB DD
指向 JZOS.LOADLIB,這是 JVMLDM 模組的 STEPLIB。

需要 STEPLIB DD 陳述式。

SYSPRINT DD
定義系統工作日誌的訊息資料集。 資料集可以在印表機、磁帶或直接存取裝置上,或透過輸出串流遞送。

這個 DD 陳述式是必要的。

SYSOUT DD
定義系統工作日誌錯誤資訊的訊息輸出資料集。 資料集可以在印表機、磁帶或直接存取裝置上,或透過輸出串流遞送。

這個 DD 陳述式是必要的。

STDOUT DD
定義 Java 工作的訊息輸出資料集。 資料集包含來自 Java System.out的輸出。 資料集可以在印表機、磁帶或直接存取裝置上,或透過輸出串流遞送。 您可以選擇性地在這個 DD 陳述式中指定 UNIX 系統服務上的檔案。

這個 DD 陳述式是必要的。

STDERR DD
定義 Java 工作之錯誤資訊的訊息輸出資料集。 資料集包含來自 Java System.err的輸出。 資料集可以在印表機、磁帶或直接存取裝置上,或透過輸出串流遞送。

這個 DD 陳述式是必要的。

CEEDUMP DD
定義 Language Environment ® 執行時期選項。
MAINARGS DD
定義主要 Java 類別的輸入引數。
IMSSQL DD
定義要執行的 SQL 陳述式。 您可以在行內、資料集中或 UNIX System Services 上的檔案中指定 SQL 陳述式。

範例 1: 在行內指定陳述式

//IMSSQL DD *
CONNECT jdbc:ims://myConnectServer:myPort/DFSCP001;
CREATE DATABASE myDB...;
CREATE TABLE myTable ...;
COMMIT;
DISCONNECT;

範例 2: 指定使用者名稱和密碼

下列範例與前述範例相同,不同之處在於 CONNECT 陳述式中包含使用者名稱及密碼,以進行安全檢查。 在此範例中,密碼之後需要兩個分號。

CONNECT 陳述式的語法符合 IMS Universal JDBC driver 針對 type-4 連線所定義的語法。 如需相關資訊,請參閱 使用 JDBC DriverManager 介面連接至 IMS 資料庫

//IMSSQL DD *
CONNECT jdbc:ims://myConnectServer:myPort/DFSCP001:user=myUserName;password=myPassword;;
CREATE DATABASE myDB...;
CREATE TABLE myTable ...;
COMMIT;
DISCONNECT;

範例 3: 在資料集中指定陳述式

//IMSSQL DD DISP=SHR,
//       DSN=myPDS(myScript)

範例 4. 在 UNIX 系統服務上的檔案中指定陳述式

//IMSSQL DD PATH='/stdin-file-pathname',PATHOPTS=(ORDONLY)                

這個 DD 陳述式是必要的。

STDENV DD
定義 Java 環境變數。 在本節中,請確定下列陳述式指向您的 JDK 路徑:
export JAVA_HOME=myJavaHomePath
此外,請確定下列陳述式指向 IMS Universal JDBC driver的路徑,其中包括 SQL Batch 公用程式:
CLASSPATH="$CLASSPATH":myLibPath/imsudb.jar

需要這個 DD 陳述式。