Ant*_*ton 4 cobol mainframe zos
假设我有一个 COBOL 模块 X,它被另一个程序 Y 调用。
如何在 X 中识别 Y 的名称?
我当然可以在链接部分将它传递给每个子模块,但我宁愿依靠更具程序性的方式来处理这个问题,而不是开发人员正确编码一些文字。
但是有没有任何已知的方法可以有效地做到这一点?也许一些晦涩的 LE 功能或要读取的特定控制块?
所有程序都使用 Enterprise COBOL 在 z/OS 上批量运行。
小智 5
您可以将 DSA(数据保存区,对于 AMODE31 nonXPLINK,指向 DSA 的指针在寄存器 13 中。)返回到前一帧(也就是您的调用者),然后如果该帧是用高级语言编写的(例如 COBOL , C),那么就需要找到EP的开头(Entry Point),然后就可以导航到PPA1控制块了。EP 的名称将接近 PPA1 的结尾。(您需要使用 PPA1 中的偏移信息以编程方式获取它。)
如果您的代码需要处理各种不同的 LE 程序,您将需要编写足够的代码来处理它们而不会异常终止。(例如,您的 COBOL 程序 Y 可能被非 LE 汇编程序、LE 汇编程序或其他 COBOL 程序调用。)如果您仅将检查限制为用 LE 高级语言编写的调用程序,您可以使您的工作更轻松。