Програма NumberConvertor призначена для конвертації таблиць аналізу номера (файли *-nr.inc) комутатора та використовується під час оновлення або модифікації програмного забезпечення станцій ЄС-11. Програма створює файл лістінгу, в якому прив'язує опис помилок до тексту помилкових директив. Також, створюється декілька статистичних таблиць для подальшого прискіпливого аналізу та виправлення логічних помилок опису. Поточна версія програми може об'еднувати описи таблиць нумерації окремих секцій комутатора (A та B) в спільну таблицю нумерації комутатора.
Нижче приведено декілька прикладів використання програми NumberConvertor; в кожному з прикладів приведено вхідні і вихідні файли та командний рядок запуску програми.
Прості приклади - ознайомлення з можливостями програми:
Реальні приклади - злиття таблиць нумерації двох секцій та створення спільної таблиці нумерації комутатора:
Ще декілька прикладів - ділення однієї таблиці нумерації (сформованої на попередніх етапах) на дві таблиці для двох секцій комутатора:
Програма працює по принципу препроцесора: на вхід програми подаються символьні файли таблиць аналізу номера в різних форматах опису (для версій ядра 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] ## #####################################################################
Аналогічна таблиця виводиться в кінці вихідного файлу таблиць.
Під час вводу даних програма обробляє директиви опису номера від різних версій ядра; так, від версії G (детально - Т У Т) такі директиви:
так і ті що характерні для версії H:
Директива ForwardRule для версії H описана Т У Т. З описом інших директив можна ознайомитись Т У Т.
Розширені можливості препроцесора при інтепретації директиви ForwardRule (з діапазонами номерів та виключеннями), приведені Т У Т.
На вхід програми можна подавати і файли з таблицями каналів (*.-ln.inc) - ця інформація використувається для побудови статистичних таблиць “Аналіз номера <> Канали”. В файлах *.-ln.inc можна використовувати такі директиви опису напрямків та каналів:
Також, допускаються директиви які використовуються в препроцесорі BuildSwitch:
Інформація про канали потрібна для побудови статистичних таблиць використання каналами початкових точок аналізу номера, АВН та параметрів транків.
На виході програма формує символьний файл з директивами аналізу номера у форматах, характерних для конкретної версії ядра (G, H або I); версія вказується користувачем в командному рядку. Для створення двійкових таблиць комутатора цей файл потребує додаткової обробки стандартними засобами. На початку файлу формується текстовий заголовок, в якому вказаний командний рядок та використані директиви керування вводом. В кінці файлу виводяться повідомлення про помилки в яких вказаний текст помилки та місця помилки у вхідних файлах. Також, виводяться попередження про можливі помилки під час подальшої обробки вихідних файлів для створення двійкових файлів.
В цьому вихідному файлі директив аналізу номера створюються такі таблиці: основні - (з директивами опису номеру) та додаткові (частина з них - як-що були вказані канали):
Всі таблиці перед виводом сортуються, що полегшує їх візуальний аналіз та спрощує створення двійкових кодів.
Назви вихідного файлу таблиць формується таким чином: до назви головного вхідного файлу (що вказаний в командному рядку) додається нове розширення “.inc”: наприклад у командному рядку було вказано “Project-033.Inc” - буде сформовано файл “Project-033.Inc.inc”.
Аналогічні таблиці (крім статистичних) виводяться під час створення таблиць для секцій. Режим виводу цих таблиць активується ключем –SectDivide в командному рядку; для визначення напрямків та сотень що фізично знаходяться тільки на одній секцій використовується директива DirectionOnOnlyOneSect у вхідних даних.
Назви вихідних файлів таблиць для секцій формуються таким чином: до назви головного вхідного файлу (що вказаний в командному рядку) додаються символи “A-nr.inc” та “B-nr.inc” відповідно для секцій A та B.
Додаткові можливості вводу програма реалізує за допомогою директив керування вводом, які вставляються у вхідні файли:
<ім'я файлу>
ввід даних з вказаного файлу; приклад:
include was-056KA-Ln.Inc
<ім'я> = <обмежувальний_символ><текст><обмежувальний_символ>
у всіх вхідних файлах всі послідовності символів <обмежувальний_символ><ім'я><обмежувальний_символ>
будуть замінені на <текст>
, наприклад, після визначення:
macrotext OverTownDrc = %AMTS%
всі послідовності символів %OverTownDrc% будуть замінені на AMTS;
<page>
призначена для перекодування кирилиці на вводі; <page>
може приймати такі значення 866, 1251, DOS, Win; для систем DOS характерні значення 866 або DOS; для систем Windows - 1251 або Win; директива призначена для формування «читабельних» коментарів у файлі лістінгу; по замовчуванню - кодова сторінка Win; приклад:
inputcodepage 866
вся подальша кирилиця буде перекодовуватися з кодування DOS у внутрішне кодування Win.
<початкова_точка_аналізу_номера>
Директива використовується для оптимізації дерев аналізу номера; наприклад:
IgnoreRootPoint Ss
Визначає початкову точку аналізу номера, яка буде ігнорована під час формування зведеної таблиці аналізу номера.
<напрямок1[,напрямок2]>
Директива використовується під час об'еднання таблиць опису нумерації двох секцій; приклад:
MergeSectionTables Side,SmollSide
Визначає напрямки міжсекційного з'еднання - Side та SmallSide - всі описи напрямків та правил аналізу номера, що зав'язані на ці напрямки будуть скоректовані належним чином.
<секція>
<напрямок1[,напрямок2]>
Директива використовується під час формування окремих таблиць для секцій; наприклад:
DirectionOnOnlyOneSect B Abn8, Abn6, Abn4
Визначає напрямки які знаходяться тільки на одній секції.
У командному рядку програми за допомогою ключів вказується перший вхідний файл та режими формування таблиць у вихідному файлі:
<file>
- вхідний файл; повна назва ключа - –input;<H|G>
- формат вихідної таблиці номерів; повна назва ключа - –tablesformat: G
- для версії G; H
- для версії H (по замовчуванню);<866|1251|DOS|Win>
- кодова сторінка виводу кирилиці вихідного файлу таблиць; повна назва ключа - –outputcodepage; значення 866
або DOS
- сторінка 866 - це значення типове для систем Dos; 1251
або Win
- сторінка 1251 - значення типове для систем Windows; по замовчуванню - Win
.<866|1251|DOS|Win>
- кодова сторінка виводу кирилиці вихідного файлу лістінгу; повна назва ключа - –listingcodepage; - аналогічно -ocp;Імена вихідних файлів таблиць та лістінгу ніде не вказуються - просто до імені вхідного файлу (з командного рядку) додається розширення .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_<
Таблиця попереджень про помилки генерації виводиться в кінці вихідного файлу таблиць та в кінці файлу лістінгу.