【发布时间】:2021-10-12 14:00:12
【问题描述】:
我有一个包含 JES2 作业输出的文件。我正在使用DFSORT 练习以按作业从文件中检索一些信息。
我想要实现的一件事是:
- 第一行作业输出
- 作业输出的最后一行
- 作业输出的总行数(每个作业)
我设法在我的结果中获得了(完整输出的)总行数、作业编号和总行数:
(1) (2) (3)
000001 000001 000001 (1) Total lines
000002 000001 000002 (2) Job number
000003 000001 000003 (3) Lines in job
000004 000001 000004
000005 000001 000005
000006 000001 000006
000007 000001 000007
000008 000001 000008
...
000953 000001 000953
000954 000001 000954
000955 000001 000955
000956 000001 000956
000957 000001 000957
000958 000001 000958
000959 000001 000959
000960 000002 000001 <-- new job output starts here
000961 000002 000002
000962 000002 000003
000963 000002 000004
000964 000002 000005
000965 000002 000006
为了实现上述输出,我使用了以下SYSIN DD 语句(PGM=SORT):
第 1 行:
INREC OVERLAY=(135:SEQNUM,6,ZD,START=1,INCR=1)
INREC IFTHEN=(WHEN=GROUP,
BEGIN=(21,6,CH,EQ,C'J E S 2 '),
PUSH=(142:ID=6), <--- Second row
HIT=NEXT),
IFTHEN=(WHEN=GROUP,
BEGIN=(21,6,CH,EQ,C'J E S 2 '),
PUSH=(149:SEQ=6)) <--- 3th row
我想要达到的结果是这样的:
JOBNAME f_row l_row rowcnt
JOB12345 000001 000100 000099
JOB54321 000101 000500 000399
我目前遇到的问题是我不知道如何计算rowcnt 列。我能够计算 rowcnt 列,但我只能在下一份工作的第一行执行此操作(通过SUB)。
我认为最好的方法是使用 IFTHEN 并将 rowcnt 推送到组中的所有记录,但我在过去 2 天内没有这样做。
此时我被卡住了。我不再确定应该使用哪些语句来完成此操作。一些论坛提供了一种使用 2 个单独文件的方法,但在我的情况下这不是首选。 任何正确方向的指导将不胜感激。
【问题讨论】: