Програма ConvertNumeration призначена для оптимізації та упорядкування таблиць аналізу номерів. На вхід програми подається символьний файл з таблицею аналізу номерів (-Nr файл), взятий з опису “верхньої секції” комутатора; після його аналізу та оптимізації програма створює фрагмент файлу загального опису комутатора з таблицею аналізу номерів. Також, у вихідний файл виводяться довідкові та статистичні таблиці використання точок аналізу номерів та напрямків.
Основне призначення вихідного файлу - це використання його в якості складової частини загального опису комутатора.
Програма ConvertNumeration - це консольна програма з запуском та передачею параметрів через командний рядок; порядок вказування параметрів в рядку суттєвий :
ConvertNumeration InpFil OutFil ModeKey
В командному рядку допускається вказувати перенаправлення стандартного виводу з терминалу StdOut у файл - >FileName.
Імена файлів в командному рядку бажано брати в подвійні лапки “ - особливо якщо в іменах зустрічаються пробіли. Символи \ у назвах файлів треба подвоювати!
Приклад командного рядка:
ConvertNumeration MikoNumrTable.Inc "С:\\Switch\\MykoNumer.-Prj-" -Wn
Приклад підключення будь-якого файлу:
include "239KA-nr-V3.inc" ;;
Якщо в назві файлу присутні пробіли або інші сумнівні символи - назву файлу треба брати в подвійні лапки. Рівень вкладеності директив include - не більше 9. Принцип розподілу інформації по вкладеним файлам довільний; як правило, це секційні файли опису нумерації (-Nr) комутатора.
Як правило, у головному вхідному файлі вказується, які секційні файли обробляються. Приклад файлу:
;;################################################################ ;; нумерація комутатора ;;================================================================ include 239KA-nr-V5.inc ;; секція A include 239KB-nr-V5.inc ;; секція B ;;################################################################ MakeForwardTables < A, AU > ;; корені аналізу MakeBackwardTables < All, ANx > ;;################################################################
Директиви MakeForwardTables та MakeBackwardTables визначають початкові точки дерев аналізу номерів; відносно цих точок буде проводитись побудова та оптимізація дерев аналізу номерів.
Після успішного створення та закриття кожного вихідного файлу на термінал видається повідомлення:
++-++-++ File "FFFFFFFF" created and closed.
Після створення всіх вихідних файлів видається повідомлення:
==:==:== Errors detected: NNN Warnings: MMM
та робота програми закінчується.
Ці повідомлення програми виводяться на “термінал помилок” (StdErr).
При помилках файлових операцій (відкриття, створення, закриття) програма видає повідомлення про помилку на “термінал помилок” (StdErr) та припиняє свою роботу. Тексти повідомлень приведено нижче:
!!-01-!! Cannot open >->:=:=:=:=:=:<-<
* Не знайдено вхідний файл, який вказано в командному рядку, або його неможливо відкрити.
!!-01-!! Cannot open >->:=:=:=:=:=:<-< in include level N
* Не знайдено вхідний файл, який вказано в директиві include, або його неможливо відкрити; N - рівень вкладеності директив include.
!!-02-!! Cannot close >->:=:=:=:=:=:<-<
* Неможливо закрити вхідний файл.
!!-04-!! Cannot create >->:=:=:=:=:=:<-<
* Неможливо створити вихідний файл.
!!-05-!! Cannot close >->:=:=:=:=:=:<-<
* Неможливо закрити вихідний файл. де замість :=:=:=:=:=: вказується ім'я конкретного файлу або символи, які програма сприймає як ім'я файлу.
!!-07-!! Illegal Key >ZZZZ< Cannot contunue!
* Неправильний ключ ZZZZ у командному рядку, неможливо продовжити.
При виявлені такої помилки програма видає повідомлення на термінал (StdOut). На термінал виводиться рядок з помилкою та, у наступному рядку, - назва вхідного файлу, номер цього рядка у вхідному файлі та текст повідомлення:
US = -1 ; не более 18 цифр **.ERR** "239KA-nr-V3.inc" ( 43) : Невідома директива >->->US
У файл .Lst виводяться оброблені директиви в порядку надходження на аналіз та повідомлення про помилку:
1 43 US = -1 ; не более 18 цифр **.ERR** Невідома директива >->->US
На початку кожного рядка цього вихідного файлу вказується рівень вкладенності вхідних файлів (по include) та номер рядка у вхідному файлі.
Після виявлення помилки у рядку програма припиняє обробку цього рядка та ігнорує його повністю.
Програма формує попередження - повідомлення про можливу помилку під час подальшої обробки, такі повідомлення видаються у вихідний файл; причиною попередження може бути, наприклад, використання не визначених елементів опису. Таке повідомлення видається після рядка, до якого воно стосується; рядок з текстом попередженням починається з символів ;;!!.
На вхід програми ConvertNumeration подається символьний файл з типовою таблицею аналізу номерів (-Nr файл), взятий з опису “верхньої секції” комутатора; допускається подача файлів від обох секцій одразу. Програма аналізує директиви опису нумерації та, після оптимізації, упорядкування та переформатування виводить їх у вихідний файл.
NumerationDecode : ; ; початок всіх таблиць
Ця мітка тепер вважається застарілою та не потрібною - ігнорується; у вихідний файл не виводиться.
DircDefin Evans, 0, Side HundDefin Abn0
Параметри директив визначення напрямків (DircDefin) та сотень (HundDefin) - а саме назви напрямків та сотень - запам'ятовуються та використовуються на етапі формування таблиць аналізу номера. Ці директиви у вихідний файл не поступають.
MakeForwardTables < A, AU, R, Office>
В загальному описі ця директива визначає перелік початкових точок аналізу прямих номерів, індекси яких можуть передаватися між процесорами комутатора. В контексті програми ConvertNumeration ця директива використовується для визначення точок (коренів дерева), відносно яких проводити оптимізацію та згортку дерева аналізу прямих номерів. Допускається декілька таких директив у будь-якому місці вхідного файлу, списки параметрів цих директив можуть перетинатися. Оптимально, в якості параметрів, треба використовувати початкові точки вказані в параметрах директив визначення каналів у файлі каналів. У вихідний файл виводиться тільки одна директива MakeForwardTables з відповідним списком початкових точок.
Примітка: Спосіб оптимізації дерева та результат оптимізації дуже сильно залежить від переліку початкових точок в цій директиві - використання проміжних точок в якості початкових може звести нанівець всі спроби оптимізації.
NumberTransform Tr109, "029999419", A
Директива визначає правило перетворення прямого номера; директива без змін виводиться у вихідний файл.
ForwardRule A, "104", DrTownOnly, #, BAD9, 3,0 ForwardRule A, "109", DrTownOnly, =, Va09, 3,0 ForwardRule A, "1508", DrTownOnly, =, 76C, -1,0 ForwardRule A, "506", DrTownOnly, #, BADc, 5,0 ForwardRule A, "507x", DrTownOnly, #, BADd, 5,0
Ці директиви визначають радіальний спосіб опису дерева аналізу номерів - від кореня до кінцевої гілки. Параметри цих директив перевіряються на сумісність. У вхідному файлі допускається декілька ідентичних (по параметрам) директив - під час обробки ідентичні гілки дерева обрізаються, а мертві корені (не вказані в MakeFoerwardTables) - видаляються.
NmrDigit A , 0, DrOverTown, , A0 NmrDigit ,1, DrOverTown, , A1 NmrDigit , 8 , DrOverTown,, A8 NmrDigit , *, DrTownOnly, #, Uper, 5
Ці директиви визначають хордовий спосіб опису дерева аналізу номерів; під час обробки цього дерева проміжні точки усуваються та створюється радіальний спосіб опису дерева. У вихідний файл такі директиви ніколи не виводяться.
MakeBackwardTables <All, An>
В загальному описі ця директива завершує таблицю аналізу зворотніх номерів та не має параметрів. В контексті програми ConvertNumeration ця директива використовується для визначення точок (коренів дерева), відносно яких проводити оптимізацію та згортку дерева аналізу зворотніх номерів. Допускається декілька таких директив у будь-якому місці вхідного файлу, списки параметрів цих директив можуть перетинатися. Оптимально, в якості параметрів, треба використовувати початкові точки вказані в параметрах директив визначення каналів у файлі каналів. У вихідний файл виводиться тільки одна директива MakeBackwardTables з відповідним списком початкових точок.
BackwardRule Mist, "3803048380", + BackwardRule Mist, "3803048381", + BackwardRule Mist, "3803048382", +
Ці директиви визначають радіальний спосіб опису дерева аналізу зворотніх номерів - від кореня до кінцевої гілки. Параметри цих директив перевіряються на сумісність. У вхідному файлі допускається декілька ідентичних (по параметрам) директив - під час обробки ідентичні гілки дерева обрізаються, а мертві корені (не вказані в MakeBackwardTables) - видаляються.
AonRange YJz, 3548380,+,Users ;; DigitAon , 1,+ DigitAon , 2,+ DigitAon ANx, 3, ,ANx3 DigitAon ANx3, 5, ,ANx35 DigitAon ANx35, 4, ,ANx354
Ці директиви визначають хордовий спосіб опису дерева аналізу зворотніх номерів; під час обробки цього дерева проміжні точки усуваються та створюється радіальний спосіб опису дерева. У вихідний файл такі директиви ніколи не виводяться.
BegExtra SS7 ;; Reload TPf,'380324150' EndExtra SS7
Весь блок детального опису параметрів транків, що описаний директивами BegExtra/Reload/EndExtra без змін поступає у вихідний файл.
TrunkExtraPar SS7, "380-3241-50xxx" ; Україна, Львівська область, Миколаїв
Ця директива скороченого опису блоку без змін поступає у вихідний файл. У вхідному файлі можливий повторний опис блоків параметрів транків з тим самим іменем.
DefineStationNmr 15,'Районний комутатор - повний аналіз номера ' ;; DefineStationLin 15,' Канали ОКСу, CAS-1, CAS-2 та Pri' DefineModem **Serg**,1 DefineParol ******** DefineIPNet <000h,008h,002h,094h,02Bh,0CCh>,<192,168,000,004>,0e800h TableCryptKey <1333-9CC9-0100-5555-1779-9FE9-0120-8778>
Ця директиви опису без змін поступають у вихідний файл. У вхідних даних можливий повторне використання цих директив.
StationNmr: db 'Районний комутатор - повний аналіз номера ',0 StationLin: db ' Канали ОКСу, CAS-1, CAS-2 та Pri' db ??date,' ',??time,0
Текстові описи після цих міток перетворюються у директиви DefineStationNmr/DefineStationLin та поступають у вихідний файл.
Програма ConvertNumer аналізує директиви у вхідних даних (можливо декілька вхідних файлів) та, після оптимізації та переформатування, виводить їх у вихідний файл у вигляді директив загального опису комутатора. Тексти пояснень програма формує в кирилиці Win1251. Інформація у вихідному файлі групується у фрагменти опису.
Цей фрагмент файлу формується з відповідних директив, що зустрічалися у вхідних даних. Виводяться всі варіанти однотипних описів для подальшого візуального порівняння, вибору найкращого та редагування. Приклад фрагменту:
DefineStationNmr ' ЦАТС "ЕС-11" ',' блок 1079кa - ',??date,' ',??time,0,0 DefineStationNmr ' ЦАТС "ЕС-11" ',' блок 1079кb - ',??date,' ',??time,0,0 DefineStationLin 'Двонаправленi швидкiснi лiнiї Lhf з частотним човником. ',0 DefineStationLin 'Двонаправленi швидкiснi лiнiї Lhf з частотним човником. ',0 DefineParol ******** DefineParol ******** TableCryptKey <1537-5765-AB5C-9FDE-123A-34BC-1ADE-87BD> TableCryptKey <1537-5765-AB5C-9FDE-123A-34BC-1ADE-87BD>
На початку цих правил виводиться перелік початкових точок (коренів дерев) аналізу номера. Цей перелік формується з параметрів оброблених директив MakeForwardTables; після переліку виводяться всі сформовані правила аналізу номера:
;;################################################################ ;; Правила аналізу для коренів : A ;;================================================================ ForwardRule A, "0x", DrOverTown, #, Utel, 10,0 ForwardRule A, "00xxx", DrOverSeas, #, Utel, -1,0 ForwardRule A, "01x", DrTownOnly, #, Utel, 3,0 ForwardRule A, "010x", DrTownOnly, #, Utel, -1,0 ForwardRule A, "010050", DrTownOnly, #, Utel, 10,0 ForwardRule A, "014", DrTownOnly, #, Utel, 5,0 ForwardRule A, "017", DrTownOnly, #, Utel, 4,0 ForwardRule A, "019", DrTownOnly, #, Utel, 4,0 ForwardRule A, "02x", DrOverTown, #, Utel, 9,0 ForwardRule A, "021x", DrOverTown, #, Utel, 9,0 ForwardRule A, "0216", DrTownOnly, #, Utel, 4,0 ForwardRule A, "08", DrTownOnly, #, Utel, 10,0 ForwardRule A, "09", DrOverTown, #, Utel, 10,0 ForwardRule A, "101", DrTownOnly, #, Town, 3,0 ForwardRule A, "102", DrTownOnly, #, Town, 3,0 ForwardRule A, "103", DrTownOnly, #, Town, 3,0 ForwardRule A, "104", DrTownOnly, #, BAD9, 3,0
Правила аналізу номера формуються з відповідних директив у вхідних даних та описуються виключно директивами ForwardRule. Ці директиви визначають радіальний спосіб опису дерева аналізу номерів - від кореня до кінцевої гілки - напрямку або іншого кореня. В результаті, програма ConvertNumer будує описи дерев з мінімальною кількістю явних розгалужень - такий опис дерев найкраще піддається візуальному аналізу та подальшій оптимізації. Під час формування дерев видаляються мертві корені, знищуються ідентичні гілки аналізу та видаються повідомлення про помилки опису. На видачі всі сформовані правила аналізу відсортовані по початковим точкам аналізу та шаблонам аналізу, що суттєво спрощує пошук діапазону номерів у сформованій таблиці.
В кінці таблиці програма виводить:
ForwardRule A, "8216", DrTownOnly, =, Utel, 4,0 ForwardRule A, "87", DrTownOnly, =, Utel, 11,0 ForwardRule A, "88", DrTownOnly, =, Utel, 11,0 ;;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;; Визначено правил : 312 ;;================================================================ MakeForwardTables < A > ;;################################################################
- число сформованих правил та директиву MakeForwardTables з переліком початкових точок (коренів дерев) аналізу номерів.
Ця довідкова таблиця містить перелік всіх (навіть не використаних) точок аналізу номера та скільки разів використовувалась кожна точка під час створення дерев аналізу номерів:
;;################################################################ ;; Статистика використання точок аналізу номера ;;================================================================ ;; Використано 0 раз: R, R3, _, ;; Використано 1 раз: A, A0, A01, A010, A0100, A01005, A1, A10, A15, A150, ;; Використано 1 раз: A2, A3, A30, A31, A4, A41, A5, A50, A502, A5023, A504, ;; Використано 1 раз: A507, A509, A5093, A51, A512, A5123, A514, A519, A5192, ;; Використано 1 раз: A52, A521, A523, A5237, A525, A528, A5280, A53, A530, ;; Використано 1 раз: A531, A5311, A532, A535, A5353, A538, A5380, A59, A6, ;; Використано 1 раз: A60, A61, A62, A63, A64, A65, A651, A66, A67, A68, ;; Використано 1 раз: A7, D2, D21, E, F, F0, H, H0, I, I0, U, Z2, Z21, ;;================================================================ ;; Потенційно початкова: A, R, _, ;;################################################################
Таблиця корисна для визначення точок, що використовуються неодноразово та для пошуку мертвих (не використаних) коренів та точок. Рядки потенційно початкові визначають точки, на які повинні бути посилання з таблиць каналів.
Ця довідкова таблиця містить перелік кінцевих напрямків та правил, завдяки яким можна вийти на цей напрямок:
;;################################################################ ;; Статистика звертань до напрямків ;;================================================================ . . . . . . . . . . . . . . . . . . . . . . ;; Utel : A, 00xxx, DrOverSeas, #, Utel, -1 ;; Utel : A, 010050...., DrTownOnly, #, Utel, 10 ;; Utel : A, 010x, DrTownOnly, #, Utel, -1 ;; Utel : A, 014.., DrTownOnly, #, Utel, 5 ;; Utel : A, 017., DrTownOnly, #, Utel, 4 ;; Utel : A, 019., DrTownOnly, #, Utel, 4 ;; Utel : A, 01x, DrTownOnly, #, Utel, 3 ;; Utel : A, 0216, DrTownOnly, #, Utel, 4 ;; Utel : A, 021x....., DrOverTown, #, Utel, 9 ;; Utel : A, 02x......, DrOverTown, #, Utel, 9 ;; Utel : A, 08........, DrTownOnly, #, Utel, 10 ;; Utel : A, 09........, DrOverTown, #, Utel, 10 ;; Utel : A, 0x........, DrOverTown, #, Utel, 10 ;; Utel : A, 1508, DrTownOnly, =, Utel, -1 ;; Utel : A, 810xxx, DrOverSeas, =, Utel, -1 ;; Utel : A, 819., DrTownOnly, =, Utel, 4 ;; Utel : A, 8216, DrTownOnly, =, Utel, 4 ;; Utel : A, 821x....., DrOverTown, =, Utel, 9 ;; Utel : A, 82x......, DrOverTown, =, Utel, 9 ;; Utel : A, 87........., DrTownOnly, =, Utel, 11 ;; Utel : A, 88........., DrTownOnly, =, Utel, 11 ;; Utel : A, 8x........., DrOverTown, =, Utel, 11 . . . . . . . . . . . . . . . . . . . . . .
В правилах вказується початкова точка аналізу номера (корень дерева) та номер (схематично з довжиною) виходу у відповідний напрямок. Рядки в цій таблиці відсортовані по напрямкам, точкам аналізу та номерам.
На початку правил для АВН виводиться перелік початкових точок (коренів дерев) аналізу номера. Цей перелік формується з параметрів оброблених директив MakeBackwardTables; після переліку виводяться всі сформовані правила аналізу номера АВН:
;;################################################################ ;; Правила аналізу АВН для точок : ANx,All ;;================================================================ BackwardRule ANx, "3548380", +, Users BackwardRule ANx, "3548381", + BackwardRule ANx, "3548382", + BackwardRule ANx, "3548383", + BackwardRule ANx, "3548384", + ;;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BackwardRule All, "x", + ;;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;; Визначено правил : 6 ;;================================================================ MakeBackwardTables ;;++ < ANx,All > ;;################################################################
В кінці таблиці програма виводить число сформованих правил та директиву MakeBackwardTables
;;################################################################ ;; Статистика використання точок аналізу АВН ;;================================================================ ;; Потенційно початкова: ALL, Byr, Cher, Denh, Dibr, Dorod, Dzvin, Gorosh, KV, ;; Потенційно початкова: Kash, Kluk, Nend, Pogr, Pos, Ptg, SI2000, Skib, Sof, ;; Потенційно початкова: Stadn, Step, Tajnica, Tel, Visk, ;;################################################################
Рядки потенційно початкові визначають точки, на які повинні бути посилання з таблиць каналів.
Спочатку виводиться перелік назв блоків, що зустрілися у вхідних даних:
;;################################################################ ;; Параметри транків для блоків : Abn,CAS,SS7 ;;================================================================ BegExtra Abn;; для абонент?в - Україна Львiвська область Reload TPf,'380324153' Reload NPf,'0' . . . . . . . . . . . . . . . . . . . . . . Reload NNL,9 ;; National Number Length EndExtra SS7 ;;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;; Визначено блоків 3 ;;################################################################
В цю таблицю поступають всі варіанти визначення блоків у вхідних даних; можливе повторне визначення блоків. В кінці таблиці виводиться кількість визначених блоків.
На вхід програми ConvertNumeration може одночасно поступати декілька файлів опису номерів (-Nr) від різних секцій - найкраще від верхніх. Програма призначена для отримання файлу з оптимальною, мінімізованою та упорядкованою таблицею правил аналізу номерів для всього комутатора. У вихідному файлі з'являються всі варіанти описів блоків параметрів транків, дескрипторів та ключів - з них треба вибрати необхідний. Після необхідних редагувань вихідний файл може використовуватись для побудови секційних файлів опису номерів (-Nr) комутатора.
Основне призначення вихідного файлу - це використання його в якості складової частини загального опису комутатора.
=======================================================