任何人都可以向我展示如何将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返回数据,或尝试以fp = fopen("SYSIN", "r");的形式打开SYSIN?

或者,尝试将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语句可能会修复代码的运行。

关于c - 使用SYSIN DD从JCL向C程序传递参数*,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18450094/

10-13 09:00