Формат блока REPORТ. (Генерация отчетов).
REPORT report-name (argument-list)
DEFINE variable-list { type | LIKE table-column |
RECORD { LIKE table.* | variable-list type [,...]
END RECORD } }[,...]
[OUTPUT по умолчанию:
[REPORT TO { "filename | PIPE "program" | PRINTER } ]
SCREEN
[ LEFT MARGIN integer ] 5
[ RIGHT MARGIN integer ] 132
[ TOP MARGIN integer ] 3
[ BOTTOM MARGIN integer ] 3
[ PAGE LENGTH integer ] 66
]
[ORDER [EXTERNAL] BY sort-list ] подсписок переменных,
входящих в аргументы
FORMAT EVERY ROW простейший оператор формата.
В этом случае нельзя использовать контрольные блоки.
либо
FORMAT включает несколько контрольных блоков, которые содержат обычные операторы 4GL и операторы применимые только в REPORТ
ON EVERY ROW выводит строку
statement
. . .
FIRST PAGE HEADER выводит заголовок первой страницы
statement
. . .
ON LAST ROW окончание REPORT (подведение итогов)
statement
. . .
PAGE HEADER заголовок каждой страницы
statement
. . .
PAGE TRAILER в конце каждой страницы
statement
. . .
BEFORE GROUP OF variable в начале группы строк
statement
. . .
. . .
AFTER GROUP OF variable в конце группы строк
statement
. . .
. . .
END REPORT
В контрольных блоках кроме обычных операторов 4GL используются:
NEED num-expr LINES если на странице осталось менее
expr строк, то начать с новой страницы.
PAUSE ["Сообщение"] вывести Сообщение на экран
и ждать нажатия CR
PRINT FILE "filename" вывести на печать содержимое файла
SKIP { integer LINE | TO TOP OF PAGE }
PRINT список выражений [;]
вывести на печать [не переводя строку]
в REPORT можно использовать следующие функции:
num-expr SPACES вставить пробелы
char-exp WORDWRAP [RIGHT MARGIN integer] вывести длинную строку
LINENO номер строки на странице
PAGENO номер печатаемой страницы
Агрегатные функции:
[GROUP] functioп [WHERE условие]
[для группы строк] применить функцию [только для строк,
удовлетворяющих условию]
где functioп может быть:
{ COUNT(*) | PERCENT(*) | { SUM | MAX | MIN | AVG }(expr) }
в процентах от среднее
общего кол-ва строк
Обычные функции 4GL
Назад || Оглавление || Вперед