Программирование Экранного Обмена.
Программирование Экранного Обмена.
В любой момент времени на экране терминала существует ТЕКУЩЕЕ окно, через которое и выполняется ввод/вывод вашей программы. С окном связаны используемые при вводе и выводе атрибуты (например, green, revers, underline и т.п.) и номера строк окна, используемых операторами MESSAGE, PROMPT и ERROR для вывода.
При открытии нового окна оно становится текущим и и весь ввод/вывод будет направляться уже в него.
В окно можно вывести экранную форму, которая, представляет собой набор экранных полей, имеющих имена, и в эти поля (из этих полей), обращаясь к ним по имени, можно выводить (вводить) данные с помощью оператора DISPLAY (INPUT). Экранные поля можно объединять в экранные записи. Описание экранных полей и самой формы располагается отдельно от программы в файле описания экранной формы.
Ниже приведен пример программы, иллюстрирующий работу с окнами. OPEN WINDOW wind1 AT 2,30 WITH 10 ROWS, 40 COLUMNS ATTRIBUTE(BORDER, REVERSE, MESSAGE LINE FIRST) # текущим окном является wind1
. . . OPEN WINDOW wind2 AT 5,15 WITH FORM "schoolp" ATTRIBUTE(GREEN,PROMPT LINE LAST, MESSAGE LINE LAST, FORM LINE FIRST) # текущим окном является wind2
CLEAR WINDOW wind1 . . .
CURRENT WINDOW IS wind1 # текущим окном является wind1
OPEN FORM form1 from "schoolp" # Инициализировать форму form1 # Взяв ее описание из файла # schoolp.frm DISPLAY FORM form1 # Вывести форму form1 в текущее окно # т.е. в wind1
В результате работы этих операторов на экране терминала появится приблизительно такая картинка: ¬'¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬' ¬ ¬'¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬' окно ¬ ¬ ¬ значение равно 8 ¬ ...¬wind1 ¬ ¬ ¬'¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬' ¬ ¬ цех [ 2] [литейный ] ¬ ¬ ¬щ¬-¬L ¬ ¬ ¬ таб.номер [26 ] ¬ ¬ окно ¬ ¬ ¬ фамилия [Петров У.Е. ] ¬ ¬ ...¬ wind2 ¬ ¬ ¬ должность [бригадир ] ¬ ¬ ¬+ ¬ ¬ ¬ зарплата [$340 ] ¬ ¬щ¬-¬-¬-¬-¬-¬-¬-¬-¬L¬ ¬ ¬ дата рождения [31.12.1952] ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬"¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬" ¬ ¬ 789 ¬ ¬ ¬ ¬"¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬" ¬ ¬ ¬ нет таких ¬ ¬"¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬"