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