database zawod MAIN MENU "Главное меню" command key("w") "Ввод" "Ввод учетных данных" call wwod() command key("p") "Просмотр" "Просмотр таблицы kadry" call prosmotr() command "одиночный просмотр" "Поиск по табельному номеру" call odin_prosmotr() command "Kонец" clear screen exit program end menu END MAIN FUNCTION wwod() define c char(1) , zapisx record like kadry.* # -DЭто объявление эквивалентно такому:-E # DEFINE zapisx RECORD # nomerceh INT, # номер цеха # tabnom INT, # табельный номер # fio CHAR(20), # фамилия # dolvn CHAR(20), # должность # zarplata MONEY(16,2), # зарплата # datarovd DATE # дата рождения # END RECORD OPEN WINDOW wwod AT 4,20 WITH FORM "kadry" attribute(border) MESSAGE "Введите учетные данные, и нажмите ESC" attribute (reverse) let c="Y" WHILE c NOT MATCHES "[nNНн]" or c is NULL # В цикле INPUT by name zapisx.* # -DВвести данные через экранную форму-E DISPLAY "Принято" AT 1 , 1 let zapisx.tabnom=0 INSERT INTO kadry values (zapisx.*) # -DВставить строку в таблицу kadry-E display SQLCA.SQLERRD[2] to tabnom# -DКакой номер получил serial столбец ?-E prompt "Принято. Вводить следующего (Да/Нет)?" for char c END WHILE CLOSE WINDOW WWOD # -DЛиквидируем окошко-E END FUNCTION FUNCTION prosmotr() define zapisx record like kadry.* , c char open window prosmotr at 4,34 with form "kadry" attribute(border) declare prosmotr cursor for select * from kadry order by nomerceh, tabnom FOREACH prosmotr INTO zapisx.* # -DВ цикле для каждой строки-E DISPLAY BY NAME zapisx.* # -DВывели ее на экран-E prompt "Показывать следующего (Да/Нет)? " for char c IF c matches "[НнNn]" then exit foreach END IF # -DЕсли Нет то конец -E END foreach close window prosmotr # -DЛиквидируем окошко-E END FUNCTION FUNCTION odin_prosmotr() define zapisx record like kadry.* , nomer int open window odin_prosmotr at 4,4 with form "kadry" attribute(border) WHILE 1=1 # -DВ цикле-E prompt "Какой табельный номер показать: " attribute (reverse) for nomer attribute (underline) IF nomer IS NULL THEN exit while END IF # -DЕсли не ввел то конец-E SELECT * INTO zapisx.* FROM kadry WHERE nomer=tabnom # -DЧитаем строчку-E if status = NOTFOUND then error "Нет таких" attribute (reverse) # -DЕсли не нашлось то-E continue while # -Dперейти на начало цикла-E end if DISPLAY BY NAME zapisx.* # -DВывести ее на экран-E END WHILE close window odin_prosmotr # -DЛиквидируем окошко-E END FUNCTION