gpt4 book ai didi

cobol - 当前显示的是哪张 map ?

转载 作者:行者123 更新时间:2023-12-02 09:16:49 27 4
gpt4 key购买 nike

我刚刚进入大型机开发,所以请原谅我的无知,但是有没有办法识别正在显示或最后发送到终端的 map ?

例如,我在 map 集 MAPS 中有 MAP1MAP2。按下 PF 键(PF7/PF8) 即可交替显示 map 。在每个 map 上,用户可以输入要由程序(SLCTOPTI)评估的值。是否有正确的方法来确定在从用户接收时应评估哪个 map ?

这是我目前必须尝试的:

** some code before **

WHEN DFHENTER
+0103

%+0104 IF CURRENT-MAP-SCREEN = 1

%+0104 EXEC CICS RECEIVE
%+0104 MAP ('MAP1')
%+0104 INTO (MAP1I)
%+0104 RESP (WS-RESP)
%+0104 END-EXEC
%+0104 ELSE
%+0104 EXEC CICS RECEIVE
%+0104 MAP ('MAP2')
%+0104 INTO (MAP2I)
%+0104 RESP (WS-RESP)
%+0104 END-EXEC
%+0104 END-IF
+0103
%+0104 EVALUATE SLCTOPTI
+0103
%+0104 WHEN ' 1'
%+0104 WHEN '01'
%+0104 WHEN '1'
+0103
%+0104 MOVE 'XXXX' TO WS-START-TRAN
%+0104
%+0104 WHEN ' 2'
%+0104 WHEN '02'
%+0104 WHEN '2'
+0103
%+0104 MOVE 'XXXX' TO WS-START-TRAN

** some code after **

我不确定这是否有效,但我想知道是否已经有一个命令或更好的方法来做到这一点。

最佳答案

假设 CURRENT-MAP-SCREEN 设置为指示当您将 map 发送到屏幕时正在发送的 map 并存储在 DFHCOMMAREA 中,这就是方式我通常会看到它完成。

通常,伪 session CICS 事务的初始程序的编写方式是检查 EIBCALEN = 0,这表明这是事务的初始调用。 EIBCALEN(CALEN 是通信区域 LENgth 的缩写)是 EIB(执行接口(interface) block )中的一个字段,它会自动传递到事务的初始程序(如 DFHEIBLK)并通过预编译器或协处理器(无论您使用哪个)插入到您的链接部分中。 EIB 包含许多描述您的交易背景的字段。

如果EIBCALEN = 0您知道初始化您的WS-COMMAREA,发送您的初始 map ,将您发送的 map 的指示符存储在CURRENT-MAP中-SCREENEXEC CICS RETURN TRANSID(EIBTRNID) COMMAREA(WS-COMMAREA) LENGTH(...)

您的事务的初始程序也会自动传递一个指向 DFHCOMMAREA 的指针,并且由预编译器或协处理器(无论您使用哪个)自动插入到您的链接部分 )。在调用您的事务期间,CICS 会代表您保留 DFHCOMMAREA

如果EIBCALEN NOT = 0,您知道将 DFHCOMMAREA 移动到 WS-COMMAREA 并检查CURRENT-MAP-SCREEN 以查看要使用哪个 map 接收

当您EXEC CICS RETURN TRANSID(EIBTRNID) COMMAREA(WS-COMMAREA) LENGTH(...)时,您正在向CICS提供要保留的数据并传回事务的初始程序下一次调用时的DFHCOMMAREA。一旦 EXEC CICS RETURN 发生,分配给工作存储和本地存储的内存就会被释放。

人们将 DFHCOMMAREA 移动到 WS-COMMAREA 然后使用其工作存储中的数据副本是很常见的。如果EIBCALEN = 0您当然不这样做,则没有数据可以移动。

一些商店尝试在程序和 map 之间建立 1:1 的关系,以便无需跟踪当前显示的 map 。

希望在您稍后的学习中,您的讲师将讨论使用 channel 和容器而不是 DFHCOMMAREA。后者是 CICS 应用程序几十年来的构建方式,因此您肯定会看到以这种方式编写的代码,前者是一种较新的功能。

关于cobol - 当前显示的是哪张 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46350002/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com