Учебник по СУБД 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
|