一、COPY的用法,单个文件间的COPY
//RPSORT49 JOB MSGLEVEL=(1,1),MSGCLASS=X,CLASS=B
//*------------------------------------------------------------------*
//* DELETE FILE *
//*------------------------------------------------------------------*
//DELFILE EXEC PGM=IEFBR14
//DELFILE1 DD DSN=FNSAP49.RPLD8071,DISP=(MOD,DELETE,DELETE),
// SPACE=(TRK,0)
//*------------------------------------------------------------------*
//* CREATE FILE *
//*------------------------------------------------------------------*
//CREFILE EXEC PGM=IEFBR14
//DEFFILE1 DD DSN=FNSAP49.RPLD8071,
// DISP=(,CATLG),DCB=(RECFM=FB,LRECL=83,DSORG=PS),
// VOL=SER=BDMTS1,SPACE=(CYL,1)
//*------------------------------------------------------------------*
//* SORT FILE *
//*------------------------------------------------------------------*
//DFSORT EXEC PGM=SORT
//SYSOUT DD SYSOUT=A
//SORTIN DD DSN=FNSAP49.RPLD807,DISP=SHR
//SORTOUT DD DSN=FNSAP49.RPLD8071,DISP=SHR
//SYSIN DD *
SORT FIELDS=COPY
以下是对黄标记段参数的修改
1、COPY一个文件
参数:SORT FIELDS=COPY
2、COPY的时候选择某几个字段输出
参数:SORT FIELDS=COPY
OUTREC FIELDS=(1,23,48,3)
3、COPY的时候想在选出字段中加自己的数
注:CNY对应的16进制是:‘C3D5E8’,则参数为
16进制写法:SORT FIELDS=COPY
OUTREC FIELDS=(1,23,48,3,X’C3D5E8’,49,1)
直接字符表示写法:SORT FIELDS=COPY
OUTREC FIELDS=(1,23,48,3,C’CNY’,49,1)
以上SORT的结果是一样的,表示取原来文件中1-23位,48-51位,后加上‘CNY’,加上文件中49位的值作为新的文件,而X表示16进制的写法,C表示直接字符的写法
4、有条件的COPY
参数:SORT FIELDS=COPY
OUTREC FIELDS=(1,23,48,3)
INCLUDE COND=(45,3,CH,EQ,C’CNY’) —————比较字符还有GT/LE等
选出原来文件中的1-23位,48-51位,并且原来字段中的45开始的3位值为’CNY’
注意INCLUDE选取条件的时候是对选取前文件字段的定义
INCLUDE有多个条件的时候可以这么写
INCLUDE COND=(5,5,CH,GT,X'000171909C',AND,5,5,CH,LE,X'000300000C')
不用OUTREC只用INCLUDE也行,就是整条记录全部复制
二、COPY的用法,把一个输入文件按照条件拆分成若干个文件
//RPSORT49 JOB MSGLEVEL=(1,1),MSGCLASS=X,CLASS=B
//*------------------------------------------------------------------*
//* DELETE FILE *delete in
//*------------------------------------------------------------------*
//DELFILE EXEC PGM=IEFBR14
//DELFILE1 DD DSN=FNSAP49.RPLD8071,DISP=(MOD,DELETE,DELETE),
// SPACE=(TRK,0)
//DELFILE2 DD DSN=FNSAP49.RPLD8072,DISP=(MOD,DELETE,DELETE),
// SPACE=(TRK,0)
//DELFILE3 DD DSN=FNSAP49.RPLD8073,DISP=(MOD,DELETE,DELETE),
// SPACE=(TRK,0)
//DELFILE4 DD DSN=FNSAP49.RPLD8074,DISP=(MOD,DELETE,DELETE),
// SPACE=(TRK,0)
//*------------------------------------------------------------------*
//* CREATE FILE *
//*------------------------------------------------------------------*
//CREFILE EXEC PGM=IEFBR14
//DEFFILE1 DD DSN=FNSAP49.RPLD8071,
// DISP=(,CATLG),DCB=(RECFM=FB,LRECL=83,DSORG=PS),
// VOL=SER=BDMTS1,SPACE=(CYL,1)
//DEFFILE2 DD DSN=FNSAP49.RPLD8072,
// DISP=(,CATLG),DCB=(RECFM=FB,LRECL=83,DSORG=PS),
// VOL=SER=BDMTS1,SPACE=(CYL,1)
//DEFFILE3 DD DSN=FNSAP49.RPLD8073,
// DISP=(,CATLG),DCB=(RECFM=FB,LRECL=83,DSORG=PS),
// VOL=SER=BDMTS1,SPACE=(CYL,1)
//DEFFILE4 DD DSN=FNSAP49.RPLD8074,
// DISP=(,CATLG),DCB=(RECFM=FB,LRECL=83,DSORG=PS),
// VOL=SER=BDMTS1,SPACE=(CYL,1)
//*------------------------------------------------------------------*
//* SORT FILE *
//*------------------------------------------------------------------*
//DFSORT EXEC PGM=SORT
//SYSOUT DD SYSOUT=A
//SORTIN DD DSN=FNSAP49.RPLD807,DISP=SHR
//SORTOUT1 DD DSN=FNSAP49.RPLD8071,DISP=SHR
//SORTOUT2 DD DSN=FNSAP49.RPLD8072,DISP=SHR
//SORTOUT3 DD DSN=FNSAP49.RPLD8073,DISP=SHR
//SORTOUT4 DD DSN=FNSAP49.RPLD8074,DISP=SHR
//SYSIN DD *
SORT FIELDS=COPY
OUTFIL FNAMES=SORTOUT1,
INCLUDE=(45,4,CH,EQ,C'1307')
OUTFIL FNAMES=SORTOUT2,
INCLUDE=(16,4,CH,EQ,C'1560',
AND,45,4,CH,EQ,C'0464')
OUTFIL FNAMES=SORTOUT3,
INCLUDE=(45,4,CH,EQ,C'0464')
OUTFIL FNAMES=SORTOUT4,SAVE
/*
把一个文件按照条件拆分成多个文件,其中FNAMES是输出文件的名字,在前面已经定义,最后用SAVE表示把没有被前面文件接受的记录,输出到文件SORTOUT4当中,也可以不用SAVE只用前面的字段,表示按指定条件输出到指定的文件,这里INCLUDE后面直接加=号,不能写成INCLUDE COND=()。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论