Документация по Clarion

         

ACCEPT (обработчик полей экрана)



ACCEPT

ACCEPT ожидает от оператора (человека :) ввода в экранные поля или выбора из PULLDOWN.
В PULLDOWN-структуре, ACCEPT производит внутреннюю обработку выпадающих подменю. Из полей типа ITEM, могут быть выбраны только те, которые не запрещены оператором DISABLE. PULLDOWN-структура завершается только если был выбран элемент типа ITEM. По завершении, функция FIELD возвращает номер поля для данного ITEM.
В SCREEN-структурах, ACCEPT инициирует ввод в выбранное в данный момент поле. По умолчанию, выбор полей идет в том порядке, в котором они описаны в SCREEN-структуре. Можно, но не обязательно, выбирать конкретные поля оператором SELECT. Выбраны могут быть только те поля, которые имеют USE-переменную, НЕ имеют атрибута SKIP и не запрещены оператором DISABLE.
(С.П.А. - в дальнейшем, я буду писать не "запрещены о...", а просто "DISABLED" - англ. ЗАПРЕЩЕНЫ)
Для полей ENTRY и TEXT, ACCEPT подсвечивает поле, показывает USE-переменную, высвечивает курсор, разрешает ввод с клавиатуры и ждет действий оператор. Когда поле завершено нормально (не по ALERT-клавише), то введенное значение деформатируется, согласно шаблону поля, и автоматически переписывается в USE-переменную.
Для полей OPTION (STRING или RADIO) и POINT, ACCEPT подсвечивает элемент меню, разрешает ввод с клавиатуры и ждет действий оператора. Когда поле завершено, функция CHOICE() возвращает относительную позицию выбранного эелемента в OPTION- или REPEAT-структуре. Для полей типа STRING и RADIO OPTION, USE-переменная получает выбранное значение. Для полей типа POINT, индексная переменная структуры REPEAT, также, получит номер выбранного элемента.
Для полей типа PAUSE,ACCEPT показывает параметр оператора PAUSE, разрешает ввод с клавиатуры и ждет нажатия на клавишу. Любая клавиша завершит это поле, за исключением ESC или BackTAB для НЕ-CUA экранов.
ACCEPT производит внутреннюю обработку ESC и BackTAB только для НЕ-CUA экранов. Esc или BackTab заставляют ACCEPT выбрать для ввода предыдущее поле, или поле, заданное атрибутом ESC. Если такого поля нет, то ACCEPT издаст звуковой сигнал и останется на том же поле.
ACCEPT также проводит внутреннюю обработку полоски-курсора в полях типа OPTION STRING, OPTION RADIO, POINT и в листбоксах (без атрибута IMM) как для CUA- так и для НЕ-CUA экранов.
Пример:
Screen SCREEN(5,40),PRE(Scr),COLOR(1),ZOOM,CUA,SHADOW
ROW(2,5) ENTRY(@N3),USE(Ctl:Code)
ROW(3,5) ENTRY(@S30),USE(Ctl:Name)
ROW(4,15)BUTTON('OK'),USE(?OkButton),KEY(EnterKey)
ROW(4,25)BUTTON('Отмена'),USE(?CanxButton),KEY(EscKey)
.
CODE


OPEN(Screen)
LOOP
ACCEPT !Ввод - в каждое поле
CASE FIELD()
OF ?OkButton
EXECUTE DiskAction
ADD(Control)
PUT(Control)
DELETE(Control)
.
BREAK
OF ?CanxButton
IF KEYCODE() EscKey THEN RETURN.
. .



ALERT (установка клавиши завершения поля)



ALERT([first-keycode][,last-keycode])


first-keycode Числовой код клавиши или EQUATE-метка кода клавиши. Он может быть нижним пределом для диапазона кодов клавиш.
last-keycode Аналогично first-keycode, но является ВЕРХним пределом в диапазоне кодов клавиш.

ALERT задает клавишу или ВКЛЮЧАЮЩИЙ диапазон клавиш, как клавишу завершения поля. (С.П.А. - говоря по-русски, ALERT "взводит" клавишу(и). Поэтому, в дальнейшем, я так и буду говорить - "взведенные клавиши" или "ALERT-клавиши"). Оператор ALERT без параметровотключает все ALERT-клавиши (клавиши, взведенные атрибутом ALRT для полей экрана НЕ отменяются).
Любая клавиша, или комбинация клавиш, имеющая код, может стать параметром оператора ALERT. Если поле завершено ALERT-клавишей, то его USE-переменная НЕ обновляется, для обновления используйте оператор UPDATE.
Пример:
ALERT !Отменить все взведенные клавиши
ALERT(F1Key,F12Key) !Взвести все F-клавиши
ALERT(279) !Взвести "клавишу" Ctrl-ESC
См. также: UPDATE



BEEP (звуковой сигнал динамиком)



BEEP([частота][,длительность])


частота Числовая константа, переменная или выражение, дающее частоту тона. Если ЧАСТОТА не задана, подразумевается 150hz.
длительность Числовая константа, переменная или выражение, дающее время (в сотых долях секунды) звучания сигнала. Если не задана, то подразумевается 16 сотых секунды.

Оператор BEEP заставляет динамик компьютера издать звук. Если ЧАСТОТА=0 (звука нет), то BEEP становится эффективным средством для паузы в течении заданного времени, независимо от железа.
Пример:
IF ERRORCODE() !Блин! Неужели ошибка?
BEEP(200,100) ! ну тогда длинно бибикнуть
STOP(ERROR()) ! остановиться для вывода сообщения об ошибке
. !Конец оператора IF
BEEP(0,200) !Просто пауза аж на целых две секунды!



CHOICE (относительная позиция элемента)



CHOICE([field])


field
EQUATE-метка поля типа LIST, OPTION, POINT.

Функция CHOICE возвращает порядковый номер выбранного элемента в структуре OPTION, LISTбоксе или поля POINT. Будучи вызвана без параметров, CHOICE возвращает порядковый номер выбранного элемента в последнем LIST, OPTION или POINT, завершенном оператором ACCEPT.
CHOICE возвращает порядковый номер выбранной RADIO-кнопки или поля типа STRING в структуре OPTION. Порядковый номер элемента, это его относительная позиция от начала описания структуры. Первый элемент имеет порядковый номер 1, второй - 2 и т.д.
CHOICE возвращает номер элемента очереди (QUEUE), выбранного из листбокса.
CHOICE возвращает позицию указателя (POINT) в REPEAT-структуре, при завершении POINT-поля. Это же значение возвращает индексная переменная (INDEX) REPEAT-структуры.
Возвращаемый тип данных: LONG
Пример:
Screen SCREEN
ROW(4,13) OPTION,USE(MenuField),REQ !Структура меню
ROW(5,13) STRING('Добавить запись') ! элемент 1
ROW(7,13) STRING('Изменить запись') ! элемент 2
ROW(9,13) STRING('Удалить запись') ! элемент 3
ROW(11,18) STRING('Выход') ! элемент 4
.
CODE
LOOP
ACCEPT
EXECUTE CHOICE() !В зависимости от выбранного элемента
! выполнить то или иное действие:
AddRec ! добавить запись
PutRec ! просмотреть/изменить запись
DelRec ! удалить запись
RETURN ! закончить работу
. .



CLOSE (закрыть текущий экран)



CLOSE(метка)


метка Метка структуры SCREEN или PULLDOWN.

CLOSE прекращает обработку текущего SCREEN или PULLDOWN. Память, занятая текущим экраном освобождается при его закрытии. Если у текущего экрана были заданы параметры СТРОК и СТОЛБЦОВ, то будет восстановлено закрытое им изображение.
Пример:
CLOSE(MenuScr) !Закрыть экран с меню
CLOSE(CustEntry) !Закрыть экран ввода данных о покупателе



COL (номер столбца)


COL([ screen ])
field
variable

screen field variable
Метка SCREEN-структуры (экрана)
Номер или EQUATE-метка поля
Метка поля типа STRING

COL без параметров, возвращает номер последнего столбца, к которому было обращение.
Если задан параметр SCREEN, COL возвращает позицию первого столбца на этом экране. Для SCREEN без параметров ROWS и COLUMNS всегда будет возвращаться единица. Для экрана, описанного с атрибутом AT, то COL вернет значение параметра COL, заданного в AT.
С параметрами FIELD и VARIABLE, возвращается позиция первого столбца поля. Если это поле типа POINT, то возвращаемое значение определяется положением текущего столбца в REPEAT-структуре.
Возвращаемый тип данных: LONG
Пример:
SaveCol = COL(Total) !Запоминаем положение поля ИТОГО:
SHOW(ROW(),COL()+6,Status) !Показать состояние линии
BLANK(ROW(?),COL(?),ROWS(?),COLS(?))
!Спрятать текущее поле



COLS (число столбцов)


COLS([ screen ])
field
variable

screen field variable
Метка SCREEN-структуры.
Номер или EQUATE-метка поля.
Метка экранного поля типа STRING.

Функция COLS возвращает число столбцов, занятых элементом экрана. COLS без параметров, возвращает число столбцов на физическом экране (текущий текстовый режим). Если задан параметр SCREEN, то возвращается ширина экрана в столбцах.
Если заданы параметры FIELD или VARIABLE, возвращается число столбцов, занятых полем.
Возвращаемый тип данных: LONG
Пример:
R# = ROWS() !Сохраняем число строк на физическом экране
C# = COLS() !Сохраняем число столбцов на физическом экране
GraphicScreenProc !Вызываем процедуру, работающую в графике
SETTEXT(R#,C#) !Восстанавливаем предыдущий текстовый режим
SaveCols = COLS(Total) !Сохраняем ширину поля ИТОГО:
SHOW(ROW(),COL()+COLS(?)+1,Status) !Показать состояние линии
BLANK(ROW(?),COL(?),ROWS(?),COLS(?))
!Спрятать текущее поле
См. также: ,



CONTENTS (содержимое USE-переменной)



CONTANTS(field)


field
Номер или EQUATE-метка поля.

Функция CONTENTS возвращает строку, содержащую значение USE-переменной для полей типа ENTRY, OPTION (STRING или RADIO) или TEXT.
USE-переменная может быть длиннее, чем шаблон формата связанного с ней поля. Поля типа TEXT могут иметь произведение СТРОК*СТОЛБЦОВ меньше, чем длина их USE-переменной. CONTENTS всегда возвращает строку длиной, равной полной длине USE-переменной.
Возвращаемый тип данных: STRING
Пример:
IF CONTENTS(?LastName) ='' AND CONTENTS(?FirstName)
!Если имя и фамилия пусты
Scr:Message = 'Must Enter a First or Last Name'
! вывести сообщение об ошибке
.



DISABLE (запретить выбор поля и затемнить его)



DISABLE(first field [,last field])


first field Номер или EQUATE-метка поля или элемента меню для отдельного поля или для первого поля из диапазона полей.
last field
То же, что и FIRST FIELD, но для последнего поля из диапазона поле.

Оператор DISABLE запрещает ввод в поле или в диапазон полей экрана или PULLDOWN-меню. Поля экрана должны иметь USE-переменные. Когда поле запрещено, оно отображается в цвете, задаваемом третьим параметром атрибута COLOR, связанного с ним, и оператор не может вводить данные в такое поле. DISABLE влияет не целиком на PULLDOWN, а только на его элементы (ITEM).
Пример:
Screen SCREEN(5,40),PRE(Scr).COLOR(l),ZOOM,CUA,SHADOW
ROW(2,5) ENTRY(@N3),USE(Ctl:Code)
ROW(3,S) ENTRY(@S30),USE(Ctl:Name)
ROW(4,15) BUTTON('OK').USE(?OkButton),KEY(EnterKey)
ROW(4,25) BUTTON('Cancel'),USE(?CanxButton).KEY(EscKey)
.
CODE
OPEN(Screen)
DISABLE(?Ctl:Code) !Запретить поле
DISABLE(?Ct]:Code,?Ctl:Name) !Запретить диапазон полей
DISABLE(2) !Запретить второе по сче-
! ту поле
PuIlDown PULLDOWN
MENU('Выход'),USE(?FirstMenu)
ITEM('Выход в Dos'),USE(?FirstItem)
.
MENU('Параметры')
ITEM('Обработать запись'),USE(?ProcRec)
ITEM('Удалить запись'),USE('DelRec')
. .
CODE
OPEN(PuIlDown,1)
DISABLE(?FirstItem)
!Дезактивировать первый пункт меню в PULLDOWN
SomeProcedure ! и выполнить некую процедуру
ENABLE(?FirstItem) !Снова активировать пункт меню
См. также: ENABLE



DISPLAY (вывести USE-переменные на экран)



DISPLAY(first field [,last field])


first field Номер или EQUATE-метка поля или элемента меню для отдельного поля или для первого поля из диапазона полей.
last field То же, что и FIRST FIELD, но для последнего поля из диапазона поле.

DISPLAY записывает значения USE-переменных в связанные с ними поля текущего экрана. DISPLAY без параметров, выводит на экран все USE-переменные. Если задано только FIRST FIELD, то будет выведено значение USE-переменной только для заданного поля. Если заданы и FIRST и LAST FIELD, то будут показаны значения всех USE переменных в диапазоне FIRST FIELD..LAST FIELD включительно.
Пример:
DISPLAY !Показать все поля
DISPLAY(2) !Показать поле номер 2
DISPLAY(3,7) !Показать поля с 3 по 7
DISPLAY(?MenuField) !Показать поле-меню
DISPLAY(?TextBlock,?Pause) !Показать поля с TextBlock по Pause
См. также: , ,



ENABLE (разрешить выбор затемненного ранее поля)



ENABLE(first field [,last field])


first field Номер или EQUATE-метка поля или элемента меню для отдельного поля или для первого поля из диапазона полей.
last field То же, что и FIRST FIELD, но для последнего поля из диапазона поле.

Оператор ENABLE вновь активизирует поле или диапазон полей, которые были запрещены оператором DISABLE. Реактивированное поле вновь доступно оператору для ввода.
Пример:
SomeScreen PROCEDURE
Screen SCREEN,COLOR(0)
ROW(2,3) ENTRY(@N4),USE(Fieldl),COLOR(0,1,2)
ROW(3,3) ENTRY(@N4),USE(Field2),COLOR(0,1.2)
.
CODE
OPEN(Screen)
DISABLE(?Field2) !Field2 дезактивировано
IF Ctl:Password = 'Supervisor'
ENABLE(?Field2) !Реактивируем Field2
.
SomeMenu PROCEDURE
PuIlDown PULLDOWN
MENU('Quit'),USE(?FirstMenu)
ITEM('Exit to Dos'),USE(?FirstItem)
.
MENU('Options')
ITEM('Process Record'),USE(?ProcRec)
ITEM('Delete Record'),USE('DelRec')
. .
CODE
DISABLE(?FirstItem) !Запретить первый пункт меню в
! PULLDOWN
SomeProcedure ! и что-то сделать
ENABLE(?FirstItem) !Снова активизировать этот пункт
См. также:



ERASE (очистить поле(я) на экране и его(их) USE-переменную(ые))



ERASE([first field][,last field])


first field Номер или EQUATE-метка поля или элемента меню для отдельного поля или для первого поля из диапазона полей.
last field То же, что и FIRST FIELD, но для последнего поля из диапазона поле.

ERASE очищает поля экрана и соответствующие им USE-переменные. ERASE без параметров очищает все поля на экране. Если задано только first field, то ERASE очистит конкретную USE-переменную и связанное с ней поле. Если заданы и first и last field, то будут очищены поля и USE-переменные в диапазоне от first field до last field включительно.
Пример:
ERASE(?) !Очистить текущее поле
ERASE !Очистить все поля на экране
ERASE(3,7) !Очистить поля с 3 по 7
ERASE(?Name,?Zip) !Очистить все от ИМЕНИ до ИНДЕКСА
ERASE(?City.?City+2) !Очистить ГОРОД и два поля после него
См. также:



FIELD (последнее завершенное поле)



FIELD()

Функция FIELD возвращает номер поля, к которому было обращение последний раз. Компилятор присваивает положительные номера полям экрана, использующим USE-переменные в том порядке, в котором они описаны в SCREEN-структуре. Отрицательные номера присваиваются всем элементам типа MENU и ITEM в PULLDOWN-структуре. В текстах программ номера полей, обычно, заменяются на EQUATE-метки полей или EQUATE-метки элементов меню.
Возвращаемый тип данных: LONG
(А.С.П - Что говорит о возможном количестве полей на экране...)
Пример:
Screen SCREEN
ROW(4,13) ENTRY(@N4),USE(Fieldl)
ROW(5,13) ENTRY(@N4),USE(Field2)
ROW(6,13) ENTRY(@N4),USE(Field3)
ROW(7,13) ENTRY(@N4),USE(Field4)
.
CODE
LOOP
ACCEPT
CASE FIELD() !Управление редактированием
! полей
OF ?Field1 !Поле номер 1
IF Field1 = 0 ! если пусто,
BEEP ! звуковой сигнал
SELECT(?) ! и повторить ввод
.
OF ?Field2 !Поле номер 2
IF Field2 > 4 ! если СУММА больше 4
Scr:Message = 'Сумма должна быть меньше 4'
ERASE(?) ! очистить поле
SELECT(?) ! и вновь редактировать его
ELSE ! значение допустимо?
CLEAR(Scr:Message) ! очистить строку сообщений
.
OF ?Field4 !Поле номер 4
BREAK ! закончить цикл обработки
. . !Конец операторов CASE и LOOP



FIELDS (число полей на экране)



FIELDS()

Функция FIELDS возвращает число полей, использующих USE-переменные, в текущей SCREEN-структуре. Если не открыто ни одного экрана, то FIELDS возвращает ноль.
Возвращаемый тип данных: LONG
Пример:
SELECT(FIELDS()) !Выбрать последнее поле
ERASE(?,FIELDS()) !Очистить остающиеся поля



Документация по Clarion



GETSTYLES([файл])


файл Строковая константа или переменная содержащая спецификацию файла с Кодами Цветовых Стилей. Если этот параметр опущен, то будет установлен стандартный набор цветов.

GETSTYLES читает файл стилей и присваивает внутреннему массиву Цветовых Стилей значения из этого файла. Если файл не найден, то GETSTYLES игнорируется и внутренний массив кодов цветовых стилей остается неизмененным.
Массив кодов цветовых стилей это внутренний 256-байтный массив, который хранит текущие коды цветовых стилей. Его элементы нумеруются от 0 до 255. Каждый элемент инициализируется значением, равным его номеру (элемент 0=0, элемент 1=1..элемент 255=255). Каждый атрибут для SCREEN and PULLDOWN, который использует коды цветовых стилей, обращается к этому массиву и определяет настоящие цвета дисплея, хранящиеся в элементе массива.
file это текстовый ASCII-файл. Каждая строка содержит один Код Цветового Стиля в четырех полях, разделенных запятыми. Первое поле - номер элемента внутреннего массива. Второе - Код Цветового Стиля для данного элемента (ТОЛЬКО десятичный а НЕ 16ричный!) при наличии цветного дисплея. Третье поле это код цвета для монохромного дисплея, и четвертое поле необязательное описание. Например, файл стилей может выглядеть так:
0,0,0,Черный на Черном
1,112,112,Окно на экране
2,63,112,Заголовок экрана
3,115,7,Рамка экрана
4,113,7,Нормальный PROMPT
5,116,7,Текущий PROMPT
6,127,112,Горячая клавиша в PROMPT
7,127,112,Горячая клавиша в текущем PROMPT
8,126,7,Поле для ввода
9,7,112,Текущее поле для ввода
В файле стилей может быть от 1 до 256 строк и они не обязаны располагаться по порядку номеров элементов. Изменяться будут только те элементы массива, которые указаны в файле.
Считая, что есть цветной дисплей и используя вышеприведенный файл, атрибут экранного поля COLOR(1,2,3,4,5) будет задавать следующие цвета:
112 (Черный на Белом) для нормального текста
63 (ЯркоБелый на Салатном) если это поле активно
115 (Зеленый на Белом) когда поле затенено
113 (Синий на Белом) для заданного амперсандом хоткея
116 (Красный на Белом) для хоткея активного поля
Пример:
Файл STYLES.DEF содержит:
0,31,7.ЯркоБелый на Синем/Белый на Черном
1,48,112,Черный на Салатном/Черный на Белом
2,23,8,Белый на Синeм/Серый на Черном
Текст программы содержит:
PROGRAM
Screen SCREEN,COLOR(0) !Цвет по умолчанию Черный на Черном
ROW(2,3) ENTRY(@N4),USE(Field1),COLOR(0,1,2)
ROW(3,3) ENTRY(@N4),USE(Field2).COLOR(0,1.2)
.
CODE
GETSTYLES('styles.def')!Прочитать файл styles.def
OPEN(Screen) !Экран - Ярко-Белый на Синем
!Field1 - Черный на Салатном (активное поле)
!Field2 - Белый на Синем (затененное поле)
DISABLE(?Field2)
См. также: ,



Команды обработки экранов





(обработчик полей экрана)
(установка клавиши завершения поля)
(звуковой сигнал динамиком)
(закрыть текущий экран)
(запретить выбор поля и затемнить его)
(вывести USE-переменные на экран)
(разрешить выбор затемненного ранее поля)
(очистить поле на экране и его USE-переменную)
(считать Коды Цветовых Стилей из файла)
(доступ к окну подсказки)
(периодически вызываемая процедура)
(загрузка псевдографики)
(открыть экран для обработки)
(выбрать поле для обработки)
(установить размер виртуального экрана)
(задать строку сообщений экрана)
(установить Коды Цветовых Стилей)
(показать .PCX или .GIF)
(записать данные с экрана в USE-переменные)
(графические мышка, кнопки и рамочки)



(относительная позиция элемента)
(номер столбца)
(число столбцов)
(содержимое USE-переменной)
(последнее завершенное поле)
(число полей на экране)
(было обращение к полю или нет)
(номер строки)
(число строк)
(выбранное для обработки поле)
(возвращает внутренний массив Цветовых Стилей)



HELP (доступ к окну подсказки)



HELP([helpfile][,window-id])


helpfile Строковая константа или метка строковой переменной, содержащей спецификацию файла с окнами подсказки. Если в спецификации не задан путь к файлу, то подразумевается, что файл в текущем каталоге. Если опущено расширение файла, то подразумевается ".hlp". Если вообще не задан файл, то надо использовать запятую, чтобы показать, что этот параметр опущен.
window-id Строковая константа или метка строковой переменной (до 20 символов) которая содержит идентификатор окна подсказки.

Оператор HELP открывает указанный файл подсказки и активизирует окно с именем WINDOW-ID. Во время работы операторов ASK или ACCEPT, текущее окно подсказки можно вызвать нажатием клавиши F1. Файлы подсказки создаются утилитой Кларион HELPER.
Если пропущен WINDOW-ID, то файл открывается, но никакое окно не активизируется. Если параметр HELPFILE не задан, то подразумевается, что файл уже открыт и активизируемое окно определяется параметром WINDOW-ID. Окна подсказки также активизируются атрибутом HLP для SCREEN или для элемента экрана. Без параметров, HELP показывает текущее окно подсказки.
(А.С.П. - Для тех, кто не знает. Если окна помощи связаны в цепочку, то можно бегать по ним клавишами PgUp/PgDn. Примером такой связи может служить справочная система CPD 2.1x)
Пример:
HELP('C:\HLPDIR\LEDGER.HLP') !Открыть файл подсказки LEDGER
HELP(,'CustUpd') !Подсказка по внесению изменений в список
!покупателей
HELP !Показать текущее окно подсказки
См. также: , ,



IDLE (периодически вызываемая процедура)



IDLE([procedure][,separation])


procedure Метка оператора PROCEDURE. Процедура должна описываться в MAP программы, но НЕ в MAP для модуля-члена.
separation Целое число секунд, задающее минимальный
промежуток между обращениями к ПРОЦЕДУРЕ. 0
означает, что, по возможности, обращение к
ней должно идти непрерывно. Если SEPARATION
не задано, то по умолчанию - 1.

IDLE-процедура активна во время работы операторов ASK или ACCEPT или функции ENTRY. В один момент времени может быть активна только одна IDLE-процедура. Задание новой IDLE-процедуры, отменяет старую. Оператор IDLE без параметров отменяет обращения к IDLE-процедуре.
(А.С.П. - с помощью этой функции, например, можно выводить на экран ИДУЩИЕ часы, вообще, организовывать работу по прерываниям от таймера, хотя и достаточно примитивную)
Пример:
IDLE(ShoTime,10) !Вызывать shotime каждые 10 секунд
IDLE(CheckNet) !Проверять активность ЛВС каждую секунду
IDLE !Отключить IDLE-процедуру
См. также: , , , ,



LOADSYMBOLS (загрузка псевдографики)



LOADSYMBOLS([string])


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

Процедура LOADSYMBOLS загружает "графические" символы для курсора мышки, RADIO-кнопок и CHECK-боксов, изменяя знакогенератор для текстового режима 25*80. LOADSYMBOLS НЕ влияет на прочие текстовые режимы, устанавливаемые процедурой SETTEXT.
Указанные в STRING символы заменяются на символы, представляющие курсор мышки как стрелку, RADIO-кнопки как "бычьи глаза" (когда кнопка выбрана) и CHECK-боксы как квадраты с буквой "Х" внутри (когда чекбокс активен). Желательно, чтобы символы в STRING не использовались где-либо еще в программе.
Если STRING пропущена, то модифицируется определенный набор символов, которые, обычно, редко используются. "Графические" символы для RADIO-кнопок и чекбоксов используют только два знакоместа, в то время, как обычное представление требует трех знакомест (т.е. (+) и [Х]). Коды символов должны задаваться в следующем порядке:

Экранная "графика" Коды по умолчанию Вид на экране
Курсор мышки 1 Стрелка
RADIO выкл 198, 2, 32 Кружок
RADIO вкл 207, 5, 32 Кружок с точкой
CHECK выкл 209, 11, 32 Квадрат
CHECK вкл 211, 19, 32 Квадрат с "Х"

(А.С.П. - "1" для мышки это не опечатка, в книге так и стоит...)
При завершении программы, знакогенератор восстанавливается в исходном виде. Также, знакогенератор восстанавливается на время выполнения процедур RUN и RUNSMALL.
Если вы хотите использовать "графику" собственного изготовления, то загрузите свой знакогенератор какой-либо утилитой. После загрузки знакогенератора, используйте функцию USESYMBOLS, чтобы указать, какие именно символы использовать.USESYMBOLS аналогична LOADSYMBOLS, за исключением того, что она не модифицирует знакогенератор.
Пример:
LOADSYMBOLS !Использовать стандартный на-
!бор символов
LOADSYMBOLS('<1,198,2,33,207,5,32,209,11,32,211,19,32>')
!Использовать стандартный на-
!бор символов
LOADSYMBOLS('<170>') !Код ASCII 170 для мышки,
! остальное - стандартно.
LOADSYMBOLS('<228,229,230,231,232,233,234,235,236,237,238,239| ,240>')
!Использовать коды от 228 до 240
См. также:



OPEN (открыть экран для обработки)



OPEN(label[,value])


метка value
Метка структуры SCREEN или PULLDOWN.
Числовая константа или переменная. Этот параметр используется только с PULLDOWN-структурами.

OPEN открывает SCREEN для обработки. Только ОДИН SCREEN может быть активен. Когда SCREEN-структура открыта, отображаются ее инициализированные строки и первое поле структуры становится активным. USE-переменные должны выводиться оператором DISPLAY.
OPEN открывает PULLDOWN-структуру для обработки, но не активизирует ее. PULLDOWN-структура становится активной при щелчке мышкой на ее элементе или нажатии горячей Alt-клавиши, заданной для MENU или ITEM. PULLDOWN может быть активизирована, когда при ее открытии нет экранных полей, которые можно активизировать.
Если есть параметр VALUE, и он не равен нулю, то оператор OPEN немедленно показывает полосу меню. Полоса меню остается на экране до закрытия меню, независимо от того, активно меню или нет, (по крайней мере, до тех пор, пока ее не закроет другое изображение). Если VALUE пропущено или ноль, то полоса меню появится только при нажатии Alt-клавиши.
Пример:
OPEN(MenuScr) !Открыть экран меню
OPEN(CustEntry) !Открыть экран ввода сведений о
! покупателях
OPEN(PullDown,1) !Полоса меню всегда видна



REFER (было обращение к полю или нет)



REFER()

Функция REFER возвращает 1 (истина) если было обращение к последнему завершенному полю, или 0 (ложь) если обращения не было. Обращение происходит при вводе любого печатного символа, выборе поля OPTION или POINT или передвижении указателя в листбоксе. REFER возвращает истину, даже если в поле были введены те же символы, что и были в нем раньше.
Возвращаемый тип данных: LONG
Пример:
Screen SCREEN
ROW(4,13) ENTRY(@N4),USE(Fieldl) !Поле для ввода
ROW(5,13) ENTRY(@N4),USE(Field2) !Поле для ввода
ROW(6,13) ENTRY(@N4),USE(Field3) !Поле для ввода
ROW(7,13) ENTRY(@N4),USE(Field4) !Поле для ввода
.
CODE
LOOP
ACCEPT
CASE FIELD() !Управление редактированием
! полей
OF ?Field1 !Поле номер 1
IF Field1 = 0 ! если пусто,
BEEP ! звуковой сигнал
SELECT(?) ! и повторить ввод
.
OF ?Field4 !Поле номер 4
BREAK ! закончить цикл обработки
. . !Конец операторов CASE и LOOP



ROW (номер строки)


ROW([ screen ])
field
variable

screen field variable
Метка SCREEN-структуры.
Номер или EQUATE-метка поля.
Метка поля типа STRING.

ROW без параметров возвращает номер последней строки, к которой произошло обращение. Если задан параметр SCREEN то ROW возвращает физический номер строки для первой строки экрана. Для SCREEN без параметров ROWS и COLUMNS, всегда возвращается 1. Если экран описан с атрибутом AT, то ROW возвращает значение параметра ROW заданного в AT.
Для параметров FIELD и VARIABLE возвращается номер первой строки поля (поля типа TEXT, BUTTON, LIST и IMAGE могут занимать несколько строк). Если поле типа POINT, то возвращаемое значение определяется текущей строки в REPEAT-структуре.
Возвращаемый тип данных: LONG
Пример:
SaveRow = ROW(Total) !Save row of screen total
SHOW(ROW(),COL()+6,Status) !Display the line status
BLANK(ROW(?),COL(?),ROWS(?).COLS(?))
!Blank out the current field



ROWS (число строк)


ROWS([ screen ])
field
variable

screen field variable
Метка SCREEN-структуры.
Номер или EQUATE-метка поля.
Метка поля типа STRING.

Функция ROWS возвращает высоту элемента экрана в строках. Без параметров возвращает высоту физического экрана (текущий текстовый режим). Если задан параметр SCREEN, то возвращается высота текущего экрана.
Если заданы параметры FIELD или VARIABLE, то возвращается высота поля в строках. Поля типа TEXT, BUTTON, LIST, IMAGE и POINT могут иметь высоту более чем в одну строку.
Возвращаемый тип данных: LONG
Пример:
R# = ROWS() !Сохраняем число строк на физическом экране
C# = COLS() !Сохраняем число столбцов на физическом экране
GraphicScreenProc !Вызываем процедуру, работающую в графике
SETTEXT(R#,C#) !Восстанавливаем предыдущий текстовый режим
Y#=ROW(Screen1)+(ROWS(Screen1)/2)!Вычисляем центральную строку
X#=COL(Screen1)+(COLS(Screen1)/2)!--//-- центральный столбец
SHOW(Y#-1,X#-1,'') !Обращение к видеопамяти из центра Screen1
OPEN(Screen2) !Открываем Screen2 в центре Screen1
BLANK(ROW(?),COL(?),ROWS(?),COLS(?))
!Спрятать текущее поле
См. также: ,



SELECT (выбрать поле для обработки)



SELECT([field][,cursor position])


field cursor position
Номер поля или его EQUATE-метка для поля,
подлежащего обработке.
Задает позицию в поле, куда поместить курсор. Для полей ENTRY и TEXT, это номер символа. Для OPTION RADIO, OPTION STRING, или OPTION CHECK это номер выбора в структуре OPTION. Для LIST это номер элемента QUEUE.

SELECT изменяет нормальный порядок обработки полей экрана. Параметр FIELD задает поле, подлежащее обработке. SELECT НЕ работает с полями в PULLDOWN.
SELECT без параметров, переводит экран в "безостановочный" режим - завершение ВСЕХ полей экрана без ввода в них оператором. Каждое поле завершается в обычном порядке. Цикл оператора SELECT НЕ останавливается на последнем поле. Он переходит к первому и так далее до закрытия экрана. "Безостановочный" режим SELECT прекращается при одном из следующих обстоятельств:
SELECT(?) прекращает цикл SELECT и позволяет оператору ре-
дактировать текущее поле.
Обнаружено пустое или нулевое поле с атрибутом REQ. Звучит
сигнал, и возобновляется нормальный порядок обработки по-
лей с поля с атрибутом REQ.
Пример:
LOOP !Обычный цикл обработки экрана
ALERT(CtrlEnter) !Взвести хоткей
ACCEPT !Принять ввод данных
IF KEYCODE() = CtrIEnter !При нажатии хоткея
SELECT(?) ! начат с того же самого поля
SELECT ! и перейти в безостановочный
CYCLE ! режим прямо сейчас
.
IF FIELD() = ?State !Если редактируемое поле - ШТАТ,
IF State <> 'FL' AND State <> 'GA'
! и введен неправильный штат,
BEEP ! то предупредить звуковым сигналом
SELECT(?) ! остаться на этом поле (и отменить
! безостановочный режим)
. . . !Конец операторов LOOP и IF
См. также: , , ,



SELECTED (выбранное для обработки поле)



SELECTED()

Функция SELECTED возвращает номер выбранного в данный момент поля. Это поле, которое оператор ACCEPT будет обрабатывать следующим. Значение функции SELECTED обычно определяется "естественным" порядком выбора полей, который используется оператором ACCEPT (порядок, в котором поля описаны в SCREEN-структуре). Этот порядок можно изменить, используя оператор SELECT.
Возвращаемый тип данных: LONG
Пример:
SavField = SELECTED() !Сохранить положение текущего поля
IF SELECTED() = ?Cus:Company AND Cus:CustType - 'ЧАСТНИК'
SELECT(?Name) !Пропустить поле КОМПАНИЯ если счет
!принадлежит физическому лицу
.
См. также: ,



SETAREA (установить размер виртуального экрана)



SETAREA(строк,столбцов)


строк столбцов
Числовая константа, которая задает число строк на виртуальном экране. Максимум - 255. Тем не менее, произведение СТРОК и СТОЛБЦОВ НЕ должно превышать 32767.
Числовая константа, которая задает число столбцов на виртуальном экране. Максимум - 255. Тем не менее, произведение СТРОК и СТОЛБЦОВ НЕ должно превышать 32767.

SETAREA задает размер области памяти для виртуального экрана. Она определяет область, в пределах которой может перемещаться физический экран. SETAREA ничего не выводит, так что ее можно использовать, когда экран уже открыт. Оператор имеет доступ только к той части экрана, которая попадает в заданную область.
SETAREA требуется, когда открытый экран (без параметров строк/столбцов) имеет размер больше, чем ранее определенный виртуальный экран, или больше чем 25 x 80. Если SCREEN(строк,столбцов) больше, чем размер виртуального экрана, то виртуальная область автоматически переопределяется, настраиваясь на больший размер. Однажды установленный размер виртуальной области, остается без изменений, пока его не переопределит больший экран или процедура SETAREA.
Если задать SETAREA с размером меньшим, чем у текущего экрана, все, что не попадает в новую, меньшую, область, становится недоступным оператору для ввода. Если затем задать SETAREA с нормальными параметрами, то поля, отсеченные ранее, вновь станут доступны. Тем не менее, все рамки, цвета и надписи сотрутся.
Пример:
Screen SCREEN,PRE(Scr),COLOR(1) !Экран 50строк на 160 столбцов
описания полей для этого экрана
.
CODE
SETAREA(50,160) !Установить размер виртуального экрана
OPEN(Screen) ! и открыть его



SETMSG (задать строку сообщений экрана)



SETMSG(row,col,length)


row col length
Целочисленная константа, переменная или выражение, которое задает номер строки на виртуальном экране.
Целочисленная константа, переменная или выражение, которое задает номер столбца на виртуальном экране.
Целочисленная константа, переменная или выражение, которое задает число символов в строке сообщений.

SETMSG описывает область экрана для вывода сообщений от атрибутов MSG. Если все три параметра равны нулю, то восстанавливается строка сообщений по умолчанию.
По умолчанию, строка сообщений размещается внизу экрана, с первого столбца 25-ой строки и имеет длину 80 символов.
Пример:
Screen SCREEN(25,80),EXPAND(5)
ROW(3,5) ENTRY(@N4),USE(Fieldl),MSG('Первое поле ввода')
ROW(4,5) ENTRY(@N4),USE(Field2),MSG('Следующее поле')
.
CODE
OPEN(Screen)
SETMSG(25,25,30) !Строка сообщений на 25 строке экрана
!экрана имеет длину 30 символов.
SETTEXT(43,80) !Переходим в режим 43 строки
SETMSG(0,0,0) !Строка сообщений - по умолчанию
!строка 43, столбец 1, длина 80
См. также:



SETSTYLES (установить Коды Цветовых Стилей)



SETSTYLES(program array)


program array
Массив из 256 элементов типа BYTE, или STRING(256).

SETSTYLES присваивает значения, содержащиеся в PROGRAM ARRAY внутреннему массиву кодов цветовых стилей. Это дает возможность "на лету" изменять цветовую гамму программы.
Внутренний массив кодов цветовых стилей - 256-байтный массив, хранящий текущие коды цветовых стилей. Его элементы нумеруются от 0 до 255. Каждый элемент, изначально, имеет значение, равное его номеру (эл-т[0]=0, эл-т[1]=1..эл-т[255]=255). Каждый атрибут и оператор, использующий коды цветовых стилей, обращается к этому массиву и определяет цвета для конкретного кода цветового стиля.
Но, поскольку, массивы Кларион нумеруются с единицы, то SETSTYLES присваивает первый элемент PROGRAM ARRAY нулевому элементу внутреннего массива кодов цветовых стилей, второй - первому...
Пример:
StyleCodes STRING(256) !Программный массив
StyleArray BYTE,DIM(256),OVER(StyleCodes)
Screen SCREEN,COLOR(0) !По умолчанию - цвет черный на черном
ROW(2,3) ENTRY(@N4),USE(Fieldl),COLOR(0,1,2)
ROW(3,3) ENTRY(@N4),USE(Field2),COLOR(0,1,2)
.
CODE
StyleCodes = STYLES() !Получаем текущие стили
StyleArray[1] = 31 !ЯркоБелый на Синем
StyleArray[2] = 48 !Черный на Салатном
StyleArray[3] = 23 !Белый на Синем
SETSTYLES(StyleArray) !Установить новые стили
OPEN(Screen) !Экран теперь ЯркоБелый на Синем
! Field1 - Черный на Салатном (активное)
DISABLE(?Field2) !Field2 - Белый на Синем (затененное)
См. также: , ,



SHOWIMAGE (показать .PCX или .GIF)



SHOWIMAGE(row,col,[rows],[cols],file,usepal)


row col rows cols file usepal
Строка, в которой начать вывод PCX или GIF.
Столбец, в котором начать вывод PCX или GIF.
Высота рисунка в строках. Если пропущено, то столько, сколько нужно для размещения рисунка.
Ширина рисунка в столбцах. Если пропущено, то столько, сколько нужно для размещения рисунка.
Строковая константа или переменная содержащая имя PCX или GIF файла.
Целочисленная константа или переменная. Если 0, то используется 256-цветная палитра .PCX или .GIF. Если НЕ-ноль, то используется 256-цветная палитра ранее выведенного рисунка (или стандартные аппаратные установки).

SHOWIMAGE это низкоуровневая команда для вывода рисунка в формате PCX или GIF без поля типа IMAGE. Экран должен быть в графическом режиме, так что сначала надо открыть SCREEN с атрибутом GRAPHIC. Атрибуты ROWS и COLS могут быть опущены, но запятые, отмечающие пропущенные параметры, должны быть обязательно. Если атрибуты ROWS и COLS пропущены, то рисунок выводится в полный размер. При необходимости, рисунок масштабируется.
Поддерживаются графические режимы EGA, VGA и SVGA. CGA и Hercules НЕ поддерживаются. Поддерживаются все 16-цветные режимы. На 16-цветных адаптерах, 256-цветные PCX и GIF выводятся в 16-цветном режиме. Режим SVGA 256 цветов поддерживается со следующим оборудованием (минимальная конфигурация):

Марка видеокарты Разрешение Требуемая память
TSENG Chip Set Video7 / Headland Ahead Systems Paradise VESA Trident Everex Zymos Genoa
640 x 350 512K
640 x 400 256K
640 x 400 256K
640 x 400 256K
640 x 400 256K
640 x 400 256K
640 x 400 256K
640 x 400 256K

Пример:
Screen SCREEN(25,80).COLOR(0),GRAPHIC.
CODE
OPEN(Screen) !Открыть фиктивный графический экран
SHOWIMAGE(1,1,25,80,'logo.pcx',0)
!Вывести эмблему в полный экран



STYLES (возвращает внутренний массив Цветовых Стилей)



STYLES()

Функция STYLES возвращает 256-байтную строку, содержащую текущие значения внутреннего массива кодов цветовых стилей.
Внутренний массив кодов цветовых стилей - 256-байтный массив, хранящий текущие коды цветовых стилей. Его элементы нумеруются от 0 до 255. Каждый элемент, изначально, имеет значение, равное его номеру (эл-т[0]=0, эл-т[1]=1..эл-т[255]=255). Каждый атрибут и оператор, использующий коды цветовых стилей, обращается к этому массиву и определяет цвета для конкретного кода цветового стиля.
Массивы Кларион нумеруются начиная с единицы, а внутренний массив кодов цветовых стилей нумеруется с нуля. Поэтому, первый элемент строки соответствует НУЛЕВОМУ элементу массива, второй первому и т.п.
Возвращаемый тип данных: STRING(256)
Пример:
StyleCodes STRING(256) !Программный массив стилей
StyleArray BYTE,DIM(256),OVER(Sty]eCodes)
!Рассматриваем строку как массив
Screen SCREEN,COLOR(0) !Цвет по умолчанию черный на черном
ROW(2,3) ENTRY(@N4),USE(Fieldl),COLOR(0,1,2)
ROW(3,3) ENTRY(@N4),USE(Field2),COLOR(0,1,2)
.
CODE
StyleCodes = STYLES() !Получить текущие стили
StyleArray[1] = 31 !ЯркоБелый на Синем - код стиля: 0
!Элемент программного массива #1 соответствует элементу #0
!внутреннего массива
StyleArray[2] = 48 !Черный на Салатном - код стиля: 1
StyleArray[3] = 23 !Белый на Синем - код стиля: 2
SETSTYLES(StyleCodes) !Перезаписать массив стилей
OPEN(Screen) !Экран будет ЯркоБелый на синем. Полей
!черное на салатном (активное)
DISABLE(?Field2) !Field2 белое на синем (затененное)
См. также: , ,





UPDATE (записать данные с экрана в USE-переменные)



UPDATE([first field][,last field])


first field last field UPDATE UPDATE UPDATE(first field)UPDATE(first field,last field)
Номер поля или EQUATE-метка поля для первого поля в диапазоне полей.
Номер поля или EQUATE-метка поля для последнего поля в диапазоне полей.
записывает содержимое полей экрана в их USE-переменные.
Обновляет USE-переменные всех полей экрана.
Обновляет USE-переменную конкретного поля.
Обновляет USE-переменные полей в диапазоне от first field до last field.

USE-переменные автоматически обновляются оператором ACCEPT при заполнении полей. Тем не менее, поля заполненный ALERT-клавишами НЕ обновляют USE-переменные автоматически. Для этого и служит оператор UPDATE.
Пример:
UPDATE(?) !Обновить USE-переменную текущего поля
UPDATE !Обновить все USE-переменные
UPDATE(?Address) !Обновить USE-переменную для АДРЕСА
UPDATE(3,7) !Обновить USE-переменные полей с 3 по 7
UPDATE(?Name,?Zip) !Обновляем поля от ИМЕНИ по самый ИНДЕКС
UPDATE(?City,?City+2) !Обновляем ГОРОД и два поля после него
См. также:



USESYMBOLS (графические мышка, кнопки и рамочки)



USESYMBOLS([string])


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

Процедура USESYMBOLS делает представление курсора мышки, радиокнопок и чекбоксов графическим, используя подгружаемый знакогенератор.
Если вы хотите использовать свои изображения для вышеуказанных элементов, вы можете загрузить их заранее какой-либо утилитой. Когда знакогенератор загружен, вызывайте USESYMBOLS для того, чтобы указать, какие символы (коды ASCII) были вами заменены. USESYMBOLS аналогична LOADSYMBOLS, но она не модифицирует уже загруженный знакогенератор.
Желательно, чтобы символы с кодами, указанными в STRING НЕ использовались где-либо еще в программе, так как это может привести к очень интересным но неприятным эффектам.
Если STRING не задана, то используется стандартный набор символов для псевдографики.
Подробности смотри в описании LOADSYMBOLS.
При завершении программы, знакогенератор приводится в первоначальный вид. Также, он восстанавливается во время исполнения RUN или RUNSMALL.
Пример:
USESYMBOLS !Стандартный набор символов
USESYMBOLS('<1,198,2,33,207,5,32,209,11,32,211,19,32>')
!Тоже самое, что и выше
USESYMBOLS('<170>') !Код ASCII 170 для мышки, остальное стан-
! дартно.
USESYMBOLS('<228,229,230,231,232,233,234,235,236,237,238,239,| 240>')
!Используем символы от228 до 240
См. также:



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 ! начало описания подножия
!описания элементов структуры
. . ! конец подножия и отчета




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


APPEND

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




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




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



CLOSE(report)


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

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




COL (столбец)



COL(column)


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

COL используется для размещения полей в строке в структурах HEADER, 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
. !Конец описаний отчета




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)
. . !Конец описаний отчета
См. также:




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
. !Конец описаний отчета
См. также:




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
См. также:




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



FIXED

FIXED используется совместно с оператором SUPPRESS. Он гарантирует, что структура ВСЕГА будет занимать заданное число строк на странице. Хорошим примером этому могут служить почтовые этикетки, для которых иногда надо подавлять пустые строки, но сами этикетки должны иметь постоянную длину. FIXED дополняет структуру таким же количеством пустых строк, какое было пропущено оператором SUPPRESS (по-английски SUPRESSed :).
Пример:
CustRpt REPORT !Отчет по покупателям
Head HEADER ! начало описания заголовка
!описания элементов структуры
. ! конец описания заголовка
GroupHead DETAIL ! начало описания DETAIL
!описания элементов структуры
! конец описания DETAIL
.
CustDetail DETAIL,FIXED ! detail фиксированной длины
!описания элементов структуры
. ! конец описания DETAIL
Foot FOOTER ! начало описания подножия
!описания элементов структуры
. . ! конец подножия и отчета




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 ! начало описания подножия
!описания элементов структуры
. ! конец описания подножия
. !Конец описаний отчета



Отчеты





(описывает структуру отчета)
(дописывает выводимое в конец файла)
(задает устройство, на которое вывести отчет)
(число строк на странице)
(переменная - счетчик строк)
(переменная - счетчик страниц)
(логическая поддержка принтера)
(максимальная ширина страницы)



(заголовок страницы, верхний колонтитул)
(тело отчета)
(подножие страницы, нижний колонтитул)



(контроль висячей строки)
(структуру DETAIL печатать без HEADER/FOOTER)
(структура фиксированной длины)
(промежуток между элементами отчета)



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



(управляющая последовательность для принтера)
(переменная отчета)
(многострочное поле отчета)



(отсечь хвостовые пробелы)
(методы выравнивания полей)
(методы капитализации)
(переменная, связанная с полем)
(разрешить перенос слов)



(открыть отчет для обработки)
(закрыть текущий отчет)
(напечатать элемент отчета)
(количество строк)





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 ! начало описания заголовка
!элементы заголовка
. ! конец описания заголовка
. !Конец описаний отчета
См. также:




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



LENGTH(value)


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

Атрибут LENGTH задает максимальное число строк на странице. Автоматический переход на новую страницу происходит на основании значения VALUE. Если VALUE=0, то отслеживание переполнения страницы выключается. VALUE минус число_строк_для_HEADER_и_FOOTER будет числом строк, доступным для печати DETAIL-структур.
Некоторые принтеры сами отслеживают длину страницы. Если VALUE больше или равно внутренней длине страницы принтера, то может произойти неожиданный перевод формата.
Пример:
CustRpt REPORT,LENGTH(60) !В отчете 60 строк на странице
!описания элементов отчета
. !Конец описаний отчета
CustRpt2 REPORT,LENGTH(RptLength)!Число строк на странице хра-
!нится в переменной RptLength
!описания элементов отчета
. !Конец описаний отчета
См. также:




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
!а фамилию - влево
. .




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



LINE(variable)


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

Атрибут отчета LINE задает переменную, которая станет счетчиком строк. При открытии отчета, эта переменная получает значение 1 и сбрасывается в единицу при каждом переполнении страницы. По мере печати HEADER, DETAIL или FOOTER, переменная увеличивается на число напечатанных строк. Эту переменную можно использовать, например, для нумерации строк отчета.
Пример:
CustRpt REPORT,LINE(LineNbr) !Счетчик - переменная LineNbr
!описания элементов отчета
. !Конец описаний отчета
См. также:




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



OPEN(report)


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

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




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



PAGE(variable)


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

Атрибут отчета PAGE задает переменную, которая будет использоваться как счетчик страниц. Эту переменную можно будет использовать для печати номера текущей страницы. При открытии отчета, переменная устанавливается в единицу, и увеличивается при переполнении страницы или под управлением программы.
Пример:
CustRpt REPORT,PAGE(PageCount) !Счетчик страниц - PageCount
!описания элементов отчета
. !Конец описаний отчета




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


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



PRINT (напечатать элемент отчета)


PRINT( |structure|)
| string |

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

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




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




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. Элементы открытого отчета можно выводить на печать оператором PRINT. При переполнении страницы могут автоматически печататься структуры HEADER и FOOTER. Поскольку этот документ - руководство по языку, то все атрибуты и операторы, связанные с отчетами, мы рассмотрим ниже более подробно. Обычно, отчеты Кларион "рисуются" с помощью средств форматирования РЕДАКТОРА ТЕКСТОВ и ГЕНЕРАТОРА ПРИЛОЖЕНИЙ с гарантированно правильным синтаксисом. При этом становится необязательным ручное создание структур отчетов.

(А.С.П.


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



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
. !Конец описаний отчета




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
.




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



SEPARATE(value)


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

Параметр атрибута SEPARATE задает число пустых строк, которые должны быть напечатаны сразу же после структуры.
Пример:
CustRpt REPORT !Отчет по покупателям
Head HEADER ! начало описания заголовка
!описания элементов структуры
. ! конец описания заголовка
GroupHead DETAIL,SEPARATE(2) !
!описания элементов структуры
! конец описания DETAIL
.
CustDetail DETAIL,SEPARATE(1) ! начало описания DETAIL
!описания элементов структуры
. ! конец описания DETAIL
Foot 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 ПФ





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) !форматируется программой (?)
.
.




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 и отчета



TEXT (многострочное поле отчета)


|LFT | |UPR|
[метка] TEXT(rows,colomns)[,USE()][,|RHT |][,|LWR|][,|CLIP|]
|CENT| |CAP| |WRAP|

rows Сколько строк (максимум) печатать.
s
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
. !Конец описаний отчета



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)
.
. !Конец описаний отчета




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



WIDTH(value)


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

Атрибут WIDTH задает максимальное количество символов в самой длинной строке отчета. Значение VALUE используется форматером отчетов для горизонтального позиционирования и центрирования.
Пример:
CustRpt REPORT,WIDTH(80) !Report, max width 80 columns
!описания элементов отчета
. !Конец описаний отчета



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
!Разрешен перенос слов
. .