- CICS 教程
- CICS - 首頁
- CICS - 概述
- CICS - 環境
- CICS - 基本術語
- CICS - 核心
- CICS - 事務
- CICS - COBOL 基礎
- CICS - BMS
- CICS - MAP
- CICS - 介面塊
- CICS - 偽碼程式設計
- CICS - 輔助鍵
- CICS - 檔案處理
- CICS - 錯誤處理
- CICS - 控制操作
- CICS - 臨時儲存
- CICS - 互通
- CICS - 狀態碼
- CICS - 面試問題
- CICS 有用資源
- CICS - 快速指南
- CICS - 有用資源
- CICS - 討論
CICS - 偽碼程式設計
目前,我們已經涵蓋了非轉換程式和轉換程式。轉換程式的主要缺點是其**思考時間**相當長。為了克服這個問題,偽轉換程式設計出現了。我們現在將討論更多關於偽轉換程式的內容。
偽轉換程式
以下是偽轉換程式中發生的一系列事件:
步驟 1 - 系統向螢幕傳送訊息並終止事務,指定在收到使用者輸入時要啟動的事務。
步驟 2 - 系統將此事務使用的資源分配給系統中執行的其他事務。因此,我們可以利用偽轉換程式中的資源,直到使用者提供輸入。
步驟 3 - 系統定期輪詢終端輸入。當收到輸入時,對其進行處理並顯示輸出。
步驟 4 - 應用程式程式在需要時載入到主儲存器中,並在不用時釋放。
偽轉換技術
在偽對話中需要注意的重要一點是在每個任務之間傳遞資料。我們將討論傳遞資料的方法。
COMMAREA
COMMAREA 稱為通訊區。COMMAREA 用於在任務之間傳遞資料。以下示例顯示瞭如何傳遞 COMMAREA,其中 WSCOMMAREA 和 WS-COMMAREA-LENGTH 在工作儲存區段中宣告:
EXEC CICS RETURN
TRANSID ('transaction-id')
COMMAREA (WS-COMMAREA)
LENGTH (WS-COMMAREA-LENGTH)
END-EXEC.
DFHCOMMAREA
DFHCOMMAREA 是 CICS 為每個任務提供的特殊記憶體區域。
它用於將資料從一個程式傳遞到另一個程式。程式可以存在於同一事務中,也可以存在於不同事務中。
它在程式的連線段中以 01 級宣告。
它應該與 WS-COMMAREA 具有相同的圖片子句。
可以使用 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 中使用的兩種型別的返回語句:
返回-1
發出以下無條件返回語句時,任務和事務(程式)將終止。
EXEC CICS RETURN END-EXEC.
返回-2
發出以下條件返回,即帶有 TRANSID 語句的返回時,控制權將返回到 CICS,並執行下一個 transid。使用者按下輔助鍵時,下一個事務開始。
EXEC CICS RETURN
TRANSID ('trans-id')
[COMMAREA(WS-COMMAREA)]
END-EXEC.