我有两个gdg文件(-1& 0版本(。使用这两个文件需要生成一个将具有插入记录(不在-1版中但在 0版本中的记录(的平面文件,删除记录(记录在-1中,但不在 0版本中(和更新记录(两个版本中的记录,但 0版本可能在某些字段中具有更改(。如何获取这些更新记录?我可以使用Joinkeys做到这一点,如果是,如何?
注意:更新可以从第1列到文件的最后一列(GDG的 0版本(
这是一个简单的联接:
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
等效于选项复制。
假设您的数据已经按键顺序。如果没有,请删除分类的鼻QCK,但请记住,您可能会通过相同的键相对于插入和删除在文件上的相同位置。
。 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。
为了更改,包括第一个记录(已知由于" B"的测试而匹配(不等于第二个记录。目前尚不清楚您在这里想要什么输出。当前,这些输出是F2附加到F1的,并且整个(大小两倍(编写的记录。您也可以在" Pairs"(build =(1,227,/,228,227(中写入记录(或仅一个或另一个记录。
保存是一件说:"如果此记录尚未出现在任何Outfil上,请在此处输出。即使您不希望在最终代码中进行测试也很有用。
<</p>