Учебно-справочное пособие по СУБД Informix

         

Пример простейшей программы



Пример простейшей программы

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



Содержание раздела