0

任何人都可以向我展示如何将 JCL 中来自 SYSIN DD * 的参数传递给 ac 程序的示例。

我曾经让我的 JCL 程序使用 PARM 选项将参数传递给 ac 程序,但 PARM 选项有 100 个字符的限制,因此,我需要在 JCL 中使用 SYSIN DD * 选项。但是,我的旧 c 程序使用 argv 参数传递样式,我不知道这在使用 SYSIN DD * 时是否仍然适用。


这是我的旧 JCL 代码的样子:

/ SET P1='RBR1 FIRBS.AIC_REHBFG_FDG.BM '                                        
// SET P2='BGM.LOL_FDSG '                                                       
// SET P3='"" '                                                                 
// SET P4='X F GMHKD'                                                           
//ST01    EXEC PGM=VCMBGJF,                                                     
//PARM='&P1.&P2.&P3.&P4' 

这是我的新 JCL 代码的样子:

//ST01    EXEC PGM=VCMBGJF
//SYSIN    DD *    
RBR1 FIRBS.AIC_REHBFG_FDG.BM                                       
BGM.LOL_FDSG                                                      
""                                                               
X F GMHKD
/* 
4

2 回答 2

1

您是否尝试过读取 STDIN,如果是,它是否从 SYSIN 返回数据,或者尝试打开 SYSIN,如fp = fopen("SYSIN", "r");

或者,尝试将 SYSIN 的 DD 名称更改为 STDIN。表示从后面的DD *文本行中提取数据。它不必命名为 SYSIN。

最后,如果一切都失败了,请阅读 C/Mainframe 用户指南。(我没有,而且是很久以前在大型机上写的,所以我忘记了细节。)

最后,第一个例子似乎有一些错误:

// SET P1='RBR1 FIRBS.AIC_REHBFG_FDG.BM '                                        
// SET P2='BGM.LOL_FDSG '                                                       
// SET P3='"" '                                                                 
// SET P4='X F GMHKD'                                                           
//ST01    EXEC PGM=VCMBGJF,PARM='&P1.&P2.&P3.&P4'
//* there should be a space between // and PARM 

我提到这一点是因为您列出的 parm 数据小于 100 个字符,因此修复 PARM 语句可能会修复您的代码的运行。

于 2013-08-26T18:31:29.140 回答
0

您可以使用CEE3PR2 语言环境可调用服务。其目的是将大于 80 字节 [原文如此] 的 parm 字符串返回给调用程序。我相信这是 z/OS 1.13 的新功能。请注意,这不能移植到非大型机系统。当然,JCL 也不是。

于 2013-08-27T01:16:49.620 回答