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


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