有什么区别? STEP1.SYSIN DD * //STEP1.SYSIN和STEP1.SYSIN DD& SYSUID..COBOL(CBL0001),DISP = SHR?

时间:2017-06-19 20:44:19

标签: mainframe zos jcl

我想知道这两行代码之间有什么区别: -

//STEP1.SYSIN DD * 

//STEP1.SYSIN and STEP1.SYSIN DD &SYSUID..COBOL(CBL0001),DISP=SHR

如果有任何差异。

1 个答案:

答案 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
%%

(在这种情况下,第三行将是哈里)