我想根据输入文件中的以下INCLUDE条件创建3个outfiles。另外,我只想在下面3个BUILD的输出文件中记录部分记录。
我认为现在的问题是多个BUILD / OUTREC会出现重复错误。
在JCL中有没有其他方法可以实现相同的目标?
SORT FIELDS=COPY
OUTFIL FILES=01,
INCLUDE=(38,8,CH,EQ,C'AMSAM00'),
BUILD=(1,4,5:366,8)
OUTFIL FILES=02,
INCLUDE=(38,8,CH,EQ,C'AMSAM00',AND,390,1,CH,EQ,C'Y'),
BUILD=(1,4,5:382,8)
OUTFIL FILES=03,
INCLUDE=(38,8,CH,EQ,C'AMSAM00',AND,545,4,CH,NE,C'0000'),
BUILD=(1,4,5:C'013,',9:545,4)
答案 0 :(得分:1)
随机戳了一下,所以......
Deuian我认为是在正确的界限上,但是留下了一些复杂因素,并且对于用户更改没有使用正确的位置或类型的输出文件,所以应该用太多的输入来应用这种情况...
OPTION COPY
INCLUDE COND=(38,8,CH,EQ,C'AMSAM00')
OUTFIL FILES=02,
INCLUDE=(390,1,CH,EQ,C'Y'),
BUILD=(1,4,382,8)
OUTFIL FILES=03,
INCLUDE=(545,4,CH,NE,C'0000',
AND,390,1,CH,NE,C'Y'),
BUILD=(1,4,C'013,',545,4)
OUTFIL FILES=01,SAVE,
BUILD=(1,4,366,8)
这假定不需要SORTOUT(它只是输入文件的副本)。
所有AMSAM00记录都包含在内,其他所有记录(对于OUTFILs都不需要)都会被忽略。
OUTFIL 02获得所有'Y'。
OUTFIL 03获取所有不是'Y'
的0000OUTFIL 01,移动以便更容易理解,获取未在另一个OUTFIL上选择的所有记录(通过使用SAVE)。
通过INCLUDE的所有数据都将在三个OUTFIL中的一个上,而且只有一个。
为了清晰起见,我使用了OPTION COPY。 SORT FIELDS =(...在INCLUDE之后(无论你在哪里编码)逻辑上出现,并且通过使用OPTION COPY,它是清晰的,在前面,在逻辑位置,它是一个COPY操作。
我从BUILDs中取出了“列”(这些数字后跟冒号)。如果数据自动进入该列(即它),那么使用列只会创建工作,引入新的错误可能性,并使排序控制卡更难维护。
问题不明确,所以这只是对所需内容的猜测。
有提到OUTREC。
从上下文来看,这是OUTFIL上的OUTREC。有一个单独的OUTREC声明。为了避免混淆(由于OUTREC的“过载”),不要在OUTFIL上使用OUTREC,这是为了“向后兼容”,而是使用现代的BUILD,这完全等同。
BUILD在INREC,OUTREC和OUTFIL上单独存在,并作为IFTHEN的一部分。 OUTREC相当于BUILD只在OUTFIL上。
在INREC和OUTREC上,由于同样的原因,FIELDS也出现了“超载”(向后的事情)。
不要使用INREC FIELDS =,或OUTREC FIELDS =或OUTFIL OUTREC =,请使用BUILD代替它们。
答案 1 :(得分:0)
以下是我认为你要做的事情。包括1排除包括2和3将选择,同样包括2排除1和3将选择。 Include 3正在做同样的事情,除了1和2包括。
每个FILE DD只有以下1条记录,所有记录都被复制到分拣
//SORTIN DD *
AMSAM00Y0000
AMSAM00N0001
AMSAM00Y0001
AMSAM00N0000
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
OUTFIL FNAMES=FILE1,
INCLUDE=(1,7,CH,EQ,C'AMSAM00',
AND,8,1,CH,NE,C'Y',AND,9,4,CH,EQ,C'0000'),
BUILD=(1,12)
OUTFIL FNAMES=FILE2,
INCLUDE=(1,7,CH,EQ,C'AMSAM00',AND,
8,1,CH,EQ,C'Y',AND,
9,4,CH,EQ,C'0000'),
BUILD=(1,12)
OUTFIL FNAMES=FILE3,
INCLUDE=(1,7,CH,EQ,C'AMSAM00',AND,
8,1,CH,NE,C'Y',AND,
9,4,CH,NE,C'0000'),
BUILD=(1,12)
FIlE1
AMSAM00N0000
FILE2
AMSAM00Y0000
FILE3
AMSAM00N0001
SORTOUT
AMSAM00Y0000
AMSAM00N0001
AMSAM00Y0001
AMSAM00N0000