Sorting 使用SORT在现有数据的末尾追加数据
我希望下面的代码也适用于输入中的可变长度数据。所以,我可以在它的末尾加上双引号。我不想用COBOL。可能吗Sorting 使用SORT在现有数据的末尾追加数据,sorting,mainframe,dfsort,Sorting,Mainframe,Dfsort,我希望下面的代码也适用于输入中的可变长度数据。所以,我可以在它的末尾加上双引号。我不想用COBOL。可能吗 ZZZZ.vvv.FILE.CORR1包含以下记录:- ABCDEFG_AAAAAA_BBB0001.csv ABCDEFG_AAAAAA_BBB0002.csv ABCDEFG_AAAAAA_BBB0003.csv 文件ZZZZ.vvv.file.CORR2中按以下代码输出的记录为: r_file1="ABCDEFG_AAAAAA_BBB0001.csv" r_file
ABCDEFG_AAAAAA_BBB0001.csv
ABCDEFG_AAAAAA_BBB0002.csv
ABCDEFG_AAAAAA_BBB0003.csv
r_file1="ABCDEFG_AAAAAA_BBB0001.csv"
r_file2="ABCDEFG_AAAAAA_BBB0002.csv"
r_file3="ABCDEFG_AAAAAA_BBB0003.csv"
//STEPSRT5 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=ZZZZ.VVVV.FILE.CORR1, <ID>
// DISP=SHR
//SORTOUT DD DSN=ZZZZ.VVVV.FILE.CORR2, <OD>
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=0),
// SPACE=(27920,(29,6),RLSE),
// DISP=(NEW,CATLG,DELETE)
//SYSIN DD *
SORT FIELDS=COPY
OUTREC FIELDS=(1:C'r_file',7:SEQNUM,1,ZD,8:C'="',10:1,26,36:C'"',44X)
/*
//STEPSRT5 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=ZZZZ.vvv.FILE.CORR1,
//DISP=SHR
//SORTOUT DD DSN=ZZZZ.vvv.FILE.CORR2,
//DCB=(RECFM=FB,LRECL=80,BLKSIZE=0),
//空间=(27920,(29,6),RLSE),
//DISP=(新建、CATLG、删除)
//SYSIN DD*
排序字段=复制
OUTREC字段=(1:C'r_文件',7:SEQNUM,1,ZD,8:C'=”,10:1,26,36:C'',44X)
/*
顺便说一下,这不是JCL,它们是排序控制卡。您可以在站点分拣产品手册中找到所有详细信息
INREC/OUTREC/OUTIL只能包含一个构建、覆盖、IFTHEN或一个或多个IFTHEN。有两种方法可以做到这一点,因为您希望无条件地使用两个函数,或者使用两个IFTHEN=(WHEN=NONE)和IFTHEN的函数use部分
您的记录不是可变的。它们是固定长度的(或者您现有的代码无法工作),可能是80字节(如果不是80字节,请适当更改80:X)
请记住,您将获得具有10条以上输入记录的重复序列号(第十条将为您提供r_file0)
您还可以查看SQZ(挤压),因为您的数据中没有嵌入空格
顺便说一下,这不是JCL,它们是排序控制卡。您可以在站点的排序产品手册中找到所有详细信息
INREC/OUTREC/OUTFIL只能包含BUILD、OVERLAY、IFTHEN或一个或多个IFTHEN中的一个。由于您希望无条件使用两个函数,因此有两种方法与上述方法类似,或者使用两个IFTHEN=(当=无时,函数使用IFTHEN的一部分)
您的记录不是可变的。它们是固定长度的(或者您现有的代码无法工作),可能是80字节(如果不是80字节,请适当更改80:X)
请记住,您将获得具有10条以上输入记录的重复序列号(第十条将为您提供r_file0)
您还可以查看SQZ(挤压),因为您的数据中没有嵌入空格
顺便说一下,这不是JCL,它们是排序控制卡。您可以在站点的排序产品手册中找到所有详细信息
INREC/OUTREC/OUTFIL只能包含BUILD、OVERLAY、IFTHEN或一个或多个IFTHEN中的一个。由于您希望无条件使用两个函数,因此有两种方法与上述方法类似,或者使用两个IFTHEN=(当=无时,函数使用IFTHEN的一部分)
您的记录不是可变的。它们是固定长度的(或者您现有的代码无法工作),可能是80字节(如果不是80字节,请适当更改80:X)
请记住,您将获得具有10条以上输入记录的重复序列号(第十条将为您提供r_file0)
您还可以查看SQZ(挤压),因为您的数据中没有嵌入空格
顺便说一下,这不是JCL,它们是排序控制卡。您可以在站点的排序产品手册中找到所有详细信息
INREC/OUTREC/OUTFIL只能包含BUILD、OVERLAY、IFTHEN或一个或多个IFTHEN中的一个。由于您希望无条件使用两个函数,因此有两种方法与上述方法类似,或者使用两个IFTHEN=(当=无时,函数使用IFTHEN的一部分)
您的记录不是可变的。它们是固定长度的(或者您现有的代码无法工作),可能是80字节(如果不是80字节,请适当更改80:X)
请记住,您将获得具有10条以上输入记录的重复序列号(第十条将为您提供r_file0)
您还可以查看SQZ(挤压),因为您的数据中没有嵌入空格。请尝试以下操作:
//STEP01 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
INREC BUILD=(C'r_file',SEQNUM,3,CSF,C'="',1,68,C'"')
OUTREC BUILD=(1,80,SQZ=(SHIFT=LEFT))
/*
//SORTIN DD *
ABCDEFG_AAAAAA_BBB0001.csv
ABCDEFG_AAAAAA_BBB0002.csv
ABCDEFG_AAAAAA_BBB0003.csv
ABCDEFG_AAAAAA_0702.csv
ABCDEFG_AAAAAA_AAAYZ0702.csv
ABCDEFG_AAAAAA_BBB.csv
ABCDEFG_AAAAAA_XXXXXXXAMY0702.csv
ABCDEFG_AAAAAA_YZ0702.csv
ABCDEFG_AAAAAA_C0702.csv
ABCDEFG_AAAAAA_0702.csv
ABCDEFG_AAAAAA_702.csv
ABCDEFG_AAAAAA_02.csv
ABCDEFG_AAAAAA_2.csv
/*
//SORTMSG DD SYSOUT=*
//
SORTOUT将包含:
r_file1="ABCDEFG_AAAAAA_BBB0001.csv"
r_file2="ABCDEFG_AAAAAA_BBB0002.csv"
r_file3="ABCDEFG_AAAAAA_BBB0003.csv"
r_file4="ABCDEFG_AAAAAA_0702.csv"
r_file5="ABCDEFG_AAAAAA_AAAYZ0702.csv"
r_file6="ABCDEFG_AAAAAA_BBB.csv"
r_file7="ABCDEFG_AAAAAA_XXXXXXXAMY0702.csv"
r_file8="ABCDEFG_AAAAAA_YZ0702.csv"
r_file9="ABCDEFG_AAAAAA_C0702.csv"
r_file10="ABCDEFG_AAAAAA_0702.csv"
r_file11="ABCDEFG_AAAAAA_702.csv"
r_file12="ABCDEFG_AAAAAA_02.csv"
r_file13="ABCDEFG_AAAAAA_2.csv"
INREC
构建一个类似以下内容的记录:
r_file 10="ABCDEFG_AAAAAA_0702.csv "
诀窍是对序列号使用CFS
,这样就可以使用前导空格创建序列号,这样我们就不会像使用ZD
(SQZ
使用PREBLANK=C'0'
去除前导零根本不起作用-它去除了所有零,包括插入和尾随)
下一步OUTREC
从记录中挤出空格,并根据需要显示文件名
注意:此解决方案假定您的文件名不包含嵌入空格。如果包含嵌入空格,则需要进行更多的修补。请尝试以下操作:
//STEP01 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
INREC BUILD=(C'r_file',SEQNUM,3,CSF,C'="',1,68,C'"')
OUTREC BUILD=(1,80,SQZ=(SHIFT=LEFT))
/*
//SORTIN DD *
ABCDEFG_AAAAAA_BBB0001.csv
ABCDEFG_AAAAAA_BBB0002.csv
ABCDEFG_AAAAAA_BBB0003.csv
ABCDEFG_AAAAAA_0702.csv
ABCDEFG_AAAAAA_AAAYZ0702.csv
ABCDEFG_AAAAAA_BBB.csv
ABCDEFG_AAAAAA_XXXXXXXAMY0702.csv
ABCDEFG_AAAAAA_YZ0702.csv
ABCDEFG_AAAAAA_C0702.csv
ABCDEFG_AAAAAA_0702.csv
ABCDEFG_AAAAAA_702.csv
ABCDEFG_AAAAAA_02.csv
ABCDEFG_AAAAAA_2.csv
/*
//SORTMSG DD SYSOUT=*
//
SORTOUT将包含:
r_file1="ABCDEFG_AAAAAA_BBB0001.csv"
r_file2="ABCDEFG_AAAAAA_BBB0002.csv"
r_file3="ABCDEFG_AAAAAA_BBB0003.csv"
r_file4="ABCDEFG_AAAAAA_0702.csv"
r_file5="ABCDEFG_AAAAAA_AAAYZ0702.csv"
r_file6="ABCDEFG_AAAAAA_BBB.csv"
r_file7="ABCDEFG_AAAAAA_XXXXXXXAMY0702.csv"
r_file8="ABCDEFG_AAAAAA_YZ0702.csv"
r_file9="ABCDEFG_AAAAAA_C0702.csv"
r_file10="ABCDEFG_AAAAAA_0702.csv"
r_file11="ABCDEFG_AAAAAA_702.csv"
r_file12="ABCDEFG_AAAAAA_02.csv"
r_file13="ABCDEFG_AAAAAA_2.csv"
INREC
构建一个类似以下内容的记录:
r_file 10="ABCDEFG_AAAAAA_0702.csv "
诀窍是对序列号使用CFS
,这样就可以使用前导空格创建序列号,这样我们就不会像使用ZD
(SQZ
使用PREBLANK=C'0'
去除前导零根本不起作用-它去除了所有零,包括插入和尾随)
下一步OUTREC
从记录中挤出空格,并根据需要显示文件名
注意:此解决方案假定您的文件名不包含嵌入空格。如果包含嵌入空格,则需要进行更多的修补。请尝试以下操作:
//STEP01 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
INREC BUILD=(C'r_file',SEQNUM,3,CSF,C'="',1,68,C'"')
OUTREC BUILD=(1,80,SQZ=(SHIFT=LEFT))
/*
//SORTIN DD *
ABCDEFG_AAAAAA_BBB0001.csv
ABCDEFG_AAAAAA_BBB0002.csv
ABCDEFG_AAAAAA_BBB0003.csv
ABCDEFG_AAAAAA_0702.csv
ABCDEFG_AAAAAA_AAAYZ0702.csv
ABCDEFG_AAAAAA_BBB.csv
ABCDEFG_AAAAAA_XXXXXXXAMY0702.csv
ABCDEFG_AAAAAA_YZ0702.csv
ABCDEFG_AAAAAA_C0702.csv
ABCDEFG_AAAAAA_0702.csv
ABCDEFG_AAAAAA_702.csv
ABCDEFG_AAAAAA_02.csv
ABCDEFG_AAAAAA_2.csv
/*
//SORTMSG DD SYSOUT=*
//
SORTOUT将包含:
r_file1="ABCDEFG_AAAAAA_BBB0001.csv"
r_file2="ABCDEFG_AAAAAA_BBB0002.csv"
r_file3="ABCDEFG_AAAAAA_BBB0003.csv"
r_file4="ABCDEFG_AAAAAA_0702.csv"
r_file5="ABCDEFG_AAAAAA_AAAYZ0702.csv"
r_file6="ABCDEFG_AAAAAA_BBB.csv"
r_file7="ABCDEFG_AAAAAA_XXXXXXXAMY0702.csv"
r_file8="ABCDEFG_AAAAAA_YZ0702.csv"
r_file9="ABCDEFG_AAAAAA_C0702.csv"
r_file10="ABCDEFG_AAAAAA_0702.csv"
r_file11="ABCDEFG_AAAAAA_702.csv"
r_file12="ABCDEFG_AAAAAA_02.csv"
r_file13="ABCDEFG_AAAAAA_2.csv"
INREC
构建一个类似以下内容的记录:
r_file 10="ABCDEFG_AAAAAA_0702.csv "
诀窍是对序列号使用CFS
,以便创建它们