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

时间:2017-06-22 17:11:56

标签: sorting primary-key data-manipulation jcl dfsort

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

1 个答案:

答案 0 :(得分:2)

我将如何做到这一点。也许这里的其他人有更好的方法来完成你的任务,但我会这样做:

第1步复制

使用IEBGENER,将原始数据复制到临时文件。请记住,我必须猜测所需的记录长度和空间

abstract

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

第2步数学

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

//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工具将两个文件排序为一个

第3步排序

//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=('+','-',,))
/*