我有两个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