使用 JCICS

您可使用 JCICS 程式庫中的類別,如一般的 Java™ 類別。應用程式宣告必要類型的參照,並利用 new 運算子來建立類別的新實例。

關於這項作業

您可利用 setName 方法,為 CICS® 資源命名來提供基礎 CICS 資源的名稱。建立資源之後,可以利用標準 Java 建構來操作物件。您可以利用平常的方式,呼叫所宣告物件的方法。在提供的 Javadoc 中,可取得每個類別所支援方法的完整資料。

請不要在 CICS Java 程式中使用終止程式。如需不建議使用終止程式的原因說明,請參閱 IBM SDK for z/OS,Java Technology Edition,第 7 版(請參閱「疑難排解」一節)

請不要發出 System.exit() 呼叫來結束 CICS Java 程式。當 Java 應用程式在 CICS 中執行時,透過使用另一個 Java 程式(稱為 Java Wrapper)來呼叫 public static void main() 方法。使用 Wrapper 時,CICS 會起始設定 Java 應用程式的環境,更重要的是,會清除在應用程式有效期間所使用的任何處理程序。終止 JVM 時,即使清除回覆碼為 0,仍會造成此清除處理程序無法執行,且可能導致資料不一致。當應用程式正在 JVM 伺服器中執行時,使用 System.exit() 會立即終止 JVM 伺服器並停止 CICS。

程序

  1. 撰寫 main 方法。 CICS 嘗試將控制傳遞給方法,該方法含有 PROGRAM 資源之 JVMCLASS 屬性所指定類別中的 main(CommAreaHolder) 簽章。如果找不到此方法,則 CICS 會嘗試呼叫方法 main(String[])
  2. 若要使用 JCICS 建立物件,請遵循下列步驟:
    1. 宣告參照:
         TSQ tsq;
       
    2. 使用 new 運算子來建立物件:
         tsq = new TSQ()
       
    3. 使用 setName 方法來為物件提供名稱:
         tsq.setName("JCICSTSQ");
       
  3. 使用物件來與 CICS 互動。

範例

此範例顯示如何建立 TSQ 物件,在您剛剛建立的暫時儲存體佇列物件上呼叫 delete 方法,並在佇列清空時捕捉擲出的異常狀況。
// 定義程式的套件名稱
package unit_test;

// 匯入 JCICS 套件
import com.ibm.cics.server.*;

// 宣告 CICS 應用程式的類別
public class JCICSTSQ 
{

    // 應用程式執行時,呼叫 main 方法
    public static void main(CommAreaHolder cah) 
    {

         try 
         {
             // 建立並命名「暫時儲存體」佇列物件
             TSQ tsq = new TSQ();
             tsq.setName("JCICSTSQ");

             // 刪除佇列(如果存在的話)
             try 
             {
                   tsq.delete();
             } 
             catch(InvalidQueueIdException e) 
             {
                  // 合併 QIDERR
                  System.out.println("QIDERR ignored!");
             }

             // 將項目寫入佇列
             String transaction = Task.getTask().getTransactionName();
             String message = "Transaction name is - " + transaction;
             tsq.writeItem(message.getBytes());

         } 
         catch(Throwable t) 
         {
             System.out.println("Unexpected Throwable: " + t.toString());
         }

         // 從應用程式返回
         return;
    }
}