CICS - 偽碼程式設計



目前,我們已經涵蓋了非轉換程式和轉換程式。轉換程式的主要缺點是其**思考時間**相當長。為了克服這個問題,偽轉換程式設計出現了。我們現在將討論更多關於偽轉換程式的內容。

偽轉換程式

以下是偽轉換程式中發生的一系列事件:

  • 步驟 1 - 系統向螢幕傳送訊息並終止事務,指定在收到使用者輸入時要啟動的事務。

  • 步驟 2 - 系統將此事務使用的資源分配給系統中執行的其他事務。因此,我們可以利用偽轉換程式中的資源,直到使用者提供輸入。

  • 步驟 3 - 系統定期輪詢終端輸入。當收到輸入時,對其進行處理並顯示輸出。

  • 步驟 4 - 應用程式程式在需要時載入到主儲存器中,並在不用時釋放。

CICS Pseudo Conversion Program

偽轉換技術

在偽對話中需要注意的重要一點是在每個任務之間傳遞資料。我們將討論傳遞資料的方法。

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.
廣告
© . All rights reserved.