2015-05-08 6 views
1

Я использую оператор ICETOOL DISPLAY оператора DFSORT для создания списка учетных записей. Я использую «BREAK» в ветвях, чтобы отделить учетные записи по коду сортировки, а затем суммировать остаток для учетной записи. Все работает нормально, но я получаю дополнительную запись (учетную запись) после суммирования баланса с помощью BTOTAL. Я добавил код ниже и результат, чтобы вы лучше поняли мой вопрос.Форматирование строк с использованием DISPLAY ICETOOL

код

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

оператор ICETOOL DISPLAY DFSORT имеет много варианты, что означает, что для этого имеется обширная документация.

Вы должны проконсультироваться с DFSORT Начало работы руководство для использования вводного уровня, и DFSORT Application Guide программирования для более широкого использования высокого уровня.

Внутри BCOUNT все числовые поля будут отображаться с итогами. Ваша учетная запись является числовой (двоичной), но если вы не можете сделать ее нечисловой, вы можете использовать NOST (вы можете притворяться, что это означает NO Sub-Totals) как часть форматирования для любого поля, которое вы не хотите суммировать автоматически.

Чтобы получить текст 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 

значение ZD 6 байт как неопубликованная цифра с ведущими нулями подавленных. Но для этого примера мы знаем, что цифры действительно представляют доллары и центов.Поэтому в отчете 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-байтового поля ПД. Но для этого примера, мы знаем, что нам не нужна статистика для поля , потому что это номер учетной записи. Поэтому в отчете FANCY мы используем элемент NOST для подавления статистики для этого поля.

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

ведущие нули для этого 3-байтового поля ПД. Но для этого примера мы знаем, что хотим показать ведущие нули для поля, потому что это номер учетной записи. Поэтому в отчете FANCY мы используем LZ-форматирование для печати основных нулей для этого поля. Значения ZD

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

4-байтовых как неотредактированные цифры с ведущими нулями подавлен. Но для этого примера мы знаем, что цифры представляют собой дату (месяц и день). Поэтому в отчете 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 

и усреднить по первой колонке данных, по умолчанию, и использует две строки для каждой статистики, чтобы избежать наложения строки значение . Но для этого примера мы хотели бы, чтобы в отчете выделялись строки TOTAL и. В каждой строке выделяются строки, а также каждая строка на той же строке, что и ее значение. Поэтому в отчете FANCY мы используем операнд STATLEFT для печати строк TOTAL и AVERAGE слева от первого столбца данных.

Вот ссылка, которая также включает в себя «простой» вариант доклада контрастировать с фантазией одного: http://www-01.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.icea100/ice2ca_Example_1110.htm

I, расположенной по ссылке с помощью поиска engineing для icetool display statleft nost.

+0

Спасибо за ваш ответ. не означает быть noob, но может привести пример как NOST, так и STATLEFT. Я ничего не мог найти в NOST. –

+0

Ничего, :) понял это. Спасибо чувак. как только я добавил NOST для удаления нежелательных промежуточных итогов, итоговое значение ветки было выровнено с промежуточным итогом, и мне не пришлось использовать STATLEFT. –

+0

@ chris94 обновлен в любом случае –

Смежные вопросы