截至目前,我们已涵盖非转化和转化计划。转换计划有一个主要缺点,因为他们思考时间相当高。为了克服这个问题,伪转换编程进入了画面。我们现在将讨论有关伪转换程序的更多信息。
伪转换程序
以下是在伪转换中发生的事件序列转换计划 :
- 第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具有相同的图片子句。
- 数据可以从DFHCOMMAREA使用MOVE语句到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).
伪代码
下面给出了我们在伪编程中使用的伪代码的逻辑 :
将DFHCOMMAREA移至WS-COMMAREA 如果EIBCALEN = 0 第1步:发送地图 第2步:移动<内部-transaction-ID1>到WS-COMMAREA 第3步:问题条件返回 ELSE 如果WS-COMMAREA =< internal-transaction-id1> 步骤4:接收映射 步骤5:处理数据 步骤6:发送输出映射 步骤7:移动< internal-transaction-ID2>到WS-COMMAREA 第8步:问题有条件退货 END-IF END-IF 第9步:重复第3步到第7步直到退出
示例
以下示例显示了伪转换程序 :
********************************************* ***************** *计划举行虚假会议* ***************** ************************************************* 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 ************************* **************************************** *交易获准执行第一次* ******************************************* *********************** MOVE 'HELLO' TO WS-MESSAGE EXEC CICS SEND TEXT FROM (WS-MESSAGE) END-EXEC MOVE 'FIRST' TO WS-COMMAREA ************************ ****************************************** *任务结束为返回的结果。 IF AID KEY PRESSED,NEXT * *交易应该是TP002。数据从WS-COMMAREA转到* * DFHCOMMAREA * ******************************* *********************************** EXEC CICS RETURN TRANSID('TP002') COMMAREA(WS-COMMAREA) END-EXEC *************************** *************************************** *如果COMMAREA不是空的,然后TP002已经执行* *已经,用户互动由接收方便* ************************* ***************************************** ELSE EXEC CICS RECEIVE INTO(WS-MESSAGE) END-EXEC EXEC CICS SEND TEXT FROM (WS-MESSAGE) END-EXEC ***************************** ************************************* *作为退货结果的任务结束,没有指定的下一笔交易* *待执行* ******************************** ********************************** EXEC CICS RETURN END-EXEC END-IF.
伪转换的优点
以下是伪转换的优点 :
- 最佳利用资源。暂时暂停该计划后,资源即会被释放。
- 看起来好像处于对话模式。
- 响应时间更长。
返回语句
以下是在CICS&minus中使用的两种类型的return语句;
Return-1
当发出以下无条件return语句时,任务和交易(程序)终止。
EXEC CICS RETURN END-EXEC。
返回-2
当发出以下条件返回时,即返回TRANSID语句时,控件返回使用下一个transid执行到CICS。当用户按下AID键时,下一个事务开始。
EXEC CICS RETURN TRANSID ('trans-id') [COMMAREA(WS-COMMAREA)] END-EXEC.