Язык программирования баз данных Informix-4GL
5c8b6e8c

Структура программы отчета


Программа отчета начинается оператором REPORT, в котором указывается имя и список аргументов, и включает секции DEFINE, OUTPUT, ORDER BY и FORMAT, из них только последняя является обязательной.

В секции DEFINE описываются аргументы, переданные в отчет и локальные переменные отчета. Правила их описаний аналогичны описаниям 4GL-переменных, за исключением того, что параметры отчета не могут быть типа ARRAY, а также записями с членами ARRAY.

Секция OUTPUT

Информация секции OUTPUT используется в момент выполнения оператора Start Report. Ниже приведен формат секции OUTPUT:

[OUTPUT

[

REPORT TO направление вывода:

{

"filename" | - в файл;

PIPE "program"| - на принтер;



PRINTER - в программный канал;

}

]

[LEFT MARGIN integer] левая граница поля;

[RIGHT MARGIN integer] правая граница поля;

[TOP MARGIN integer] верхняяя граница поля;

[BOTTOM MARGIN integer] нижняяя граница поля;

[PAGE LENGTH integer] число строк на странице;

]

Оператор REPORT TO в секции OUTPUT направляет вывод отчета в файл, на системный принтер или в программный канал. Операторы LEFT (RIGTH) MARGIN задают соответственно левую (правую) границу печатной страницы отчета. Операторы TOP (BOTTON) MARGIN устанавливают сколько строк нужно пропустить в начале (в конце) каждой страницы отчета. Оператор PAGE LENGTH устанавливает количество строк на каждой странице отчета.

Секция ORDER BY

Секция ORDER BY специфицирует переменные, по которым необходимо отсортировать строки, передаваемые в отчет (альтернатива к конструкции order by SQL-оператора Select), а также порядок, в котором должны обрабатываться блоки Before group, After group, указанные в секции FORMAT. Сортировка выполняется последовательно по каждому аргументу, указанному в конструкции order by. Дополнительный аргумент EXTERNAL указывает, что строки были ранее отсортированы (на основании конструкции order by SQL-оператора Select) и их не требуется пересортировывать.

Секция FORMAT

Секция FORMAT определяет внешний вид отчета.
Ниже приведен формат секции FORMAT.

FORMAT

{

EVERY ROW | быстрый отчет;



{

{

[FIRST] PAGE HEADER | в начале [первой] страницы;



PAGE TRAILER | в конце страницы;



ON {EVERY ROW | для каждой строки;



LAST ROW} | после последней строки;



{BEFORE | AFTER} перед/после группы.



GROUP OF variable

}

statement . . .

} . . .

}

Самая простая секция FORMAT содержит единственный оператор EVERY ROW и используется для формирования быстрого отчета; в этом случае в секции FORMAT нельзя использовать никакие другие операторы или управляющие блоки.

Более сложные секции FORMAT могут содержать следующие управляющие блоки:

PAGE HEADER control block; ON LAST ROW control block;
PAGE TRAILER control block; BEFORE GROUP OF control block;
ON EVERY ROW control block; AFTER GROUP OF control block;
FIRST PAGE HEADER control block.

После перечисленных выше конструкций, открывающих управляющий блок, следует последовательность 4GL-операторов (в том числе и SQL-операторов), 4GL-функций, а также операторов и функций форматирования, которые могут использоваться только в блоке REPORT.

Операторы форматирования секции FORMAT

NEED integer-expr LINES Начать вывод с новой страницы, если заданное количество строк (LINES) не помещается на текущей странице
PAUSE ["string"] Приостановить вывод в отчет до нажатия клавиши Enter
PRINT [integer-list] [;] Вывести информацию в отчет так, как указано в секции OUTPUT; один оператор PRINT выполняет вывод в одну строку до тех пор, пока не использована конструкция CLIPPED (отсечь пробелы), USING(форматировать) или n SPACES (пропустить n позиций); очередное выражение выводится в поле, ширина которого зависит от типа данных
  Тип данных Размер по умолчанию
  Char размер Char-переменной
  Date 10
  Float 14 (включая знак и десятичную точку)
  Smallint 6 (включая знак)
  Integer 11 (включая знак)
  Smallfloat 14 (включая знак и десятичную точку)
  Decimal число цифр + 2 (включая знак и десятичную точку)
  Serial 11
  Money число цифр + 3 (включая знак, десятичную точку и знак доллара)
PRINT FILE "filename" Вывод содержимого текстового файла в отчет
SKIP {integer-expr LINE[S] |

TO TOP OF PAGE}
Пропуск строк в отчете или переход к началу следующей странице
<


Функции форматирования секции FORMAT

[GROUP] указание отображать информацию только для конкретной группы (только в AFTER GROUP OF);

{

COUNT(*) | общее количество строк;

PERCENT(*) | процент от общего числа строк



в отчете;



{SUM | AVG | MIN | MAX} (expression)

сумма, среднее, минимальное, максимальное значение от указанного выражения с игнорированием значения NULL в

выражении;

}

[WHERE Boolean-expr] условие, уточняющее количество строк;

LINENO номер строки отчета;



PAGENO номер страницы отчета;



integer-expr SPACE[S] пропустить указанное число пробелов.



Управляющие блоки PAGE HEADER ( PAGE TRAILER) указывают, какая информация должна появиться в начале (в конце) каждой страницы отчета.


Содержание раздела