к оглавлению

КЛАРИОH. Справочное руководство

ГЛАВА 10 - Отчеты

Структура отчетов.......................................... 10-1
     REPORT (описывает структуру отчета)................... 10-1
     APPEND (дописывает выводимое в конец файла)........... 10-3
     DEVICE (задает устройство, на которое вывести отчет).. 10-3
     LENGTH (число строк на странице)...................... 10-4
     LINE (переменная - счетчик строк)..................... 10-4
     PAGE (переменная - счетчик страниц)................... 10-5
     PRINTER (логическая поддержка принтера)............... 10-5
     WIDTH (максимальная ширина страницы).................. 10-6

Элементы отчета............................................ 10-7
     HEADER (заголовок страницы, верхний колонтитул)....... 10-7
     DETAIL (тело отчета).................................. 10-9
     FOOTER (подножие страницы, нижний колонтитул)......... 10-11

Атрибуты элементов отчета.................................. 10-13
     ALLOW (контроль висячей строки)....................... 10-13
     ALONE (структуру DETAIL печатать без HEADER/FOOTER)... 10-14
     FIXED (структура фиксированной длины)................. 10-14
     SEPARATE (промежуток между элементами отчета)......... 10-15

Размещение полей........................................... 10-16
     ROW (строка).......................................... 10-16
     COL (столбец)......................................... 10-17
     SUPPRESS (не печатать элемент, если он пустой)........ 10-17

Поля в отчете.............................................. 10-18
     CONTROL (управляющая последовательность для принтера). 10-18
     STRING (переменная отчета)............................ 10-19
     TEXT (многострочное поле отчета)...................... 10-20

Атрибуты полей............................................. 10-21
     CLIP (отсечь хвостовые пробелы)....................... 10-21
     LFT, RHT, CENT (методы выравнивания полей)............ 10-21
     UPR, LWR, CAP (методы капитализации).................. 10-22
     USE (переменная, связанная с полем)................... 10-23
     WRAP (разрешить перенос слов)......................... 10-24

Команды отчета............................................. 10-25
     OPEN (открыть отчет для обработки).................... 10-25
     CLOSE (закрыть текущий отчет)......................... 10-25
     PRINT (напечатать элемент отчета)..................... 10-26
     ROWS (количество строк)............................... 10-26
     Переполнение страницы................................. 10-27

Шаблоны управляющих кодов принтера................... 10-27

		       СТРУКТУРА ОТЧЕТОВ

----------------------------------------------------------------
REPORT                              (описывает структуру отчета)
================================================================
метка        REPORT[APPEND][DEVICE()][LENGTH()][LINE()][PAGE()]
                   [PRE()][PRINTER()][WIDTH()]

[метка]        [HEADER[ALLOW()][FIXED][PRE()][SEPARATE()]
                 [ROW()]
                 [COL()]
                 [SUPPRESS()]
[метка]                      [STRING()]
[метка]                      [TEXT()]
[метка]                      [CONTROL()]
               .]
[метка]        [DETAIL[ALLOW()][ALONE][FIXED][PRE()][SEPARATE()]
                 [ROW()]
                 [COL()]
                 [SUPPRESS()]
[метка]                      [STRING()]
[метка]                      [TEXT()]
[метка]                      [CONTROL()]
               .]
[метка]        [FOOTER[ALLOW()][FIXED][PRE()][SEPARATE()]
                 [ROW()]
                 [COL()]
                 [SUPPRESS()]
[метка]                      [STRING()]
[метка]                      [TEXT()]
[метка]                      [CONTROL()]
               .]
             .
----------------------------------------------------------------

APPEND              Дописать отчет в конец файла.

DEVICE              Устройство для вывода отчета.

LENGTH              Максимальное число строк на странице.

LINE                Переменная - счетчик строк.

PAGE                Переменная - счетчик страниц.

PRE                 Префикс отчета или элемента отчета.

PRINTER             Название принтера из файла описаний принте-
		    ров.

WIDTH               Макисмальная длина строки.

HEADER              Заголовок страницы.

DETAIL              Тело отчета.

FOOTER              Подножие страницы.

ALLOW               Задает минимальное число строк, которое надо
                    пропустить посе печати данного элемента  от-
                    чета.

ALONE               Описывает отчет без заголовков или подножий.

FIXED               Описывает структуру фиксированной длины.

SEPARATE            Задает  число пустых строк между  элементами
                    отчета.

ROW                 Задает строку.

COL                 Задает столбец.

SUPPRESS            Подавляет печать пустого элемента.

STRING              Переменная или символьная константа.

TEXT                Многострочное символьное поле.

CONTROL             Управляющий код принтера.

Оператор REPORT задает начало структуры-отчета. HEADER, DETAIL и
FOOTER - это подструктуры,  из которых формируется отчет.  Отчет
должен быть явно открыт оператором OPEN. Элементы открытого  от-
чета можно выводить на печать (1) оператором PRINT. При перепол-
нении страницы могут автоматически печататься структуры HEADER и
FOOTER. Поскольку этот документ  - руководство по языку,  то все
атрибуты и операторы, связанные  с отчетами, мы рассмотрим  ниже
более  подробно.  Обычно,  отчеты  Кларион  "рисуются" с помощью
средств форматирования РЕДАКТОРА ТЕКСТОВ и ГЕНЕРАТОРА ПРИЛОЖЕНИЙ
с гарантированно правильным синтаксисом. При этом становится не-
обязательным ручное создание структур отчетов. (2)

(А.С.П.
(1) - Под выводом на  печать подразумевается не только вывод  на
      принтер, но  и на  любое устройство,  пригодное для вывода
      сформированного отчета, например файл или экран.
(2) - На данный момент (19.05.94) у меня есть версия Clarion Da-
      taBase Developer  3.007.105, в  которой "ручное  создание"
      отчетов, а точнее правка того, что в них наворотил  ДИЗАЙ-
      НЕР, далеко не необязательна!)

Пример:

CustRpt       REPORT                    !Отчет по покупателям
                   !описания элементов отчета
              .                         !Конец описания отчета

----------------------------------------------------------------
APPEND                      (дописывает выводимое в конец файла)
================================================================
             APPEND
----------------------------------------------------------------

APPEND работает вместе с атрибутом DEVICE. Если в качестве  уст-
ройства для печати задано имя  файла, то параметр APPEND не  по-
зволит стереть  существующий файл,  отчет будет  дописан в конец
файла.

Пример:

Report  REPORT,DEVICE('MYFILE.RPT'),APPEND
                               !Печать дописыванием в конец фай-
			       !  ла.
                !описания элементов отчета
        .

----------------------------------------------------------------
DEVICE             (задает устройство, на которое вывести отчет)
================================================================
             DEVICE(имя)
----------------------------------------------------------------

имя                Строковая константа, переменная или выражение
                   задающее устройство или имя файла.

Атрибут отчета DEVICE задает устройство, на которое будет  выво-
диться отчет. Если ИМЯ  не является именем стандартного  устрой-
ством DOS, подразумевается, что это имя файла. Если ИМЯ, это имя
файла, то файл создается на указанном диске в указанном  катало-
ге. Если диск и/или каталог не заданы, то файл создается в теку-
щем каталоге текущего диска. Если заданный файл уже  существует,
то он будет  замещен новым, если  отчет не булет  иметь атрибута
APPEND. Если спецификация файла некорректна, то DEVICE игнориру-
ется и отчет печатается на LPT1. Если ИМЯ - CON, то отчет  будет
выводиться на  экран, начиная  с текущей  позиции курсора. Можно
использовать SETCURSOR для  установки курсора перед  его выводом
на экран.  Отчеты могут  быть выведены  на следующие стандартные
устройства ДОС:

       CON        Консоль
       PRN        Первый параллельный порт
       LPT1       Первый параллельный порт
       LPT2       Второй --/-- --/--
       LPT3       Третий --/-- --/--
       AUX        Первый последовательный порт
       COM1       Первый последовательный порт
       COM2       Второй последовательный порт
       NUL        Пустое устройство (отчет идет в пи$%ду)

Пример:

Report  REPORT,DEVICE('LPT2')    !Отчет - на второй принтер
Report1 REPORT,DEVICE('C:\REPORTS\CUSTLST.RPT')!Отчет - в файл
Report2 REPORT,DEVICE(DeviceName)!Имя устройства хранится в пе-
				 !  ременной DEVICENAME

См. также:   SETCURSOR

----------------------------------------------------------------
LENGTH                                 (число строк на странице)
================================================================
             LENGTH(value)
----------------------------------------------------------------

value               Целочисленная константа или переменная.

Атрибут LENGTH задает масимальное число строк на странице. Авто-
матический  переход  на  новую  страницу происходит на основании
значения VALUE. Если VALUE=0, то отслеживание переполнения стра-
ницы  выключается.  VALUE  минус число_строк_для_HEADER_и_FOOTER
будет числом строк, доступным для печати DETAIL-структур.

Некоторые принтеры сами  отслеживают длину страницы.  Если VALUE
больше или  равно внутренней  длине страницы  принтера, то может
произойти неожиданный перевод формата.

Пример:

CustRpt  REPORT,LENGTH(60)        !В отчете 60 строк на странице
               !описания элементов отчета
         .                        !Конец описаний отчета

CustRpt2 REPORT,LENGTH(RptLength)!Число строк на странице хра-
				 !нится в переменной RptLength
               !описания элементов отчета
         .                       !Конец описаний отчета

См. также: Переполнение страницы

----------------------------------------------------------------
LINE                                (переменная - счетчик строк)
================================================================
             LINE(variable)
----------------------------------------------------------------

variable            Метка числовой переменной.

Трибут отчета LINE  задает переменную, которая  станет счетчиком
строк. При открытии отчета, эта переменная получает значение 1 и
сбрасывается в единицу при каждом переполнении страницы. По мере
печати HEADER,  DETAIL или  FOOTER, переменная  увеличивается на
число напечатанных строк. Эту переменную можно использовать, на-
пример, для нумерации строк отчета.

Пример:

CustRpt REPORT,LINE(LineNbr)       !Счетчик - переменная LineNbr
                  !описания элементов отчета
        .                          !Конец описаний отчета

См. также: Переполнение страницы

----------------------------------------------------------------
PAGE                              (переменная - счетчик страниц)
================================================================
             PAGE(variable)
----------------------------------------------------------------

variable            Метка числовой переменной.

Атрибут отчета PAGE  задает переменную, которая  будет использо-
ваться как счетчик страниц. Эту переменную можно будет использо-
вать для  печати номера  текущей страницы.  При открытии отчета,
переменная устанавливается в единицу, и увеличивается при  пере-
полнении страницы или под управлением программы.

Пример:

CustRpt  REPORT,PAGE(PageCount)  !Счетчик страниц - PageCount
                    !описания элементов отчета
         .                       !Конец описаний отчета

----------------------------------------------------------------
PRINTER                          (логическая поддержка принтера)
================================================================
             PRINTER(name)
----------------------------------------------------------------

name               Строковая константа, переменная или выражение
                   содержащая имя принтера, в том виде, в  кото-
                   ром оно задано в файле описаний принтеров.

PRINTER задает логическую  поддержку принтера для  отчета. Пара-
метр NAME содержит имя принтера, используемого для печати  отче-
та, в том виде, в каком это имя заданно в файлее описаний  прин-
теров.

Файл описаний принтеров, по умолчанию, PRINTER.CTL. Можно  изме-
нить это имя, задав  переменную окружения CLAPRINTER. Она  может
быть задана: в файле конфигурации программы (.INI-файле), в  ко-
мандной строке при  выполнении программы, оператором  SETCOMMAND
или оператором ДОС SET.

Пример:

Report  REPORT,PRINTER('EPSON LQ-1500')
                                   !Используем Epson LQ-1500
                !описания элементов отчета
        .
        CODE
        SETCOMMAND(' CLAPRINTER=Control.Prn')
                                 !Меняем файл описаний принтеров
        OPEN(Report)

См. также: SETCOMMAND

----------------------------------------------------------------
WIDTH                             (максимальная ширина страницы)
================================================================
             WIDTH(value)
----------------------------------------------------------------

value               Целочисленная константа от 1 до 255.

Атрибут WIDTH  задает максимальное  количество символов  в самой
длинной тсроке отчета.  Значение VALUE используется  форматтером
отчетов для горизонтального позиционирования и центрирования.

Пример:

CustRpt  REPORT,WIDTH(80)          !Report, max width 80 columns
                !описания элементов отчета
         .                         !Конец описаний отчета

			ЭЛЕМЕНТЫ ОТЧЕТА

----------------------------------------------------------------
HEADER                  (заголовок страницы, верхний колонтитул)
================================================================
[метка]      [HEADER[ALLOW()][FIXED][PRE()][SEPARATE()]
               [ROW()]
               [COL()]
               [SUPPRESS()]
[метка]                    [STRING()]
[метка]                    [TEXT()]
[метка]                    [CONTROL()]
             .]
----------------------------------------------------------------

ALLOW               Сколько  строк,  как  минимум,  оставить  на
                    странице для печати DETAIL-структур.

FIXED               Объявляет заголовок фиксированной длины.

PRE                 Префикс для элементов HEADER-структуры.

SEPARATE            Сколько строк пропустить после заголовка.

ROW                 Номер  строки для  полей типа  STRING,  TEXT
                    или CONTROL.

COL                 Номер столбца для  полей типа  STRING,  TEXT
                    или CONTROL.

SUPPRESS            Не печатать строку, если она пустая.

STRING              Поле,  содержащее  значение  переменной  или
		    символьная константа.

TEXT                Многострочное символьное поле.

CONTROL             Управляющая последовательность принтера.

В HEADER-структуре задаются строки, которые печатаются в  начале
каждой страницы. HEADER-структура должна завершаться точкой  или
оператором END. В отчете может быть только один заголовок. Заго-
ловок может быть явно  выведен на печать оператором  PRINT. Если
этого не было, то он автоматически печатается при печати  первой
же структуры DETAIL, у которой нет атрибута ALONE. Заголовок ав-
томатически печатается при переполнении страницы.

Пример:

CustRpt  REPORT                 !Отчет о покупателях
Head       HEADER               !  начало описания заголовка
             !элементы заголовка
           .                    !  конец описания заголовка
         .                      !Конец описаний отчета

См. также: Переполнение страницы

----------------------------------------------------------------
DETAIL                                             (тело отчета)
================================================================
[метка]      [DETAIL[ALLOW()][ALONE][FIXED][PRE()][SEPARATE()]
               [ROW()]
               [COL()]
               [SUPPRESS()]
[метка]                    [STRING()]
[метка]                    [TEXT()]
[метка]                    [CONTROL()]
             .]
----------------------------------------------------------------

ALONE               Структура DETAIL ДОЛЖНА печататься без заго-
                    ловков или подножий.

ALLOW               Сколько  строк,  как  минимум,  оставить  на
                    странице для печати DETAIL-структур.

FIXED               Объявляет DETAIL как структуру фиксированной
                    длины.

PRE                 Префикс для элементов DETAIL-структуры.

SEPARATE            Сколько строк пропустить после DETAIL.

ROW                 Номер  строки для  полей типа  STRING,  TEXT
                    или CONTROL.

COL                 Номер столбца для  полей типа  STRING,  TEXT
                    или CONTROL.

SUPPRESS            Не печатать строку, если она пустая.

STRING              Поле,  содержащее  значение  переменной  или
		    символьная константа.

TEXT                Многострочное символьное поле.

CONTROL             Управляющая последовательность принтера.

DETAIL-структура, это строки, составляющие тело отчета. Она дол-
жна заканчиваться точкой или оператором END. В отчете может быть
несколько DETAIL-структур.

DETAIL-структура НИКОГДА  не печатается  автоматически, следова-
тельно, она ДОЛЖНА быть явно напечатана оператором PRINT.  Из-за
этого, каждая DETAIL-структура отчета должна иметь свою метку.

DETAIL-структура может быть напечатана при необходимости. Поэто-
му можно иметь несколько DETAIL-структур, что даст  возможность,
скажем печатать  необязательные заголовки  и подножия  для групп
или печатать разные формы в зависимости от печатаемых данных.

Пример:

CustRpt  REPORT                 !Отчет о покупателях
Head       HEADER               !  начало описания заголовка
             !описания элементов структуры
           .                    !  конец описания заголовка
GroupHead  DETAIL               !  начало описания DETAIL
             !описания элементов структуры
           .                    !  конец описания DETAIL
CustDetail DETAIL               !  начало описания DETAIL
             !описания элементов структуры
           .                    !  конец описания DETAIL
         .                      !Конец описаний отчета

См. также: PRINT

----------------------------------------------------------------
FOOTER                    (подножие страницы, нижний колонтитул)
================================================================
[метка]      [FOOTER[ALLOW()][FIXED][PRE()][SEPARATE()]
               [ROW()]
               [COL()]
               [SUPPRESS()]
[метка]                    [STRING()]
[метка]                    [TEXT()]
[метка]                    [CONTROL()]
             .]
----------------------------------------------------------------

ALLOW               Сколько  строк,  как  минимум,  оставить  на
                    странице для печати DETAIL-структур.

FIXED               Объявляет FOOTER как структуру фиксированной
                    длины.

PRE                 Префикс для элементов FOOTER-структуры.

SEPARATE            Сколько строк пропустить после подножия.

ROW                 Номер  строки для  полей типа  STRING,  TEXT
                    или CONTROL.

COL                 Номер столбца для  полей типа  STRING,  TEXT
                    или CONTROL.

SUPPRESS            Не печатать строку, если она пустая.

STRING              Поле,  содержащее  значение  переменной  или
		    символьная константа.

TEXT                Многострочное символьное поле.

CONTROL             Управляющая последовательность принтера.

Структура  FOOTER  содержит  строки,  которые печатаются в конце
каждой  страницы.  FOOTER-структура  ДОЛЖНА заканциваться точкой
или оператором END. В отчете может быть только одно подножие.

FOOTER автоматически печатается  внизу страницы при  перепонении
страницы. Можно явно отпечатать подножие оператором PRINT.  Под-
ножие автоматически печатается внизу последней страницы при  за-
крытии отчета, кроме  того случая, когда  последняя напечатанная
DETAIL-структура не имела атрибута ALONE.

Пример:

CustRpt  REPORT                 !Отчет по покупателям
Head       HEADER               !  начало описания заголовка
             !описания элементов структуры
           .                    !  конец описания заголовка
GroupHead  DETAIL               !  начало описания DETAIL
             !описания элементов структуры
           .                    !  конец описания DETAIL
CustDetail DETAIL               !  начало описания DETAIL
             !описания элементов структуры
           .                    !  конец описания DETAIL
Foot       FOOTER               !  начало описания подножия
             !описания элементов структуры
           .                    !  конец описания подножия
         .                      !Конец описаний отчета


		   АТРИБУТЫ ЭЛЕМЕНТОВ ОТЧЕТА

----------------------------------------------------------------
ALLOW                                  (контроль висячей строки)
================================================================
             ALLOW(value)
----------------------------------------------------------------

value               Целочисленная константа или переменная,  со-
		    держащая число строк.

Атрибут ALLOW разработан для подавления "сирот", висячих  строк,
при печати. VALUE задает минимальное число строк, которое должно
оставаться для печати  DETAIL-структур после печати  заголовков,
пожножий и других  DETAIL-структур. Если для  размещения DETAIL-
структуры не хватает строк, то происходит ПЕРЕПОЛНЕНИЕ СТРАНИЦЫ.

Допустим, у отчета LENGTH(60) и 50 строк уже напечатано на стра-
нице  (внутренний  счетчик  строк=51).  Если подножие занимает 3
строки, то  для DETAIL-структур  остается 7  строк. Если DETAIL-
структура занимает 5 строк, то все нормально - ей хватит  места.
если же у DETAIL-структуры есть атрибут ALLOW(5), то  произойдет
ПЕРЕПОЛНЕНИЕ СТРАНИЦЫ перед печатью DETAIL-структуры. Элементар-
ная арифметика: осталось 7  строк, минус 5 (которые  займет сама
DETAIL-структура) получим две. А 2, это несколько меньше, чем 5,
требуемых атрибутом ALLOW(5).

Для вычисления свободного места  на странице используются еще  и
значения атрибутов SEPARATE.

Пример:

CustRpt  REPORT,LENGTH(60)       !60 строк на странице отчета
Head       HEADER
             !описания элементов структуры
           .
GroupHead  DETAIL,ALLOW(5)       !Must allow 5 CustDetail lines
  !5 строк - элементы структуры  ! after the group header
           .
CustDetail DETAIL                !Элементы DETAIL
  !1 строка - элемент структуры
           .
Foot       FOOTER           !Это подножие занимает до 3 строк
  !3 строки - элементы структуры
           .
        .                        !Конец описаний отчета

----------------------------------------------------------------
ALONE              (структуру DETAIL печатать без HEADER/FOOTER)
================================================================
             ALONE
----------------------------------------------------------------

Этот атрибут говорит о  том, что DETAIL-структуру надо  печатать
одну на странице без  каких-либо HEADER и FOOTER.  Возможное ис-
пользование - титульные листы отчетов и страницы ИТОГО.

Пример:

CustRpt  REPORT                 !Отчет по покупателям
Head       HEADER               !  начало описания заголовка
             !описания элементов структуры
           .                    !  конец описания заголовка
TitlePage  DETAIL,ALONE         !DETAIL-структура титульного
				!листа
             !описания элементов структуры
           .                    !  конец описания DETAIL
CustDetail DETAIL               !  начало описания DETAIL
             !описания элементов структуры
           .                    !  конец описания DETAIL
Foot       FOOTER               !  начало описания подножия
             !описания элементов структуры
         . .                    !  конец подножия и отчета

----------------------------------------------------------------
FIXED                            (структура фиксированной длины)
================================================================
             FIXED
----------------------------------------------------------------

FIXED используется совместно с оператором SUPPRESS. Он  гаранти-
рует, что структура ВСЕГА будет занимать заданное число строк на
странице. Хорошим примером этому могут служить почтовые  этикет-
ки, для  которых иногда  надо подавлять  пустые строки,  но сами
этикетки должны иметь постоянную длину. FIXED дополняет структу-
ру таким же количеством пустых строк, какое было пропущено  опе-
ратором SUPPRESS (по-английски SUPRESSed :).

Пример:

CustRpt  REPORT                 !Отчет по покупателям
Head       HEADER               !  начало описания заголовка
             !описания элементов структуры
           .                    !  конец описания заголовка
GroupHead  DETAIL               !  начало описания DETAIL
             !описания элементов структуры
                                !  конец описания DETAIL
           .
CustDetail DETAIL,FIXED         !  detail фиксированной длины
             !описания элементов структуры
           .                    !  конец описания DETAIL
Foot       FOOTER               !  начало описания подножия
             !описания элементов структуры
         . .                    !  конец подножия и отчета


----------------------------------------------------------------
SEPARATE                    (промежуток между элементами отчета)
================================================================
             SEPARATE(value)
----------------------------------------------------------------

value               Целочисленная константа или переменная.

Параметр атрибута  SEPARATE задает  число пустых  строк, которые
должны быть напечатаны сразу же после структуры.

Пример:

CustRpt  REPORT                 !Отчет по покупателям
Head       HEADER               !  начало описания заголовка
             !описания элементов структуры
           .                    !  конец описания заголовка
GroupHead  DETAIL,SEPARATE(2)   !
             !описания элементов структуры
                                !  конец описания DETAIL
           .
CustDetail DETAIL,SEPARATE(1)   !  начало описания DETAIL
             !описания элементов структуры
           .                    !  конец описания DETAIL
Foot       FOOTER               !  начало описания подножия
             !описания элементов структуры
         . .                    !  конец подножия и отчета

		       РАЗМЕЩЕНИЕ ПОЛЕЙ

----------------------------------------------------------------
ROW                                                     (строка)
================================================================
             ROW(row[,column])
----------------------------------------------------------------

row                 Целочисленная константа, которая задает абсо
                    лютный номер строки  для полей типа  STRING,
		    TEXT или CONTROL в составе структур  HEADER,
		    DETAIL или FOOTER.

column              Целочисленная константа, которая задает абсо
                    лютный номер столбца в столбце для полей ти-
                    па STRING, TEXT или CONTROL в составе струк-
                    тур HEADER, DETAIL или FOOTER.

ROW используется для  управления размещением полей  в структурах
HEADER, DETAIL или FOOTER. Для размещения поля в заданном  месте
структуры, ROW порождает переводы строк, возвраты каретки и про-
белы.

Если пропущен параметр COLUMN, то поле помещается в первый стол-
бец указанной строки. Параметр COLUMN порождает пробелы, как за-
полнитель для промежутков между полями.

Пример:

CustRpt    REPORT                    !Отчет по покупателям
CustDetail   DETAIL,SEPARATE(1)      !  начало описания DETAIL
               ROW(2,5) STRING(20),USE(Cus:Name)
                                  !Cus:Name в строке 2 столбце 5
               ROW(3) STRING(30),USE(Address)
                                     !Address at row 3 col 1
             .                       !  конец описания DETAIL
           .                         !Конец описаний отчета

----------------------------------------------------------------
COL                                                    (столбец)
================================================================
             COL(column)
----------------------------------------------------------------

column              Целочисленная константа, которая задает абсо
                    лютный номер столбца для полей типа  STRING,
		    TEXT или CONTROL, которые находятся в  одной
                    строке с полем, описанным ранее.

COL используется для размещения полей в строке в структурах HEA-
DER, DETAIL или FOOTER.  COL порождает пробелы, чтобы  заполнить
промежтки между полями.

Пример:

CustRpt    REPORT                    !Отчет по покупателям
CustDetail   DETAIL,SEPARATE(l)      !  начало описания DETAIL
               ROW(2.5) STRING(15),USE(FirstName)
                                     !FirstName в стр.2, стлб.5
               COL(22) STRING(I).USE(Initial) !Initial в стлб.22
               COL(24) STRING(15),USE(LastName)
                                     !LastName в стлб.24
               ROW(3) STRING(30),USE(Address)
                                     !Address в стр.3 стлб.1
             .                       !  конец описания DETAIL
           .                         !Конец описаний отчета

----------------------------------------------------------------
SUPPRESS                   (не печатать элемент, если он пустой)
================================================================
             SUPPRESS(строка)
----------------------------------------------------------------

строка              Номер строки, которую НЕ печатать.

SUPPRESS задает строку, которая не печатается, если все перемен-
ные на ней пусты. Обычно используется с атрибутом FIXED.

Пример:

CustLabels  REPORT              !Почтовые этикетки
CustDetail    DETAIL,FIXED      !detail постоянной длины
                ROW(2,5) STRING(15),USE(Company)
                ROW(3,5) STRING(1).USE(Contact)
                ROW(4,5) STRING(15),USE(Addressl)
                ROW(5,5) STRING(15),USE(Address2)
Citystzip       ROW(6,5) STRING(15)
                SUPPRESS(5)     !Поле Address2 пусто?
				!Не печатать строку 5
            . .                 !конец detail и отчета

			 ПОЛЯ В ОТЧЕТЕ

----------------------------------------------------------------
CONTROL            (управляющая последовательность для принтера)
================================================================
                      ¦ length ¦
[метка]      CONTROL( ¦constant¦ )[,USE()]
                      ¦ picture¦
----------------------------------------------------------------

length              Целочисленная константа.  Должна быть  такой
                    же, как и длина USE-переменной.

constant            Строковая константа, посылаемая на принтер.

picture             Форматирует значение, присвоенное CONTROL-по
                    лю, или значение USE-переменной. LENGTH  это
                    размер, достаточный для хранения ОТФОРМАТИРО
                    ВАННОЙ строки. Изначально, PICTURE заполнена
                    пробелами.

USE                 Переменная, содержащая управляющую  последо-
                    вательность. Должна быть такой длины,  какая
                    задана параметром LENGTH.

CONTROL задает символьную  строку, которая управляеь  действиями
принтера. CONTROL-поле не влияет на положение полей типа  STRING
или TEXT.  Однако, это  поле может  использоваться для изменения
управляющих кодов для любых  следующих за ним полей  типа STRING
или TEXT (СПА:  здесь я совсем  не уверен, как  перевести fields
that occur following the CONTROL declaration.)

Если у CONTROL есть атрибут USE, то на принтер посылается управ-
ляющая последовательность, которая содержится в  USE-переменной.
Таким образом можно хранить последовательности для разных  типов
принтеров, и присваивать USE-переменной нужную для используемого
в данный момент принтера.

Если у отчета есть  атрибут PRINTER, то строковая  константа или
USE-переменная должна  содержать имя  принтера, как  он описан в
файле управления принтерами (PRINTER.CTL).

Пример:

PrinterType  STRING('EPSON LQ-1500')
ItalicOn     STRING('ITALIC ON')

CustRpt    REPORT,PRINTER(PrinterType)  !Отчет по покупателям
CustDetail   DETAIL,SEPARATE(1)  !  начало описания DETAIL
               ROW(2,5) CONTROL(4),USE(ItalicOn)
                                 !Управляем из переменной
				 !ItalicOn - включить курсив
               ROW(2,5) STRING(15),USE(FirstName)
               COL(22) STRING(15),USE(LastName)
               ROW(3,1) CONTROL('COMPRESSED  ON')
                                 !А этот Control из printer.ctl
               ROW(3) STRING(30),USE(Address)
           . .                   !Конец описаний отчета

См. также: PRINTER

----------------------------------------------------------------
STRING                                       (переменная отчета)
================================================================
                    ¦ length ¦         ¦LFT ¦   ¦UPR¦
[метка]      STRING(¦constant¦)[,USE][,¦RHT ¦][,¦LWR¦][,CLIP]
                    ¦ picture¦         ¦CENT¦   ¦CAP¦
----------------------------------------------------------------

length              Числовая константа,  задающая длину  строки.
                    В этом случае строка состоит из пробелов.

constant            Строковая константа. Длина строки становится
                    равной длине константы.

picture             Используется  для   форматирования  значения
                    строки или ее USE-переменной. В этом  случае
                    длина  строки  это  размер,  достаточный для
                    хранения отформатированой строки. Изначально
                    строка заполняется пробелами.

USE                 Задает переменную, со значением которой опе-
                    рирует STRING.

LFT, RHT,           Задает способ выравнивания текста в  строке:
CENT                влево, вправо или по центру соответственно.

UPR, LWR,           Задает режим капитализации строки -  верхний
CAP                 регистр,  нижний регистр,  первая буква  за-
                    главная.

CLIP                Указывает, что из строки надо удалять  хвос-
                    товые пробелы.

STRING описывает переменную отчета  в позиции, заданной ROW  или
COL в структурах HEADER, DETAIL  или FOOTER. Если не заданы  ROW
или COL, то STRING печатается в первом столбце справа от  преды-
дущего поля. Если STRING имеет метку, то к ней можно обратиться,
когда структура REPORT открыта или закрыта.

Пример:

CustRpt   REPORT,PRINTER(PrinterType)!Отчет по покупателям
CustDetail  DETAIL,SEPARATE(1)       !  начало описания DETAIL
              ROW(2,5) STRING(15),USE(FirstName),CLIP
                       STRING(' ')
                       STRING(1),USE(Initial)
                       STRING('.  ')
                       STRING(15),USE(LastName)
              ROW(3,5) STRING(30),USE(Address)
            .
ProdDetail  DETAIL
              ROW(1) STRING('Товар:')
                                   !Печатаем строковую константу
              COL(10) STRING(@n3),USE(Itm:ProductNbr)
              COL(20) STRING(@n2),USE(Itm:Quantity)
ExtPrice      COL(34) STRING(12)   !форматируется программой (?)
            .
          .

----------------------------------------------------------------
TEXT                                 (многострочное поле отчета)
================================================================
                                        ¦LFT ¦   ¦UPR¦
[метка]     TEXT(rows,colomns)[,USE()][,¦RHT ¦][,¦LWR¦][,¦CLIP¦]
                                        ¦CENT¦   ¦CAP¦   ¦WRAP¦
----------------------------------------------------------------

rows                Сколько строк (максимум) печатать.

columns             И сколько столбцов.

USE                 Задает переменную, со значением которой опе-
                    рирует STRING.

LFT, RHT,           Задает способ выравнивания текста в  строке:
CENT                влево, вправо или по центру соответственно.

UPR, LWR,           Задает режим капитализации строки -  верхний
CAP                 регистр,  нижний регистр,  первая буква  за-
                    главная.

CLIP                Указывает, что из строки надо удалять  хвос-
                    товые пробелы.

WRAP                Разрешить перенос слов.

Поле типа TEXT позволяет печатать многострочные тексты. ROWS за-
дает максимальную высоту в строках, COLUMNS - ширину в столбцах.
USE-перемене разделяются на сегменты по COLUMNS символов.  Печа-
тается до ROWS сегментов. Если сегментов меньше чем ROWS, то пе-
чатаются только сегменты, содержащие данные.

Пример:

CustRpt   REPORT,PRINTER(PrinterType)  !Отчет по покупателям
ProdDetail  DETAIL                     !Declare the detail line
              ROW(1) STRING('Product:')
              COL(10) STRING(@n3),USE(Itm:ProductNbr)
              COL(20) STRING(@n2),USE(Itm:Quantity)
ExtPrice      COL(34) STRING(12)
              ROW(2,5) TEXT(5,50),USE(Pro:Desc)
                                       ! 50 столбцов, до 5 строк
            .                          !End detail
          .                            !Конец описаний отчета

			АТРИБУТЫ ПОЛЕЙ

----------------------------------------------------------------
CLIP                                  (отсечь хвостовые пробелы)
================================================================
             CLIP
----------------------------------------------------------------

Атрибут CLIP удаляет из поля хвостовые пробелы.

Пример:

CustRpt   REPORT
CustDetail  DETAIL,SEPARATE(l)
              ROW(2,5) STRING(15),USE(FirstName),CLIP
                                     !FirstName в стр.2 стлб.5
                                     ! усекается и сразу за ним
                       STRING(' ')   ! идет один пробел
                       STRING(1),USE(Initial)
                                     !Initial в следующем стлб.
                                     ! За ним идет точка и еще
                       STRING('.  ') ! один пробел
                       STRING(15),USE(LastName)
                                     !LastName в следующем стлб.
               COL(45) STRING(@P(###)###-####P),USE(Phone)
                                     !Phone в стр.2 стлб.45
          . .

----------------------------------------------------------------
LFT, RHT, CENT                       (методы выравнивания полей)
================================================================
             LFT
             RHT
             CENT
----------------------------------------------------------------

LFT выравнивает влево, RHT -  вправо, а CENT центрирует текст  в
поле. Эти атрибуты разрешены с полями типа STRING и TEXT.

Пример:

CustRpt  REPORT
Head       HEADER,SEPARATE(1)
             ROW(2,25) STRING(30),USE(Company).CENT
           .                      !Центрировать название фирмы
CustDetail DETAIL,SEPARATE(1)
             ROW(2,5) STRING(15),USE(FirstName),RHT
                                  !Имя выровнять вправо
             COL(22) STRING(1).USE(Initial)
             COL(24) STRING(15),USE(LastName),LFT
                                  !а фамилию - влево
         . .

----------------------------------------------------------------
UPR, LWR, CAP                             (методы капитализации)
================================================================
             UPR
             LWR
             CAP
----------------------------------------------------------------

Поля типа STRING, TEXT или  CONTROL с атрибутом UPR выводят  все
буквы заглавными.  Атрибут LWR  печатает все  в нижнем регистре.
Атрибут CAP выводит текст в формате ИМЕНИ - первая буква  каждо-
го слова заглавная, а остальные - строчные.

Пример:
CustRpt  REPORT
Head       HEADER,SEPARATE(1)
             ROW(2,25) STRING(30),USE(Company),CENT,UPR
                                               !заглавными
             ROW(3,25) STRING(30),USE(Motto),CENT,LWR
                                               !прописными
           .
CustDetail DETAIL,SEPARATE(1)
             ROW(2,5) STRING(15).USE(FirstName),CAP
                                               !Как имя
             COL(22) STRING(l),USE(Initial),UPR!Заглавными
             COL(24) STRING(15),USE(LastName),CAP
                                               !Как имя
             ROW(3) STRING(30),USE(Address)
         . .

----------------------------------------------------------------
USE                              (переменная, связанная с полем)
================================================================
             USE(variable)
----------------------------------------------------------------

variable            Метка переменной.

Атрибут USE задает переменную, значение которой передается в по-
ля отчета STRING, TEXT  или CONTROL. Когда оператором  PRINT или
при переполнении страницы, печатаются структуры HEADER,  DETAIL,
или FOOTER, значения USE-переменных печатаются в связанных с ни-
ми полях STRING, TEXT или CONTROL.

Пример:

CustRpt  REPORT
Head       HEADER
             ROW(1,1) CONTROL(5),USE(Boldon)
             ROW(2,25) STRING(30),USE(Company),CENT,UPR
                                                     !Заглавными
             ROW(3.1) CONTROL(5),USE(BoldOff)
             ROW(3,25) STRING(30).USE(Motto),CENT,LWR!Строчными
           .
CustDetail DETAIL,SEPARATE(1)
             ROW(2,5) STRING(15),USE(FirstName)
             COL(22) STRING(1),USE(Initial)
             COL(24) STRING(15).USE(LastName)
             ROW(3) STRING(30),USE(Address)
           .
ProdDetail DETAIL
             ROW(1) STRING('Product:')
             COL(10) STRING(@n3),USE(Itm:ProductNbr)
             COL(20) STRING(@n2),USE(Itm:Quantity)
ExtPrice     COL(34) STRING(12)
             ROW(2,5) TEXT(5,50),USE(Pro:Desc)
           .
         .                               !Конец описаний отчета


----------------------------------------------------------------
WRAP                                    (разрешить перенос слов)
================================================================
             WRAP
----------------------------------------------------------------

Атрибут WRAP разрешает перенос  слов в полях типа  TEXT. Перенос
слов гарантирует, что слова, не вмещающиеся в текущую будут  пе-
ренесены в начало следующей, для чего в конец текущей строки до-
бавляются пробелы.

Пример:

CustRpt  REPORT,PRINTER(PrinterType)

ProdDetail DETAIL
             ROW(1) STRING('Product:')
             COL(10) STRING(@n3),USE(Itm:ProductNbr)
             COL(20) STRING(@n2),USE(Itm:Quantity)
ExtPrice     COL(34) STRING(12)
             ROW(2,5) TEXT(5,50),USE(Pro:Desc),WRAP
                                          !Разрешен перенос слов
         . .

			КОМАНДЫ ОТЧЕТА

----------------------------------------------------------------
OPEN                               (открыть отчет для обработки)
================================================================
             OPEN(report)
----------------------------------------------------------------

report              Метка структуры REPORT.

OPEN  активизирует  структуру  REPORT.  Вы  должны открыть отчет
прежде, чем сможете напечатать какую-либо структуру типа HEADER,
DETAIL или FOOTER. К  переменным отчета (полям с  метками) можно
обращаться НЕзависимо от того, открыт отчет или нет.

Пример:
OPEN(CustRpt)                                   !Открыть отчет

----------------------------------------------------------------
CLOSE                                    (закрыть текущий отчет)
================================================================
             CLOSE(report)
----------------------------------------------------------------

report              Метка структуры REPORT.

Оператор CLOSE печатает структуру FOOTER (если, конечно, послед-
няя напечатанная структура DETAIL не имела атрибута ALONE),  за-
крывает отчет и его выходной файл (если атрибут DEVICE  указывал
на файл). RETURN из процедуры, открывшей отчет, неявно  вызывает
CLOSE.

Пример:

CLOSE(CustRpt)                                  !Закрыть отчет

----------------------------------------------------------------
PRINT                                (напечатать элемент отчета)
================================================================
             PRINT( ¦structure¦)
                    ¦ string  ¦
----------------------------------------------------------------

structure           Метка структуры HEADER, DETAIL или FOOTER.

string              Строковое выражение,  переменная или  символ
                    управления принтером. Этот параметр  игнори-
                    рует атрибут DEVICE и выводит строку на уст-
                    ройство PRN (LPT1).

Оператор PRINT выводит элемент отчета на заданное атрибутом  DE-
VICE устройство. PRINT автоматически увеличивает счетчики  строк
и страниц и вызывает, при необходимости, переполнение  страницы.
PRINT также может вывести строку непосредственно на LPT1.

Пример:

  PRINT( 'Итого:'& FORMAT( Filetot @N10.2) & @LF)
                          !Печатаем ИТОГО и ПС на LPT1
  PRINT(@FF)              !Выбросить лист (ПФ) из LPT1
  PRINT(OrderDtl)         !Вывести строку из счета на DEVICE

См. также:  Переполнение страницы, Шаблоны управляющих кодов
	    принтера

----------------------------------------------------------------
ROWS                                          (количество строк)
================================================================
             ROWS(structure)
----------------------------------------------------------------

structure           Метка структуры REPORT.

Функция ROWS возвращает число  строк, которые займет при  печати
тот или иной элемент отчета (HEADER, DETAIL или FOOTER). Резуль-
тат НЕ включает в себя  значение атрибута SEPARATE, но строки  с
атрибутом SUPPRESS учитываются.

Возвращаемый тип данных: LONG

Пример:

  IF Length - Line > ROWS(Detail)
                          !Хватит ли места, чтобы распечатать
			  !  Detail целиком?
    PRINT(Detail)         !  если да, то печатаем
  ELSE                    !  если нет, то
    PRINT(Footer)         !  сначала перейдем на новую страницу
    PRINT(Header)         !
    PRINT(Detail)         !  а уже затем напечатаем Detail
  .

----------------------------------------------------------------
  Переполнение страницы
================================================================

Переполнение страницы происходит, когда PRINT не может размес-
тить структуру DETAIL на странице или когда недостаточно места,
чтобы после структуры DETAIL оставить столько места, сколько за-
дано ее атрибутом ALLOW.
Ниже описано, что происходит при ПЕРЕПОЛНЕНИИ СТРАНИЦЫ.

          Если есть FOOTER,  то добавляются переводы  строк так,
          чтобы FOOTER попал в самый низ страницы (согласно  ат-
          рибуту LENGTH). Затем печатается собственно FOOTER.

          Счетчик страниц увеличивается, а счетчик строк сбрасы-
          вается в единицу.

          Если есть HEADER, то он печатается и счетчик строк уве
          личивается на число строк, занятых под FOOTER.

----------------------------------------------------------------
Шаблоны управляющих кодов принтера
================================================================

@FF[n]              Перевод листа (ПФ, Form feed, FF, ASCII  12)
		    повторить n раз, затем выдать ВК.

@LF[n]              Перевод строки (ПС, Line feed, LF, ASCII 10)
		    повторить n раз.

@CR[n]              Возврат   каретки   (ВК,  Carriage   return,
		    ASCII 13) повторить n раз.

n                   Целочисленная  константа,  задающая  сколько
                    раз повторить этот код. По умолчанию - один.

Шаблоны управляющих кодов принтера представляют собой общие  по-
следовательности управления принтером. Аналогично шаблонам  фор-
мата, шаблоны  управления принтером  начинаются со  знака @. Эти
шаблоны можно использовать совместно с оператором PRINT.

Пример:

   PRINT(@LF3)                              ! 3 ПС
   PRINT(@CR4)                              ! 4 ВК
   PRINT(@FF)                               ! 1 ПФ

Перевод всей документации выполнил Сергей АгАрков. Если возникли
какие-либо вопросы или  предложения по качеству  перевода, обра-
щайтесь:

Jew Smile MO Station 2:5040/22.3 Serg Agarkoff +7-(421)-626-8486
время работы станции с 15:00  до 23:30 по московскому времени  в
будние дни и круглосуточно в  выходные и праздники. По этому  же
телефону меня можно застать с 3:00 до 12:00 по московскому  вре-
мени. Спросить капитана Агаркова.

Домашний телефон +7-(421)-626-8486 ўс 13:00 до 0:30 по москве.

к оглавлению

Знаете ли Вы, что компонентное сборочное программирование - это объектно-ориентированное сборочное программирование, основанное на распространении классов в бинарном виде и предоставление доступа к методам класса через строго определенные интерфейсы. Компонентное сборочное программирование поддерживают технологические подходы COM, CORBA, .Net.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution