任何人都可以向我展示如何将 JCL 中 SYSIN DD * 的参数传递给 C 程序的示例吗?
我曾经让 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
/*
最佳答案
您是否尝试过读取 STDIN,如果是,它是否从 SYSIN 返回数据,或者尝试打开 SYSIN,如 fp = fopen("SYSIN", "r");
或者,尝试将 SYSIN 的 DD 名称更改为 STDIN。 DD *
表示从后面的文本行中提取数据。它不必命名为 SYSIN。
最后,如果其他方法都失败,请阅读 C/大型机用户指南。 (我没有,而且是很久以前在大型机上写的,所以具体忘记了。)
最后,第一个示例似乎有一些错误:
// 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 语句可能会修复代码的运行。
关于c - 使用 SYSIN DD * 将参数从 JCL 传递到 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18450094/