通过JCL将SYSUID和JOB ID作为参数传递给COBOL程序

时间:2012-04-26 07:42:05

标签: cobol jcl

我需要将SYSUID和JOBID传递给cobol程序以进行日志记录,这怎么可能?,

可以作为JCL中查询的输入传递。

提前致谢。

3 个答案:

答案 0 :(得分:6)

SYSUID很简单,您只需将其添加到PARM语句的EXEC参数中即可。

//ASTEP EXEC PGM=A#PGM,PARM='&SYSUID'

JOBID不可用作参数。如果需要,您必须编写COBOL代码以链接到z / OS control blocks(请参阅该链接的数据区域书籍)。这可以做到,但我不推荐它。

如果你真的想要获得作业号,你可以编写代码转到PSA控制块,它位于相对内存位置0.从那里你得到一个指向当前TCB的指针,该指针位于PSATOLD字段中。 PSA,从TCB获得TCBJSCBB字段,它是JSCB的指针,从JSCB中的TCBJSCBB fielf获得指向SSIB的指针,SSIB包含SSIBJBID字段,即作业号。所有这些控制块,PSA,TCB,JSCB和SSIB都在上面的链接中记录(对于z / OS 1.13)。我重申我不建议这样做。

Micro Focus通过z / OS控制块进行example链接,并且Longpela的two parts中有一个教程。

答案 1 :(得分:3)

我同意@cschneid你不想做所有的指针链接只是为了获得工号。但当然我们在创建“横幅页面打印”程序时也这样做了。我们根据代码http://gsf-soft.com/Freeware/COB2JOB.shtml建立了我们的代码。

答案 2 :(得分:1)

如果您习惯使用LINKAGE SECTION中的SET ADDRESS OF项目,重新定义POINTER和COMP-5项目,以及从汇编程序DSECT创建01级结构,那么一定要这样做。作为一个轻量级的COBOL子例程,它的开销并不比汇编程序更多(但汇编程序更好)。如果您对REXX STORAGE功能感到满意,可以查看Dave Alcock的IPLINFO程序。

但是,如果您提到的COBOL语言结构不为您所知,那么请编写汇编程序子程序,或者请某人编写它。