我正在尝试对记录组进行排序。 (即)按日期排在第二行 第一行中的“100”是记录的开头。 “BBB”是唱片的第二行。 “CCC”是记录的第三行。
输入:
100 AAAAA AAAA AAAA AAAAAAA
BBBBB BBBB BBB START :05/01/2014 AT 05:00:00
CCCC CCCC CCCC CCCC .
200 AAAA1 AAAA1 AAAA AAAAAAA
BBBBB1 BBBB BBB START :01/01/2014 AT 05:00:00
CCCC1 CCCC CCCC CCCC .
我要求输出为
200 AAAA1 AAAA1 AAAA AAAAAAA
BBBBB1 BBBB BBB START :01/01/2014 AT 05:00:00
CCCC1 CCCC CCCC CCCC .
100 AAAAA AAAA AAAA AAAAAAA
BBBBB BBBB BBB START :05/01/2014 AT 05:00:00
CCCC CCCC CCCC CCCC .
请提供有关如何获得上述输出的任何建议。
答案 0 :(得分:0)
假设:您的小组是常规的(三个记录,总是按此顺序); RECFM F / FB(甚至是FBS); LRECL 80(通常不是"太大")。
对于第二和第三条记录,IFTHEN =(WHEN = GROUP可以很容易地用于将日期从第二条记录传播到第三条记录。
这对第一张唱片有何帮助?没有按'吨。因此,在识别组的第一个记录时,扩展记录并将第一个记录复制到第二个记录。
现在你只需要第二和第三条记录(第二条包含第一条记录)。
您需要OUTFIL来排除原始的第一条记录并创建新的第一条记录(使用斜杠运算符/
)。
OPTION EQUALS
INREC IFTHEN=(WHEN=GROUP,
BEGIN=(1,1,CH,NE,C' '),
RECORDS=2,
PUSH=(81:SEQ=1,1,80)),
IFTHEN=(WHEN=INIT,
BEGIN=(81,1,CH,EQ,C'2'),
RECORDS=2,
PUSH=(162:startposofdate,lengthofdate))
SORT FIELDS=(162,length-of-date,CH,A)
OUTFIL OMIT=(81,1,CH,EQ,C'1'),
IFTHEN=(WHEN=(81,1,CH,EQ,C'2').
BUILD=(82,80,
/,
1,80)),
IFTHEN=(WHEN=NONE,
BUILD=(1,80))
这是一个大纲。等待更多的detials ....