1

我正在使用 DFSORT 的 ICETOOL DISPLAY 运算符生成帐户列表。我在分支机构上使用“BREAK”按排序代码分隔帐户,然后对帐户的余额求和。一切正常,但在使用 BTOTAL 对余额求和后,我得到了一个额外的条目(帐户)。我在下面添加了我的代码和结果,以便您更好地理解我的问题。

代码

//SUR0007 JOB (5678),'ACCOUNTS'                          
//RUNIT EXEC PGM=ICETOOL                                 
//TOOLMSG DD SYSOUT=*                                    
//DFSMSG DD SYSOUT=*                                     
//TOOLIN DD *                                            
         DISPLAY FROM(INPUT2) LIST(REPORT) -                      
         TITLE('LIST OF BANK ACCOUNTS BY BRANCH')  -          
         HEADER('ACCOUNT') ON(2,8,BI,E'99999999') -               
         HEADER('BALANCE') ON(3,6,BI,E'99999999') -               
         HEADER('OWNER') ON(13,30,CH) -                           
         BTITLE('SORTCODE:') BREAK(1,4,BI,E'999999') -            
         BTOTAL('BRANCH TOTAL:') -                                
         TOTAL('GRAND TOTAL:')                                    
/*                                                       
//INPUT2 DD DSN=USER.CICS.Z022.BANK.ACCOUNTS,DISP=SHR
//REPORT DD SYSOUT=*  

结果

  SORTCODE:000012

  ACCOUNT    BALANCE  
 --------   --------  
 91317760   97999587  

 BRANCH TOTAL :        
 91317760   97999587  

预期结果

 SORTCODE:000012

 ACCOUNT    BALANCE  
 --------   --------  
 91317760   97999587  

 BRANCH TOTAL : 97999587   
4

1 回答 1

0

DFSORT 的 ICETOOL DISPLAY 运算符有许多选项,这意味着它有大量的文档。

您应该查阅DFSORT 入门手册以了解入门级使用情况,并查阅 DFSORT 应用程序编程指南了解更多高级使用情况。

在 BCOUNT 中,所有数字字段都将显示总计。您的帐户是数字(二进制​​),但如果您不能将其设为非数字,您可以使用NOST(您可以假装这意味着没有小计)作为您不想自动汇总的任何字段的格式的一部分.

要使您的 BTOTAL 文本与总计显示在同一行,请STATLEFT在报告说明中使用。

这是应用程序编程指南中使用两者的示例:

 DISPLAY FROM(ACCTS) LIST(FANCY) -
        TITLE('Accounts Report for First Quarter') -
        DATE(MD4/) BLANK -
        HEADER('Amount') ON(12,6,ZD,C1,N08) -
        HEADER(Id') ON(NUM,N02) -
        HEADER('Acct#') ON(31,3,PD,NOST,LZ) -
        HEADER('Date') ON(1,4,ZD,E'99/99',NOST) -
        INDENT(2) BETWEEN(5) -
        STATLEFT -
        TOTAL('Total for Q1') -
        AVERAGE('Average for Q1')

有相同报告的普通版本的编码:

DISPLAY FROM(ACCTS) LIST(PLAIN) -
    TITLE('Accounts Report for First Quarter') -
    DATE(MD4/) BLANK -
    HEADER('Amount') ON(12,6,ZD) -
    HEADER(Id') ON(NUM) -
    HEADER('Acct#') ON(31,3,PD) -
    HEADER('Date') ON(1,4,ZD) -
    TOTAL('Total for Q1') -
    AVERAGE('Average for Q1')

输出,以及示例中的解释,是:

此示例显示了一些可用于改进 DISPLAY 报告外观的选项。第一个 DISPLAY 运算符生成“普通”报告,第二个 DISPLAY 运算符使用粗体显示的选项生成“精美”报告。

The PLAIN output starts on a new page and looks as follows:

Accounts Report for First Quarter               05/04/2001

         Amount                 Id                  Acct#                    Date
---------------    ---------------    -------------------    --------------------
          93271                  1                  15932                     106
         137622                  2                    187                     128
          83147                  3                  15932                     212
         183261                  4                   2158                     217
          76389                  5                    187                     305
         920013                  6                  15932                     319

Total for Q1
        1493703                                     50328                    1287

Average for Q1
         248950                                      8388                     214



The FANCY output starts on a new page and looks as follows:

Accounts Report for First Quarter             05/04/2001

                       Amount         Id        Acct#      Date
                     --------        ---       ------     -----
                       932.71          1        15932     01/06
                     1,376.22          2        00187     01/28
                       831.47          3        15932     02/12
                     1,832.61          4        02158     02/17
                       763.89          5        00187     03/05
                     9,200.13          6        15932     03/19

Total for Q1        14,937.03

Average for Q1       2,489.50

以下是用于“花式”报告的额外选项的说明:

First ON field: In the PLAIN report, BLANK causes ICETOOL to print 

6 字节 ZD 值作为未编辑的数字,前导零被抑制。但是对于这个例子,我们知道数字真的代表美元和美分。因此,在 FANCY 报告中,我们使用 C1 格式化项(三十三个可用掩码之一)打印值,其中逗号 (,) 作为千位分隔符,句点 (.) 作为小数点。

In the PLAIN report, TOTAL causes ICETOOL to allow 15 digits for the 

值,因为它不知道需要多少位数。但是对于这个例子,我们知道总金额不会超过 8 位数。所以在 FANCY 报表中,我们使用 N08 格式项将位数设置为 8。这会减小字段的列宽。

Second ON field: In the PLAIN report, NUM causes ICETOOL to allow 15 

记录号的位数,因为它不知道需要多少位数。但是对于这个例子,我们知道记录数不会超过 99。所以在 FANCY 报表中,我们使用 N02 格式化项将位数设置为 2。这会减小记录数的列宽。

Third ON field: In the PLAIN report, TOTAL and AVERAGE cause ICETOOL to 

打印这个 3 字节 PD 字段的总数和平均值。但是对于这个示例,我们知道我们不需要该字段的统计信息,因为它是一个帐号。所以在 FANCY 报告中,我们使用 NOST 格式化项来抑制该字段的统计信息。

In the PLAIN report, the default mask of A0 causes ICETOOL to suppress 

此 3 字节 PD 字段的前导零。但是对于这个例子,我们知道我们想要在字段中显示前导零,因为它是一个帐号。所以在 FANCY 报表中,我们使用 LZ 格式化项来打印该字段的前导零。

Fourth ON field: In the PLAIN report, BLANK causes ICETOOL to print the 

4 字节 ZD 值作为未编辑的数字,前导零被抑制。但是对于这个例子,我们知道数字代表一个日期(月和日)。因此,在 FANCY 报告中,我们使用 E'99/99' 格式项来打印在月份和日期之间带有前导零和斜线 (⁄) 的值。

In the PLAIN report, TOTAL and AVERAGE cause ICETOOL to print the total 

和这个 4 字节 ZD 字段的平均值。但是对于这个例子,我们知道我们不想要这个字段的总数或平均值,因为它是一个日期。所以在 FANCY 报告中,我们使用 NOST 格式化项来抑制该字段的统计信息。

Note: In some applications, we might want the minimum and maximum for a 

使用 E'pattern' 显示的日期,因此我们不会为日期字段指定 NOST。

INDENT: In the PLAIN report, ICETOOL starts the report in column 2 

(在控制字符之后),默认情况下。但是对于这个例子,我们想要缩进报告一点。因此,在 FANCY 报表中,我们使用 INDENT(2) 操作数将报表缩进 2 个空格,使其从第 4 列开始。

BETWEEN: In the PLAIN report, ICETOOL uses 3 blanks between the columns 

数据,默认情况下。但是对于这个例子,我们希望列之间有更多的空间。所以在 FANCY 报表中,我们使用 BETWEEN(5) 操作数在列之间插入 5 个空格。

STATLEFT: In the PLAIN report, ICETOOL prints the strings for TOTAL

和 AVERAGE 在第一列数据下,默认情况下,每个统计数据使用两行以避免字符串覆盖值。但是对于本示例,我们希望 TOTAL 和 AVERAGE 字符串在报告中突出显示,并且每个字符串与其值位于同一行。因此,在 FANCY 报告中,我们使用 STATLEFT 操作数将 TOTAL 和 AVERAGE 字符串打印到第一列数据的左侧。

这是链接,其中还包括报告的“普通”版本以与花哨的版本进行对比:http://www-01.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1。 icea100/ice2ca_Example_1110.htm

我通过搜索引擎找到了链接icetool display statleft nost

于 2015-05-08T14:44:45.037 回答