使用 SORT 实用程序进行数据操作

Data manipulation with SORT utility

有一个 DB2 table,它有一个 4byte Interger 作为主键。现在我必须将 table 的行数加倍。我的一种方法是,通过将 table 卸载到数据集来操纵键值,并保持所有列的详细信息不变。这样我就可以将行数加倍。 我计划将每个主键与值“-1”相乘,这样我将得到另一行具有相同细节的行,除了具有负值的键。 我在数据操作方面的工作不多。我可以为此使用 SORT 实用程序吗?如果是,那么如何? 有没有参考资料?

这是我的做法。也许这里的其他人有更好的方法来完成您的任务,但我会这样做:

步骤 1 复制

使用 IEBGENER,将原始数据复制到临时文件。请记住,我不得不猜测记录长度和 space 需要

//COPY1    EXEC PGM=IEBGENER                       
//SYSUT1   DD DSN=XX.FILE.ORIGINAL,          
//            DISP=SHR                             
//SYSUT2   DD DSN=&&TEMPFILE,         
//            DISP=(KEEP,PASS),UNIT=(SYSDA,1), 
//            LRECL=50,RECFM=FB,
//            SPACE=(CYL,(25,10),RLSE)             
//SYSPRINT DD SYSOUT=*                             
//SYSIN    DD DUMMY  

之后,编写将更改所有键值的 DFSORT 步骤。我假设此密钥将首先出现在您的文件中,并且它是 4 个字符。

第 2 步数学

这里我们将获取临时文件并写出一个新文件,其中 key = key * -1

//MULTI    EXEC PGM=DFSORT                       
//SORTIN   DD DSN=&&TEMPFILE,          
//            DISP=SHR                             
//SORTOUT  DD DSN=XX.FILE.MULTI,         
//            DISP=(,CATLG,DELETE),UNIT=(SYSDA,1), 
//            LRECL=50,RECFM=FB,
//            SPACE=(CYL,(25,10),RLSE)             
//SYSPRINT DD SYSOUT=*                             
//SYSIN    DD *
  SORT FIELDS=COPY
  OUTREC FIELDS=(-1,MUL,1,4,ZD,EDIT=(STTT),SIGNS=('+','-',,))
/*

完成该步骤后,您可以使用 DFSORT 工具将两个文件合并为一个

第 3 步排序

//SORT    EXEC PGM=DFSORT                       
//SORTIN   DD DSN=XX.FILE.ORIGINAL,          
//            DISP=SHR   
//         DD DSN=XX.FILE.MULTI,
//            DISP=SHR                          
//SORTOUT  DD DSN=XX.FILE.FINAL,         
//            DISP=(,CATLG,DELETE),UNIT=(SYSDA,1), 
//            LRECL=50,RECFM=FB,
//            SPACE=(CYL,(25,10),RLSE)             
//SYSPRINT DD SYSOUT=*                             
//SYSIN    DD *
  SORT FIELDS=(1,4,ZD,A)
/*