Пример простейшей программы на языке Informix-4GL
database zawod
MAIN
MENU "гЛАВНОЕ МЕНЮ"
command key("w") "вВОД" "вВОД УЧЕТНЫХ ДАННЫХ"
call wwod()
command key("p") "пРОСМОТР" "пРОСМОТР ТАБЛИЦЫ kadry"
call prosmotr()
command "OДИНОЧНЫЙ ПРОСМОТР" "пОИСК ПО ТАБЕЛЬНОМУ НОМЕРУ"
call odin_prosmotr()
command "KОНЕЦ"
clear screen
exit program
end menu
END MAIN
FUNCTION wwod()
define c char(1) , zapisx record like kadry.*
# эТО ОБRЯВЛЕНИЕ ЭКВИВАЛЕНТНО ТАКОМУ:
# 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.* # вВЕСТИ ДАННЫЕ ЧЕРЕЗ ЭКРАННУЮ ФОРМУ
DISPLAY "пРИНЯТО" AT 1 , 1
let zapisx.tabnom=0
INSERT INTO kadry values (zapisx.*) # вСТАВИТЬ СТРОКУ В ТАБЛИЦУ kadry
display SQLCA.SQLERRD[2] to tabnom# кАКОЙ НОМЕР ПОЛУЧИЛ serial СТОЛБЕЦ ?
prompt "пРИНЯТО. вВОДИТЬ СЛЕДУЮЩЕГО (дА/нЕТ)?" for char c
END WHILE
CLOSE WINDOW WWOD # лИКВИДИРУЕМ ОКОШКО
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.* # в ЦИКЛЕ ДЛЯ КАЖДОЙ СТРОКИ
DISPLAY BY NAME zapisx.* # вЫВЕЛИ ЕЕ НА ЭКРАН
prompt "пОКАЗЫВАТЬ СЛЕДУЮЩЕГО (дА/нЕТ)? " for char c
IF c matches "[нНNn]" then exit foreach END IF # еСЛИ нЕТ ТО КОНЕЦ
END foreach
close window prosmotr # лИКВИДИРУЕМ ОКОШКО
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 # в ЦИКЛЕ
prompt "кАКОЙ ТАБЕЛЬНЫЙ НОМЕР ПОКАЗАТЬ: " attribute (reverse)
for nomer attribute (underline)
IF nomer IS NULL THEN exit while END IF # еСЛИ НИЧЕГО НЕ ВВЕЛ ТО КОНЕЦ
SELECT * INTO zapisx.*
FROM kadry WHERE nomer=tabnom # чИТАЕМ СТРОЧКУ
if status = NOTFOUND then
error "нЕТ ТАКИХ" attribute (reverse) # еСЛИ НЕ НАШЛОСЬ ТО
continue while # ПЕРЕЙТИ НА НАЧАЛО ЦИКЛА
end if
DISPLAY BY NAME zapisx.* # вЫВЕЛИ ЕЕ НА ЭКРАН
END WHILE
close window odin_prosmotr # лИКВИДИРУЕМ ОКОШКО
END FUNCTION
|
|