IBM大型机论坛索引
 
登录
 
IBM大型机论坛索引 大型机:搜索 IBM Mainframe论坛:常见问题解答 寄存器
 

合并两个以上的记录


IBM大型机论坛 -> DFSORT / ICETOOL
发表新话题   回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
普里诺
警告:1

高级会员


已加入:2009年2月7日
职位:1241
地点:立陶宛维尔纽斯

发布发表:2021年1月12日星期二9:36 pm
引用回复

我目前正在使用
码:
*合并来自LIFT的LW文件
*
*这些排序命令既可以处理旧的,也可以保持不变,因为
*与新的记录合并一样,LW输出文件。
****************************************************** *********************
 OPTION COPY
 INREC  IFTHEN =(WHEN=(1,1,CH,EQ,C'1',OR,                 ASA
                   114,1,CH,EQ,C'+',OR,                 Old eol
                    114,1,CH,EQ,C'|'),                   Old eol
       OVERLAY=(122:C' ')),
        IFTHEN =(WHEN=NONE,
       OVERLAY=(122:SEQNUM,8,ZD,122:122,8,ZD,MOD,+ 2,M11,LENGTH = 1))
*
 OUTREC IFTHEN =(WHEN=GROUP,BEGIN=(122,1,CH,EQ,C'1'),
          PUSH =(123:1,121))
*
 OUTFTIL FTOV,VLTRIM = C'',
          OMIT =(122,1,CH,EQ,C'1'),
        IFTHEN =(WHEN=(122,1,CH,EQ,C'0'),BUILD=(123,121,1,121)),
        IFTHEN =(WHEN=(122,1,CH,EQ,C' '),BUILD=(1,121))


就像魅力一样。

但是,输入文件将要更改,并且由于我们仍然不愿意更新回归测试框架来满足FB(121)以外的文件的需要,因此上述内容必须更改为其他输入记录,这意味着如果有其他输入记录,当组。我想将当前叠加层更改为固定的“ 1”,然后是当前的seqnum逻辑(如果我错了,请纠正我!),然后添加另一个具有固定的“ 2”和mod +3序列号的问题,新记录需要由三个记录组成。 (是的,叹气...)

但是,我可以使用多个“ PUSH”吗?手册告诉我

引用:
您可以在PUSH中使用以下命令:
c:指定要覆盖的输出位置(列)。如果你不
为第一项指定c:,默认为1 :。如果不指定c:
对于任何其他项目,它在上一个项目之后开始。您可以指定
项以任何顺序排列,并与输出列重叠。 c可以是1到
32752.
如果您指定将输出记录扩展到
输入记录的末尾,记录长度自动
增加到该长度,并在左侧填入空白
需要。对于可变长度记录,RDW长度会增加
在所有项目都完成后对应于较大的记录长度
处理。指定输入字段中丢失的字节替换为
空白,以便可以处理填充字段。
下午
在每个组的第一个输入记录中指定一个字段
传播到该组的每条记录。
p指定开始
该字段在输入记录中的位置,而m指定其长度。
字段不得超出位置32752。
ID = n
指定将长度为n的ZD标识符添加到每个记录
每组。第一组的标识符从1开始,为
每个后续组增加1。 n可以是1到15。
序列= n
指定要添加长度为n的ZD序列号
每个组的每条记录。序列号从1开始
每个组的第一条记录,并为每个组增加1
小组的后续记录。 n可以是1到15。


重点增加了,看来我只能合并第一条记录中的数据?

还是我不得不诉诸更奇特的东西 使用SORT的大型机JCL记录转置.
回到顶部
查看用户资料 发送私信
谢尔盖肯

活跃成员


已加入:2008年4月29日
职位:937
所在地:马里兰

发布发表:2021年1月12日星期二11:44 pm
引用回复

也许,尝试与 SEQNUM,...,RESTART =(x,y) 参数?

附言
看一下实际记录的样本会很有帮助...
逆向工程很无聊...
回到顶部
查看用户资料 发送私信
普里诺
警告:1

高级会员


已加入:2009年2月7日
职位:1241
地点:立陶宛维尔纽斯

发布发表:2021年1月13日星期三2:05上午
引用回复

根本的问题是,您不能超过组的第一条记录。

我现在正在尝试做些事情,使我可以对连续两个SORT执行使用相同的排序控制卡,其中在第一遍中,两个表的前两个记录被合并,而在第二遍中,仅剩余的将第二个表的两个记录合并,并使用分步方法,将对输入数据集执行各种SORT控制语句的输出转储到SYSOUT,我十分确定这确实是可能的。

如果成功,我将结果发布在这里。
回到顶部
查看用户资料 发送私信
罗希特·乌马尔吉卡(Rohit Umarjikar)

全球主持人


已加入:2010年9月21日
帖子:2575
地点:美国纽约

发布发表:2021年1月13日星期三2:55上午
引用回复

如果不同的GROUP,则应该允许另一个PUSH,是否有错误?为了完全解决问题,请向我们分享示例输入,规则和预期输出,并且有人可能会提出相关建议或将所有不同解决方案结合在一起。
回到顶部
查看用户资料 发送私信
普里诺
警告:1

高级会员


已加入:2009年2月7日
职位:1241
地点:立陶宛维尔纽斯

发布发表:2021年1月13日星期三5:28 pm
引用回复

好,这是一些原始数据,所有真实记录都是FB(121),输出格式是VB

  • 类型“ 1”的记录是独立记录,分隔线,检测:
    码:
    IFTHEN =(WHEN=(1,2,CH,EQ,C'1 ',要么,
                  1,23,CH,EQ,C'                       ',OR,
               114,1,CH,EQ,C'+',OR,
                114,1,CH,EQ,C'|'),

  • 类型'2'记录将每2合并-总存在2的倍数,检测:
    码:
    IFTHEN =(WHEN=(9,1,CH,EQ,C'+',OR,
                  9,1,CH,EQ,C'|',OR,
                 16,1,CH,EQ,C'+',OR,
                 16,1,CH,EQ,C'|'),

  • 类型“ 3”记录将每3合并一次-始终存在3的倍数,检测:
    码:
    IFTHEN =(WHEN=NONE,

并且由于类型'2'的第二条记录的格式等于类型'3'的第二条记录的格式,因此IFTHEN =(WHEN语句必须按此顺序。类型'1的最后两个条件从所有输出由未拆分记录组成的时间开始,使用来处理遗留数据,这种情况在运行reqression测试框架时仍然会发生。

在:
码:
1
2a
2b
2c
2d
2e
2f
1
3a
3b
3c
3d
3e
3f
3g
3h
3i

出:
码:
1
2a2b
2c2d
1
3a3b3c
3d3e3f
3g3h3i


随时查看是否可以找到解决方案(只需将三个“ IFTHEN =(WHEN”替换为“ 1”,“ 2”和“ 3”的测试)即可。

我非常接近在我需要的两个工作步骤中使用一组相同的排序控制语句的东西(我愿意使用ICETOOL进行一个工作步骤解决方案),这可能比使用SUM FIELDS =()解决方案更具异国情调在Stackoverflow上, icon_smile.gif
回到顶部
查看用户资料 发送私信
普里诺
警告:1

高级会员


已加入:2009年2月7日
职位:1241
地点:立陶宛维尔纽斯

发布发表:2021年1月13日星期三5:58 pm
引用回复

这是数据的摘录,请记住它需要保存在FB(121)数据集中, 前导空白是相关的,所以在使用Cut时要小心& Paste!

码:
1                                                                                                                       
 + ------ + ------------------------------- + ---------- --------------------- + ---------------------------- --- + ----------------
--------------- + ------------------------------- +- ----------------------------- + -------------------- ----------- +         
 |      |星期一                        | Tuesday                       | Wednesday                     | Thursday       
               | Friday                        | Saturday                      | Sunday                        |         
 |     + ---- + --------- + -------- + ------- + ---- + --------- +- ------ + ------- + ---- + --------- + -------- + ------- + --- -+ --------- +-
------- + ------- + ---- + --------- + -------- + ------- +- -+ --------- + -------- + ------- + ---- + --------- + ----- --- + ------- +         
 | Year | #D |      KM |   Time |    V = | #D |      KM |   Time |    V = | #D |      KM |   Time |    V = | #D |      KM |
  时间|    V = | #D |      KM |   Time |    V = | #D |      KM |   Time |    V = | #D |      KM |   Time |    V = |         
 + ------ + ---- + --------- + -------- + ------- + ---- + ----- ---- + -------- + ------- + ---- + --------- + -------- + ---- --- + ---- + --------- +-
------- + ------- + ---- + --------- + -------- + ------- +- -+ --------- + -------- + ------- + ---- + --------- + ----- --- + ------- +         
 | 1980 |  4 |  1049.2 |  12:23 |  84.7 |  2 |   355.0 |   4:02 |  88.0 |  2 |   260.0 |   2:50 |  91.8 |  1 |    77.0 |
  0:54 |  85.6 |  2 |   366.0 |   4:31 |  81.0 |  1 |   128.0 |   1:58 |  65.1 |  1 |   746.0 |   7:06 | 105.1 |         
 | 1982 |  4 |  1229.4 |  14:14 |  86.4 |  1 |   303.1 |   3:26 |  88.3 |  4 |  1281.8 |  16:14 |  79.0 |  4 |  2316.2 |
 28:23 |  81.6 |  3 |  1596.8 |  17:52 |  89.4 |  2 |   682.1 |   9:39 |  70.7 |  2 |   492.2 |   5:41 |  86.6 |         
 | 1983 |  6 |  3653.6 |  38:30 |  94.9 |  5 |  3291.0 |  38:19 |  85.9 |  4 |  1089.5 |  13:08 |  83.0 |  4 |  1675.4 |
 22:02 |  76.0 |  5 |  2029.3 |  23:36 |  86.0 |  1 |   282.8 |   3:25 |  82.8 |    |         |        |       |         
 | 1985 |  4 |  2237.9 |  25:37 |  87.4 |  3 |  1719.7 |  18:22 |  93.6 |  2 |  2267.3 |  22:17 | 101.7 |  2 |  1169.3 |
 11:30 | 101.7 |    |         |        |       |  1 |   652.3 |   8:46 |  74.4 |  1 |   483.4 |   7:02 |  68.7 |         
 + ------ + ---- + --------- + -------- + ------- + ---- + ----- ---- + -------- + ------- + ---- + --------- + -------- + ---- --- + ---- + --------- +-
------- + ------- + ---- + --------- + -------- + ------- +- -+ --------- + -------- + ------- + ---- + --------- + ----- --- + ------- +         
                                                                                                                         
 + ----- + --------------------------------- + --------- ------------------------ + ------------------------- -------- + -----------
---------------------- + --------------------------- ------ + --------------------------------- + --------- ---------------------
--- + --------------------------------- +                                                                                   
 |     | Monday                          | Tuesday                         | Wednesday                       | Thursday 
                      |星期五                          | Saturday                        | Sunday                       
   | Total                           |                                                                                   
 |     + ------ + --------- + -------- + ------- + ------ + -------- -+ -------- + ------- + ------ + --------- + -------- + ----- -+ ------ + ----
----- + -------- + ------- + ------ + --------- + -------- +- ------ + ------ + --------- + -------- + ------- + ------ +- ------- + -------- + ----
--- + ------ + --------- + -------- + ------- +                                                                                   
 | Day |    # |      KM |   Time |    V = |    # |      KM |   Time |    V = |    # |      KM |   Time |    V = |    # |   
  KM |   Time |    V = |    # |      KM |   Time |    V = |    # |      KM |   Time |    V = |    # |      KM |   Time |   
V = |    # |      KM |   Time |    V = |                                                                                   
 + ----- + ------ + --------- + -------- + ------- + ------ +- ------- + -------- + ------- + ------ + --------- + -------- + ------- + ------ + ----
----- + -------- + ------- + ------ + --------- + -------- +- ------ + ------ + --------- + -------- + ------- + ------ +- ------- + -------- + ----
--- + ------ + --------- + -------- + ------- +                                                                                   
 |   1 |   27 |  4462.0 |  42:47 | 104.3 |   28 |  5466.2 |  53:48 | 101.6 |   61 |  7389.2 |  67:51 | 108.9 |   35 |  50
04.6 |  44:29 | 112.5 |   59 |  7552.0 |  73:40 | 102.5 |   16 |  1049.5 |  10:15 | 102.4 |   20 |  2878.4 |  26:51 | 107
.2 |  246 | 33801.9 | 319:41 | 105.7 |                                                                                   
 |   2 |   27 |  3233.6 |  32:30 |  99.5 |   20 |  3169.4 |  32:22 |  97.9 |   37 |  3110.3 |  30:32 | 101.9 |   18 |  51
45.6 |  53:06 |  96.9 |   15 |  3385.8 |  33:01 | 102.5 |   36 |  4217.1 |  42:17 |  99.7 |    7 |   872.1 |   7:31 | 116
.0 |  160 | 23133.9 | 231:19 | 100.0 |                                                                                   
 + ----- + ------ + --------- + -------- + ------- + ------ +- ------- + -------- + ------- + ------ + --------- + -------- + ------- + ------ + ----
----- + -------- + ------- + ------ + --------- + -------- +- ------ + ------ + --------- + -------- + ------- + ------ +- ------- + -------- + ----
--- + ------ + --------- + -------- + ------- +                                                                                   
 | Tot |  971 | 19197.7 | 119: 106.5 | 1009 | 37611.1 | 306:19 | 105.3 |  871 | 19047.8 | 109:28 | 107.3 |  673 | 938
83.3 | 915:33 | 102.5 |  650 | 77116.4 | 758:42 | 101.6 |  321 | 38841.0 | 377:36 | 102.9 |  293 | 44228.8 | 407:06 | 108
.6 | 4788 | 29926.1 | 993:52 | 105.1 |                                                                                   
 + ----- + ------ + --------- + -------- + ------- + ------ +- ------- + -------- + ------- + ------ + --------- + -------- + ------- + ------ + ----
----- + -------- + ------- + ------ + --------- + -------- +- ------ + ------ + --------- + -------- + ------- + ------ +- ------- + -------- + ----
--- + ------ + --------- + -------- + ------- +                                                                                   
回到顶部
查看用户资料 发送私信
谢尔盖肯

活跃成员


已加入:2008年4月29日
职位:937
所在地:马里兰

发布发表:2021年1月13日星期三11:27下午
引用回复

有点棘手,但“有效”(此处的流行口号 icon_biggrin.gif )
限制:每种类型只有“完整”行组可以正确处理。

码:
1
2a
2b
2c
2d
2e
2f
1
3a
3b
3c
3d
3e
3f
3g
3h
3i
1
2a
2b
2c
2d
2e
2f

码:
 INREC IFTHEN =(WHEN=GROUP,
               KEYBEGIN=(1,1),
               PUSH=(81:1,1,
                     82:SEQ=8)),
       IFTHEN=(WHEN=(1,1,ZD,GT,+0),
               OVERLAY=(82:(82,8,ZD,   type '1': only 1
                            SUB,+1),   type '2': 1-2-1-2-1-2-...
                        MOD,81,1,ZD,   type '3': 1-2-3-1-2-3-...
                        ADD,+1,EDIT=(T)))
 SORT FIELDS=COPY
 OUTREC IFTHEN =(WHEN=GROUP,
                BEGIN=(82,1,CH,EQ,C'3'),
                PUSH =(94:1,2)),
        IFTHEN =(WHEN=GROUP,
                BEGIN=(82,1,CH,EQ,C'2'),
                PUSH =(92:1,2)),
        IFTHEN =(WHEN=GROUP,
                BEGIN=(82,1,CH,EQ,C'1'),
                PUSH =(90:1,2))
 OUTFIL INCLUDE=(81,1,CH,EQ,82,1,CH),   - only full group
        IFTHEN =(WHEN=(81,1,CH,EQ,C'1'),
                建造=(90,2,4X)),
        IFTHEN =(WHEN=(81,1,CH,EQ,C'2'),
                建造=(90,4,2X)),
        IFTHEN =(WHEN=(81,1,CH,EQ,C'3'),
                建造=(90,6))
 END

码:
**************************************数据顶部*********
1
2a2b
2c2d
2e2f
1
3a3b3c
3d3e3f
3g3h3i
1
2a2b
2c2d
2e2f
********************************数据底部*******
回到顶部
查看用户资料 发送私信
乔格·芬代森

活跃用户


已加入:2015年8月15日
帖子:388
地点:德国班贝格

发布发表:2021年1月14日星期四12:21上午
引用回复

码:
1
2a
2b
2c
2d
2e
2f
1
3a
3b
3c
3d
3e
3f
3g
3h
3i


更多步骤,但结果相同:
码:
  记录 IFTHEN =(WHEN=INIT,OVERLAY=(35:SEQNUM,4,ZD)),                 
    IFTHEN =(WHEN=(1,1,CH,EQ,C'1'),                                   
      叠加=(29:+0,M11,LENGTH=1),HIT=NEXT),                         
*                                                                     
    IFTHEN =(WHEN=(1,1,CH,EQ,C'2'),                                   
      叠加=(29:SEQNUM,1,ZD,START=0),HIT=NEXT),                     
    IFTHEN =(WHEN=(1,1,CH,EQ,C'2'),                                   
      叠加=(29:29,1,ZD,MOD,+ 2,M11,LENGTH = 1),HIT=NEXT),             
*                                                                     
    IFTHEN =(WHEN=(1,1,CH,EQ,C'3'),                                   
      叠加=(29:SEQNUM,1,ZD,START=0),HIT=NEXT),                     
    IFTHEN =(WHEN=(1,1,CH,EQ,C'3'),                                   
      叠加=(29:29,1,ZD,MOD,+ 3,M11,LENGTH = 1),HIT=NEXT),             
*                                                                     
    IFTHEN =(WHEN=(29,1,ZD,EQ,+0),OVERLAY=(3:4Z),HIT=NEXT),           
    IFTHEN =(WHEN=(29,1,ZD,EQ,+1),OVERLAY=(3:1,2,1:2Z,5:2Z),HIT=NEXT),
    IFTHEN =(WHEN=(29,1,ZD,EQ,+2),OVERLAY=(5:1,2,1:4Z),HIT=NEXT),     
*                                                                     
    IFTHEN =(WHEN=ANY,OVERLAY=(35:35,4,ZD,SUB,29,1,ZD,M11,LENGTH = 4))   
*                                                                     
    SORT FIELDS=(35,4,ZD,A)                                           
    SUM FIELDS=(1,2,BI,3,2,BI,5,2,BI)                                 
*                                                                     
    OUTFIL FNAMES=(SORTOUT),                                         
      REMOVECC,                                                       
      建造=(1,6)                                                     
  结束


但是,SUM对于实际数据并不是很实际。
回到顶部
查看用户资料 发送私信
普里诺
警告:1

高级会员


已加入:2009年2月7日
职位:1241
地点:立陶宛维尔纽斯

发布发表:2021年1月14日星期四12:53上午
引用回复

太好了,但是我可能永远都不会给出易于处理的可塑数据。您的
码:
IFTHEN =(WHEN=(1,1,ZD,GT,+0)
依赖于'1','2','3',而实际数据则更加复杂,如您在较早的文章中所见,第1列可以包含以下字符,0-9,'',' ,'-'和'V',还有一个更相关的问题是我正在运行z / OS 1.10(是的,那个...),其中包含非常底层的DFSORT版本('ICE201I F' )。

我以为自己设法找到了解决方案,但似乎DFSORT可以解析整个

码:
OUTFTIL FTOV,VLTRIM = C'',
         OMIT=(254,1,CH,EQ,C'1',OR,247,4,CH,EQ,C'Y001'),
       IFTHEN=(WHEN=(247,1,CH,EQ,C'R'),BUILD=(1,237)),
       IFTHEN=(WHEN=(247,1,CH,EQ,C'Y'),
                     BUILD=(1,4,255,242,5,54)),
       IFTHEN=(WHEN=(248,2,CH,EQ,C'X0'),BUILD=(5,121,243:C'Q')),
       IFTHEN=(WHEN=(249,1,CH,EQ,C'1'),
                     BUILD=(255,121,5,121,243:C'Q')),
       IFTHEN=(WHEN=(250,1,CH,EQ,C'2'),
                     BUILD=(255,121,5,121,243:C'X')),
       IFTHEN=(WHEN=(248,1,CH,EQ,C'X'),BUILD=(5,121,243:C'X'))
当输入文件是FB时,第一次通过就可以了,但是当输入文件是VB时,第二次通过就可以了,即使在这种情况下最后四个“ IFTHEN”从不匹配,也可以这样做。

因此,我受困于两组排序控制语句或Stackoverflow上代码的修改版本,从而将合计拆分为一大堆字段。

并回答不可避免的“为什么不产生长期记录?”

解答1:回归测试框架需要FB(121)文件,并且
A2:SuperC LINE比较的输出最大为176个字符。

还有不可避免的“折叠后如何看待输出?”

输出以'PRINO。*。T00101格式存储在数据集中0'(T011T020,T021030等),并且查看包含每周数据的成员时,查看器会自动合并数据,当前在“ TxxxWPyy”成员中只有一个包含每周数据的表,显示为“ 里诺。*。T00101”O(TxxxWPyy)”,则在VIEW会话结束时删除此数据集。

使用您的单程解决方案将是理想的选择,但我想事实并非如此。
回到顶部
查看用户资料 发送私信
乔格·芬代森

活跃用户


已加入:2015年8月15日
帖子:388
地点:德国班贝格

发布发表:2021年1月14日星期四4:42上午
引用回复

@普里诺:这是您想从提供的折叠数据中看到的VB输出吗?

码:
// REFORMAT EXEC PGM = ICEMAN                                           
// SORTIN   DD DISP = SHR,DSN=&SYSUID..FB121                           
// SYSOUT   DD SYSOUT=*                                               
//整理  DD SYSOUT = *                                               
// SYSIN    DD *                                                     
  选件复制                                                       
  记录 IFTHEN =(WHEN=INIT,OVERLAY=(364:+120,ZD,LENGTH=4)),           
    IFTHEN =(WHEN=GROUP,BEGIN=(9,1,SS,EQ,C'+ |',或,41,1,SS,EQ,C'+ |'), 
      PUSH =(364:365,1,367:SEQ=1),RECORDS=2),                         
    IFTHEN =(WHEN=GROUP,BEGIN=(42,1,SS,EQ,C'+|'),                     
      PUSH =(364:366,1,367:SEQ=1),RECORDS=3),                         
    IFTHEN =(WHEN=GROUP,BEGIN=(367,1,ZD,EQ,+1),                       
      PUSH =(122:1,121)),                                             
    IFTHEN =(WHEN=GROUP,BEGIN=(367,1,ZD,EQ,+2),                       
      PUSH =(243:1,121))                                             
  OUTFIL FNAMES=(SORTOUT),                                           
    INCLUDE=((364,1,ZD,EQ,+0),OR,                                   
             (364,1,ZD,EQ,+ 1,AND,367,1,ZD,EQ,+ 2),OR,                 
             (364,1,ZD,EQ,+ 2,AND,367,1,ZD,EQ,+ 3)),                   
    FTOV,VLTRIM=C' ',                                               
    IFTHEN =(WHEN=(364,1,ZD,EQ,+0),BUILD=(1,121)),                   
    IFTHEN =(WHEN=(364,1,ZD,EQ,+ 1,AND,367,1,ZD,EQ,+ 2),               
      建造=(122,121,1,121)),                                       
    IFTHEN =(WHEN=(364,1,ZD,EQ,+ 2,AND,367,1,ZD,EQ,+ 3),               
      建造=(122,121,243,121,1,121))                                 
  结束                                                               
/ *
回到顶部
查看用户资料 发送私信
普里诺
警告:1

高级会员


已加入:2009年2月7日
职位:1241
地点:立陶宛维尔纽斯

发布发表:2021年1月14日星期四2:28下午
引用回复

乔格·芬代森写道:
@普里诺:这是您想从提供的折叠数据中看到的VB输出吗?
是的,可悲的是,否:使用排序控制语句运行时,第一个表可以正常运行,第二个表仍然完全折叠。 icon_sad.gif
回到顶部
查看用户资料 发送私信
乔格·芬代森

活跃用户


已加入:2015年8月15日
帖子:388
地点:德国班贝格

发布发表:2021年1月14日星期四2:38下午
引用回复

我已成功尝试使用您提供的这些数据。所以也许c&p在某处,但我已经检查了几次。 icon_neutral.gif

组织。 。 。 :PS
记录格式。 。 。 。 :FB
长度建议。 。 。 :121

普里诺写道:
码:
1                                                                                                                       
 + ------ + ------------------------------- + ---------- --------------------- + ---------------------------- --- + ----------------
--------------- + ------------------------------- +- ----------------------------- + -------------------- ----------- +         
 |      |星期一                        | Tuesday                       | Wednesday                     | Thursday       
               | Friday                        | Saturday                      | Sunday                        |         
 |     + ---- + --------- + -------- + ------- + ---- + --------- +- ------ + ------- + ---- + --------- + -------- + ------- + --- -+ --------- +-
------- + ------- + ---- + --------- + -------- + ------- +- -+ --------- + -------- + ------- + ---- + --------- + ----- --- + ------- +         
 | Year | #D |      KM |   Time |    V = | #D |      KM |   Time |    V = | #D |      KM |   Time |    V = | #D |      KM |
  时间|    V = | #D |      KM |   Time |    V = | #D |      KM |   Time |    V = | #D |      KM |   Time |    V = |         
 + ------ + ---- + --------- + -------- + ------- + ---- + ----- ---- + -------- + ------- + ---- + --------- + -------- + ---- --- + ---- + --------- +-
------- + ------- + ---- + --------- + -------- + ------- +- -+ --------- + -------- + ------- + ---- + --------- + ----- --- + ------- +         
 | 1980 |  4 |  1049.2 |  12:23 |  84.7 |  2 |   355.0 |   4:02 |  88.0 |  2 |   260.0 |   2:50 |  91.8 |  1 |    77.0 |
  0:54 |  85.6 |  2 |   366.0 |   4:31 |  81.0 |  1 |   128.0 |   1:58 |  65.1 |  1 |   746.0 |   7:06 | 105.1 |         
 | 1982 |  4 |  1229.4 |  14:14 |  86.4 |  1 |   303.1 |   3:26 |  88.3 |  4 |  1281.8 |  16:14 |  79.0 |  4 |  2316.2 |
 28:23 |  81.6 |  3 |  1596.8 |  17:52 |  89.4 |  2 |   682.1 |   9:39 |  70.7 |  2 |   492.2 |   5:41 |  86.6 |         
 | 1983 |  6 |  3653.6 |  38:30 |  94.9 |  5 |  3291.0 |  38:19 |  85.9 |  4 |  1089.5 |  13:08 |  83.0 |  4 |  1675.4 |
 22:02 |  76.0 |  5 |  2029.3 |  23:36 |  86.0 |  1 |   282.8 |   3:25 |  82.8 |    |         |        |       |         
 | 1985 |  4 |  2237.9 |  25:37 |  87.4 |  3 |  1719.7 |  18:22 |  93.6 |  2 |  2267.3 |  22:17 | 101.7 |  2 |  1169.3 |
 11:30 | 101.7 |    |         |        |       |  1 |   652.3 |   8:46 |  74.4 |  1 |   483.4 |   7:02 |  68.7 |         
 + ------ + ---- + --------- + -------- + ------- + ---- + ----- ---- + -------- + ------- + ---- + --------- + -------- + ---- --- + ---- + --------- +-
------- + ------- + ---- + --------- + -------- + ------- +- -+ --------- + -------- + ------- + ---- + --------- + ----- --- + ------- +         
                                                                                                                         
 + ----- + --------------------------------- + --------- ------------------------ + ------------------------- -------- + -----------
---------------------- + --------------------------- ------ + --------------------------------- + --------- ---------------------
--- + --------------------------------- +                                                                                   
 |     | Monday                          | Tuesday                         | Wednesday                       | Thursday 
                      |星期五                          | Saturday                        | Sunday                       
   | Total                           |                                                                                   
 |     + ------ + --------- + -------- + ------- + ------ + -------- -+ -------- + ------- + ------ + --------- + -------- + ----- -+ ------ + ----
----- + -------- + ------- + ------ + --------- + -------- +- ------ + ------ + --------- + -------- + ------- + ------ +- ------- + -------- + ----
--- + ------ + --------- + -------- + ------- +                                                                                   
 | Day |    # |      KM |   Time |    V = |    # |      KM |   Time |    V = |    # |      KM |   Time |    V = |    # |   
  KM |   Time |    V = |    # |      KM |   Time |    V = |    # |      KM |   Time |    V = |    # |      KM |   Time |   
V = |    # |      KM |   Time |    V = |                                                                                   
 + ----- + ------ + --------- + -------- + ------- + ------ +- ------- + -------- + ------- + ------ + --------- + -------- + ------- + ------ + ----
----- + -------- + ------- + ------ + --------- + -------- +- ------ + ------ + --------- + -------- + ------- + ------ +- ------- + -------- + ----
--- + ------ + --------- + -------- + ------- +                                                                                   
 |   1 |   27 |  4462.0 |  42:47 | 104.3 |   28 |  5466.2 |  53:48 | 101.6 |   61 |  7389.2 |  67:51 | 108.9 |   35 |  50
04.6 |  44:29 | 112.5 |   59 |  7552.0 |  73:40 | 102.5 |   16 |  1049.5 |  10:15 | 102.4 |   20 |  2878.4 |  26:51 | 107
.2 |  246 | 33801.9 | 319:41 | 105.7 |                                                                                   
 |   2 |   27 |  3233.6 |  32:30 |  99.5 |   20 |  3169.4 |  32:22 |  97.9 |   37 |  3110.3 |  30:32 | 101.9 |   18 |  51
45.6 |  53:06 |  96.9 |   15 |  3385.8 |  33:01 | 102.5 |   36 |  4217.1 |  42:17 |  99.7 |    7 |   872.1 |   7:31 | 116
.0 |  160 | 23133.9 | 231:19 | 100.0 |                                                                                   
 + ----- + ------ + --------- + -------- + ------- + ------ +- ------- + -------- + ------- + ------ + --------- + -------- + ------- + ------ + ----
----- + -------- + ------- + ------ + --------- + -------- +- ------ + ------ + --------- + -------- + ------- + ------ +- ------- + -------- + ----
--- + ------ + --------- + -------- + ------- +                                                                                   
 | Tot |  971 | 19197.7 | 119: 106.5 | 1009 | 37611.1 | 306:19 | 105.3 |  871 | 19047.8 | 109:28 | 107.3 |  673 | 938
83.3 | 915:33 | 102.5 |  650 | 77116.4 | 758:42 | 101.6 |  321 | 38841.0 | 377:36 | 102.9 |  293 | 44228.8 | 407:06 | 108
.6 | 4788 | 29926.1 | 993:52 | 105.1 |                                                                                   
 + ----- + ------ + --------- + -------- + ------- + ------ +- ------- + -------- + ------- + ------ + --------- + -------- + ------- + ------ + ----
----- + -------- + ------- + ------ + --------- + -------- +- ------ + ------ + --------- + -------- + ------- + ------ +- ------- + -------- + ----
--- + ------ + --------- + -------- + ------- +                                                                                   
回到顶部
查看用户资料 发送私信
普里诺
警告:1

高级会员


已加入:2009年2月7日
职位:1241
地点:立陶宛维尔纽斯

发布发表:2021年1月14日,星期四,下午3:45
引用回复

这令人费解,将我在此处剪切和粘贴的数据剪切并粘贴回z / OS,并且可以正常工作,并以完整的输出运行它,但失败了...

我将通过逐步浏览各种“ IFTHEN”语句(将连续的“ 结束”语句放入其中)进行调查,并观察中间输出的情况。
回到顶部
查看用户资料 发送私信
普里诺
警告:1

高级会员


已加入:2009年2月7日
职位:1241
地点:立陶宛维尔纽斯

发布发表:2021年1月14日,星期四,下午6:17
引用回复

OK,Mea culpa,mea maxima culpa!

原来我运行的是该程序的较新版本,其中第二个表的布局已更改为扩大了两列(&KM)一个字符以适应更大的值。

我正在测试的数据是从程序的当前“生产”版本中保存的,这就是我发布的内容。将第三个IFTHEN中的42更改为44可获得正确的结果,我仍在逐步跟踪以查看每个控制字的实际情况,以防万一(有可能)第三张表中有几个月的时间第一列。

很抱歉发布过时的数据,但非常感谢您表示可以通过一种解决方案! ;)
回到顶部
查看用户资料 发送私信
普里诺
警告:1

高级会员


已加入:2009年2月7日
职位:1241
地点:立陶宛维尔纽斯

发布发表:2021年1月15日星期五凌晨2:16
引用回复

疯了,有人可以给我一个线索吗?

输入文件:
码:

视图       PRINO.@@121.TEXT                                                                                 Columns 00001 00121
命令===>                                                                                                   Scroll ===> CSR
****** ************************************************ *********数据顶部************************************** *****************
000001 1
000002 + ------ + ------------------------------- + ---------- --------------------- + ---------------------------- --- + ----------------
000003 --------------- + ------------------------------- +- ------------------------------ + ------------------- ------------ +
000004  |      |星期一                        | Tuesday                       | Wednesday                     | Thursday
000005                |星期五                        | Saturday                      | Sunday                        |
000006  |     + ---- + --------- + -------- + ------- + ---- + --------- +- ------ + ------- + ---- + --------- + -------- + ------- + --- -+ --------- +-
000007 ------- + ------- + ---- + --------- + -------- + ------- +- --- + --------- + -------- + ------- + ---- + --------- + ---- ---- + ------- +
000008  |年份#D |      KM |   Time |    V = | #D |      KM |   Time |    V = | #D |      KM |   Time |    V = | #D |      KM |
000009   Time |    V = | #D |      KM |   Time |    V = | #D |      KM |   Time |    V = | #D |      KM |   Time |    V = |
000010 + ------ + ---- + --------- + -------- + ------- + ---- + ----- ---- + -------- + ------- + ---- + --------- + -------- + ---- --- + ---- + --------- +-
000011 ------- + ------- + ---- + --------- + -------- + ------- +- --- + --------- + -------- + ------- + ---- + --------- + ---- ---- + ------- +
000012  | 1980 |  4 |  1049.2 |  12:23 |  84.7 |  2 |   355.0 |   4:02 |  88.0 |  2 |   260.0 |   2:50 |  91.8 |  1 |    77.0 |
000013   0:54 |  85.6 |  2 |   366.0 |   4:31 |  81.0 |  1 |   128.0 |   1:58 |  65.1 |  1 |   746.0 |   7:06 | 105.1 |
000014  + ------ + ---- + --------- + -------- + ------- + ---- + ----- ---- + -------- + ------- + ---- + --------- + -------- + ---- --- + ---- + --------- +-
000015 ------- + ------- + ---- + --------- + -------- + ------- +- --- + --------- + -------- + ------- + ---- + --------- + ---- ---- + ------- +
000016 1
000017 + ----- + ----------------------------------- + ------- ---------------------------- + --------------------- -------------- + -----
000018 ------------------------------ + ------------------ ----------------- + -------------------------------- --- + ------------------
000019 ----------------- + ------------------------------- ---- +
000020  |     | Monday                            | Tuesday                           | Wednesday                         | Thur
000021星期天                          |星期五                            | Saturday                          | Sunday
000022                  |总                             |
000023  |     + ------ + ---------- + --------- + ------- + ------ + ------ ---- + --------- + ------- + ------ + ---------- + --------- + ------- + -----
000024-+ ---------- + --------- + ------- + ------ + ---------- + --------- + ------- + ------ + ---------- + --------- + ---- --- + ------ + ---------- +
000025 --------- + ------- + ------ + ---------- + --------- + --- ---- +
000026  |日    # |       KM |    时间|    V = |    # |       KM |    时间|    V = |    # |       KM |    时间|    V = |    #
000027  |       KM |    时间|    V = |    # |       KM |    时间|    V = |    # |       KM |    时间|    V = |    # |       KM |
000028     Time |    V = |    # |       KM |    时间|    V = |
000029  
000030-+ ---------- + --------- + ------- + ------ + ---------- + --------- + ------- + ------ + ---------- + --------- + ---- --- + ------ + ---------- +
000031 --------- + ------- + ------ + ---------- + --------- + --- ---- +
000032  |   1 |   27 |   4462.0 |   42:47 | 104.3 |   28 |   5466.2 |   53:48 | 101.6 |   61 |   7389.2 |   67:51 | 108.9 |   35
000033  |   5004.6 |   44:29 | 112.5 |   59 |   7552.0 |   73:40 | 102.5 |   16 |   1049.5 |   10:15 | 102.4 |   20 |   2878.4 |
000034    26:51 | 107.2 |  246 |  33801.9 |  319:41 | 105.7 |
000035 
000036-+ ---------- + --------- + ------- + ------ + ---------- + --------- + ------- + ------ + ---------- + --------- + ---- --- + ------ + ---------- +
000037 --------- + ------- + ------ + ---------- + --------- + --- ---- +
000038  |小孩 971 | 119197.7 | 1119:08 | 106.5 | 1009 | 137611.1 | 1306:19 | 105.3 | 871 | 119047.8 | 1109:28 | 107.3 |  673
000039  |  93883.3 |  915:33 | 102.5 |  650 |  77116.4 |  758:42 | 101.6 |  321 |  38841.0 |  377:36 | 102.9 |  293 |  44228.8 |
000040   407:06 | 108.6 | 4788 | 629926.1 | 5993:52 | 105.1 |
000041 
000042-+ ---------- + --------- + ------- + ------ + ---------- + --------- + ------- + ------ + ---------- + --------- + ---- --- + ------ + ---------- +
000043 --------- + ------- + ------ + ---------- + --------- + --- ---- +
****** ************************************************ ********数据底部******************************************* **************


二手JCL:
码:

// 里诺SOR JOB(PRINO),
//             'Test LW merge',
//             CLASS=A,
//             MSGCLASS=H,
//             MSGLEVEL=(2,0),
//             NOTIFY=&SYSUID
// **************************************************** *********************
// MERGELW EXEC PGM = SORT
// *
// SYSOUT    DD SYSOUT = *
// *
// SORTIN    DD DSN=&SYSUID..@@121.TEXT,
//             DISP=SHR
// *
//整理   DD SYSOUT=*
// *
// SYSIN     DD *
*合并LW文件
*
* See: https://stopbadbreath.net/viewtopic.php?t=68044

  选件复制
* ------------------------------------------------- -------------------
*在第364-367列中输入“ 0120”

  记录 IFTHEN =(WHEN=INIT,OVERLAY=(364:+120,ZD,LENGTH=4)),

* 随你                       0120
* ------------------------------------------------- -------------------
*在第9列中测试“ +”或“ |”或第41列为“ +”或“ |”
*-复制365('1') to 364
*-将seqno添加到367,以获得两个记录

    IFTHEN =(WHEN=GROUP,BEGIN=(9,1,SS,EQ,C'+ |',或,41,1,SS,EQ,C'+ |'),
      PUSH =(364:365,1,367:SEQ=1),RECORDS=2),

* T-1 / P-1                      1121
* T-1 / P-2                      1122
* ------------------------------------------------- -------------------
*在第44列中测试“ +”或“ |”
*-复制366('2') to 364
*-将seqno添加到367,以获得三个记录

* !!将下面的44更改为80会出错!

    IFTHEN =(WHEN=GROUP,BEGIN=(44,1,SS,EQ,C'+|'),
      PUSH =(364:366,1,367:SEQ=1),RECORDS=3),

* T-2 / P-1                      2121
* T-2 / P-2                      2122
* T-2 / P-3                      2123
* ------------------------------------------------- -------------------
*在第367列中测试'1'
*-在第122列添加1-121列

    IFTHEN =(WHEN=GROUP,BEGIN=(367,1,ZD,EQ,+1),
      PUSH =(122:1,121)),

* 随你                       0120
* T-1 / P-1 T-1 / P-1            1121
* T-1 / P-2 T-1 / P-1            1122
* 随你  T-1 / P-1            0120
* T-2 / P-1 T-2 / P-1            2121
* T-2 / P-2 T-2 / P-1            2122
* T-2 / P-3 T-2 / P-1            2123
* 随你  T-2 / P-1            0120
* ------------------------------------------------- -------------------
*在367列中测试'2'
*-在第243列添加1-121列

    IFTHEN =(WHEN=GROUP,BEGIN=(367,1,ZD,EQ,+2),
      PUSH =(243:1,121))

* 随你                       0120  x 0...: 1,121
* T-1 / P-1 T-1 / P-1            1121
* T-1 / P-2 T-1 / P-1 T-1 / P-2  1122
* t-1 / P-1 t-1 / P-1 T-1 / P-2  1121  x 1..1: 122,1+1,121
* t-1 / P-2 t-1 / P-1 t-1 / P-1  1122
* 随你  t-1 / P-1 t-1 / P-1  0120  x 0...: 1,121
* T-2 / P-1 T-2 / P-1 t-1 / P-1  2121
* T-2 / P-2 T-2 / P-1 T-2 / P-2  2122
* T-2 / P-3 T-2 / P-1 T-2 / P-2  2123  x 2..3:122,121 + 243,121 + 1,121
* ------------------------------------------------- -------------------

  OUTFIL FNAMES=(SORTOUT),
    INCLUDE=((364,1,ZD,EQ,+0),OR,
             (364,1,ZD,EQ,+ 1,AND,367,1,ZD,EQ,+ 2),OR,
             (364,1,ZD,EQ,+ 2,AND,367,1,ZD,EQ,+ 3)),

    FTOV,VLTRIM=C' ',

    IFTHEN =(WHEN=(364,1,ZD,EQ,+0),BUILD=(1,121)),

    IFTHEN =(WHEN=(364,1,ZD,EQ,+ 1,AND,367,1,ZD,EQ,+ 2),
      建造=(122,121,1,121)),

    IFTHEN =(WHEN=(364,1,ZD,EQ,+ 2,AND,367,1,ZD,EQ,+ 3),
      建造=(122,121,243,121,1,121))



结果输出,被截断了,但是很完美:
码:

SDSF编辑    里诺SOR (JOB22303) 整理                                                                                                   Columns 00001 00152
命令===>                                                                                                                                  滚动===> CSR
= COLS>---- + ---- 1 ---- + ---- 2 ---- + ---- 3 ---- + ---- 4 ---- + ---- 5 ---- + ---- 6 ---- + ---- 7 ---- + ---- 8 ---- + ---- 9 ---- + ---- 0 ---- + ---- 1 ---- + ---- 2 ---- + ---- 3 ---- + ---- 4 ---- + ---- 5 -
****** ************************************************ *************************数据顶部********************** ****************************************************
000001 1
000002 + ------ + ------------------------------- + ---------- --------------------- + ---------------------------- --- + ------------------------------- + -------------- --
000003  |      |星期一                        | Tuesday                       | Wednesday                     | Thursday                      |星期五
000004  |     + ---- + --------- + -------- + ------- + ---- + --------- +- ------ + ------- + ---- + --------- + -------- + ------- + --- -+ --------- + -------- + ------- + ---- + --------- +
000005  |年份#D |      KM |   Time |    V = | #D |      KM |   Time |    V = | #D |      KM |   Time |    V = | #D |      KM |   Time |    V = | #D |      KM |
000006 + ------ + ---- + --------- + -------- + ------- + ---- + ----- ---- + -------- + ------- + ---- + --------- + -------- + ---- --- + ---- + --------- + -------- + ------- + ---- + --------- +
000007  | 1980 |  4 |  1049.2 |  12:23 |  84.7 |  2 |   355.0 |   4:02 |  88.0 |  2 |   260.0 |   2:50 |  91.8 |  1 |    77.0 |   0:54 |  85.6 |  2 |   366.0 |
000008 + ------ + ---- + --------- + -------- + ------- + ---- + ----- ---- + -------- + ------- + ---- + --------- + -------- + ---- --- + ---- + --------- + -------- + ------- + ---- + --------- +
000009 1
000010 + ----- + ----------------------------------- + ------- ---------------------------- + --------------------- -------------- + ----------------------------------- +
000011  |     | Monday                            | Tuesday                           | Wednesday                         | Thursday                          |
000012  |     + ------ + ---------- + --------- + ------- + ------ + ------ ---- + --------- + ------- + ------ + ---------- + --------- + ------- + ------ + ---------- + --------- + ------- +
000013  |日    # |       KM |    时间|    V = |    # |       KM |    时间|    V = |    # |       KM |    时间|    V = |    # |       KM |    时间|    V = |
000014  -+ ---------- + --------- + ------- +
000015  |   1 |   27 |   4462.0 |   42:47 | 104.3 |   28 |   5466.2 |   53:48 | 101.6 |   61 |   7389.2 |   67:51 | 108.9 |   35 |   5004.6 |   44:29 | 112.5 |
000016 -+ ---------- + --------- + ------- +
000017  |小孩 971 | 119197.7 | 1119:08 | 106.5 | 1009 | 137611.1 | 1306:19 | 105.3 | 871 | 119047.8 | 1109:28 | 107.3 |  673 |  93883.3 |  915:33 | 102.5 |
000018 -+ ---------- + --------- + ------- +
****** ************************************************ ************************数据底部*********************** **************************************************


查看输出时,第二个和第三个IFTHEN语句(9 + 41和44)中使用的列用于选择表,而在其他任何地方都没有使用。

但是,如果我将44更改为80(请参见标有!!的行)(以避免与“旧数据”冲突),并且80与44一样唯一,则输出中仅显示表2,并且我仍然拥有的一小撮头发正在迅速消失。

为什么翻转'ell不使用80而不是44起作用???

以及为什么要在第一列比较中使用两列,我还没有更改(但),但是令人费解。
回到顶部
查看用户资料 发送私信
谢尔盖肯

活跃成员


已加入:2008年4月29日
职位:937
所在地:马里兰

发布发表:2021年1月15日星期五7:05 pm
引用回复

第80列与第44列的问题看起来确实很奇怪...
出于调试目的,尝试在OUTFIL语句中不包含INCLUDE的情况下运行,然后将当前的“ 0123”组合从位置364添加到输出行?

还有另一种技巧:如果使用标记1/2/3来验证行类型(例如,初始OVERLAY =(364:C'1231'...)而不是C'0120'),则可以简化多个比较操作,如OUTFIL中所示:
INCLUDE =(364,1,CH,EQ,367,1,CH)-足够
何时=(364,1,ZD,EQ,+1) - is enough
等等。
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> DFSORT / ICETOOL

 


类似主题
话题 论坛 回覆
没有新帖 将匹配的记录写入输出文件 DFSORT / ICETOOL 1
没有新帖 匹配和不匹配记录使用 DFSORT / ICETOOL 11
没有新帖 删除基于S ...的重复记录 DFSORT / ICETOOL 4
没有新帖 使用基于关闭的VB记录排序... DFSORT / ICETOOL 6
没有新帖 将记录插入到空段中... IMS数据库/ DC 1
搜索我们的论坛:

回到顶部