按组中第二条记录上的数据对记录组进行排序



我正在尝试对记录组进行排序。(即)在第二行注明日期第一行中的"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 . 

请提供关于如何得到上述输出的任何建议。

假设:你的组是规则的(三条记录,总是按这个顺序);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))

那是大纲。等待更多细节....

相关内容

  • 没有找到相关文章

最新更新