REXX/SORT 拆分顺序文件



我需要拆分一个顺序的大型机文件。好吧,准确地说,我需要从特定关键字开始将内容从此文件复制到另一个文件。例:

line1
line2
line3
start line4
line5
line6

在这种情况下,我需要搜索"开始"并使用 REXX 或 SORT 将从第 4 行开始的所有内容复制到另一个文件。有什么建议吗?

编辑:我在REXX中想到但不满意的内容

"EXECIO * DISKR INPUT (STEM INPUT. FINIS)" 
LINEINPUT = 1 
LINEOUTPUT = 1 
FOUND = 0 /*working like a boolean? 
DO WHILE LINEINPUT <= INPUT.0 
  IF INPUT.LINEINPUT = start line4 THEN DO 
  FOUND = 1 
  END 
  IF FOUND = 1 THEN DO 
    INPUT.LINEINPUT = OUTPUT.LINEOUTPUT 
    LINEOUTPUT = LINEOUTPUT + 1 
  END 
LINEINPUT = LINEINPUT + 1 
END

也许是这样的事情,但这意味着我需要逐行浏览所有这些文件。也许JCL有更好的方法?也许Syncsort可以做这样的事情?

RECFM是固定的。准确地说是亚马逊物流。LRECL 170.触发器可以是此行的一部分,也可以是整行。这并不重要,因为它在每个文件中始终是同一行,甚至前几个字符在整个文件中也是唯一的。表示"开始"在文件中只出现一次。

对于触发器的固定位置启动:

  OPTION COPY
  INREC IFTHEN=(WHEN=GROUP,
                 BEGIN=(1,5,CH,EQ,C'start'),
                 PUSH=(171:ID=1))
  OUTFIL OMIT=(171,1,CH,EQ,C' '),
         BUILD=(1,170)

对于可变位置的唯一触发器:

  OPTION COPY
  INREC IFTHEN=(WHEN=GROUP,
                 BEGIN=(1,170,SS,EQ,C'start'),
                 PUSH=(171:ID=1))
  OUTFIL OMIT=(171,1,CH,EQ,C' '),
         BUILD=(1,170)

WHEN=GROUP为您提供PUSH,它将当前记录中的数据,或组号(ID)或组内的数字(SEQ)放到组中所有记录(包括当前记录)的该位置。在这种情况下,"组"是文件的其余部分。

SS是字段类型,允许子字符串搜索。

然后,OUTFIL上的OMIT=(类似于OMIT COND=,但在文件由控制卡处理后)从标志中实际选择(没有来自 PUSH 的值的自动扩展记录将设置为空白)和 BUILD 以删除额外的字节。

需要额外的字节,因为 SORT 没有用于定义的"程序存储" - 额外的字段必须在记录上(或者,仅在当前记录的持续时间内,在 PARSEd 字段中)。

抱歉没有发表评论,因为我没有足够的声誉,我正在回答这个问题。稍后将删除此内容

您可以通过两种方法实现这一点,即通过REXX或JCL。请向我们展示您到目前为止尝试过的内容,以便我们找出需要改进的地方。

相关内容

  • 没有找到相关文章

最新更新