提问人:user11654732 提问时间:5/2/2023 更新时间:5/15/2023 访问量:110
Cobol z/OS:如何在调试模式下确定调用参数?
Cobol z/OS: how to determine calling parameters in debug mode?
问:
对于 z/OS Cobol,linkage-section 定义了可以与其他程序共享的数据结构。
我想问的是:当我使用 z/OS 调试器调试 cobol 程序时,有没有办法显示已传递给程序的变量及其内容? 换言之:调用程序使用“by reference”或“by content”限定符调用了子程序。有没有办法在调试器的调用程序中显示这些数据结构?
谢谢!
答:
免责声明:由于目前我没有用于测试的 COBOL 环境,因此我的描述是使用 PL/I 程序测试的。COBOL 的工作方式应该类似,但可能需要一些小的更正。随意编辑您注意到的任何内容。
虽然在 GUI 界面中更容易(就像在调用堆栈中单击正确的条目一样简单),但您也可以使用 .
假设您有一个主程序 MYPROG,调用子程序 SUBPROG。调试器在 SUBPROG 中的某个位置停止后,可以使用以下命令
SET QUALIFY BLOCK MYPROG
将调试上下文切换到主程序。在那里,您应该能够列出当时在 MYPROG 中处于活动状态的任何变量。 在 COBOL 中,您还可以尝试使用
SET QUALIFY RETURN
在调用堆栈上上移动 1 级,或者
SET QUALIFY PROGRAM MYPROG
两者都不适用于 PL/I(它们最终比所需的 BLOCK 高出一个资格级别)。
要返回到当前调试位置,请发出以下命令
SET QUALIFY RESET
既然你提到了DTCN,我假设你在CICS环境中运行。这可能会增加额外的复杂性:上面描述的上下文切换只能跨 COBOL 语句工作,而不能跨 .后者将创建一个全新的语言环境飞地,因此从 LE(以及调试器)的角度来看,有两个完全独立的主程序调用。CALL
EXEC CICS LINK
评论
在调用的 COBOL 程序中,您还可以发出命令来显示 .下面是一个简单的示例:LIST TITLED LS
LINKAGE SECTION
LIST TITLED LS ;
The following variables are known in section Linkage Section
01 IBCC20A:>THIS-DATE = 20280515
评论