比较两个文件并将其写入“匹配”。并且“无与伦比”文件
我有两个输入文件,每个文件的长度为5200字节。七个字节的密钥用于比较两个文件,如果有匹配则需要将其写入“匹配”文件,但在写入匹配文件时,我需要来自
infile1
的几个字段和来自infile2
的所有其他字段。
如果没有匹配则写入no match
文件。
是否可以在sort
中进行?我知道可以使用COBOL程序轻松完成,但只想知道SORT/ICETOOL/Easytrieve Plus (EZTPA00)
。
没有找到相关结果
已邀请:
5 个回复
勺的驴吓识
“JOINKEYS”由三个任务组成。子任务1是第一个JOINKEYS。子任务2是第二个JOINKEYS。主要任务如下,是处理连接数据的位置。在上面的示例中,它是一个简单的COPY操作。连接的数据将简单地写入SORTOUT。 JOIN语句定义了匹配的记录,UNPAIRED F1和F2记录将被呈现给主任务。 REFORMAT语句定义将呈现给主任务的记录。一个更有效的例子,想象F2需要三个字段,是:
F2上的每个字段都定义有起始位置和长度。 然后由Main任务处理的记录长5311字节,F2的字段可以由5201,10,5211,1,5212,100引用,F1记录为1,5200。 实现相同目标的更好方法是使用JNF2CNTL减小F2的大小。
一些SyncSort安装不支持JNF2CNTL,即使支持(从Syncsort MFX for z / OS版本1.4.1.0开始),SyncSort也没有记录。对于1.3.2或1.4.0的用户,可以从SyncSort获得更新以提供JNFnCNTL支持。 应该注意的是,JOINKEYS默认使用选项EQUALS对数据进行排序。如果JOINKEYS文件的数据已按顺序排列,则应指定SORTED。对于DFSORT,如果不需要序列检查,也可以指定NOSEQCHK。
虽然请求很奇怪,但由于无法确定源文件,所有不匹配的记录都将转到单独的输出文件。 使用DFSORT时,有一个匹配标记,用?指定?在REFORMAT中:
这会将REFORMAT记录的长度增加一个字节。的?可以在REFORMAT记录的任何位置指定,无需指定。的?由DFSORT解析为:B,来自两个文件的数据; 1,来自F1的无与伦比的记录; 2,来自F2的无与伦比的记录。 SyncSort没有匹配标记。 REFORMAT记录中数据的缺失或存在必须由值确定。在两个输入记录上选择一个不包含特定值的字节(例如,在一个数字内,决定一个非数字值)。然后将该值指定为REFORMAT上的FILL字符。
如果F1上的位置1自然不能有“$”而F2上的位置20也不能,那么这两个位置可以用来确定匹配的结果。如有必要,可以测试整个记录,但会占用更多的CPU时间。 明显的要求是将所有来自F1或F2的不匹配记录写入一个文件。这将需要REFORMAT声明,其中包括两个完整的记录: DFSORT,输出不匹配的记录:
SyncSort,输出不匹配的记录:
SyncSort的编码也适用于DFSORT。 获得匹配的记录很容易。
SAVE确保所有未由其他OUTFIL写入的记录都将写入此处。 需要重新格式化,主要从F1输出数据,但从F2中选择一些字段。这适用于DFSORT或SyncSort:
整个事情,任意的开始和长度是: DFSORT
Syncsort公司
墩瓣茅械
校勒魏寡
轻松完成。这里是伪代码: 代码
并通过重新格式化文件获得两个记录。如果任何一个文件都没有匹配,那么追加/前缀一些特殊字符
通过IFTHEN比较
,如果存在,那么它没有配对记录,它将被写入未配对文件并休息到配对文件。 请回答任何问题。
芦歉竭皑
臀夯脖锑