2017-06-22 69 views
0

有一個DB2表格,其中有4字節Interger作爲主鍵。現在我必須加倍這張表的行。我擁有的一種方法是,通過將表卸載到數據集並按原樣保留所有列的詳細信息來操縱關鍵值。這樣我就可以將行加倍。 我打算將每個主鍵與值'-1'相乘,這樣我會得到具有相同細節的另一行,但具有負值的鍵除外。 我沒有太多的數據操作。我可以使用SORT工具嗎?如果是,那麼如何? 有沒有可用的參考?使用SORT實用程序進行數據處理

+0

因此,您想要將所有數據轉儲到文件並使用DFSORT或使用新密鑰創建所有行的重複項? – SaggingRufus

+0

此外,要真正幫助您排序,我們需要知道數據佈局 – SaggingRufus

+0

@SaggingRufus是的。最後的目標是通過任何數據處理手段進行雙行計數。我打算通過'-1'來多重鍵值。這可行嗎? – VinDesai

回答

2

這是我該怎麼做的。也許有人在這裏人有一個更好的方式來完成你的任務,但我會做到這一點:

步驟中使用IEBGENER 1 COPY

,原始數據複製到一個臨時文件。請記住,我不得不猜測,記錄長度和空間所需

//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個字符。

STEP 2數學

在這裏,我們將採取的臨時文件,並寫入了新的文件,其中的關鍵=鍵* -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工具兩個文件歸類到一個

STEP 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) 
/*        
+0

非常感謝。這似乎是完成任務目標的非常直接和簡單的方法。 非常感謝你,你一直在指導。 – VinDesai