如何在一个条件下写一个JCL SORT到COPY排序字段; +检查文件第一行是否包含' FILE1'写在第一行

时间:2014-08-12 22:30:25

标签: sorting jcl

假设我们有一个输入文件:

 123456789+123456789+
 FILE1 -X-X-X-X-X-X-X
 ABCD 1234 XOXOXO 001
 WXYZ 5678 YOYOYO 002
 ABCD 0011 XOXOXO 003

我需要在FILE2中排序数据 包括=(11,6,CH,EQ,C' XOXOXO')很容易获得。

但是我还需要检查第一行(这是文件的标题)应该包含第一行写的FILE1。 那么我们只能检查INCLUDE条件 INCLUDE =(11,6,CH,EQ,C' XOXOXO&#39)

我想我需要IF然后=(类似的东西)

1 个答案:

答案 0 :(得分:2)

您需要临时为记录添加序列号,测试序列号是否为WHEN = GROUP中的序列号并推送值为1,6。然后使用OUTFIL INCLUDE =(类似于"第二个镜头"在INCLUDE COND)和BUILD将您的记录恢复到之前的大小。

  OPTION COPY
  INREC IFTHEN=(WHEN=INIT,
                     OVERLAY=(21:SEQNUM,7,ZD)),
        IFTHEN=(WHEN=GROUP,BEGIN=(21,7,ZD,EQ,1),
                     PUSH=(28:1,6))
  OUTFIL INCLUDE=(28,6,CH,EQ,C'FILE1 ',
                 AND,
                 rest of your condition),
         BUILD=(1,20)

请注意,SEQNUM之后和BEGIN中的7是相同的字段,这应该足够长以计算文件中的所有记录,否则您将获得一个泡菜。

您不能使用INCLUDE COND =因为您似乎无法识别标题,除非它是第一条记录,并且INCLUDE / OMIT COND =在其他任何内容之前处理。