我需要获得688位置中除"1"或"2"以外的任何值的计数。
在JCL中通过Easytrieve或SORT是否可能?我已经这样做了
-[653位置上的字符不应为空格AND(复选框688 NE 1'和'688 NE'2']
INCLUDE COND=
((653,5,CH,NE,C' ',AND,((688,2,CH,NE,C '1 ',AND,688,2,CH,NE,C '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空格的短记录将被省略。如果这不是你想要的,可以通过延长条件来解决。
如果您需要一个可以轻松完成的格式化计数,但如果您只是在调查,那么系统输出中的默认计数很容易就能满足您的需求。
是的,可以在排序或easytrieve 中计算符合条件的记录数
- 轻松-非常轻松查看手册-https://www.google.com.au/?gfe_rd=cr&ei=hUBnU-XbOfC8gep74GIBg#q=易检索+手动
-
大多数排序实用程序都有一些可以使用的报告功能,对于DFSort(http://pic.dhe.ibm.com/infocenter/zos/v1r11/index.jsp?topic=/com.ibm.zos.r11.icea100/ice1ca40124.htm)选项。即使没有报告功能,也可以在两步流程中完成
- 选择所需的记录并重新格式化,并包括一个二进制字段(使用outrec值为1,请参阅http://pic.dhe.ibm.com/infocenter/zos/v1r12/index.jsp?topic=%2Fcom.ibm.zos.r12.icea100%2Fice1ca50263.htm
- 从第一步开始对文件进行排序和
大致分类为:
//STEP1 EXEC PGM=排序//SYSOUT DD SYSOUT=H//SORTIN DD DSN=INP1,DISP=SHR,UNIT=3380,VOL=SER=SCR001//SORTOUT DD DSN=&&OUTPUT,DISP=(,PASS(,UNIT=3390,//SPACE=(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内部版本=(1,4,X'00000000001'(//*//STEP1 EXEC PGM=排序//SYSOUT DD SYSOUT=H//SORTIN DD DSN=&&OUTPUT,DISP=SHR,UNIT=3380,VOL=SER=SCR001//SORTOUT DD SYSOUT=*//SYSIN DD*排序字段=(5,1,BI(和字段=(6,4,BI(OUTREC构建=(6,4,BI,TO=ZD,长度=9(
您可以在某些方面改进