【发布时间】:2012-04-26 07:42:05
【问题描述】:
我需要将 SYSUID 和 JOBID 传递给 cobol 程序以进行日志记录,这怎么可能?,
同样可以作为 JCL 中查询的输入传递。
提前致谢。
【问题讨论】:
我需要将 SYSUID 和 JOBID 传递给 cobol 程序以进行日志记录,这怎么可能?,
同样可以作为 JCL 中查询的输入传递。
提前致谢。
【问题讨论】:
SYSUID 很简单,只需将其添加到EXEC 语句的PARM 参数即可。
//ASTEP EXEC PGM=A#PGM,PARM='&SYSUID'
JOBID 不能作为参数使用。如果需要,您必须编写 COBOL 代码以链接 z/OS control blocks(请参阅该链接中的数据区书籍)。可以这样做,但我不建议这样做。
如果你真的想得到作业编号,你可以编写代码去到 PSA 控制块,它位于相对内存位置 0。从那里你得到一个指向当前 TCB 的指针,它位于PSA,从 TCB 获得 TCBJSCBB 字段,它是指向 JSCB 的指针,从 JSCB 中的 TCBJSCBB 字段获得指向 SSIB 的指针,其中包含 SSIBJBID 字段,即作业号。所有这些控制块 PSA、TCB、JSCB 和 SSIB 都记录在上面的链接中(对于 z/OS 2.4)。我重申我不建议这样做。
【讨论】:
我同意@cschneid 的观点,即您不想为了获得工作编号而进行所有的指针链接。当然,我们在创建“横幅页面打印”程序时确实这样做了。我们的代码基于http://gsf-soft.com/Freeware/COB2JOB.shtml。
【讨论】:
如果您对在 LINKAGE SECTION、REDEFINE-ing POINTER 和 COMP-5 项目中使用 SET ADDRESS OF 项目感到满意,以及从汇编程序 DSECT 创建 01 级结构,那么一定要这样做。作为一个轻量级的 COBOL 子例程,它的开销并不比汇编例程多多少(但汇编器更好)。如果您对 REXX STORAGE 功能感到满意,可以查看 Dave Alcock 的 IPLINFO 程序。
但是,如果你不知道我提到的 COBOL 语言结构,那就写一个汇编子程序,或者请人来写。
【讨论】: