我想知道这两行代码之间有什么区别: -
//STEP1.SYSIN DD *
和
//STEP1.SYSIN and STEP1.SYSIN DD &SYSUID..COBOL(CBL0001),DISP=SHR
如果有任何差异。
答案 0 :(得分:2)
//STEP1.SYSIN DD *
将语句后面的行中的数据作为instream-data传递给 SYSIN DD,例如
//SYSIN DD *
fred
bert
harry
当打开 SYSIN 并读取输入时,会导致读取三行。
//STEP1.SYSIN DD DSN=&SYSUID..COBOL(CBL0001),DISP=SHR
将分配数据集user.COBOL的PDS / PDSE成员 CBL0001 (其中用户将是用户ID(即& SYSUID。解析为用户的提交者的用户ID))提交作业的人员是DD名称 SYSIN 。
//STEP1.SYSIN
两者都使用,是为程序步骤名称 STEP1 覆盖或添加 SYSIN DD语句(程序本身将在前面的JCL中定义)
不同之处在于SYSIN读取的数据会有所不同(即来自不同的源,它可能是相同的底层数据),第一个是JCL语句后面的数据,第二个是数据会员 CBL001 (两者都可能是COBOL计划)。
使用 instream-data ,如果 / * 被编码或者DD语句被编码或者没有其他内容(如上所示),则数据将结束,例如< / p>
//STEP1.SYSIN DD *
fred
bert
harry
/*
...... more JCL here
或
//STEP1.SYSIN DD *
fred
bert
harry
//STEP1.OTHER DD .........
可以使用代替* DATA ,例如(与上述相同的结果,即三行)
//STEP1.SYSIN DD DATA
fred
bert
harry
/*
在*或DATA两种情况下,您都可以使用 DLM 指定分隔符,例如
//STEP1.SYSIN DD *,DLM="%%"
fred
bert
//harry
%%
(在这种情况下,第三行将是哈里)