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