JCICS の使用

JCICS ライブラリーのクラスは、通常の Java クラスと同じような方法で使用可能です。 アプリケーションは必要なタイプの参照を宣言し、new 演算子を使ってクラスの新規インスタンスが作成されます。

このタスクについて

setName メソッドを使って CICS® リソースに名前を付けることにより、基礎となる CICS リソースの名前を提供します。 リソースを作成した後、標準の Java 構成体を使ってオブジェクトを操作できます。 通常の方法で、宣言されたオブジェクトのメソッドを呼び出すことができます。 各クラスでサポートされるメソッドの詳細については、提供されている Javadoc を参照してください。

CICS Java プログラムではファイナライザーを使用しないでください。 ファイナライザーが推奨されない理由については、Java Diagnostics Guide の説明を参照してください。

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;
    }
}