CICS-疑似プログラミング
これまで、非変換および変換プログラムについて説明してきました。変換プログラムには大きな欠点があります。think timeかなり高いです。この問題を克服するために、疑似変換プログラミングが登場しました。次に、疑似変換プログラムについて詳しく説明します。
疑似変換プログラム
以下は、疑似変換プログラムで発生する一連のイベントです。
Step 1 −システムは画面にメッセージを送信してトランザクションを終了し、ユーザー入力を受信したときに開始するトランザクションを指定します。
Step 2−システムは、このトランザクションで使用されるリソースを、システムで実行されている他のトランザクションに割り当てます。したがって、ユーザーが入力を行うまで、疑似変換プログラムのリソースを利用できます。
Step 3−システムは一定の時間間隔で端末入力をポーリングします。入力を受信すると、それが処理され、出力が表示されます。
Step 4 −アプリケーションプログラムは、必要に応じてメインストレージにロードされ、使用されていないときに解放されます。
疑似変換技術
疑似会話で注意すべき重要な点は、すべてのタスク間でデータを渡すことです。データを渡すための手法について説明します。
COMMAREA
COMMAREAはコミュニケーションエリアとして知られています。COMMAREAは、タスク間でデータを渡すために使用されます。次の例は、WSCOMMAREAとWS-COMMAREA-LENGTHが作業用ストレージセクションで宣言されているCOMMAREAを渡す方法を示しています。
EXEC CICS RETURN
TRANSID ('transaction-id')
COMMAREA (WS-COMMAREA)
LENGTH (WS-COMMAREA-LENGTH)
END-EXEC.
DFHCOMMAREA
DFHCOMMAREAは、CICSによってすべてのタスクに提供される特別なメモリー領域です。
あるプログラムから別のプログラムにデータを渡すために使用されます。プログラムは、同じトランザクションまたは異なるトランザクションに存在することもできます。
これは、プログラムのリンケージセクションで01レベルで宣言されています。
WS-COMMAREAと同じpicture句が必要です。
MOVEステートメントを使用して、データをDFHCOMMAREAからWS-COMMAREAに戻すことができます。
MOVE DFHCOMMAREA TO WS-COMMAREA.
例
マップを送信した後、タスクは終了し、ユーザーの応答を待ちます。タスクは終了しましたが、トランザクションは終了していないため、この段階でデータを保存する必要があります。このトランザクションを再開する場合は、タスクの以前のステータスが必要になります。ユーザーが入力を入力します。これは、RECEIVE MAPコマンドで受信してから、検証する必要があります。次の例は、COMMAREAとDFHCOMMAREAを宣言する方法を示しています。
WORKING-STORAGE SECTION.
01 WS-COMMAREA.
05 WS-DATA PIC X(10).
LINKAGE SECTION.
01 DFHCOMMAREA.
05 LK-DATA PIC X(10).
擬似コード
以下に示すのは、疑似プログラミングで使用する疑似コードのロジックです。
MOVE DFHCOMMAREA TO WS-COMMAREA
IF EIBCALEN = 0
STEP1: SEND MAP
STEP2: MOVE <internal-transaction-id1> to WS-COMMAREA
STEP3: ISSUE CONDITIONAL RETURN
ELSE
IF WS-COMMAREA = <internal-transaction-id1>
STEP4: RECEIVE MAP
STEP5: PROCESS DATA
STEP6: SEND OUTPUT MAP
STEP7: MOVE <internal-transaction-ID2> to WS-COMMAREA
STEP8: ISSUE CONDITIONAL RETURN
END-IF
END-IF
STEP9: REPEAT STEP3 TO STEP7 UNTIL EXIT
例
次の例は、疑似変換プログラムを示しています。
******************************************************************
* PROGRAM TO DEMONSTRATE PSEUDO-CONVERSATION *
******************************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-MESSAGE PIC X(30).
01 WS-COMMAREA PIC X(10) VALUE SPACES.
LINKAGE SECTION.
01 DFHCOMMAREA PIC X(10).
PROCEDURE DIVISION.
MOVE DFHCOMMAREA TO WS-COMMAREA
IF WS-COMMAREA = SPACES
******************************************************************
* TRANSACTION GETTING EXECUTED FOR THE FIRST TIME *
******************************************************************
MOVE 'HELLO' TO WS-MESSAGE
EXEC CICS SEND TEXT
FROM (WS-MESSAGE)
END-EXEC
MOVE 'FIRST' TO WS-COMMAREA
******************************************************************
* TASK ENDS AS A RESULT OF RETURN. IF AID KEY PRESSED, NEXT *
* TRANSACTION SHOULD BE TP002. DATA PASSED FROM WS-COMMAREA TO *
* DFHCOMMAREA *
******************************************************************
EXEC CICS RETURN
TRANSID('TP002')
COMMAREA(WS-COMMAREA)
END-EXEC
******************************************************************
* IF COMMAREA IS NOT EMPTY , THEN TP002 HAS BEEN EXECUTED ONCE *
* ALREADY, USER INTERACTION IS FACILITATED BY RECEIVE *
******************************************************************
ELSE
EXEC CICS RECEIVE
INTO(WS-MESSAGE)
END-EXEC
EXEC CICS SEND TEXT
FROM (WS-MESSAGE)
END-EXEC
******************************************************************
* TASK ENDS AS A RESULT OF RETURN, NO NEXT TRANSACTION SPECIFIED *
* TO BE EXECUTED *
******************************************************************
EXEC CICS RETURN
END-EXEC
END-IF.
疑似変換の利点
疑似変換の利点は次のとおりです-
リソースを最大限に活用します。プログラムが一時的に中断されるとすぐにリソースが解放されます。
会話モードのように見えます。
応答時間が長くなります。
戻りステートメント
以下は、CICSで使用される2種類のreturnステートメントです。
リターン-1
次の無条件のreturnステートメントが発行されると、タスクとトランザクション(プログラム)は終了します。
EXEC CICS RETURN
END-EXEC.
リターン-2
次の条件付き戻り値、つまり、TRANSIDステートメントを使用した戻り値が発行されると、制御は、実行される次のtransidとともにCICSに戻ります。次のトランザクションは、ユーザーがAIDキーを押すと開始されます。
EXEC CICS RETURN
TRANSID ('trans-id')
[COMMAREA(WS-COMMAREA)]
END-EXEC.