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.
广告