АРМ инженера АТС
Функции автоматического рабочего места инженера АТС, структура соответствующей базы данных и обоснование выбора языка программирования. Разработка алгоритмического обеспечения. Программная реализация, основное содержание и принципы работы с таблицами.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 06.01.2014 |
Размер файла | 449,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
После нажатия клавиши <ESC> ввод в поле «Номера спаренных десятков» заканчивается и на экране появляется меню с предложением зафиксировать введенные данные в базах данных АСТУП.
При вводе значения 6 в поле «Вид спаренности» на экранной форме появляется поле с обязательными реквизитами для ввода «Номера спаренных сотен».
Ввод в поле «Номера спаренных сотен».
Вводится последовательно по два номера спаренных сотен столько раз, сколько на станции спарено сотен (из диапазона от 00 по 99 сотню).
После нажатия клавиши <ESC> ввод в поле «Номера спаренных сотен» заканчивается и на экране появляется меню с предложением зафиксировать введенные данные в базах данных АСТУП. Работа с данным меню описана выше.
Для комбинированных схем спаренности 8 и 9 ввод осуществляется с дополнительным запросом: основная или дополнительная схема спаренности должна вводиться, а сам ввод осуществляется по указанным выше правилам.
Рис. 3.3.13
После фиксации ввода информации в указанные поля для значений схем спаренности 4,5,6,8,9, а также для схем спаренности со значениями 0,3,7, не требующих ввода дополнительных полей, производится выход на поле «АТС». Это поле предварительно очищается и оператору предлагается вводить схему спаренности для новой АТС. Нажатием клавиши <ESC> производится выход с подтверждением из пункта «Ввод схемы спаренности» на предыдущий уровень главного меню. Меню-подсказка для выхода по <ESC> описана выше.
Корректировка спаренных комплектов
Работа начинается с ввода номера АТС, для которой будет осуществляться просмотр и корректировка спаренных комплектов. После чего можно просмотреть спаренные комплекты (согласно указанной схеме спаренности) заданной АТС в экранной форме:
Рис. 3.3.14
Если оператор подведет курсор к выбранному спаренному комплекту и нажмет <F8>, то данный комплект будет удален из спаренных комплектов АТС; при этом номера, входящие в спаренный комплект, станут отдельными. Используя <F9>, можно добавить в общую схему спаренности новый спаренный комплект.
Данный пункт меню следует использовать крайне осторожно и только для телефонов из незадействованной станционной емкости.
По клавише <ESC> происходит завершение работы программы, если оператор находился в режиме ввода номера АТС, или возврат в поле редактирования, если оператор находился в режиме просмотра спаренных комплектов АТС.
Ведение станционной номерной емкости
Работа с данным пунктом меню осуществляется по следующей форме:
Рис. 3.3.15
Ввод реквизитов поиска:
номер АТС
Вводится номер АТС;
тип абонентской линии
Вводится тип абонентской линии - код типа, наименование типа или пробел. Если в поле ввода введен пробел или неполное наименование, то после нажатия клавиши <RETURN> на экране появится форма для выбора типа линии (см. рис. 3.3.16).
Рис. 3.3.16
Тип линии автоматически выберется из меню-подсказки и занесется в поле «Тип абонентской линии» на экранной форме;
диапазон номеров
При задании как одиночного номера, так и диапазона, в поле состояние отобразится текущее состояние введенных типов и номеров абонентских линий. Оператору дается возможность изменить текущее состояние введенных абонентских линий.
При вводе в поле диапазон номеров по клавише <F5> происходит отображение диапазонов для введенного кода АТС (см. рис. 3.3.17.), по клавише <F6> очистка полей ввода.
Рис. 3.3.17
После окончания ввода информации по абонентским линиям появляется меню с предложением зафиксировать введенные данные в базах данных АСТУП (работа с данным меню описана выше), после этого в нижней части формы отобразятся номера (номер) из диапазона и, если изменение пройдет успешно, сообщение: выполнено успешно.
Оператор может изменять состояние только тех номеров абонентских линий, которые не установлены у абонентов, т.е. тех, которые находятся в ведении станции: свободных, проверочных, забронированных ТС, служебных, экспл. запас, неисправных, одноплечных, служебных. Состояние можно изменить так же в пределах этих текущих состояний, например: проверочный телефон сделать свободным и пр. В случае, если указанный номер абонентской линии принадлежит абоненту, будет выдано соответствующее предупреждение и выполнение операции будет прекращено.
Вид состояния автоматически выберется из меню-подсказки и занесется в поле «Состояние» экранной формы.
Рис. 3.3.18
По клавише <ESC> происходит завершение работы программы с запросом подтверждения о выходе.
Просмотр станционной номерной емкости
Работа с данным пунктом меню осуществляется по следующей форме:
Рис. 3.3.19
Ввод реквизитов поиска:
номер АТС
Вводится номер АТС в привычном для пользователя виде, без добавления кода ЛСЦ;
тип емкости
Вводится тип емкости - код типа, наименование типа или пробел. Если в поле ввода введен пробел или неполное наименование, то после нажатия клавиши <RETURN> на экране появится форма для выбора типа емкости (см. рис. 3.3.16).
Тип емкости автоматически выберется из меню-подсказки и занесется в поле «Тип емкости» экранной формы;
состояние
Вводится вид состояния - код вида состояния, наименование вида состояния или пробел. Если в поле ввода введен пробел или неполное наименование, то после нажатия клавиши <RETURN> на экране появится форма для выбора вида состояния (см. рис. 3.3.20.).
Рис. 3.3.20
Вид состояния автоматически выберется из меню-подсказки и занесется в поле «Состояние» на экранной форме;
вид подключения
Вводится вид подключения - код вида подключения, наименование вида подключения или пробел. Если в поле ввода введен пробел или неполное наименование, то после нажатия клавиши <RETURN> на экране появится форма для выбора вида подключения (см. рис. 3.3.21.).
Рис. 3.3.21
Вид подключения автоматически выберется из меню-подсказки и занесется в поле «Вид подключения» экранной формы.
При вводе обязательным параметром является номер АТС. Ввод остальных параметров лишь суживает условия поиска.
После ввода желаемых критериев поиска и нажатия клавиши <F9> в форме отобразится информация в двух колонках по следующему принципу: в первой колонке все виды станционной емкости или первое плечо спаренного комплекта; во второй колонке - второе плечо спаренного комплекта. В том и другом случае указывается номер и тип абонентской линии и ее станционное состояние.
После нажатия клавиши <ESC> происходит переход к вводу новых критериев поиска данных, если оператор просматривает найденные данные, или завершение работы программы, если оператор находится в режиме ввода критериев поиска.
Помимо клавиши <ESC> оператор может использовать <F6> для сброса введенных данных и восстановление информации, присутствующей на момент начала ввода.
Отчеты, справки
Данный пункт меню позволяет формировать различные виды отчетов. Выбор вида отчета осуществляется в экранной форме:
Рис. 3.3.22
Оператор должен подвести курсор к нужной строке и нажать <RETURN> для выбора вида отчета.
Отчет о свободной номерной емкости
Просмотр свободной емкости по АТС станционного участка (РУЭС), на который настроен пароль оператора, осуществляется в форме (см. рис. 3.3.23.).
Рис. 3.3.23
Ввод реквизитов поиска:
АТС
Вводится код АТС, для которой будет производится формирование отчета. Если оператор затрудняется в наборе кода АТС, то можно воспользоваться клавишей <F5>, по нажатию которой появляется подсказка о кодах АТС для ЛСЦ.
Код АТС не является обязательным параметром формирования отчета. Если в поле ввода оператор нажмет клавишу <RETURN>, то отчет о свободной номерной емкости будет формироваться по всем АТС, принадлежащим ЛСЦ.
После ввода кода АТС или нажатия <RETURN> на экране появляются найденные данные или выдается сообщение «Нет информации по заданному условию», отражающие результаты поиска для введенного кода АТС. Найденные данные выводятся по видам: НЦС; отдельные, спаренные (из них: полных комплектов и свободных плеч комплектов), таксофоны.
По клавише <ESC> происходит завершение работы программы и возврат в меню выбора вида отчета.
Отчет о задействованной емкости
Осуществляется просмотр задействованной емкости по АТС станционного участка (РУЭС), на который настроен пароль оператора (см. рис. 3.3.23.).
Ввод реквизитов поиска:
АТС
Вводится код АТС, для которой будет производится формирование отчета. Если оператор затрудняется в наборе кода АТС, то можно воспользоваться клавишей <F5>, по нажатию которой появляется подсказка о кодах АТС для ЛСЦ.
Код АТС автоматически выберется из меню-подсказки и занесется в поле «АТС» на экранной форме.
Рис. 3.3.24
После ввода кода АТС или нажатия <RETURN> на экране появляются найденные данные, отражающие результаты поиска для введенного кода АТС.
По клавише <ESC> происходит завершение работы программы и возврат в меню выбора вида отчета, если оператор находился в режиме ввода кода АТС, или переход в поле ввода кода АТС, если оператор находился в режиме просмотра сведений о задействованной емкости АТС.
Получение справки по номеру телефона
Просмотр информации о характеристике абонентской линии и ее владельце.
Критерии для формирования справки по номеру телефона задаются в форме (см. рис. 3.3.25.).
Рис. 3.3.25
Ввод реквизитов поиска:
номер абонентской линии
вводится номер абонентской линии, по которой необходимо получить справку;
тип абонентской линии
вводится тип абонентской линии - код типа, наименование типа или пробел.
Адрес
Вводится адрес. Если по введенному адресу найдено несколько абонентов, то отображается их список и предлагается выбрать одного из них. Если у выбранного абонента несколько абонентских линий, то отображается список абонентских линий и предлагается выбрать одну из них, по которой необходимо получить справку.
После ввода номера и типа абонентской линии или адреса на экране появляется форма, отражающая сведения о запрошенной абонентской линии (см. рис. 3.3.26.).
Рис. 3.3.26
В форме просмотра данных по абонентской линии оператор может воспользоваться клавишами:
<F8> для просмотра информации о плательщике. У абонента может быть несколько плательщиков, которые оплачивают разные услуги. Если плательщиков несколько, то на экране появляется список плательщиков (см. рис. 3.3.27).
Рис. 3.3.27
С помощью клавиш КУК можно выбрать конкретного плательщика. Если плательщик один, то сразу отображаются его реквизиты (см. рис. 3.3.28.).
Рис. 3.3.28
При просмотре реквизитов плательщика по клавише <F5> можно просмотреть все расчетные счета выбранного плательщика (см. рис. 3.3.29.).
Рис. 3.3.29
В списке указывается код и наименование банка, номер расчетного счета, признак выставления и направление счета.
<F9> для просмотра линейных данных (см. рис. 3.3.30.).
По клавише <ESC> происходит завершение работы программы, если оператор находился в режиме ввода номера абонентской линии, или переход в поле ввода номера абонентской линии, если оператор находился в режиме просмотра информации о характеристике абонентской линии и ее владельце.
Рис. 3.3.30
Заключение
В настоящее время вся структура информации предприятий связи представляет собой разрозненные информационные массивы, описывающие те или иные структуры данных. Дополнительно к этому, обработка информации на разных предприятиях велась (или предполагалось что будет вестись) независимо друг от друга, на разных программно-технических комплексах и с использованием различных операционных систем и языков программирования:
При этом, надо отметить, что при имеющихся отличиях в структуре, подавляющее большинство информационных массивов являются общими для всех систем. Кроме того, основная часть базы данных НСИ, используемая всеми системами, является по сути, копией одной и той же информации, ввод которой производится автономно в каждой из систем.
Поскольку с АРМ каждой из систем происходит ввод (корректировка) только той части НСИ, информация по которой появляется в соответствующей системе, а изменения, вносимые любой из систем, должны учитываться другими системами предлагается следующее решение данного вопроса:
ЦВК всех систем соединены между собой каналами связи.
Каждая система обрабатывает информацию согласно своей внутренней технологии, изменяя соответствующую информацию в базе данных НСИ (либо на своем ЦВК, либо на ЦВК другой системы).
На каждом ЦВК устанавливается специальное прикладное программное обеспечение, являющееся надстройкой над прикладным ПО, осуществляющим основные функции соответствующей системы. Назначением специального ПО является:
отслеживание всех изменений базы данных НСИ с АРМов данной системы;
отслеживание всех изменений базы данных НСИ, которые произошли в других системах, и занесение этих изменений в собственную копию базы данных.
В качестве «ведущей» системы предлагается выбрать систему АСТУП, поскольку именно в этой системе происходит появление принципиально новой информации о состоянии линейных сооружений связи и абонентов и ЦВК АСТУП функционирует практически круглые сутки.
Для реализации предложений необходимо решение следующих вопросов:
Технические вопросы:
Обеспечение быстрой, надежной и качественной коммутации между всеми системами.
Разработка алгоритма взаимодействия систем на уровне прикладного ПО.
Разработка специального прикладного обеспечения, реализующего принятый алгоритм.
Возможная доработка прикладного ПО каждой из взаимодействующих систем.
Настройка системного ПО.
Организационные вопросы, связанные с разработкой описания организационной структуры взаимодействия работы всех систем.
Литература
Техническое задание по созданию научно - технической продукции по теме «Разработка автоматизированной системы технического учета и паспортизации линейных сооружений Минской городской телефонной сети (АСТУП)».
Дейт К. Введение в системы баз данных. - М.: Наука, 1980. - 458 с.
Бойко В.В., Савинков В.М. Проектирование баз данных информа-ционных систем. - М.: Финансы и статистика, 1989. - 351 с.
Наумова А.Н. Системы управления базами данных и знаний. - М.: Финансы и статистика, 1991. - 352 с.
Расстановка сил на двухмиллиардном рынке СУБД. COMPUTERWEEK, №26, 1995, с. 1,21.
Реляционные системы управления базами данных: введение. Открытые системы, Осень, 1993, с. 17-27.
Побежимов С. Маркетинговая политика фирмы Informix. READ.ME, 3, 1994, c. 12-14.
Б.В. Керниган, Р. Пайк «UNIX - универсальная среда программирования», Москва, «Финансы и статистика» 1992 г.
Стэн Келли-Бутл «Введение в UNIX»
Приложение 1
Текст программы
globals
«../abon/abongl.4gl»
define pats record like astup:ats.*,
pats1 record like astup:ats.*,
prej char(13), kod_rej smallint,
nam_vidats, old_vid, old_vidats char(25), nam_op char(15),
old_koda_op integer
###########################################################
function stanats(kodats) # kodats - код АТС
# Ведение классификатора АТС
###########################################################
define msg char(80), kodats, old_kod integer,
plen, i, sw smallint,
c_ats, c_ats_op char(6)
let msg= «Поле не заполнено или заполнено неправильно»
OPEN WINDOW wstanats AT 3,2 WITH FORM»../stan/form/fstanats»
ATTRIBUTE (border, form line 1, prompt line last,
message line last)
options accept key control-k
call stanats_init()
let pats.koda=kodats
let int_flag=true
INPUT BY NAME pats.koda, pats.nam, nam_vidats, pats.koda_op,
pats.remark, pats.emk,
pats.tel_nabor, pats.tax_nabor,
pats.check_num, pats.tax_num,
pats.date_apus, pats.koda_ncs, pats.emk_ncs
WITHOUT DEFAULTS
before field koda
call syshelp (» Помощь»,» Сброс», «», «», «»)
current window is wstanats
let old_kod=pats.koda
display by name pats.koda attribute (reverse)
after field koda
if pats.koda is null or pats.koda<=0 then
error msg
next field koda
end if
let c_ats=pats.koda
display by name pats.koda
if pats.koda<>old_kod or old_kod is null then
let kod_rej=0
let status=0
whenever error continue
select * into pats1.*
from astup:ats
where koda=pats.koda
whenever error stop
if status=notfound then
let pats1.koda=pats.koda
call stanats_init()
let pats.koda=pats1.koda
next field nam
end if
if status<>0 then
call syserror («ATS», status, «ЧТЕНИЕ АТС»)
call stanats_init()
next field koda
else
if pats1.code_adm<>g_code_adm then
error «АТС», pats.koda,» не принадлежит ЛСЦ»
call stanats_init()
next field koda
end if
if kod_rej=0 then
call stanats_found()
end if
end if
end if
before field nam
call syshelp («»,» Сброс», «», «», «»)
current window is wstanats
display by name pats.nam attribute (reverse)
after field nam
let sw=fgl_lastkey()
if sw=fgl_keyval («up») or sw=fgl_keyval («left») then
display by name pats.nam
next field koda
end if
if pats.nam is null or pats.nam=» " then
error msg
next field nam
end if
let pats.nam=sys_l_to_u (pats.nam, 0)
if int_flag=false then
error msg
end if
display by name pats.nam
before field nam_vidats
call syshelp_enter (1, «Список»)
current window is wstanats
let old_vidats=nam_vidats
display by name nam_vidats attribute (reverse)
after field nam_vidats
let sw=fgl_lastkey()
if sw=fgl_keyval («up») or sw=fgl_keyval («left») then
display by name nam_vidats
next field nam
end if
let nam_vidats=sys_l_to_u (nam_vidats, 0)
if int_flag=false then
error msg
end if
if old_vidats is null or old_vidats!=nam_vidats
or nam_vidats is null or nam_vidats=» " then
call sysklas (0,0, «S27», nam_vidats, «»)
returning pats.vidats, nam_vidats
current window is wstanats
options accept key control-k
if int_flag=false then
let nam_vidats=null
next field nam_vidats
end if
end if
display by name nam_vidats
case (pats.vidats)
when 1
let nam_op= «Код опорной АТС»
if length (c_ats clipped)<3 then
error «Минимальный код АТС для выноса должен быть трехзначный»
next field koda
end if
when 2
let nam_op= «Код ком. узла»
if length (c_ats clipped)<3 then
error «Минимальный код АТС для выноса должен быть трехзначный»
next field koda
end if
otherwise
if length (c_ats clipped)>3 then
error «Максимальный код основной АТС должен быть трехзначный»
next field koda
end if
let nam_op=»»
let pats.koda_op=null
display by name nam_op, pats.koda_op
next field remark
end case
before field koda_op
call syshelp_enter (0, «»)
current window is wstanats
let old_koda_op=pats.koda_op
display by name nam_op
display by name pats.koda_op attribute (reverse)
after field koda_op
let sw=fgl_lastkey()
if sw=fgl_keyval («up») or sw=fgl_keyval («left») then
display by name pats.koda_op
next field nam_vidats
end if
if old_koda_op is null or pats.koda_op is null or
pats.koda_op <>old_koda_op then
let kod_rej=0
end if
if pats.koda_op is null or pats.koda_op<=0 or pats.koda_op>=pats.koda or
pats.koda<pats.koda_op*10 then
if pats.vidats=1 then
error «Неверен код опорной АТС»
else
error «Неверен код коммутаторного узла»
end if
next field koda_op
end if
let c_ats_op=pats.koda_op
let plen=length (c_ats_op clipped)
if c_ats_op<>c_ats [1, plen] then
if pats.vidats=1 then
error «Неверен код опорной АТС»
else
error «Неверен код коммутаторного узла»
end if
next field koda_op
end if
# Проверим есть ли опорная
display by name pats.koda_op
let status=0
whenever error continue
select koda into pats1.koda
from astup:ats
# where koda=pats.koda_op and code_adm=g_code_adm and???
where koda=pats.koda_op and
vidats=0
whenever error stop
if status<>0 then
if status=notfound then
error «Нет описания опорной АТС», pats.koda_op
else
call syserror («ATS», status, «ЧТЕНИЕ ОПОРНОЙ АТС»)
next field koda_op
end if
end if
display by name pats.koda_op
before field remark
call syshelp_enter (0, «»)
current window is wstanats
display by name pats.remark attribute (reverse)
after field remark
let sw=fgl_lastkey()
if sw=fgl_keyval («up») or sw=fgl_keyval («left») then
display by name pats.remark
if pats.vidats!=0 then
next field koda_op
else
next field nam_vidats
end if
end if
display by name pats.remark
before field emk
display by name pats.emk attribute (reverse)
after field emk
let sw=fgl_lastkey()
if sw=fgl_keyval («up») or sw=fgl_keyval («left») then
display by name pats.emk
next field remark
end if
if pats.emk is null or pats.emk<=0 then
error msg
next field emk
end if
display by name pats.emk
if kod_rej!=0 then
next field tel_nabor
end if
before field tel_nabor
if pats.tel_nabor is null then
let pats.tel_nabor=7
end if
display by name pats.tel_nabor attribute (reverse)
after field tel_nabor
let sw=fgl_lastkey()
if sw=fgl_keyval («up») or sw=fgl_keyval («left») then
display by name pats.tel_nabor
next field emk
end if
if pats.tel_nabor is null or
pats.tel_nabor<6 or pats.tel_nabor>7 then
error msg
next field tel_nabor
end if
display by name pats.tel_nabor
before field tax_nabor
if pats.tax_nabor is null then
let pats.tax_nabor=6
end if
display by name pats.tax_nabor attribute (reverse)
after field tax_nabor
let sw=fgl_lastkey()
if sw=fgl_keyval («up») or sw=fgl_keyval («left») then
display by name pats.tax_nabor
next field tel_nabor
end if
if pats.tax_nabor is null or pats.tax_nabor=0 then
let pats.tax_nabor=0
let pats.tax_num=0
display by name pats.tax_num
else
if pats.tax_nabor<4 or pats.tax_nabor>7 then
error msg
next field tax_nabor
end if
end if
display by name pats.tax_nabor
before field check_num
display by name pats.check_num attribute (reverse)
after field check_num
if pats.check_num is null then
let pats.check_num=0
end if
let sw=fgl_lastkey()
if sw=fgl_keyval («up») or sw=fgl_keyval («left») then
display by name pats.check_num
next field tax_nabor
end if
{if pats.check_num=0 and pats.vidats=0 then
error «Количество проверочных телефонов не может быть равно 0»
next field check_num
end if}
if pats.check_num>=pats.emk then
error «Количество проверочных телефонов превышает емкость АТС»
next field check_num
end if
if pats.check_num<0 then
error «Количество проверочных телефонов меньше 0»
next field check_num
end if
display by name pats.check_num
if pats.tax_nabor=0 then
next field date_apus
end if
before field tax_num
display by name pats.tax_num attribute (reverse)
after field tax_num
if pats.tax_num is null then
let pats.tax_num=0
end if
let sw=fgl_lastkey()
if sw=fgl_keyval («up») or sw=fgl_keyval («left») then
display by name pats.tax_num
next field check_num
end if
if pats.tax_num>=pats.emk then
error «Количество таксофонов превышает емкость АТС»
next field tax_num
end if
if pats.tax_num<0 then
error «Количество таксофонов меньше 0»
next field tax_num
end if
display by name pats.tax_num
before field date_apus
display by name pats.date_apus attribute (reverse)
after field date_apus
display by name pats.date_apus
let sw=fgl_lastkey()
if sw=fgl_keyval («up») or sw=fgl_keyval («left») then
if pats.tax_nabor=0 then
next field check_num
else
next field tax_num
end if
end if
before field koda_ncs
display by name pats.koda_ncs attribute (reverse)
after field koda_ncs
let sw=fgl_lastkey()
if sw=fgl_keyval («up») or sw=fgl_keyval («left») then
display by name pats.koda_ncs
next field date_apus
end if
if pats.koda_ncs<=0 then
error msg
next field pats.koda_ncs
end if
display by name pats.koda_ncs
if pats.koda_ncs is null then
let pats.emk_ncs=null
display by name pats.emk_ncs
goto l_fix
end if
before field emk_ncs
display by name pats.emk_ncs attribute (reverse)
after field emk_ncs
let sw=fgl_lastkey()
if sw=fgl_keyval («up») or sw=fgl_keyval («left») then
display by name pats.emk_ncs
next field koda_ncs
end if
if pats.emk_ncs<=0 or pats.emk_ncs is null then
error msg
next field emk_ncs
end if
display by name pats.emk_ncs
label l_fix: call menu_fix() returning sw
options accept key control-k
current window is wstanats
if sw=1 then
exit input
end if
if int_flag=false then
next field nam
end if
if stanats_mod() then
let prej= «КОРРЕКТИРОВКА»
let kod_rej=1
display by name prej attribute (reverse)
call syshelp («»,» Сброс», «ДиапазНом», «», «»)
current window is wstanats
end if
next field koda
on key(f6)
if infield(koda) then
call sysats_disp (g_code_adm) returning pats.koda, pats.nam
current window is wstanats
options accept key control-k
if int_flag=false then
next field koda
end if
display by name pats.koda
let status=0
whenever error continue
select * into pats1.*
from astup:ats
where koda=pats.koda
whenever error stop
if status<>0 then
call syserror («ATS», status, «ЧТЕНИЕ АТС»)
call stanats_init()
next field koda
else
call stanats_found()
let c_ats = pats.koda
next field nam
end if
end if
on key(f7)
call stanats_init()
let old_kod=null
let pats.koda=kodats
display by name nam_vidats
next field koda
on key(f8)
if kod_rej=1 then
let sw=null
call standiap (pats.koda)
call syshelp («»,» Сброс», «ДиапазНом», «», «»)
current window is wstanats
options accept key control-k
end if
on key (escape, interrupt)
call menu_exit()
options accept key control-k
if int_flag=false then
exit input
end if
end input
close window wstanats
end function
###############################################################
function stanats_init()
###############################################################
call syshelp («»,» Сброс», «», «», «»)
call syshelp_enter (0, «»)
current window is wstanats
initialize pats.* to null
let kod_rej=0
let prej= «В В О Д»
let nam_vidats=»»
let nam_op=»»
let pats.vidsp=0
display by name prej attribute (reverse)
display by name pats.nam, nam_vidats, pats.emk, pats.remark,
pats.tax_num, pats.check_num,
nam_op, pats.koda_op, pats.tel_nabor,
pats.tax_nabor, pats.date_apus, pats.emk_ncs, pats.koda_ncs
end function
###############################################################
function stanats_found()
###############################################################
let pats.*=pats1.*
let kod_rej=1
let prej= «КОРРЕКТИРОВКА»
call syshelp («»,» Сброс», «ДиапазНом», «», «»)
current window is wstanats
display by name prej attribute (reverse)
let nam_vidats=sysklas_read («S27», pats.vidats)
case (pats.vidats)
when 1
let nam_op= «Код опорной АТС»
when 2
let nam_op= «Код ком. узла»
otherwise
let nam_op=»»
let pats.koda_op=null
end case
display by name pats.nam, nam_vidats, pats.emk, pats.remark,
pats.tax_num, pats.check_num,
nam_op, pats.koda_op,
pats.tel_nabor, pats.tax_nabor,
pats.date_apus, pats.koda_ncs, pats.emk_ncs
end function
###############################################################
function stanats_mod()
###############################################################
let pats.code_adm=g_code_adm
if pats.vidats=0 then
let pats.koda_op=pats.koda
end if
BEGIN WORK
whenever error continue
let status=0
select code_adm into pats1.code_adm from astup:ats
where koda=pats.koda
if status=0 then
if pats1.code_adm<>g_code_adm then
error «АТС не принадлежит», g_adm
ROLLBACK WORK
whenever error stop
return false
end if
update astup:ats set
astup:ats.*=pats.*
where koda=pats.koda
else
if status<>notfound then
call syserror («ATS», status, «ЧТЕНИЕ АТС»)
ROLLBACK WORK
whenever error stop
return false
end if
insert into astup:ats
values (pats.*)
end if
whenever error stop
if status<>0 then
call syserror («ATS», status, «ОБНОВЛЕНИЕ АТС»)
ROLLBACK WORK
return false
end if
COMMIT WORK
return true
end function
Приложение 2
Функциональные модули, используемые программой
#################################################################
# syshelp # Подсказка по функциональным клавишам
#################################################################
FUNCTION syshelp_open() # Открытие окна функциональных клавиш
#################################################################
open window win_help at 23,1 with 2 rows, 79 columns
DISPLAY «ESC» AT 1,1
DISPLAY «F5» AT 1,15
DISPLAY «F6» AT 1,28
DISPLAY «F7» AT 1,41
DISPLAY «F8» AT 1,54
DISPLAY «F9» AT 1,66
DISPLAY «Выход» AT 1,4 ATTRIBUTE (REVERSE)
call syshelp(«», «», «», «», «»)
end function
#################################################################
FUNCTION syshelp (kl6, kl7, kl8, kl9, kl10) # Инициализация клавиш
#################################################################
DEFINE kl6, kl7, kl8, kl9 char(10), kl10 char(10)
current window is win_help
DISPLAY «» AT 2,1
DISPLAY kl6 AT 1,17 ATTRIBUTE (REVERSE)
DISPLAY kl7 AT 1,30 ATTRIBUTE (REVERSE)
DISPLAY kl8 AT 1,43 ATTRIBUTE (REVERSE)
DISPLAY kl9 AT 1,56 ATTRIBUTE (REVERSE)
DISPLAY kl10 AT 1,69 ATTRIBUTE (REVERSE)
END FUNCTION
#################################################################
FUNCTION syshelp_close() # Закрытие окна функциональных клавиш
#################################################################
close window win_help
end function
#######################################################################
function syserror_msg (pnam_table, pstatus, pmessage)
# Формирование системных сообщений
# Вход: имя таблицы,
# статус (код ошибки)
# сообщение или краткое описание действий над таблицей,
# доступное для рядового пользователя
#######################################################################
define pnam_table char(12),
pstatus integer,
pmessage char(50),
pmsg char(80)
let pmsg=»»
case (pstatus)
when 0
when 100
let pmsg=pnam_table clipped,
«.Не найдена информация при:», pmessage
when -258
let pmsg=pnam_table clipped,
«.Блокирование информации при:», pmessage
when -284
let pmsg=pnam_table clipped,
«.Дублирование информации при:», otherwise
if pmessage<>» " then pmessage
let pmsg=pnam_table clipped,
«.Ошибка», pstatus,» при:», pmessage
else
error pnam_table clipped,
«.Системная ошибка», pstatus,».Обратитесь к администратору БД»
end if
end case
return pmsg
end function
#######################################################################
function syserror (pnam_table, pstatus, pmessage)
# Выдача системных сообщений в строке ERROR LINE
# Вход: имя таблицы,
# статус (код ошибки)
# сообщение или краткое описание действий над таблицей,
# доступное для рядового пользователя
# НАПРИМЕР:
# call syserror («UDK», status, «ПОИСК ОЧЕРЕДНИКА рег.номер 999999
# call syserror («LIST_ABON», status, «ДОБАВЛЕНИЕ В СПИСОК НА УСТА
# call syserror («A2», status, «ПОИСК АБОНЕНТА ПО…»
# call syserror («CONNECT», status, «ДОБАВЛЕНИЕ УСТР-ВА»
#######################################################################
define pnam_table char(12),
pstatus integer,
pmessage char(50),
pmsg char(80)
let pmsg=syserror_msg (pnam_table, pstatus, pmessage)
error pmsg
end function
- ////////////////////////////////////////////////////////////////////////
- проверка на циферность
- строка не должна содержать серединных пробелов и никаких символов кроме цифр
-
FUNCTION syschdgt (cP_str)
DEFINE
cP_str CHAR(10),
i, end_i,
iV_was_symbol_flag SMALLINT
LET int_flag=TRUE
LET iV_was_symbol_flag=FALSE
- удаляю начальные пробелы
LET i=1
WHILE (cP_str [i, i]=»») AND (length (cP_str)>1)
LET end_i=length (cP_str)
LET cP_str=cP_str [i+1, end_i]
END WHILE
IF cP_str=» " THEN
LET int_flag=FALSE
RETURN «»
END IF
IF (length (cP_str)=1) AND cP_str [1,1] NOT MATCHES «[0123456789]» THEN
LET int_flag=FALSE
LET int_flag=FALSE
RETURN cP_str
END IF
FOR i=1 TO length (cP_str)
IF cP_str[i] =» " THEN - встретилась не цифра
LET iV_was_symbol_flag=TRUE
END IF
IF (cP_str[i] MATCHES «[0123456789]») AND
(iV_was_symbol_flag=TRUE) THEN
LET int_flag=FALSE
EXIT FOR
END IF
IF (cP_str[i] NOT MATCHES «[0123456789]») THEN
LET int_flag=FALSE
EXIT FOR
END IF
END FOR
RETURN cP_str
END FUNCTION
Размещено на Allbest.ru
Подобные документы
Анализ деятельности обменного пункта. Обоснование состава задач автоматического рабочего места. Проектирование иерархического меню, его содержание и структура. Разработка базы данных, экранных форм, отчетов. Программная реализация разработанной системы.
курсовая работа [529,2 K], добавлен 08.12.2013Разработка и внедрение единой информационно-технологической системы АРМ инженера ГУП "Водоканал г. Гудермес" по внедрению Республиканской целевой программы "Чистая вода". Обоснование проектных решений по видам обеспечения. Виды угроз безопасности.
дипломная работа [3,7 M], добавлен 02.03.2015Общая характеристика предприятия. Разработка автоматизированного рабочего места главного инженера ЗАО Шпагатная фабрика "Майкопская", предназначенного для автоматизации процесса сбора и анализа информации, а так же качественной исполнительности в работе.
дипломная работа [1,3 M], добавлен 11.02.2013Разработка приложения для работы с базой данных, с использованием объектно-ориентированного и визуального программирования. Проектирование физической структуры базы данных. Программная реализация, процесс взаимодействия пользователя с приложениями.
курсовая работа [1,5 M], добавлен 31.01.2016Диагностический анализ системы управления медучреждения "Адыгейского республиканского клинического психоневрологического диспансера". Концепция создания автоматизированной системы управления. Автоматизация рабочего места инженера по охране труда.
дипломная работа [1,2 M], добавлен 11.02.2013Разработка базы данных и клиента для управления базой данных с целью автоматизации рабочего места менеджера по клининговым услугам для ООО "Мастер блеск". Обоснование выбора программного обеспечения для создания базы данных. Заполнение данных в таблицы.
дипломная работа [1,8 M], добавлен 13.04.2014Описание языка html. Анализ IT инфраструктуры, обоснование выбора используемой системы. Характеристика условий труда программиста на предприятии. Организация рабочего места инженера-программиста методом сокращения затрат вспомогательного времени.
дипломная работа [1,7 M], добавлен 21.06.2014Анализ хозяйственной деятельности организации и ее состояния. Особенности работы мобильной платформы. Реквизитный состав документов. Программная реализация и оценка эффективности приложения. Безопасность работы с приложением и безопасность данных.
дипломная работа [1,0 M], добавлен 13.06.2014Главные составные части среды программирования. Требование к надежности, к составу и параметрам технических средств. Табличные базы данных. Выбор и обоснование выбора системы управления базами данных. Высокопроизводительный компилятор в машинный код.
курсовая работа [793,5 K], добавлен 31.01.2016Модель удаленного управления и доступа к данным. Преимущества архитектуры клиент-сервер. Выбор языка программирования. Разработка программы и создание базы данных. Нормирование условий труда программистов, операторов электронно-вычислительных машин.
дипломная работа [2,3 M], добавлен 27.04.2014