13.22. TERMINAL/IO

About
Functions order

13.22.1. About TERMINAL/IO

13.22.2. TERMINAL/IO functions order

ACHOICE() Реализует всплывающее меню
ALERT() Выводит на экран простое диалоговое окно.
COL() Возвращает номер колонки позиции курсора на экране.
COLORSELECT() Activate attribute in current color settings
DEVOUT() Выводит значение выражения на текущее устройство.
DEVOUTPICT() Write a value to the current device using a picture clause
DEVPOS() Перемещает курсор или головку принтера на новую позицию.
DISPBEGIN() Начинает вывод из буфера на экран.
DISPBOX() Формирует на экране прямоугольную рамку.
DISPCOUNT() Return the number of pending DISPEND() requests
DISPEND() Выводит буферизованные экранные изменения.
DISPOUT() Выводит значение на экран.
GETACTIVE() Возвращает текущий активный Get объект.
GETAPPLYKEY() Apply a key to a Get object from within a reader
GETDOSETKEY() Process SET KEY during GET editing
GETPOSTVALIDATE() Postvalidate the current Get object
GETPREVALIDATE() Prevalidate a Get object
GETREADER() Execute standard READ behavior for a Get object
ISCOLOR() Определяет наличие цветовых возможностей у компьютера.
ISPRINTER() Определяет состояние готовности принтера.
MAXCOL() Определяет максимальный номер колонки, видимой на экране.
MAXROW() Определяет наибольший номер видимой строки на экране.
MENUMODAL() Activate a top bar menu
NOSNOW() Управляет режимом подавления "снега".
OUTERR() Выводит результаты вычисления выражений передаваемого списка на
OUTSTD() Записывает список выражений на стандартное устройство вывода.
PCOL() Возвращает текущую позицию головки печатающего устройства.
PROW() Возвращает текущий номер строки размещения печатающей головки принтера
QOUT() Выводит список выражений на консоль.
READEXIT() Устанавливает клавиши UP и DOWN как клавиши выхода
READFORMAT() Return and optionally, set the code block that implements a format (.fmt)
READINSERT() Переключает текущий режим вставки, для команды READ и функции MEMOEDIT()
READKEY() Определяет, какая клавиша была нажата для завершения READ
READKILL() Return, and optionally set, whether the current READ should be exited
READMODAL() Активизирует режим полно-экранного редактирования GetList
READUPDATED() Determine whether any GET variables changed during a READ and optionally
READVAR() Возвращает текущее имя переменной GET/MENU
RESTSCREEN() Выводит ранее сохраненную область экрана в заданное место экрана.
ROW() Возвращает номер строки размещения курсора на экране.
SAVESCREEN() Сохраняет область экрана для дальнейшего вывода.
SCROLL() Прокручивает область экрана вверх или вниз.
SETBLINK() Управляет интерпретацией символа "звездочка" (*), используемого в строке
SETCANCEL() Переключает Alt-C или Ctrl+C как ключ завершения программы.
SETCOLOR() Возвращает текущие цвета и необязательно устанавливает новые цвета.
SETCURSOR() Устанавливает форму курсора.
SETKEY() Присваивает клавише блок кода.
SETMODE() Изменяет режим работы экрана, определяя количество строк и столбцов.
SETPOS() Перемещает курсор в новую позицию.
SETPRC() Устанавливает значения PROW() и PCOL().
TONE() Звуковое устройство подает сигнал заданной частоты и длительности.
UPDATED() Определяет, были ли изменены поля GET в процессе выполнения команды READ.

13.22.2.1. Function COL()

 COL() --> номер колонки

13.22.2.1.3. Description

COL() - экранная функция, которая возвращает текущий номер колонки позиции курсора на экране. Значение, возвращаемое COL(), изменяется, как только изменяется позиция курсора. Все команды работы с экраном могут изменять позицию курсора. В дополнение к сказанному, команды CLEAR, CLEAR SCREEN или CLS автоматически устанавливают значение COL() в 0.

Функцию COL() можно использовать для установки новой позиции курсора относительно его текущей позиции. COL() чаще всего используется в сочетании с функцией ROW() и всех модификациях команды @. Можно использовать функции COL() и ROW() для создания процедур или функций формирования экранных изображений, не связанных конкретным их размещением на экране. Таким процедурам или функциям обычно в качестве параметров передаются координаты левого верхнего угла изображения.

Если в качестве устройства выдачи информации установлен принтер, все команды @...SAY изменяют значение функций PCOL() и PROW(), а функции COL() и ROW() своих значений не меняют. Если необходимо получить координаты при выдаче информации на принтер, пользуйтесь функциями PCOL() и PROW().

13.22.2.2. Function COLORSELECT()

 COLORSELECT(<nColorIndex>) --> NIL

13.22.2.3. Function DEVOUT()

 DEVOUT(<выражение>,[<цвета>]) -->NIL

13.22.2.4. Function DEVOUTPICT()

 DEVOUTPICT(<exp>, <cPicture>, [<cColorString>]) --> NIL

13.22.2.5. Function DEVPOS()

 DEVPOS(<номер строки>,<номер колонки>]) -->NIL

13.22.2.5.3. Description

DEVPOS() - функция среды, управляющая перемещением курсора или печатающей головки принтера - текущего установленного устройства. Если устройство - экран, то DEVPOS() действует так же, как функция SETPOS(), то есть перемещает курсор в заданное положение и изменяет ROW() и COL() в соответствии с новой позицией курсора.

Если текущее устройство устройство - принтер, то функция DEVPOS() перемещает головку принтера. Это достигается посредством посылки на принтер необходимого числа символов перевод строки и/или перевод страницы. Если текущее значение левой границы, установленное командой SET MARGIN, больше нуля, то оно добавляется к <номер колонки>. После того, как печатающая головка принтера займет позицию, заданную <номер строки> и <номер колонки>, функции PROW() и PCOL() изменят свое возвращающее значение. Если или <номер строки>, или <номер колонки> меньше, чем текущие значения PROW() и PCOL(), печатающая головка принтера перемещается согласно следующим правилам:

Если <номер строки> меньше, чем PROW(), на принтер автоматически посылается команда перевода страницы (код CHR(12)) и необходимое количество символов перевод строки (CHR(10)) для перемещения печатающей головки принтера в положение <номер строки> на следующей странице.

Если <номер колонки>, включая текущее значение, установленное командой SET MARGIN меньше, чем PCOL(), то на принтер посылается команда перевод каретки (CHR(13) и необходимое число символов пробела для перемещения печатающей головки в положение <номер колонки>.

Для того, чтобы обойти эти правила, можно перед использованием DEVPOS() с помощью функции SETPRC() присвоить PROW() и PCOL() новые значения. Более подробную информацию смотрите в SETPRC().

Если команда SET PRINTER перенаправляет вывод с принтера в файл, DEVPOS() изменяет состояние файла, а не принтера.

13.22.2.6. Function DISPBEGIN()

 DISPBEGIN() --> NIL

13.22.2.7. Function DISPBOX()

 DISPBOX( <верхняя строка>, <левая колонка>,
 <нижняя строка>, <правая колонка>, [<строка рамки>],
 [<строка цвета>] ) --> NIL

13.22.2.7.1. Arguments

<верхняя строка>, <левая колонка>, <нижняя строка>, <правая колонка>
  определяют координаты рамки. Граничные значения номеров колонок - от
  0 до MAXCOL(), граничные значения номеров строк - от 0 до MAXROW().
  Если выражения <нижняя строка> и <правая колонка> больше, чем
  значения MAXROW() и MAXCOL() соответственно, то нижний правый угол
  будет размещен за видимой частью экрана.
  
<строка рамки> - числовое или символьное выражение, которое
  определяет символы изображения рамки. Если задано как числовое
  выражение, то при значении 1 рисуется одинарная рамка, а при значении
  2 - двойная рамка. Все остальные числовые значения рисуют одинарную
  рамку.
  
  Если <строка рамки> - символьное выражение, то она задает символы,
  которые используются для рисования рамки. Это строка из восьми
  символов изображения границ рамки и одного символа - заполнителя.
  Если <строка рамки> определяется как один символ, то этот символ
  используется для рисования всей рамки.
  
  Если <строка рамки> не задана, рисуется одинарная рамка.
  
<строка цвета> - определяет цвета изображаемой рамки. Если <строка
  цвета> не задана, то рамка рисуется в стандартном цвете текущей
  цветовой спецификации, заданной функцией SETCOLOR().

13.22.2.7.3. Description

DISPBOX - экранная функция, рисует рамку в заданных координатах экрана и в заданных цветах. Если <строка рамки> определена, DISPBOX() рисует рамку на экране, используя граничные и заполняющие символы. DISPBOX() рисует рамку, используя граничные символы из выражения <строка рамки>, если она задана, начиная с верхнего левого угла по направлению часовой стрелки, и заполняет пространство внутри рамки девятым символом. Если девятый символ не задан, пространство экрана внутри рамки не заполняется, а существующие текст и цвет внутри рамки не изменяются.

После выполнения функции DISPBOX() курсор занимает положение в верхнем углу рамки с координатами <верхняя строка> + 1 и <левая колонка> + 1. Значения функций ROW() и COL() отражают новую позицию курсора.

Различные конфигурации границ рамки определены в файле описаний Box.ch, помещаемом в директорию \include.

13.22.2.9. Function DISPEND()

 DISPEND() --> NIL

13.22.2.10. Function DISPOUT()

 DISPOUT(<выражение>, [<строка цвета>]) --> NIL

13.22.2.11. Function GETACTIVE()

 GETACTIVE() --> Get объект

13.22.2.16. Function GETREADER()

 GETREADER(<oGet>, <GetList>, <oMenu>, <nMsgRow>,
 <nMsgLeft>, <nMsgRight>, <cMsgColor>) --> NIL

13.22.2.18. Function ISPRINTER()

 ISPRINTER() --> признак готовности.

13.22.2.21. Function MENUMODAL()

 MENUMODAL(<oTopBar>, <nSelection>, <nMsgRow>,
 <nMsgLeft>, <nMsgRight>, <cMsgColor>) --> MenuID

13.22.2.21.3. Description

MENUMODAL() is a user-interface function that implements the pull-down menu system in xClipper. It is part of the open architecture Get system of xClipper. MENUMODAL() is similar to the READ command in that it waits for the user to perform an action. However, the MENUMODAL() function will only respond to menu actions.

To implement a menu object at the same time as other objects, use the READMODAL() function which has one of its arguments as TopBarMenu object.

When the user chooses a menu item, control is passed to the code block associated with that particular menu item. Code blocks are defined using the MenuItem class.

The menu items can be selected by using either the keyboard or the mouse. To select a menu item with the mouse, simply select its TopBarMenu item with the mouse and then choose the appropriate PopUp menu item.

Note: The MENUMODAL() function will take one menu event from the user and then terminate. To avoid this, the following can be used, and the same will allow the program to continuously accept menu events:

DO WHILE (MENUMODAL(themenu,...) <> ExitMenu) ENDDO

The following table lists the active keys that can be used during MENUMODAL():

 MENUMODAL() Navigation Keys
 ------------------------------------------------------------------------
 Key                 Action
 ------------------------------------------------------------------------
 Left arrow, Ctrl+S  Move to the next TopBarMenu item to the left.  If
 there are no more items to the left, the rightmost
 TopBarMenu item will be selected.
 Right arrow, Ctrl+D Move to the next TopBarMenu item to the right.  If
 there are no more items to the right, the leftmost
 TopBarMenu will be selected.
 Up arrow, Ctrl+E    Move to the previous PopUp menu item.  If there are
 no more items above the current item, the menu item
 on the bottom will be selected.
 Down arrow, Ctrl+X  Move to the next PopUp menu item.  If there are no
 more items below the current item, the menu item on
 the top will be selected.
 ------------------------------------------------------------------------
 

13.22.2.23. Function PCOL()

 PCOL() --> номер колонки

13.22.2.23.3. Description

PCOL() - функция управления печатающим устройством, которая сообщает номер столбца расположения головки печатающего устройства после последней позиции печати. PCOL() эффективна только после установок SET DEVICE TO PRINTER или SET PRINTER ON. Функция PCOL() работает аналогично функции COL(), только с принтером, а не с экраном.

Функция PCOL() изменяет свое значение в следующих случаях:

В начале программы PCOL() устанавливается на ноль.

Команда EJECT устанавливает PCOL() на ноль.

После операции печати значение PCOL() соответствует номеру колонки последней отпечатанной позиции плюс один.

Функция SETPRC() присваивает PCOL() заданное значение.

PCOL() используется в сочетании с PROW() для печати данных относительно последнего напечатанного значения на той же строке. Это значительно облегчает процесс выравнивания колонок при печати отчетов в виде таблиц. Значение печатается в следующей колонке, номер которой определяется как (PCOL() - <смещение>). Заметим, что PCOL() эффективна только для выравнивания колонок при печати данных фиксированной длины. Для того, чтобы гарантировать фиксированную ширину колонок, формируйте вывод, используя функцию TRANSFORM(), команду @...SAY...PICTURE или любую из PAD функций.

13.22.2.24. Function PROW()

 PROW() --> номер строки

13.22.2.24.3. Description

PROW() - это функция принтера, которая сообщает номер строки, где находится печатающая головка после последней операции печати.

Функция PROW() может обновлять свои значения только при выполненных установках SET DEVICE TO PRINTER или SET PRINTER ON. PROW() аналогична функции ROW(), за исключением того, что она относится к принтеру, а не к экрану. Значения PROW() могут быть изменены в следующих случаях:

В начале программы значение PROW() - ноль

EJECT сбрасывает PROW() в ноль

Операция печати устанавливает PROW() на позицию последней отпечатанной строки

SETPRC() устанавливает PROW() на заданную позицию строки

PROW() используется в сочетании с функцией PCOL() для выбора новой строки для печати относительно последней отпечатанной строки. Если печатающая головка устанавливается на новую строку с помощью управляющего кода перевод строки (CHR(10)) или прогон страницы (CHR(12)), то значение функции PROW() не обновляется и, таким образом, не возвращает ожидаемого значения.

Чтобы предотвратить это противоречие, PROW() устанавливается на правильное значение с помощью SETPRC() после посылки на принтер какого-либо из этих символов.

13.22.2.25. Function READEXIT()

 READEXIT([<переключатель>]) --> логическое значение установки

13.22.2.27. Function READINSERT()

 READINSERT([<переключатель>]) --> текущий режим вставки

13.22.2.27.3. Description

READINSERT() - функция среды, которая возвращает текущее состояние режима вставки для команды READ и функции MEMOEDIT() и по желанию включает или выключает режим вставки в зависимости от значения аргумента <переключатель>. Когда READINSERT() возвращает значение "ложь"(.F.) и пользователь вводит данные в буфер GET-объекта во время выполнения READ или MEMOEDIT(), то символы перезаписываются. Когда READINSERT() возвращает "истину" (.T.), вводимые символы вставляются, раздвигая текст. Режим вставки - это установка, принадлежащая системе, а не какому-либо особому объекту.

READINSERT() может быть выполнена до или во время выполнения команды READ или функции MEMOEDIT(). При использовании в сочетании с READ, READINSERT() может быть вызвана внутри предложений WHEN или VALID оператора @...GET или внутри процедуры, определенной в команде SET KEY. При использовании в сочетании с MEMOEDIT() она может быть вызвана с помощью функции пользователя так же, как и с помощью процедуры, установленной командой SET KEY.

13.22.2.28. Function READKEY()

 READKEY() --> код клавиши

13.22.2.28.3. Description

READKEY() - функция работы с клавиатурой, которая эмулирует функцию READKEY() в dBASE III PLUS. Ее цель - определить, какую клавишу нажал пользователь для завершения команды READ. Если возвращаемое значение функции UPDATED() - "истина" (.T.), то READKEY() возвращает код + 256.

Клавиши <стрелка вверх> и <стрелка вниз> могут быть использованы для выхода из команды READ только в том случае, если функция READEXIT() имеет значение "истина"(.Т.). Ее значение по умолчанию - "ложь"(.F.). Для наиболее полного использования функции READKEY() в начале программы необходимо выполнить функцию READEXIT(.T.).

Функция READKEY() оставлена для обеспечения совместимости со старыми версиями xClipper, и ее использование не рекомендуется. Для определения последней клавиши, полученной из буфера клавиатуры, лучше использовать функцию LASTKEY(). Если нажатая клавиша - клавиша выхода из команды READ, то LASTKEY() вернет INKEY-код для этой клавиши. Чтобы определить, был ли во время выполнения READ изменен какой-либо буфер GET-объекта, более предпочтительна функция UPDATED().

13.22.2.30. Function READMODAL()

 READMODAL(<массив GET-объектов>) --> NIL

13.22.2.30.3. Description

READMODAL() - функция интерфейса пользователя, которая реализует режим полноэкранного редактирования для команды GET и поставляется как часть открытой архитектуры GET-системы xClipper. READMODAL() похожа на команду READ, но принимает массив GetList как аргумент и не инициализирует его повторно в момент завершения. Поэтому Вы можете создавать множественные списки GET-объектов и активизировать их в любое время выполнения программы, пока массив активации видим.

Для сохранения совместимости с предыдущими версиями xClipper, GET- система в xClipper реализуется с помощью общего массива, называемого GetList. Каждый раз при выполнении команды GET, GET-объект создается и добавляется к текущему видимому массиву GetList. Стандартная команда READ преобразуется в вызов READMODAL(), используя массив GetList в качестве своего аргумента. Если предложение SAVE не задано, то после завершения функции READMODAL() переменной GetList присваивается пустой массив.

За дальнейшей информацией о GET-системе обратитесь к разделу "GET-система" в главе "Основные концепции".

За справочной информацией по GET-объектам обратитесь в раздел "GET-класс" главы "Стандартные классы".

За дальнейшей информацией по составу используемых по умолчанию клавиш функцией READMODAL() обратитесь к ссылке на команду READ в главе "Стандартные команды".

13.22.2.32. Function READVAR()

 READVAR() --> имя переменной

13.22.2.33. Function RESTSCREEN()

 RESTSCREEN( <верхняя строка>, <левая колонка>,
 <нижняя строка>, <правая колонка>, <образ экрана>) --> NIL

13.22.2.34. Function ROW()

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

13.22.2.35. Function SAVESCREEN()

 SAVESCREEN(<верхняя строка>,<левая колонка>,<нижняя строка>,
 <правая колонка>) --> образ экрана

13.22.2.36. Function SCROLL()

 SCROLL([<верхняя строка>], [<левая колонка>], [<нижняя строка>],
 [<правая колонка>], [<кол-во строк>]) --> NIL

13.22.2.37. Function SETBLINK()

 SETBLINK([<признак>]) --> признак текущей установки

13.22.2.38. Function SETCANCEL()

 SETCANCEL([<переключатель>]) --> текущий режим

13.22.2.39. Function SETCOLOR()

 SETCOLOR([<цвета>]) --> текущие цвета

13.22.2.39.3. Description

SETCOLOR() является функцией работы с экраном, используемой для сохранения текущего цветового режима и необязательной установки новых цветов для последующего окрашивания экрана. Цветовая строка составляется из нескольких цветовых атрибутов, при этом каждый цвет соответствует разным областям экрана. Как сказано выше, каждый атрибут составляется из цвета переднего плана и цвета фона. Цвет переднего плана определяет цвет символов, выводимых на экран. Цвет фона определяет цвет, на котором отображаются символы. Пробелы и неотображаемые символы выводятся в цвете фона.

В xClipper имеется несколько цветовых атрибутов, которые определяют отображение цвета:

Стандартный. Этот атрибут используется всеми консольными, экранными и интерфейсными командами и функциями при выводе информации на экран. Сюда входят такие команды, как @...PROMPT, @...SAY, ? и такие функции, как ACHOICE(), DBEDIT() и MEMOEDIT().

Выделенный. Этот атрибут используется для выделенных изображений. В этой группе - команды GET (если значение установки INTENSITY равно ON), также MENU TO, DBEDIT() и ACHOICE().

Окаймление. Окаймление - это область вокруг экрана, на которую нельзя осуществлять вывод.

Фоновый. Не поддерживается.

Невыделенный. Этот атрибут обеспечивает необходимый эффект ввода информации путем выделения на дисплее текущего текста, выводимого командой GET, в цвете ENCHANCED, в то время как информация других команд GET изображается в невыбранном цвете.

В дополнение к цветовым атрибутам цвета символов имеют атрибуты повышенной яркости и/или мигания. При монохромном дисплее повышенная яркость просто увеличивает яркость выводимого текста. При цветном дисплее повышенная яркость изменяет оттенок заданного цвета, превращая его в другой цвет. Например, "N" определяет черный цвет при выводе текста переднего плана, а "N+" - серый цвет. Повышенная яркость обозначается символом "+". Атрибут мерцания- это вспыхивание и погасание текста переднего плана через короткие интервалы. Мерцание обозначается символом "*". Символ атрибута может быть в любом месте строки установки атрибутов, но он всегда используется с цветом символа, независимо от его местонахождения.

Поддерживаются следующие цвета:

 Список цветов.
 ---------------------------------------------------------------------
 Цветной дисплей           Код-буква            Черно-белый
 ---------------------------------------------------------------------
 Черный                    N, Пробел            Черный
 Синий                     B                    Подчеркивание
 Зеленый                   G                    Белый
 Бирюзовый                 BG                   Белый
 Красный                   R                    Белый
 Фиолетовый                RB                   Белый
 Коричневый                GR                   Белый
 Белый                     W                    Белый
 Серый                     N+                   Черный
 Ярко-синий                B+                   Яркое подчеркивание
 Ярко-зеленый              G+                   Ярко-белый
 Ярко-бирюзовый            BG+                  Ярко-белый
 Ярко-красный              R+                   Ярко-белый
 Ярко-малиновый            RB+                  Ярко-белый
 Желтый                    GR+                  Ярко-белый
 Ярко-белый                W+                   Ярко-белый
 Черный                    U                    Подчеркивание
 Обратный                  I                    Обратный
 Пустой                    X                    Пустой
 ---------------------------------------------------------------------
 

13.22.2.40. Function SETCURSOR()

 SETCURSOR([<форма курсора>]) --> текущая форма курсора

13.22.2.41. Function SETMODE()

 SETMODE(<кол-во строк>, <кол-во колонок>) --> признак завершения

13.22.2.43. Function SETPRC()

 SETPRC(<номер строки>,<номер колонки>) --> NIL

13.22.2.43.3. Description

SETPRC() является функцией принтера, используемой для посылки управляющих кодов на принтер без изменения трассировки позиции печатающей головки. Когда xClipper печатает, он корректирует значение PCOL() с помощью ряда символов, посылаемых на принтер. Между печатаемыми и непечатаемыми символами не устанавливается никакого различия. Если, например, строка из десяти символов, посылаемая на принтер, содержит два символа, которые интерпретируются как управляющий код, значение PCOL() xClipper увеличивается на 10, в то время как истинная позиция печатающей головки перемещается только на 8. Это может привести к проблемам выравнивания. Используя SETPRC(), можно компенсировать управляющие коды путем установки PCOL(), как показано ниже.

SETPRC() может также использоваться для подавления перехода на новую страницу при печати с помощью @...SAY. Это важно, когда позиция следующей строки меньше текущей строки и не было дано команды EJECT. В таком случае xClipper производит автоматический переход на новую страницу, если позиция следующей строки меньше текущего значения PROW(). Используя SETPRC(), Вы можете установить PROW() на число, меньшее текущей строки, подавляя таким образом автоматический переход на новую строку.

13.22.2.44. Function TONE()

 TONE(<частота>, <длительность>) --> NIL

13.22.2.44.3. Description

TONE() - функция управления звуковым сигналом - используется для индикации различных состояний программы, например, ошибки, граничных условий или окончания процесса: если в программе произошла ошибка, то пользователю подается звуковой сигнал перед сообщением о ней. TONE() подает звуковой сигнал заданной частоты и длительности. Длительность измеряется в единицах 1/18 сек. Частота измеряется в герцах (циклах в секунду). Частота ниже 20 герц неразличима для слуха. Ниже приведена таблица стандартных тональных частот (Гц), соответствующих нотам.

Примечание: Функция TONE() работает только на компьютерах IBM PC или полностью совместимых с ними.

Таблица тональных сигналов.
 ---------------------------------------------------------------------
 Обозначение      Частота           Обозначение      Частота
 ---------------------------------------------------------------------
 C                130.80            mid C            261.70
 C#               138.60            C#               277.20
 D                146.80            D                293.70
 D#               155.60            D#               311.10
 E                164.80            E                329.60
 F                174.60            F                349.20
 F#               185.00            F#               370.00
 G                196.00            G                392.00
 G#               207.70            G#               415.30
 A                220.00            A                440.00
 A#               233.10            A#               466.20
 B                246.90            B                493.90
 C                523.30
 ---------------------------------------------------------------------
 

13.22.2.45. Function UPDATED()

 UPDATED() --> признак завершения

13.22.2.45.3. Description

UPDATED() используют, чтобы определить, была ли введена информация с клавиатуры в переменную оператора GET в процессе выполнения текущей команды READ. Каждое включение команды READ устанавливает значение UPDATED() - "ложь"(.F.). Затем любое изменение в переменной команды GET устанавливает значение UPDATED() - "истина"(.Т.) после успешного выхода из GET. Если пользователь для выхода из команды GET нажал клавишу <Esc>, UPDATED() возвратит значение "ложь"(.F.). Если значение функции UPDATED() "истина"(.Т.), то она сохраняет это значение до тех пор, пока управление не перейдет на следующую команду GET.

Внутри SET KEY или VALID процедуры, можно изменять значения текущих GET переменных, используя команду KEYBOARD или присваивая им новые значения с помощью операторов присвоения. Изменение значений переменных при помощи команды KEYBOARD аналогично тому, как если бы пользователь вносил изменения прямо с клавиатуры, и поэтому UPDATED() устанавливается на значение "истина"(.Т.). Но поскольку UPDATED() отражает только те изменения, которые сделаны с клавиатуры, изменение значений GET переменных любым другим путем на изменение значения UPDATED() не влияет.