我有兩個GDG文件(-1 & 0版本)。使用這兩個文件需要生成一個平面文件,其中包含插入記錄(不在-1版本中但在+0版本中的記錄),刪除記錄(在-1版本中但不在+0版本中的記錄)和更新記錄(兩個版本中的記錄,但是+0版本的記錄可能在某些字段中有變化)。我怎樣才能得到這些更新記錄?如果可以,我可以使用Joinkeys嗎?使用連接鍵排序不匹配的記錄
注:此更新可以從第1列是文件的最後一列(+0版本的GDG)的
我有兩個GDG文件(-1 & 0版本)。使用這兩個文件需要生成一個平面文件,其中包含插入記錄(不在-1版本中但在+0版本中的記錄),刪除記錄(在-1版本中但不在+0版本中的記錄)和更新記錄(兩個版本中的記錄,但是+0版本的記錄可能在某些字段中有變化)。我怎樣才能得到這些更新記錄?如果可以,我可以使用Joinkeys嗎?使用連接鍵排序不匹配的記錄
注:此更新可以從第1列是文件的最後一列(+0版本的GDG)的
這是一個簡單的JOINKEYS任何地方:
OPTION COPY
JOINKEYS F1=INA,FIELDS=(4,80),SORTED,NOSEQCK
JOINKEYS F2=INB,FIELDS=(4,80),SORTED,NOSEQCK
JOIN UNPAIRED
REFORMAT FIELDS=(F1:1,227,F2:1,227,?)
的OPTION COPY
是主要任務,生成加入文件後運行的位。 SORT FIELDS=COPY
相當於OPTION COPY。
假設您的數據已經按鍵排序。如果沒有,請刪除SORTED,NOSEQCK,但請記住,通過相同的密鑰,您可能會得到「虛假」匹配,而不是相對於插入和刪除文件中的相同位置。
JOIN UPAIRED
給你匹配和兩種類型的不匹配。 JOIN UNPAIRED,F1,F2
是等同的。
REFORMAT
語句定義了連接文件上的記錄。你想要從/兩個記錄中得到所有的數據,並且你想知道是否有匹配,如果不匹配,哪個輸入文件有記錄。這就是問號(?)是什麼。它將包含'B'(在兩個文件上),'1'(在F1上,或僅在第一個物理存在的JOINKEYS)或'2'(在另一個JOINKEYS文件上)。
然後您需要輸出數據。我假設你想在不同的地方的數據:
OUTFIL FNAMES=INSERT,
INCLUDE=(455,1,CH,EQ,C'1'),
BUILD=(1,227)
OUTFIL FNAMES=DELETE,
INCLUDE=(455,1,CH,EQ,C'2'),
BUILD=(228,227)
OUTFIL FNAMES=CHANGE,
INCLUDE=(455,1,CH,EQ,C'B',
AND,
1,227,CH,NE,228,227,CH),
BUILD=(1,454)
OUTFIL FNAMES=UNCHNGE,
SAVE,
BUILD=(1,227)
INCLUDE=
(或OMIT=
)包括或從「OUTFIL集團」忽略的數據。 OUTFILs「同時運行」(如同樣的記錄依次呈現給每個記錄,然後是下一個記錄等)。
FNAMES爲您提供了放入JCL的DDname。
對於CHANGE,INCLUDE是針對第一條記錄(已知因'B'測試而匹配)不等於第二條記錄。目前還不完全清楚你想在這裏輸出什麼。目前,這些輸出爲F2附加到F1,和整個(兩倍大小)記錄寫入。你也可以用「對」(BUILD =(1,227,/,228,227))或只是其中一個記錄來寫記錄。
SAVE是說:「如果這個記錄一直沒有出現任何OUTFIL的事情,在這裏輸出。這是測試當然是有用的,即使你不希望它在決賽中的代碼。
什麼是RECFM和LRECL?什麼是關鍵? –
RECFM = FB,LRECL = 227,關鍵=(04,80) – Maxcc0