ЄС-11

Цифрова комутаційна система

Науково-виробничий центр
"Автоматизовані мікропроцесорні системи"
ЄДРПОУ: 13807402 тел: +380-32-237-21-36

Користувальницькькі налаштування

Налаштування сайту


es11soft:preprocessing:numberconvertor

Попередня обробка файлів опису номера

Програма NumberConvertor призначена для конвертації таблиць аналізу номера (файли *-nr.inc) комутатора та використовується під час оновлення або модифікації програмного забезпечення станцій ЄС-11. Програма створює файл лістінгу, в якому прив'язує опис помилок до тексту помилкових директив. Також, створюється декілька статистичних таблиць для подальшого прискіпливого аналізу та виправлення логічних помилок опису. Поточна версія програми може об'еднувати описи таблиць нумерації окремих секцій комутатора (A та B) в спільну таблицю нумерації комутатора.

Нижче приведено декілька прикладів використання програми NumberConvertor; в кожному з прикладів приведено вхідні і вихідні файли та командний рядок запуску програми.

Прості приклади - ознайомлення з можливостями програми:

  1. Example-050 (4.67 KiB, 9y ago, 140 downloads) - конвертація кирилиці DOS <> Win;
  2. Example-051 (77.02 KiB, 9y ago, 112 downloads) - трансляція нумерації та каналів однієї секції;
  3. Example-053 (121.91 KiB, 9y ago, 108 downloads) - обробка нумерації та каналів - вивід таблиць G та H;

Реальні приклади - злиття таблиць нумерації двох секцій та створення спільної таблиці нумерації комутатора:

  1. Example-090 (88.4 KiB, 9y ago, 95 downloads) - попередне злиття нумерації - маса помилок;
  2. Example-092 (94.61 KiB, 9y ago, 385 downloads) - кінцевий результат злиття - після виправлення помилок опису;

Ще декілька прикладів - ділення однієї таблиці нумерації (сформованої на попередніх етапах) на дві таблиці для двох секцій комутатора:

  1. Example-094 (138 KiB, 8y ago, 93 downloads) - поділити опис нумерації на дві таблиці для секцій з виправленням помилок;
  2. Example-095 (110.66 KiB, 8y ago, 107 downloads) - поділити опис нумерації на дві таблиці у версії G;
  3. Example-096 (110.25 KiB, 8y ago, 221 downloads) - поділити опис нумерації на дві таблиці у версії H;

Використання програми

Програма працює по принципу препроцесора: на вхід програми подаються символьні файли таблиць аналізу номера в різних форматах опису (для версій ядра G або H), а на виході програми - такі ж символьні таблиці в одному іншому форматі (для версій ядра G, H або I); - ці символьні файли потребують подальшої стандартної обробки для створення двійкових таблиць комутатора. Всі таблиці з правилами перед виводом оптимізуються та сортуються. Програма також створює повне дерево аналізу номера для кожної початкової точки аналізу номера - для візуальної перевірки користувачем.

Використання програми для оновлення та аналізу таблиць

На вхід програми подається діюча таблиця у форматі версії ядра G, на виході отримуємо ту саму таблицю в форматі версії H - відсортовану, оптимізовану та з визначенням “мертвих” (або тих що не використовуються) гілок аналізу. Можлива видача таблиці у форматі версії ядра G. Як-що не можливо інтерпретувати директиву опису номеру в обмеженнях формату G - програма формує повідомлення про помилку. На цьому етапі можливе злиття двох таблиць нумерації двох секцій комутатора в об'єднану таблицю нумерації комутатора.

Використання програми для модифікації та супроводження таблиць

На вхід програми подається таблиця у форматі версії ядра H (можливо, та що створена на попередньому етапі); до неї вносяться корекції у форматі H (або препроцесора H+Pre), та на виході створюється таблиця в форматі версії H - оптимізована та змодельована. Можлива видача таблиці у форматі версії ядра G або I.

Додаткова інформація про канали

На вхід програми NumberConvertor можна додатково подавати інформацію про канали та напрямки (типові файли *-ln.inc) того самого комутатора - програма додатково створить статистичні таблиці використання початкових точок аналізу номера в каналах, напрямках, секціях та інше.

Файл лістінгу

На додачу, програма створює файл лістінгу в якому формує інформацію про серйозні помилки з прив'язкою до помилкового рядка вхідного файлу, а також звертає увагу на сумнівні місця, що викличуть проблеми під час створення двійкових файлів таблиць номера. Назва файлу лістінгу формується з назви вхідного файлу, що вказаний в командному рядку: до цієї назви додається нове розширення “.lst”. На початку файлу формується заголовок, в якому вказується командний рядок запуску програми та всі оброблені директиви керування вводом та де вони знаходилися у вхідних файлах. Приклад такого заголовку:

#####################################################################
##  =AMC=    Програма конвертації номерів   NumberConvertor v2.6b  ##
## = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ##
##  Вхідний  файл -  Numr-092.txt                                  ##
##  Вихідний файл -  Numr-092.txt.lst                              ##
## = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ##
##  Командний рядок та директиви керування:                        ##
##    >NumberConvertor --Input Numr-092.txt                        ##
##    MergeSectionTables  Side                 "Numr-092.txt"(10)  ##
##    InputCodePage 866                        "Numr-092.txt"(15)  ##
##    Include 096KA-Nr.Inc                     "Numr-092.txt"(17)  ##
##    Include 096KB-Nr.Inc                     "Numr-092.txt"(18)  ##
##    Include 096KA-Ln.Inc                     "Numr-092.txt"(21)  ##
##    Include 096KB-Ln.Inc                     "Numr-092.txt"(22)  ##
## = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ##
##    Файлів оброблено:  5;    Рядків:  3807;                      ##
##    Помилок:  0;    Попереджень:  3;      [2015-11-05 16:17:29]  ##
#####################################################################

Аналогічний заголовок виводиться на початку вихідного файлу таблиць.

При формуванні лістінгу на початку кожного рядка виводиться рівень вкладеності цього файлу по include та номер цього рядка у вхідному файлі, фрагмент:

1  265   NmrDigit         S1  , 0, 			,  , 	S10      
**Err  Правило вузла >S1~5<  конфліктує з >,#,Side,4,0< що визначене в  "096KA-Nr.Inc"(253)
1  266   NmrDigit             , 5, 			,   , 	S150 
1  267   NmrDigit             , 7, 			,   , 	S17 

Повідомлення про помилки виводяться перед рядком що її викликав.

В кінці файлу виводиться таблиця повідомлень про помилки в яких вказаний текст помилки та місця помилки у вхідних файлах; Також, виводяться попередження про можливі помилки підчас подальшлї обробки вихідних файлів.

Файл лістінгу завершується короткою підсумковою таблицею:

#####################################################################
##  =AMC=    Created by                     NumberConvertor v2.1e  ##
##  Source -  Numr-090.txt                                         ##
##    Errors:  102;    Warnings:  19;       [2015-11-04 18:51:20]  ##
#####################################################################

Аналогічна таблиця виводиться в кінці вихідного файлу таблиць.

Принцип роботи програми

  • ввід декількох файлів таблиць опису номера (*-nr.inc) та каналів (*-ln.inc) одного комутатора та обробка директив керування вводом;
  • обробка директив опису номера:
    • детальний аналіз введених директив аналізу номера у різних форматах;
    • поверхневий аналіз введених директив опису каналів для статистики;
    • об'еднання таблиць нумерації від секцій та корекція виходів в резервні напрямки;
    • побудова та оптимізація моделі аналізу номера;
    • перевірка функціонування моделі аналізу номера;
    • повторна оптимізація (згортка) таблиць аналізу номера;
    • розподілення номерів по напрямках;
    • побудова статистичних таблиць;
  • формування результуючого символьному файлу з таблицями опису номера та статистичними таблицями;
  • формування файлу лістінгу з описом помилок та вивід його;

Вхідні дані

Під час вводу даних програма обробляє директиви опису номера від різних версій ядра; так, від версії G (детально - Т У Т) такі директиви:

  • DircDefin, HundDefin, DircKateg, NmrDigit, DigitAon, AonRange, DefineParol, TableCryptKey, BegExtra, Reload, EndExtra, StationNmr:, StationLin:;

так і ті що характерні для версії H:

  • DircDefin, HundDefin, ForwardRule, MakeForwardTables, BackwardRule, MakeBackwardTables, TrunkExtraPar, DefineStationNmr, DefineStationLin, DefineModem, DefineIPNet, TableCryptKey;

Директива ForwardRule для версії H описана Т У Т. З описом інших директив можна ознайомитись Т У Т.

Розширені можливості препроцесора при інтепретації директиви ForwardRule (з діапазонами номерів та виключеннями), приведені Т У Т.

На вхід програми можна подавати і файли з таблицями каналів (*.-ln.inc) - ця інформація використувається для побудови статистичних таблиць “Аналіз номера <> Канали”. В файлах *.-ln.inc можна використовувати такі директиви опису напрямків та каналів:

  • HundredStart, DirectionStrt, DirectionEnds, LineAloc, ExtraNumer, TrunkLine, MultiLine, ChanAloc;

Також, допускаються директиви які використовуються в препроцесорі BuildSwitch:

  • TrunkBody, TranzitPair, AlarmPoint, UnusedChan

Інформація про канали потрібна для побудови статистичних таблиць використання каналами початкових точок аналізу номера, АВН та параметрів транків.

Вихідні файли з таблицями

На виході програма формує символьний файл з директивами аналізу номера у форматах, характерних для конкретної версії ядра (G, H або I); версія вказується користувачем в командному рядку. Для створення двійкових таблиць комутатора цей файл потребує додаткової обробки стандартними засобами. На початку файлу формується текстовий заголовок, в якому вказаний командний рядок та використані директиви керування вводом. В кінці файлу виводяться повідомлення про помилки в яких вказаний текст помилки та місця помилки у вхідних файлах. Також, виводяться попередження про можливі помилки під час подальшої обробки вихідних файлів для створення двійкових файлів.

В цьому вихідному файлі директив аналізу номера створюються такі таблиці: основні - (з директивами опису номеру) та додаткові (частина з них - як-що були вказані канали):

  • Загальні дескриптори та ключі;
  • Канали та напрямки:
    • Число та тип каналів в напрямках та на секціях таблиці каналів;
  • Правила аналізу номера:
    • Звертання до напрямків та сотень з таблиці аналізу номера;
    • Правила аналізу номера для початкових точок;
      • Статистика використання цих точок в таблиці каналів;
  • Визначення початкових точок аналізу номера;
  • Правила перетворення номера:
    • Звертання до цих правил з таблиці аналізу номера;
  • Перевірка правил аналізу номера для коренів;
    • Призначення номерів для початкових точок;
  • Звертання до напрямків та сотень з таблиці аналізу номера:
    • Побудова призначень для напрямків;
    • Напрямок, Корінь аналізу, Номерна ємність, Номер, Правило;
      • Перевірка правил аналізу номера для коренів;
      • Призначення номерів для початкових точок;
      • Звертання до напрямків та сотень з таблиці аналізу номера;
  • Правила аналізу АВН для початкових точок;
    • Використання їх каналами в таблиці ліній;
  • Опис блоків параметрів транків;
    • Використання їх каналами в напрямках та секціях таблиці ліній;
  • Статистика для каналів з таблиці каналів:
    • Аналіз номера, Аналіз АВН, Транк »> Число каналів: Тип каналів, Напрямок, Секція;
    • Аналіз номера »> Число каналів: Тип каналів, Напрямок, Секція;
    • Аналіз АВН »> Число каналів: Тип каналів, Напрямок, Секція;
    • Параметри транку »> Число каналів; Тип каналів, Напрямок, Секція;

Всі таблиці перед виводом сортуються, що полегшує їх візуальний аналіз та спрощує створення двійкових кодів.

Назви вихідного файлу таблиць формується таким чином: до назви головного вхідного файлу (що вказаний в командному рядку) додається нове розширення “.inc”: наприклад у командному рядку було вказано “Project-033.Inc” - буде сформовано файл “Project-033.Inc.inc”.

Вихідні файли таблиць для секцій комутатора

Аналогічні таблиці (крім статистичних) виводяться під час створення таблиць для секцій. Режим виводу цих таблиць активується ключем –SectDivide в командному рядку; для визначення напрямків та сотень що фізично знаходяться тільки на одній секцій використовується директива DirectionOnOnlyOneSect у вхідних даних.

Назви вихідних файлів таблиць для секцій формуються таким чином: до назви головного вхідного файлу (що вказаний в командному рядку) додаються символи “A-nr.inc” та “B-nr.inc” відповідно для секцій A та B.

Додаткові можливості вводу

Додаткові можливості вводу програма реалізує за допомогою директив керування вводом, які вставляються у вхідні файли:

  • include <ім'я файлу>

ввід даних з вказаного файлу; приклад:

      include was-056KA-Ln.Inc
  • macrotext <ім'я> = <обмежувальний_символ><текст><обмежувальний_символ>

у всіх вхідних файлах всі послідовності символів <обмежувальний_символ><ім'я><обмежувальний_символ> будуть замінені на <текст>, наприклад, після визначення:

      macrotext OverTownDrc = %AMTS%

всі послідовності символів %OverTownDrc% будуть замінені на AMTS;

  • inputcodepage <page>

призначена для перекодування кирилиці на вводі; <page> може приймати такі значення 866, 1251, DOS, Win; для систем DOS характерні значення 866 або DOS; для систем Windows - 1251 або Win; директива призначена для формування «читабельних» коментарів у файлі лістінгу; по замовчуванню - кодова сторінка Win; приклад:

      inputcodepage 866

вся подальша кирилиця буде перекодовуватися з кодування DOS у внутрішне кодування Win.

  • IgnoreRootPoint <початкова_точка_аналізу_номера>

Директива використовується для оптимізації дерев аналізу номера; наприклад:

       IgnoreRootPoint Ss

Визначає початкову точку аналізу номера, яка буде ігнорована під час формування зведеної таблиці аналізу номера.

  • MergeSectionTables <напрямок1[,напрямок2]>

Директива використовується під час об'еднання таблиць опису нумерації двох секцій; приклад:

      MergeSectionTables Side,SmollSide

Визначає напрямки міжсекційного з'еднання - Side та SmallSide - всі описи напрямків та правил аналізу номера, що зав'язані на ці напрямки будуть скоректовані належним чином.

  • DirectionOnOnlyOneSect <секція> <напрямок1[,напрямок2]>

Директива використовується під час формування окремих таблиць для секцій; наприклад:

     DirectionOnOnlyOneSect B  Abn8, Abn6, Abn4

Визначає напрямки які знаходяться тільки на одній секції.

Командний рядок запуску

У командному рядку програми за допомогою ключів вказується перший вхідний файл та режими формування таблиць у вихідному файлі:

  • -i <file> - вхідний файл; повна назва ключа - –input;
  • -t <H|G> - формат вихідної таблиці номерів; повна назва ключа - –tablesformat: G - для версії G; H - для версії H (по замовчуванню);
  • -ocp <866|1251|DOS|Win> - кодова сторінка виводу кирилиці вихідного файлу таблиць; повна назва ключа - –outputcodepage; значення 866 або DOS - сторінка 866 - це значення типове для систем Dos; 1251 або Win - сторінка 1251 - значення типове для систем Windows; по замовчуванню - Win.
  • -lcp <866|1251|DOS|Win> - кодова сторінка виводу кирилиці вихідного файлу лістінгу; повна назва ключа - –listingcodepage; - аналогічно -ocp;
  • -s - формування вихідних файлів для секцій; повна назва ключа - –SectDivideж

Імена вихідних файлів таблиць та лістінгу ніде не вказуються - просто до імені вхідного файлу (з командного рядку) додається розширення .inc та .lst відповідно.

Приклади командного рядку:

      NumberConvertor.pl -i 056KA-NR.Inc -f G

вхідний файл “056KA-NR.Inc”; буде створено вихідний файл таблиць “056KA-NR.Inc.inc” у форматі версії G, кирилиця зі сторінки 1251 (по замовчуванню); також буде створено файл лістінгу “056KA-NR.Inc.lst”, кирилиця перекодовуватися не буде.

      NumberConvertor.pl -i Ext-056KA-NR.Inc --outputcodepage DOS

буде створено вихідний файл таблиць “Ext-056KA-NR.Inc.inc” у форматі версії H, кирилиця зі сторінки 866; також буде створено файл лістінгу “056KA-NR.Inc.lst”, кирилиця DOS.

      NumberConvertor.pl --Input Proj-096K --SectDivide

буде створено три вихідних файли таблиць форматі версії H: загальний файл таблиць “Proj-096K.inc” та файли таблиць для секцій A та B - “Proj-096KA-nr.inc” та “Proj-096KB-nr.inc” відповідно; також буде створено файл лістінгу “Proj-096K.lst”.

Повідомлення про помилки

Програма NumberConvertor формує повідомлення про помилки та виводить їх в файл лістінгу, вихідний файл таблиць та на консоль.

Синтаксичні помилки

Повідомлення про такі помилки прив'язуються до помилкового рядка вхідного файлу та виводяться в файл лістінгу перед копією цього рядка; фрагмент файлу лістінгу:

**Err  Правило вузла >S1~5<  конфліктує з >,#,Side,4,0< що визначене в  "096KA-Nr.Inc"(253)
1  266   NmrDigit             , 5, 			,   , 	S150 

Рядки з синтаксичними помилками ігноруються.

Всі повідомлення про такі помилки групуються по вхідним файлам в спільну таблицю - початок такої таблиці:

=####==####==####==####==####==####==####==####==####==####==####==####=
#~#~#~#~
####      Помилки  у  файлі  096KB-Nr.Inc  :
**Err  Правило вузла >S1~5<  конфліктує з >,#,Side,4,0< що визначене в  "096KA-Nr.Inc"(253)
1  266   NmrDigit             , 5, 			,   , 	S150 
**Err  Правило вузла >S10~1<  конфліктує з >,#,BAD9,3,0< що визначене в  "096KA-Nr.Inc"(255)
1  270   NmrDigit        S10 , 1, 			, =,       BAD9,3,0   ; 101 - 
**Err  Правило вузла >S10~2<  конфліктує з >,#,BAD9,3,0< що визначене в  "096KA-Nr.Inc"(256)
1  271   NmrDigit            , 2, 			, =,       BAD9,3,0   ; 102 - 

Таблиця повідомлень про синтаксичні помилки виводиться в кінці файлу лістінгу, в кінці вихідного файлу таблиць та на консоль.

Попередження про помилки генерації

Помилки генерації виникають під час формування вихідного файлу таблиць; попередження про такі помилки виводяться в цей файл перед створеним програмою рядком. Як правило, рядки з такими попередженнями можуть викликати подальші помилки під час створення двійкових файлів. Фрагмент вихідного файлу таблиць з попередженням:

;!; Warn:0019:   Назва кореня >AN463< закінчується на цифру - замінено на >AN463_<
BackwardRule AN463_,"3805258463",+

Всі попередження групуються в спільну таблицю - початок такої таблиці:

=####==####==####==####==####==####==####==####==####==####==####==####=
     Попередження у файлі  Numr-090.txt.inc
;!; Warn:0001:   Назва кореня >A4245< закінчується на цифру - замінено на >A4245_<
;!; Warn:0002:   Назва кореня >A4465< закінчується на цифру - замінено на >A4465_<
;!; Warn:0003:   Назва кореня >A4582< закінчується на цифру - замінено на >A4582_<

Таблиця попереджень про помилки генерації виводиться в кінці вихідного файлу таблиць та в кінці файлу лістінгу.

es11soft/preprocessing/numberconvertor.txt · В останнє змінено: 2016/09/16 11:44 (зовнішнє редагування)