АРМ инженера АТС

Функции автоматического рабочего места инженера АТС, структура соответствующей базы данных и обоснование выбора языка программирования. Разработка алгоритмического обеспечения. Программная реализация, основное содержание и принципы работы с таблицами.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.