1

我需要计算位置 688 中除“1”或“2”以外的任何值。

可以通过 Easytrieve 或 JCL 中的 SORT 实现吗?我已经这样做了

-[ 653 位置上的字符不应为空格 AND (检查 688 NE 1 .'AND' 688 NE '2']

 INCLUDE COND=
             ((653,5,CH,NE,C'     ',AND,((688,2,CH,NE,C '1 ',AND,688,2,CH,NE,C '2 ')))

我们可以以更有效或其他方式做到这一点吗?

4

2 回答 2

2

您可以通过使用 OMIT 而不是 INCLUDE 来简化人类的理解,以摆脱负面条件。

OPTION COPY,VLSCMP
OMIT COND=(653,5,CH,EQ,C' ',
         OR,
           688,2,CH,EQ,C '1 ',
         OR,
           688,2,CH,EQ,C '2 ')

可以使用字段类型 SS 来收缩位置 688 上的测试,但如果您的数据可疑(仅当您确定可能存在哪些值时才使用 SS),我会对此保持警惕。

在我看来,可以通过使用 SORT 符号来简化它,以避免重复和随之而来的错误。

由于您的记录很短,可能会妨碍您(导致步骤失败),因此我包含了 OPTION VLSCMP。这将用二进制零填充 INCLUDE/OMIT 上不包含在记录中的所有字段(因为记录很短)。因此,所有在 653,5 处空间的记录都将被删除,所有在 688,2 处不是 C'1' 或 C'2' 的记录都将被删除。将包括所有短记录,因为将不满足删除标准(字段将是二进制零,以便在 INCLUDE/OMIT 上进行比较)。将省略在 653,5 处包含空格的短记录。如果这不是您想要的,可以通过扩展条件来处理。

如果您需要一个可以轻松完成的格式化计数,但如果您只是进行调查,则很容易出现 sysout 中的默认计数为您提供所需内容的情况。

于 2014-05-04T11:12:34.980 回答
2

是的,可以在 sort 或 easytrieve 中计算匹配条件的记录数

  1. Easytrieve - 很容易看一下手册 - h​​ttps: //www.google.com.au/? gfe_rd=cr&ei=hUBnU-XbCOfC8gep74GIBg#q=easytrieve+manual
  2. 大多数排序实用程序都有某种可以使用的报告功能,对于 DFSort 有计数(http://pic.dhe.ibm.com/infocenter/zos/v1r11/index.jsp?topic=/com.ibm。 zos.r11.icea100/ice1ca40124.htm ) IceTool 中的选项。即使没有报告功能,也可以分两步完成

    大致的排序是:

    //STEP1 执行 PGM=排序                                       
    //SYSOUT DD SYSOUT=H                                         
    //排序 DD DSN=INP1,DISP=SHR,UNIT=3380,VOL=SER=SCR001       
    //SORTOUT DD DSN=&&OUTPUT,DISP=(,PASS),UNIT=3390,             
    // 空间=(CYL,(5,1)),DCB=(LRECL=22)                          
    //SYSIN DD *                                                
      选项副本
      省略 COND=(653,5,CH,EQ,C' ',
             或者,
               688,2,CH,EQ,C'1',
             或者,
               688,2,CH,EQ,C'2')       
      OUTREC BUILD=(1,4,X'0000000001')  
    //*
    //STEP1 执行 PGM=排序                                       
    //SYSOUT DD SYSOUT=H                                         
    //排序 DD DSN=&&OUTPUT,DISP=SHR,UNIT=3380,VOL=SER=SCR001       
    //排序 DD SYSOUT=*                    
    //SYSIN DD *
     排序字段=(5,1,BI)
     总和字段=(6,4,BI)
     OUTREC BUILD=(6,4,BI,TO=ZD,LENGTH=9)

会有你可以改进的地方

于 2014-05-05T08:20:33.790 回答