我有一个6行输入文件,它由一个字段(位置1到6)组成,每个行包含不同的值。根据此字段中包含的不同值,其他字段(从位置7到80)将移动到输出中的单个行。
E.G。
输入:
035MI 88122
035ST 72261
035SU 317786762
105 06616858
1601 11
1651 0000000140006PC
输出:
1 8812272261317786762 06616858 11 0000000140006PC
我需要找出如何在不同的行中读取这些内容然后输出到单个行。我尝试过使用类似代码的东西:
SORT FIELDS=COPY
INREC IFTHEN=(WHEN=(1,6,CH,EQ,C'035MI '),
OVERLAY=(3:7,5)),
但是这会将数据移动到单独行上的正确位置,如下所示:
1 8812272261317786762
1 06616858
1 11
1 0000000140006PC
所以现在我认为我需要在一个步骤中进行排序,在另一个步骤中进行合并。如果可能的话,我宁愿一个人做。我很感激你的帮助。感谢。
答案 0 :(得分:1)
您可以为每条记录添加序列号。
使用WHEN = GROUP将数据从一个记录复制到一个或多个后续记录。
你使用OUTFIL INLUDE =来获取最终记录。
OPTION COPY
INREC IFTHEN=(WHEN=INIT,
OVERLAY=(81:SEQNUM,1,ZD)),
IFTHEN=(WHEN=GROUP,
BEGIN=(81,1,CH,EQ,C'1'),
PUSH=(somestuff),
RECORDS=6),
IFTHEN=(WHEN=GROUP,
BEGIN=(81,1,CH,EQ,C'2'),
PUSH=(somestuff),
RECORDS=5),
IFTHEN=(WHEN=GROUP,
BEGIN=(81,1,CH,EQ,C'3'),
PUSH=(somestuff),
RECORDS=4),
IFTHEN=(WHEN=GROUP,
BEGIN=(81,1,CH,EQ,C'4'),
PUSH=(somestuff),
RECORDS=3),
IFTHEN=(WHEN=GROUP,
BEGIN=(81,1,CH,EQ,C'5'),
PUSH=(somestuff),
RECORDS=2),
OUTFIL INCLUDE=(81,1,CH,EQ,C'6'),
BUILD=(1,80)
你需要做一些计划。第六条记录将包含所有数据,但可能尚未按您所需的顺序排列。要么在INREC上使用IFTHEN =(WHEN =(逻辑表达式)(以识别第六条记录),要么使用OUTREC上的BUILD,您可以进行最终格式化。
您需要每次更改something
,它将是receivingposition:sourceposition,length
DFSORT手册非常好,有一个使用入门适用于产品新手,您需要的所有内容都在应用程序编程指南,