2015-05-08 27 views
1

我正在使用DFSORT的ICETOOL DISPLAY運算符來生成帳戶列表。我在分支機構上使用「BREAK」以通過排序代碼分隔帳戶,然後爲帳戶餘額進行結算。一切正常,但我在使用BTOTAL彙總餘額後得到一個額外的輸入(帳戶)。我在下面添加了我的代碼和結果,以便您更好地理解我的問題。使用ICETOOL的DISPLAY格式化breaklines

代碼

//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 
+1

您可能需要澄清您的問題,並添加一些您嘗試獲得幫助的示例。你可以隨時更新你的問題。歡迎來到堆棧溢出,推薦閱讀:http://stackoverflow.com/help/how-to-ask –

回答

0

DFSORT的ICETOOL顯示操作員有許多選項,這意味着它有大量的文檔。

,您應該諮詢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') 

輸出,與從這個例子的解釋是:

這個例子顯示了一些opti您可以使用它來改善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格式項目( ,33個可用掩碼之一)以逗號(,)打印值爲千分位符,以句點(。)作爲小數點。

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格式化項目 來抑制此字段的統計信息。與E'pattern」顯示

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

日期,所以我們不會爲 日期字段中指定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,並使用 兩行每個統計,以避免具有字符串疊加 值。但是對於這個例子,我們希望在報告中使用總平均值和平均值字符串,並將 上的每個字符串與其值相同。因此,在FANCY報告中,我們使用 STATLEFT操作數在第一列數據的左邊打印TOTAL和AVERAGE字符串。

這裏的鏈接,其中還包括該報告的「普通」版本看上一個對比:http://www-01.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.icea100/ice2ca_Example_1110.htm

我所在的搜索engineing的鏈接icetool display statleft nost

+0

感謝您的回答。不意味着是noob,但可以舉一個NOST和STATLEFT的例子。我在NOST找不到任何東西。 –

+0

沒關係:)想通了。謝啦。一旦我添加NOST刪除不需要的小計,分支總計與小計我一致,我不必使用STATLEFT。無論如何,更新 –

+0

@ chris94 –