使用SYSIN DD *从JCL将参数传递给c程序

时间:2013-08-26 17:58:19

标签: c parameters jcl

有人可以向我展示如何在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
/* 

2 个答案:

答案 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也不是。