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 プログラムを使って public static void main() メソッドが呼び出されます。 ラッパーを使用すると、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 メソッドを呼び出す方法、およびキューが空の場合にスローされる例外をキャッチする方法を示します。
// Define a package name for the program
package unit_test;

// Import the JCICS package
import com.ibm.cics.server.*;

// Declare a class for a CICS application
public class JCICSTSQ 
{

    // The main method is called when the application runs
    public static void main(CommAreaHolder cah) 
    {

         try 
         {
             // Create and name a Temporary Storage queue object
             TSQ tsq = new TSQ();
             tsq.setName("JCICSTSQ");

             // Delete the queue if it exists
             try 
             {
                   tsq.delete();
             } 
             catch(InvalidQueueIdException e) 
             {
                  // Absorb QIDERR
                  System.out.println("QIDERR ignored!");
             }

             // Write an item to the queue
             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 from the application
         return;
    }
}