有人可以向我展示如何在JCL中向SYSIN DD *传递参数的示例。
我曾经让我的JCL程序使用PARM选项将参数传递给c程序,但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
/*
答案 0 :(得分: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语句可能会修复代码的运行。
答案 1 :(得分:0)
您可以使用CEE3PR2 Language Environment可调用服务。其目的是将大于80字节[sic]的parm字符串返回到调用程序。我相信这是z / OS 1.13的新功能。请注意,这不适用于非大型机系统。当然,JCL也不是。