Cics-pseudo-programming
CICS-疑似プログラミング
今のところ、非変換および変換プログラムを扱っています。 変換プログラムには、*思考時間が*かなり長いため、大きな欠点があります。 この問題を克服するために、疑似変換プログラミングが登場しました。 次に、疑似変換プログラムについて詳しく説明します。
擬似変換プログラム
以下は、疑似変換プログラムで発生するイベントのシーケンスです-
- *ステップ1 *-システムはメッセージを画面に送信してトランザクションを終了し、ユーザー入力を受信したときに開始するトランザクションを指定します。
- *ステップ2 *-システムは、このトランザクションで使用されるリソースを、システムで実行されている他のトランザクションに割り当てます。 そのため、ユーザーが入力するまで、擬似変換プログラムでリソースを利用できます。
- *ステップ3 *-システムは定期的に端末入力をポーリングします。 入力が受信されると、入力が処理され、出力が表示されます。
- *ステップ4 *-アプリケーションプログラムは、必要なときに主記憶装置にロードされ、使用されていないときに解放されます。
擬似変換テクニック
擬似会話で注意すべき重要な点は、すべてのタスク間でデータを渡すことです。 データを渡す方法について説明します。
COMMAREA
COMMAREAは通信エリアとして知られています。 COMMAREAは、タスク間でデータを渡すために使用されます。 次の例は、WSCOMMAREAとWS-COMMAREA-LENGTHがWorking Storage Sectionで宣言されている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ステートメントです-
Return-1
次の無条件のreturnステートメントが発行されると、タスクとトランザクション(プログラム)は終了します。
EXEC CICS RETURN
END-EXEC.
Return-2
次の条件付きリターン、つまりTRANSIDステートメントでのリターンが発行されると、制御は、実行される次のtransidとともにCICSに戻ります。 ユーザーがAIDキーを押すと、次のトランザクションが開始されます。
EXEC CICS RETURN
TRANSID ('trans-id')
[COMMAREA(WS-COMMAREA)]
END-EXEC.