ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 1

                                                          
     
                          БИБЛИОТЕКИ  ДЛЯ  БЕЙСИКА
          
          
          Бейсик  "взрослеет". Язык, который всегда входил в число наи-
     более широко используемых языков программирования, становится  те-
     перь  настоящей  средой  для  разработки программного обеспечения.
     Причинами перехода от любительского уровня к профессиональному яв-
     ляются многочисленные расширения классической версии  языка:  воз-
     можность  отключения  нумерации строк, многостроковые структуриро-
     ванные программные конструкции, структуры типа "запись",  поимено-
     ванные подпрограммы с параметрами и локальные переменные.
          Более   того,   с   появлением  транслятора  QuickBasic  фирмы
     Microsoft разработчики получили возможность строить на Бейсике при-
     ложения из раздельно откомпилированных модулей, некоторые из  кото-
     рых  могут  быть  написаны  на других языках (см. "BASIC Face-off",
     Justin J.Crom, PC Tech Journal, September 1987,p.136). Теперь,  как
     и в случае других ведущих языков программирования, разработчик име-
     ет  выбор из нескольких промышленных библиотек подпрограмм, которые
     содержат готовые решения для распространенных задач  программирова-
     ния.
          В  число  основных доступных сегодня библиотек Бейсика входят:
     QuickPak Professional 1.23 и QBase 2.23  фирмы  Crescent  Software,
     ToolKit  4.0  фирмы  Exim  Services Inc., ProBas 2.0 фирмы Hammerly
     Computer Services, Finally! Subroutine Library и  Finally!  Modules
     фирмы  Komputerwerk  Inc.,  а также Screen Generator фирмы The West
     Chester Group. Все эти программные  продукты  поставляются  в  виде
     библиотек объектных модулей, редактируемых с прикладными программа-
     ми; они рассчитаны на трансляторы Бейсика, поддерживающие раздельно
     компилируемые модули (QuickBasic версии 4.0 и выше и  BASCOM  6.0).
     Некоторые  совместимы  с  более  ранними  версиями  QuickBasic; The
     Screen Generator может использоваться с TurboBasic  фирмы  Borland,
     Interpreted  Basic  фирмы  IBM  и некоторыми другими трансляторами.
     Разработчики могут распространять прикладные программы, созданные с
     помощью этих средств, без ссылки на авторов.
          При сравнительной оценке этого инструментария возникает клас-
     сическая дилемма "сделать самому/купить готовое". У  разработчика,
     занявшегося продажей собственных программных продуктов, может ока-
     заться больше времени, чем денег для вложений. С другой стороны, в
     интегрированной  среде  стоимость библиотеки может оказаться несу-
     щественной в сравнении с требованиями по времени программирования.
     Кроме  того, все не сводится только к экономическому критерию. Не-
     которые разработчики строят свои программы полностью сами с  целью
     получить контроль над всеми тонкостями их работы. Они воспользуют-
     ся  библиотекой  только  в  том случае, если она содержит исходные
     тексты всех подпрограмм.
          Библиотеки Бейсика включают в себя средства от самых незначи-
     тельных до грандиозных - от  подпрограмм  перевода  температур  из
     шкалы  Фаренгейта  в  шкалу Цельсия или преобразования результатов
     угловых измерений из градусов в радианы (которые  просто  длиннее,
     чем вызов и редактирование внешних процедур преобразования) до под-
     программ ввода данных, сортировки, работы с файлами и обработки за-
     писей, которые позволяют строить довольно сложные  базы  данных.  В
     тех  случаях, когда для предметной области требуется скорее специа-
     лизированная база данных, чем промышленно эксплуатируемая стандарт-
     ная система управления данными,  библиотека  таких  программ  может
     дать разработчику существенный выигрыш по сравнению с самостоятель-
     ным программированием всех этих средств.
          Наиболее  полезны  библиотеки  подпрограмм,  автоматизирующих
     часто встречающиеся задачи. Фактически всякая программа требует от
     пользователя, к примеру, ввод данных, и затем  выводит  результаты
     обработки;  поэтому  многие библиотеки предлагают генераторы отче-
     тов, которые предназначены для  создания  и  отображения  выходных
     форм и облегчения ввода и редактирования данных. Процедуры контро-
     ля  и структурирования вводимых данных, встроенные в подпрограммы,
     защищают прикладную программу от "творчества" конечных пользовате-
     лей при вводе данных. Процедуры контроля данных при вводе в диало-
     говом режиме обычно достаточно сложны, и самостоятельная их разра-
     ботка занимает много времени и чревата ошибками.
          Далее, специализированные подпрограммы могут  улучшить  прик-
     ладную  программу  в  части  внешнего оформления. Управляемые меню
     программные конструкции ушли в прошлое; сейчас используется много-
     оконный интерфейс и листаемые меню с подсвечиваемой строкой-курсо-
     ром.  Располагая  несколькими  перечисленными  выше  библиотеками,
     включить такие возможности не составляет труда.
          Еще  одной областью применения библиотечных подпрограмм явля-
     ется обработка ошибок. Многие встроенные операции Бейсика  требуют
     использования  конструкции  ON ERROR для обработки ошибок и защиты
     программ от аварийного завершения; но использование ON ERROR и вы-
     зываемое им ветвление увеличивают объем  программы,  замедляют  ее
     выполнение и запутывают алгоритм.
          В  некоторых  библиотеках  вместо стандартных функций Бейсика
     используются подпрограммы, которые возвращают числовой код ошибки,
     упрощающий ее обработку. И, наконец, в библиотеки входят расширен-
     ные  средства работы с массивами, обработки строк и математические
     подпрограммы. В табл._1 приводится сравнительная  оценка  функций,
     входящих в каждую из семи рассматриваемых здесь библиотек.
     
                                                      Таблица 1
          
                     Сравнение библиотек по составу функций
                                       
     -------------------------------------------------------------------
     Продукт (см.примечание)     1     2      3     4     5     6     7
     -------------------------------------------------------------------
     ВЕРСИЯ                     1.23  2.23  4.0    2.0   4.0   4.0   4.7
     ЦЕНА, долл.                149   149   99.95  135   99    99    79
     ЯЗЫК ПРОГРАММИРОВАНИЯ:
     ---------------------
     Бейсик                       +    +      -     +     +     -     -
     Ассемблер                    #    #      -     -     +     -     -
     ФУНКЦИИ:
     --------
     Обработка массивов           +    *      -     *     +     -     -
     Управление данными           -    +      +     -     -     -     -
     Ввод данных в поле           +    +      +     +     +     -     -
     Ввод данных в форму          -    +      +     -     -     +     +
     Функции даты/времени         +    *      +     +     +     -     -
     Функции ДОС                  +    +      +     +     +     +     -
     Динамические массивы строк   +    +      -     +     -     -     -
     Поддержка средств расшире-
     ния памяти (EMS)             -    -      -     +     -     -     -
     Файловые функции             +    *      +     +     -     +     -
     Бухгалтерские функции        +    -      -     -     -     -     -
     Графические средства         +    +      *     +     +     -     -
     Управление клавиатурой       +    -      -     *     +     -     -
     Математические функции       +    -      -     -     +     -     -
     Меню                         +    +      +     -     -     +     -
     Поддержка "мыши"             +    -      -     +     -     -     -
     Числовые преобразования      +    -      +     +     +     -     -
     Меню  с наложением           +    -      +     -     -     -     -
     Сортировка                   +    *      +     *     +     -     -
     Статистические функции       +    -      *     -     -     -     -
     Обработка строк              +    *      +     +     +     -     -
     Управление окнами            *    -      +     +     -     *     -
     -------------------------------------------------------------------
                 
          
                 Примечания к таблице
     
           Продукт                  Изготовитель
     ------------------------------------------------
     1. QuickPak Professional      Crescent Software
     2. QBase                         - " -
     3. ToolKit                    Exim
     4. ProBas                     Hammerly
     5. Finally! Subroutines       Komputerwerk
     6. Finally! Modules              - " -
     7. The Screen Generator       West Chester
     
     +  - реализовано
     *  - реализовано частично или с ограничениями
     -  - не реализовано
     #  - поставляется по требованию без дополнительной оплаты
                            
          Пакет программ, предназначенный для продажи, не говоря уже об
     огромных, экономящих время инструментариях, должен быть  простым в
     обращении.  Опытный  программист скорее напишет программу сам, чем
     станет пользоваться громоздким и запутанным покупным модулем. Кро-
     ме того, включение в модуль большого числа универсальных  процедур
     делает его слишком большим для конкретного приложения.
          Для пакета, включающего несколько сотен подпрограмм, докумен-
     тация особенно важна. Разработчик не должен просматривать руковод-
     ство  для  того,  чтобы по разбросанным и туманным ключам выяснить
     синтаксис вызова подпрограммы. Наличие руководства с краткими при-
     мерами, демонстрирующими  использование  подпрограмм,  значительно
     увеличивает  вероятность  того, что разработчик станет ими пользо-
     ваться. Примеры программ на дискете,  демонстрирующие  все  случаи
     использования программы, также являются ценными, не только с точки
     зрения обучения, но и потому, что исходный текст может быть непос-
     редственно включен в разрабатываемую программу.
          Для того, чтобы польза от  этих  программных  продуктов  была
     максимальной, требуется некоторое знакомство с редактором связей и
     программой-библиотекарем.  Особенно это касается случаев сочетания
     подпрограмм из разных библиотек с целью создания  специализирован-
     ных  библиотек для использования в среде QuickBASIC или на отдель-
     ном этапе  редактирования  связей.  Некоторые  из  рассматриваемых
     здесь инструментариев содержат подробное описание функций редакти-
     рования  связей  и  ведения библиотек, но в других предполагается,
     что пользователь знаком с этими функциями.
          Сотрудники нашего журнала оттранслировали и выполнили примеры
     программ, поставляемых с каждым из пакетов. Некоторые подпрограммы
     были проверены в среде специально разработанных для этого программ.
     Целью была проверка не только выполнения подпрограммой ее функции,
     но и последовательности вызова подпрограммы, описанной в  докумен-
     тации. Библиотеки  тестировались в среде QuickBASIC 4.0 на компью-
     терах Compaq Portable III и 386 Portable. Оба компьютера были заг-
     ружены операционной системой Compaq DOS 3.31.
          Все без исключения подпрограммы работали должным образом,  но
     некоторые  последовательности вызова были приведены в документации
     с  ошибками.  В  завершение  оценивалась служба сопровождения фир-
     мы-продавца библиотеки на основе по крайней мере одного  обращения
     за помощью. Если не находилось реальных вопросов, то для измерения
     качества ответа задавались разумные гипотетические вопросы.
          Crescent Software. Пакеты QuickPak Professional и QBase явля-
          -----------------
     ются высококачественными программными продуктами, которые предназ-
     начены для решения широкого спектра задач и могут оказаться полез-
     ными как для инженеров и служб сопровождения, так и для профессио-
     нальных  разработчиков. QuickPak Professional - это набор подпрог-
     рамм общего назначения, полезный при разработке  любой  прикладной
     программы, в то время как QBase представляет собой более специали-
     зированную библиотеку подпрограмм ведения баз данных и организации
     ввода информации с экрана. Начинающие  программисты   могут  полу-
     чить большую пользу от документации и примеров программ, при  сос-
     тавлении которых большое внимание было уделено обучению.
          QuickPak  Professional включает в себя 237 подпрограмм на ас-
     семблере и 84 подпрограммы и функции на Бейсике.  Библиотека  пос-
     тавляется  на трех дискетах объемом 360 Кбайт. Фирма Crescent при-
     водит исходные тексты только для программ на Бейсике (тексты прог-
     рамм на Ассемблере присылаются бесплатно по дополнительному  зап-
     росу).  Поставляются варианты библиотеки для версий QuickBASIC 2.0
     и 3.0. QuickPak Professional включает в себя процедуры для  работы
     с  массивами, функциями ДОС, обработки строк, математические функ-
     ции, подпрограммы управления изображением, организации меню,  под-
     держки  манипулятора  "мышь" и графической печати на принтерах се-
     мейства Epson и Hewlett-Packard LaserJet.  Некоторые  из  основных
     компонент программ позволяют также включить в прикладную программу
     средства редактирования текста и ведения электронных таблиц.
          Расширенные  средства пакета по работе с массивами включают в
     себя написанные на Ассемблере подпрограммы для  заполнения  целого
     массива или его части значениями, удаления и вставки элемента, по-
     иска  вхождений подстроки (с учетом или без учета различия заглав-
     ные/прописные) и нахождения  минимума  и  максимума.  Подпрограммы
     сортировки  -  достаточно  гибкие; они выполняют сортировки как по
     возрастанию, так и по убыванию, и также могут  учитывать  различие
     "заглавные/прописные".
          Многие  функции ДОС, включенные в QuickPak Professional, дуб-
     лируют функции Бейсика.  Все  подпрограммы  QuickPak  Professional
     возвращают  флаг ошибки, который может быть немедленно проанализи-
     рован вызывающей программой, в  отличие  от  случая  использования
     конструкции ON ERROR с присущим ей ветвлением программы. В резуль-
     тате программа становится более компактной и быстрее выполняется.
          В состав подпрограмм QuickPak Professional входят четыре  ма-
     тематические функции, не поддерживаемые стандартным QuickBASIC 4.0.
     Это  арккосинус, арксинус, четырехквадрантный арктангенс и обычный
     десятичный логарифм. Разработчик может пользоваться бухгалтерскими
     функциями (вычисление  размера  прибыли,  стоимости,  амортизации,
     ренты) в том виде, в котором они поставляются, или без особого тру-
     да изменить их исходный текст.
          Процедуры управления изображением включают несколько подпрог-
     рамм  для  отображения  рамок,  функцию  сохранения/восстановления
     изображения (в том числе для EGA и  VGA  адаптеров),  подпрограммы
     рисования,  не уничтожающие текст на экране, а также функцию прок-
     рутки изображения. Стоят упоминания подпрограммы организации меню,
     включающие программу множественного меню (multicolumn  menu),  до-
     полняющую  горизонтальные  меню (аналогичные меню системы Lotus) и
     вертикальные меню (принятые в разаработках фирмы Microsoft); подп-
     рограмму, эмулирующую меню выбора файлов транслятора QuickBASIC;
     подпрограмму, допускающую множественный выбор (она возвращает  ко-
     личество  выбранных пунктов и их идентификаторы). Меню управляются
     как клавиатурой, так и манипулятором "мышь".
          Система меню пакета QuickPak Professional отличается многоза-
     дачным режимом, в котором ожидание ввода пользователем  информации
     не  приостанавливает выполнение программы. В этом режиме программа
     продолжает работать после отображения меню, периодически опрашивая
     меню, чтобы определить, сделал ли пользователь выбор. Когда  прог-
     рамма  обнаруживает ввод информации пользователем, она приостанав-
     ливает мультизадачную процедуру и передает управление ветви,  свя-
     занной с выбранным пользователем пунктом.
          QuickPak Professional включает в  себя  простой  многооконный
     интерфейс,  который освобождает разработчика от необходимости хра-
     нить копии участков изображения. Привлекательной чертой его  явля-
     ется то, что при открытии окна не происходит стирание информации -
     подпрограмма автоматически запоминает порцию текста, размещенную в
     области  окна, перед его открытием. При закрытии окна первоначаль-
     ное содержимое участка экрана восстанавливается.  При  отображении
     текста требуется, чтобы вызывающая программа следила за  координа-
     тами окна во избежание наложения текста на окно.
          Входящие  в  пакет программы обработки строк выполняют его за-
     шифровку, замену символов и подстрок, перевод заглавные/прописные.
     В их число входит также программа - потомок функции  ASC  Бейсика,
     которая обрабатывает пустые строки без возникновения ошибок. Неко-
     торые  процедуры перехватывают управляющие символы и заменяют сим-
     волы псевдографики, образующие рамки, обычными символами ASCII пе-
     ред передачей текста на принтер.  В  пакет  QuickPak  Professional
     входит процедура-аналог функции LEN Бейсика, которая более компак-
     тна и значительно экономит память в программах обработки строк.
          Поскольку в пакете QuickBasic используется средняя модель па-
     мяти, сегмент данных является одним из ограниченных ресурсов,  ко-
     торый требует дополнительного внимания программиста. Для программ,
     запускаемых  в  виде EXE-модулей, QuickBasic выделяет один сегмент
     размером 64 Кбайт под все строки, числовые скаляры  и  статические
     массивы. Насыщенные строками программы быстро выходят за этот пре-
     дел.  Однако  QuickBasic  хранит  динамические числовые массивы за
     пределами сегмента данных. В QuickPak Professional входят процеду-
     ры преобразования массивов строк в динамические массивы целых  чи-
     сел, позволяющими освободить память для строк. Затем с помощью ко-
     манды  BSAVE можно быстро записать полученный целочисленный массив
     на диске.
          Процедуры редактирования текстов и  организации  "электронных
     таблиц", входящие в пакет, не соответствуют системам WordPerfect и
     Lotus 1-2-3. Тем не менее, они очень полезны в диалоговых приклад-
     ных программах, где конечный пользователь получает возможность до-
     бавить  при необходимости свой комментарий или выполнить некоторые
     промежуточные расчеты.
          Документация фирмы Crescent написана хорошо.  Основная  часть
     документации (около 350 страниц в пластиковом переплете) сопровож-
     дается учебником по Ассемблеру для начинающих (62 страницы) и бук-
     летом,  включающем  сведения об основных средствах и приемах прог-
     раммирования  на  Бейсике.  Инструкция  по  использованию   пакета
     QuickPak  Professional не требует близкого знакомства с Редактором
     связей и Библиотекарем и поэтому представляет собой  замечательный
     учебник,  прекрасно  дополняющий руководства по системе QuickBasic
     4.0.
          Cправочный раздел, в котором различные процедуры сгруппирова-
     ны  в  основном  по функциям, а не по алфавиту, следует за вводной
     учебной частью. Затем идет дополнительный учебный материал.  Фирме
     следовало  бы соединить учебные главы и добавить таблицы по каждой
     функциональной группе. И, наконец, в книге отсутствует  указатель,
     а в оглавлении некоторые страницы указаны неверно. Отсутствие ука-
     зателя  особо  не соответствует часто употребляемой авторами фразе
     "объясняется в другой части учебника", поскольку совершенно  непо-
     нятно где же все-таки искать нужное место.
          Недостатки учебника отчасти компенсируются разработчикам мно-
     гочисленными  примерами  программ,  иллюстрирующими  использование
     процедур. Комментарии в текстах программ представляют собой допол-
     нительную инструкцию и подчеркивают моменты, выделенные в учебнике.
          В дополнение к QuickPak Professional фирма Crescent предлага-
     ет другие наборы инструментальных средств для Бейсика, в том числе
     QBase - библиотеку процедур для построения реляционных СУБД. QBase
     поставляется на двух дискетах емкостью 360 Кбайт. Для  использова-
     ния процедур QBase не требуется иметь QuickPak Professional.
          В  качестве самостоятельной СУБД QBase не конкурирует с dBASE
     и ее семейством. Библиотека  заинтересует  разработчиков,  которым
     нужна  СУБД,  встроенная  в  прикладную программу и "пригнанная" к
     ней. QBase позволяет работать с четырьмя файлами, связанными с ос-
     новным файлом данных без ограничений  на  количество  связанных  в
     файлах  полей.  Пакет включает в себя основные средства управления
     реляционными базами данных за исключением генератора отчетов,  ос-
     тавляя  решение  этой  задачи разработчику. Поставляя QBase в виде
     библиотеки отдельных процедур, фирма Crescent облегчает  использо-
     вание  ее  прекрасных  средств ввода данных и управления экраном в
     приложениях, не связанных с управлением данными.
          Создание и управление экранной формой в QBase ведется  непос-
     редственно на экране. Понятная система разворачивающихся меню поз-
     воляет быстро составлять входные формы. При этом предусматривается
     установка  цветов  и  входной контроль значений полей. Разработчик
     может задать значения, принимаемые по умолчанию,  непосредственным
     вводом их в форму во время ее создания. Он может определить поля с
     выбором значений, тем самым предоставив пользователю меню допусти-
     мых значений поля.
          Разработчик  может  пометить  поля как ключевые для ускорения
     поиска. QBase кодирует символьные поля, преобразуя первые два сим-
     вола в целочисленный ключ. Интересной особенностью поцедуры индек-
     сирования QBase является то, что эта СУБД  подстраивает  индексные
     массивы к условиям функционирования прикладной системы. Если зада-
     но  несколько  индексов и они могут превысить ресурсы памяти прик-
     ладной системы, QBase загружает столько индексных файлов,  сколько
     может поместиться в памяти. Платой за такую настройку является за-
     медление поиска.
          Создание  экранной  формы  в  QBase включает в себя рисование
     различных рамок и линий, а также возможность создания  собственных
     экранов  помощи прикладной системы. Генератор экранных форм содер-
     жит также средства создания и ведения библиотек форм.
          При вызове подпрограмм QBase отображаются входные или  выход-
     ные  экранные формы. Синтаксис вызова логичен и очевиден. Програм-
     ма, осуществляющая ввод данных, проверяет  вводимые  пользователем
     значения  на  соответствие  критерию, указанному разработчиком при
     проектировании входной формы. Процедура возвращает допустимые зна-
     чения вызывающей программе через массив, содержащий по одному эле-
     менту на каждое поле ввода. Она определяет изменял ли пользователь
     входной экран и передает эту информацию вызывающей программе.
          Как и в QuickPak Professional, исходные тексты QBase на  Бей-
     сике  снабжены информативными примерами. Документация QBase предс-
     тавляет собой спартанский очерк на 80 страницах, но  написана  она
     хорошо  и  излагает основные понятия QBase. Однако описания многих
     процедур являются по меньшей мере поверхностными и требуют  изуче-
     ния  текста  программы-примера - к счастью, тексты программ хорошо
     документированы внутри. Персонал фирмы  Crescent  без  промедления
     отвечал  на пробные телефонные звонки в службу сопровождения и да-
     вал содержательные консультации.
          Exim  Services  of North America Inc. Пакет ToolKit фирмы Exim
          ------------------------------------
     имеет направленность на решение разнобразных  профессиональных  за-
     дач,  но может также заинтересовать программистов-непрофессионалов.
     Однако документация фирмы Exim содержит лишь  минимальные  сведения
     по  управлению пакетом и поэтому не годится тем, кто не знаком глу-
     боко с Редактором связей и Библиотекарем.
          94  процедуры  пакета  ToolKit  решают множество задач, в том
     числе управление изображением, работу с окружением ДОС, управление
     данными, управление памятью, операции с датами, ввод-вывод файлов,
     сортировки и преобразования общего назначения. Исходные тексты  не
     приводятся.  Пакет  поставляется  на  пяти  дискетах  емкостью 360
     Кбайт: двух дискетах для использования  в  среде  QuickBasic  4.x,
     двух - для среды транслятора IBM Compiled Basic 2.0 и одной с при-
     мером прикладной программы.
          Создание форм на экране не поддерживается. Процедуры управле-
     ния  экраном  пакета  ToolKit используют явно заданные в текстовом
     файле описания экранов. Хотя такой  подход,  напоминающий  прежние
     процедуры формирования экранных форм, работоспособен, он несравним
     с системами, построенными на принципах WYSIWYG. Поскольку преобра-
     зование описаний экрана в собственно экранную форму занимает много
     времени, фирма Exim включила в пакет процедуру, которая преобразу-
     ет  текстовые  файлы в формы, быстро отображаемые прикладной прог-
     раммой.
          Вызовы  генератора  экранных  форм  фирмы  Exim из прикладной
     программы могут осуществляться различными способами в  зависимости
     от требуемой функции. Данные, считанные процедурой контроля ввода,
     помещаются  в  одну  строку,  разложить  которую должна прикладная
     программа.
          Видеофункции пакета ToolKit включают в себя организацию окон,
     выдачу сообщений, рисование рамок,скоростной вывод на экран,очист-
     ку и восстановление экрана, скроллинг, печать экрана. Гибкая окон-
     нный  интерфейс  может одновременно работать с несколькими окнами.
     После того как некоторое окно открыто последующие вызовы  оконного
     интерфейса  направляют  вывод  и  прочие операции в это окно. Окно
     разрушает информацию, размещенную в его области  экрана,  оставляя
     чистое  место  после  закрытия.  Перед вызовом оконного интерфейса
     пользовательская программа должна сохранить перекрываемый  участок
     экрана и затем восстановить его после закрытия окна.
          Некоторые  процедуры  ToolKit поддерживают функции ДОС. Прог-
     рамма может отображать директории в виде меню, позволяя  пользова-
     телю выбирать нужный файл. Имена файлов, выбранные по определенно-
     му  шаблону,могут быть занесены в массив. Еще одна процедура опре-
     деляет количество файлов, соответствующих шаблону, и их  суммарный
     размер.  Другие  процедуры помогают программе определить состояние
     окружения ДОС.
          В ToolKit входят также процедуры, облегчающие разработку мно-
     гопользовательских систем управления данными для локальных  сетей.
     Эти процедуры включают в себя средства разделения доступа к файлам
     и блокирования записей. Файлы могут иметь размер до 16 Мбайт и со-
     держать  до  32767 записей. Учитывая, что выбор метода хеширования
     зависит от характеристик и распределения ключей, фирма Exim  вклю-
     чила  в  состав  пакета  исходный текст алгоритма хеширования так,
     чтобы разработчик мог настроить его на конкретное приложение.
          Exim не связывает различные программные  средства  управления
     базами  данных воедино, предоставляя эту задачу разработчику. Нап-
     ример, файлы данных не согласуются автоматически с  их  индексными
     файлами,  поэтому  добавление записи в файл данных не вызывает од-
     новременного добавления соответствующего индекса в индексный файл.
          Память для хранения строк часто является одним из самых  цен-
     ных  ресурсов, поэтому фирма Exim предлагает свою систему управле-
     ния памятью (Memory Manager), которая позволяет разработчику выде-
     лить до 256 Кбайт дополнительной памяти под строки. Выделение  па-
     мяти производится в пределах 640 Кбайт, поддерживаемых ДОС. Memory
     Manager выделяет память под строки блоками по 128 байт. При запро-
     се  на выделение памяти под строку Memory Manager присваивает каж-
     дой строке идентификационный номер. Впоследствии,  присвоив  пере-
     менной  строке  нуль-строку, разработчик освобождает память, выде-
     ленную Бейсиком переменной.
          После того как строка передана под управление Memory Manager,
     программа может менять ее при условии, что новое значение не  пот-
     ребует  большего  количества 128-байтных блоков, чем было выделено
     первоначально. Для работы с Memory Manager перед запуском  Бейсика
     необходимо  запустить  резидентную программу, резервирующую опера-
     тивную память. Эта память перестает быть доступной Бейсику.  Осво-
     бождает зарезервированную память отдельная программа.
          И, наконец, в пакет ToolKit входит 41 процедура общего назна-
     чения. Средства работы с датами дают разработчику возможность пре-
     образования  дат и операций над ними, в т.ч. вывод на экран кален-
     даря. Несколько процедур для работы с файлами возвращают  вызываю-
     щей программе код ошибки, позволяя обойтись без использования кон-
     струкции ON ERROR. Процедуры общего назначения выполняют сортиров-
     ку  целых и вещественных чисел, массивов строк с применением алго-
     ритма быстрой сортировки (Quicksort); центрирование строк и преоб-
     разования прописные/строчные; организуют  простые  меню;  содержат
     интерпретатор  сообщений  об  ошибках  для перевода кодов возврата
     различных процедур фирмы Exim. Все, кто разрабатывал программы для
     выписки чеков, оценят процедуру преобразования чисел в их  англоя-
     зычный словесный эквивалент.
          Документация в целом хорошая. За разделами, описывающими каж-
     дую из функциональных групп, следует справочный раздел с  перечис-
     лением  описаний  отдельных  процедур и их параметров. Несмотря на
     краткость, резюме к разделам сами по себе являются  хорошим  спра-
     вочным материалом. Каждое описание сопровождается древовидной схе-
     мой  взаимосвязей процедуры с другими процедурами пакета (если та-
     кие связи есть). В документацию входит список кодов возврата  про-
     цедур  и  список  соответствующих  сообщений. Учебник предполагает
     знакомство с Редактором связей и Библиотекарем. К сожалению, текст
     руководства набран в виде двухсторонних фотокопий страниц, которые
     легко выпадают из переплета.
          Польза документации снижена также многочисленными опечатками.
     К примеру, для передачи  массива  строк  A$  процедуре  сортировки
     XMSORTS учебник рекомендует использовать выражение:
          
          XMSORTS( FIRST%, LAST%, a$(1), ...).
          
          Правильным является вызов вида:
          
          XMSORTS( FIRST%, LAST%, a$( ), ...).
          
          При  вызове в соответствии с первым выражением происходит пе-
     редача значения первого элемента массива; во втором случае переда-
     ется весь массив.
          Разработчики могут обращаться за технической помощью в службу
     сопровождения в любое время (заявку принимает автоответчик). Фирма
     отвечает на запрос быстро и дает содержательную помощь. Фирма Exim
     выпускает также дополнительную библиотеку процедур  Net-Works  для
     создания  прикладных  программ  на  Бейсике,  взаимодействующих  с
     NETBIOS.
          Hammerly  Computer  Services  Inc. Мощный и высококачественный
          ---------------------------------
     пакет ProBas фирмы Hammerly Computer Services Inc. сходен с пакетом
     QuickPak Professional фирмы Crescent. Вместо финансовых  и  научных
     функций  в  него включено множество сложных процедур управления па-
     мятью и изображением, предназаначенных главным образом для  профес-
     сиональных  разработчиков,  но  обычным программистам в этом пакете
     тоже многое может понравиться.
          Из  232 процедур, входящих в пакет ProBas 2.0, только 6 напи-
     саны не на Ассемблере. Процедуры позволяют определить конфигурацию
     системы, управлять памятью, экраном, работать с директориями, фай-
     лами (в том числе и в сетевом  режиме),  использовать  манипулятор
     "мышь". ProBas поставляется на двух дискетах емкостью 360 Кбайт.
          Функции  оборудования,  входящие  в  пакет  ProBas, позволяют
     программе определить конфигурацию системы, в которой она  выполня-
     ется,  и  изменить окружение ДОС. Программа может определить такие
     параметры, как тип монитора, режим экрана для систем с  адаптерами
     MDA,  CGA  и  EGA  (но не VGA). Другие процедуры проверяют наличие
     свободного места на диске, наличие  манипулятора  "мышь",  наличие
     дополнительных плат оперативной памяти.
          В ProBas входит мощный набор процедур для преодоления ограни-
     чений  по  памяти,  связанных  с  использованием QuickBASIC и ДОС.
     Программа может передавать информацию из символьных строк в  дина-
     мические  целочисленные массивы и обратно. Строки, входящие в мас-
     сив, трактуются аналогично записям в файле прямого доступа.
          Другие процедуры ProBas могут сортировать массивы  целых  чи-
     сел. В случаях, когда объем сортируемых данных превышает доступный
     объем памяти в пакете используется сортировка указателей. Возможна
     сортировка  по  возрастанию  и убыванию, а также с учетом различия
     прописные/строчные. Другие процедуры ProBas позволяют  манипулиро-
     вать блоками данных в оперативной памяти.
          Разработчики могут превышать предел ДОС по памяти (640 Кбайт)
     и  использовать  дополнительную  память  для хранения массивов или
     файлов на виртуальном диске. Процедуры ProBas для управления экра-
     ном используют дополнительную память для хранения всех или некото-
     рых копий экрана. Учитывая, что в случае монохромного адаптера эк-
     ранная память не организована постранично, фирма Hammerly  предла-
     гает  средства  поддержки виртуальных экранов. Виртуальный экран -
     это динамический массив, рассматриваемый так, как если бы это была
     страница экранной памяти. Используя виртуальные экраны в сочетании
     с расширенной памятью, разработчики могут создавать несколько  со-
     тен виртуальных экранных форм. Программа может создавать множество
     виртуальных экранов и затем мгновенно их выводить.
          Прямой вывод на экран,использованный в пакете ProBas, спасает
     от  медлительности,  присущей  вызову Бейсиком BIOS при выполнении
     команды PRINT. Программа может осуществлять прямой вывод на графи-
     ческий экран. при этом координаты вывода  указываются  в  терминах
     строк  и столбцов, рпинятых при выводе в текстовом режиме. Для вы-
     вода в графическом режиме разработчик может также указать ширину и
     высоту символов.
          Две черты оконного интерфейса выгодно отличают  пакет  ProBas
     от  других  пакетов, рассматриваемых в этом обзоре. Во-первывх, он
     может открывать окно так, что кажется будто оно взрывается на  эк-
     ране,  вырастая из маленькой точки до своего полного размера. Раз-
     работчик не может управлять скоростью разворачивания  окна,  разве
     что  включая или выключая защиту от "снега". на компьютерах с так-
     товой частотой 25 МГц эффект "взрыва" не так заметен, но на многих
     машинах он производит впечатление. Другой уникальной  особенностью
     является  падающая  от  окна тень, вызывающая иллюзию трехмерности
     изображения.
          В отличие от пакета  QuickPak  Professional  фирмы  Crescent,
     оконный  интерфейс пакета ProBas не восстанавливает первоначальное
     состояние экрана после закрытия  окна.  Содержимое  экрана  должна
     сохранять и восстанавливать вызывающая программа. Однако процедура
     автоматически  (без дополнительных усилий со стороны программиста)
     ограничивает поле ввода рамками окна. Другие процедуры пакета поз-
     воляют выполнять скроллинг любого участка экрана в любом направле-
     нии.
          Функции работы с директориями и файлами  позволяют  программе
     читать  и искать директорию и получать подробную информацию о фай-
     ловой системе, в том числе об именах скрытых, системных  файлов  и
     поддиректорий.  В  этих  функциях  могут быть использованы шаблоны
     имен с символами "*" и "?".
          Управление файлами в ProBas имеет преимущества по сравнению с
     аналогичными функциями Бейсика: процедуры возвращают код  заверше-
     ния,  поэтому  не  требуется применять конструкцию ON ERROR. Пакет
     может считывать и записывать сразу большие блоки данных, обеспечи-
     вая тем самым более  быстрый  доступ,  чем  в  Бейсике.  Процедуры
     ProBas, работающие с файлами, могут функционировать в сетевой сре-
     де.
          Поддержка манипулятора "мышь" в пакете ProBas включает в себя
     процедуры, определяющие наличие "мыши", проверяющие были ли нажаты
     кнопки манипулятора и держится ли кнопка нажатой. Другие процедуры
     включают  и выключают курсор "мыши", устанавливают и считывают его
     положение на экране, а также задают границы его перемещения.  Про-
     цедуры  позиционирования курсора входят в пакет в двух видах: одна
     работает как в текстовом, так и в  графическом  режиме,  используя
     координатную  сетку 640*200, а другая применима только в текстовом
     режиме и использует обычные координаты 80 столбцов * 25 строк. При
     том, что "мышь" используется большей частью  в  текстовом  режиме,
     текстовый пособ вызова значительно упрощает разработку подпрограмм
     управления "мышью".
          Функции  обработки строк пакета ProBas удаляют пробелы слева,
     справа, с обеих сторон строки и удаляют один или несколько  симво-
     лов из строки.
          Процедуры  ввода  включают  используют  опеределенные нажатия
     клавиш, которые позволяют обойтись без громоздких подпрограмм про-
     верок с помощью функции INKEY$. Одна процедура ввода близка к про-
     верке нажатия клавиши, но  позволяет  перенаправить  вводтак,  что
     программа  может считывать информацию не с клавиатуры, а из файла.
     Есть несколько процедур контроля ввода, сравнивающих  входную  ин-
     формацию с заданным разработчиком набором символов. Процедура вво-
     да  одного поля позволяет установить значение "по умолчанию", про-
     веряет вводимые символы на наличие управляющих символов  и  знаков
     псевдографики,  а также позволяет пользователю корректировать вво-
     димое значение. В пакет  ProBas  не  входит  встроенный  генератор
     входных экранных форм (фирма поставляет его отдельно).
          К  числу других функций пакета относятся процедуры, проверяю-
     щие наличие системы DoubleDOS фирмы SoftLogic Solutions и оболочек
     типа IBM TopView (кроме оболочки DESQview фирмы Quarterdeck). Одна
     из процедур выполняет переключение подзадач в среде DoubleDOS.
          Большинство процедур пакета ProBas работает с  любой  версией
     пакета QuickBASIC или BASCOM, за исключением случаев, отмеченных в
     документации.  Фирма  Hammerly приводит исходные тексты только для
     процедур, написанных на Бейсике.  Кроме  того,  приведен  исходный
     текст  великолепной программы демонстрации, которая выполняет роль
     дополнительного учебника по процедурам пакета. Hammerly не  приво-
     дит исходные тексты своих процедур, написанных на Ассемблере.
          Объемистый  учебник  написан от первого лица красочным разго-
     ворным языком, выполняя поставленную автором цель не быть "слишком
     сухим и техническим". В текст, занимающий около 600 страниц, вклю-
     чено обсуждение философии фирмы Hammerly относительно стиля  прог-
     раммирования  на Бейсике. Это может не понравиться некоторым чита-
     телям, в частности, сторонникам QuickBASIC 4.0., который  в  книге
     является  объектом  частых нападок. Тем не менее, начинающий прог-
     раммист получит пользу от большей части этой информации.
          Подробно освещаются вопросы создания библиотек и редактирова-
     ния связей. Примерно половину тома занимает  великолепный  учебный
     материал, который ведет разработчика по типичным случаям использо-
     вания  процедур  ProBas.  В  справочный раздел включен алфавитный
     список всезх процедур и ясные примеры (стоило бы привести и образ-
     цы выходной информации для этих примеров). В  учебник  входят  как
     оглавление, так и предметный указатель.
          Однако, как и в других рассматриваемых пакетах, в целом хоро-
     шая  документация  подпорчена  в  нескольких  местах типографскими
     ошибками и опечатками. Вдобавок, переплет оказался слишком малень-
     ким для такого количества страниц.
          К моменту публикации этой статьи на рынке появится новая вер-
     сия пакета ProBas (стоимостью 135 долларов), содержащая более  350
     процедур.  Новая  документация  будет избавлена от упомянутых выше
     недостатков. Телефон службы сопровождения фирмы Hammerly  работает
     с 9 часов утра до 6 часов вечера. На все поставленные вопросы были
     получены вежливые и правильные ответы.
          Komputerwerk Inc. Библиотеки  Finally!  A  Subroutine  Library
          ----------------
     (FSUB) и Finally! Modules (FMOD) фирмы Komputerwerk Inc. предназна-
     чены скорее для начинающего программиста, чем для профессионального
     разработчика,  хотя многие процедуры пригодятся обоим. Тем, кто ра-
     зочарован скудостью встроенных математических  функций  QuickBASIC,
     покажутся    привлекательными    математические   процедуры   фирмы
     Komputerwerk.
          FSUB представляет собой набор из 194 подпрограмм  и  функций,
     поставляемых  на  пяти  дискетах емкостью 360 Кбайт. Большая часть
     процедур написана на Бейсике. Их дополняют 18 программ на  Ассемб-
     лере.  Для  каждой  программы приведены исходный текст и объектный
     модуль. Задачи, решаемые библиотекой FSUB, включают в себя  преоб-
     разование  даты и времени, управление файлами и директориями, гра-
     фику, аппаратный интерфейс, математические процедуры, преобразова-
     ние чисел, сортировки, обработку символьных строк. Некоторые  про-
     цедуры приводятся в двух формах - обычной DEF FN....END FN, встра-
     иваемой  в  текст  программы  на  Бейсике,  и  в виде подпрограммы
     FUNCTION для раздельной трансляции.
          Просмотр содержания библиотеки выявляет  несколько  необычных
     моментов.  Преобразования даты и времени включают вычисление висо-
     косных лет в дополнение к обычному преобразованию дня,  месяца  и
     года к целым числам. Пакет включает также процедуры распечатки эк-
     рана в текстовом и графическом режимах для принтеров классов Epson
     и IBM Proprinter. Особый интерес представляют процедуры формирова-
     ния  линейных  и круговых диаграмм,а также сетевых графиков. Хотя
     вывод этих процедур груб по сравнению с выводом специализированных
     графических программ, процедуры фирмы Komputerwerk дают интересную
     начальную точку для разработчиков, желающих писать свои  программы
     деловой графики.
          математические  процедуры  обеспечивают разработчика тригоно-
     метрическими функциями, которых нет в  QuickBASIC  4.0:  секансом,
     косекансом,  котангенсом,  арксинусом, арккосинусом, арксекансом и
     арккотангенсом. Подобно функциям QuickBASIC эти дополнения исполь-
     зуют радианную меру. Инженеры и ученые также оценят  гиперболичес-
     кие  и  обратные гиперболические функции. Кроме того, в библиотеку
     FSUB входят различные преобразования по произвольному основанию, а
     также преобразования в символьные строки. Завершают список матема-
     тических функций процедуры округления.
          Возможности библиотеки FSUB по  обработке  массивов  включают
     вычисление  среднего  для одномерных и двумерных массивов и четыре
     процедуры сортировки (по алгоритму пузырьковой сортировки, включе-
     ния, выбора и по методу Шелла) для массивов чисел и строк.
          Функции управления экраном обеспечивают быстрое центрирование
     текста, рисование рамок, сохранение и восстановление экрана, очис-
     тку его произвольного участка. В дополнение  две  программы  ввода
     данных с экрана позволяют организовать запрос данных у пользовате-
     ля. Разработчик создает входную экранную форму, используя операто-
     ры вывода для размещения подсказок пользователю. Программа вызыва-
     ет процедуру ввода данных для каждого поля в отдельности. При этом
     передаются  размещение  поля на экране, длина поля, допустимые для
     значения символы и символы, означающие конец ввода. Заметим, одна-
     ко, что такой подход позволяет строить только элементарные  взход-
     ные формы.
          Пакет Finally! Modules (FMOD) фирмы Komputerwerk обеспечивает
     построение более сложных входнывх экранных форм. Для использования
     FMOD  необходимо подключать библиотеку FSUB. В дополнение к форми-
     рованию и работе с входными формами FMOD содержит процедуры  орга-
     низации вертикальных и горизонтальных меню, экранов подсказок, ра-
     боты  с  директориями.  FMOD  поставляется на четырех дискетах ем-
     костью 360 Кбайт.
          Формирование экрана в пакете FMOD близко к методу  WYSIWYG  в
     том,  что может использоваться любой текстовый редактор для разме-
     щения пояснительного текста и указания координат полей на  экране.
     Открывающая скобка обозначает начало поля на экране, а специальный
     управляющий  символ  показывает  конец  поля. Например, символ N в
     конце поля обозначает, что процедура ввода для этого поля  воспри-
     нимает только символы для записи чисел.
          После  создания  входной формы разработчик сканирует ее с по-
     мощью специальной программы, входящей в пакет FMOD. Эта  программа
     преобразует  входную форму в таблицу, содержащую координаты, длины
     и атрибуты полей, а также весь поясняющий  текст,  который  должен
     быть  отображен на экране. Таблица занимает в памяти меньше места,
     чем заняла бы экранная форма целиком. Во время сканирования разра-
     ботчик может корректировать некоторые параметры формы для установ-
     ки порядка заполнения полей и изменения атрибутов допустимых  зна-
     чений.  Однако  любое  изменение  расположения полей и поясняющего
     текста требует нового вызова текстового редактора и, поэтому, пот-
     ребует повторного сканирования.
          Вызов программы, управляющей экраном, прост и легок для пони-
     мания. Во время работы этой программы происходит  сверка  вводимых
     пользователем значений с шаблонами. Если обнаруживается несоответ-
     ствие  шаблону,  вводимые  данные отвергаются. Вдобавок к контролю
     ввода процедуры FMOD могут помещать определенное разработчиком со-
     общение в нижнюю строку экрана по мере того как пользователь пере-
     ходит от одного поля к другому. Если введенное значение соответст-
     вует шаблону, оно передается вызвавшей программе через  массив,  в
     котором  каждому  полю ввода соответствует один элемент, поэтому в
     дальнейшем анализе входных значений нет необходимости.
          Модули организации вертикальных и горизонтальных меню рассчи-
     таны на поддержку манипулятора "мышь" и легко встраиваются в прог-
     раммы. Расположение меню на экране произвольно и не разрушает  со-
     держимое экрана, поскольку оно восстанавливается сразу после выхо-
     да из меню. Пользователь делает выбор в меню либо при помощи пере-
     вода  курсора (выделенной цветом строки) на нужный пункт, либо на-
     жатием клавиши, соответствующей первой букве нужного пункта,  либо
     нажатием функциональной клавиши, которую определил для пункта раз-
     работчик.  Разработчик  же  задает  начальный  пункт меню, то есть
     пункт, на который устанавливается курсор при вызове меню.
          Модуль  организации  экранов  подсказок  включает  в себя два
     EXE-файла, которые создают меню подсказок и объединяют их в двоич-
     ные библиотеки подсказок. Программа создания меню позволяет  уста-
     навливать  цвет символов, фона и рамок. Одновременно могут отобра-
     жаться до пяти меню подсказок (одна библиотека может содержать  до
     99  резидентно  хранящихся меню); программа может использовать при
     необходимости большее количество библиотек. Разработчик имеет воз-
     можность указать место вывода меню или предоставить  решение  этой
     задачи  процедуре  пакета FMOD. Для восстановления первоначального
     состояния экрана меню должны удаляться в порядке, обратном порядку
     появления.
          Используя модуль управления директориями,  разработчик  может
     дать  пользователю возможности ДОС по работе с файлами без необхо-
     димости обращения к оболочке BASIC SHELL. Пользователи могут  уда-
     лять  и  переименовывать файлы, просмотреть первую страницу файла,
     указать имя дисковода и директорию, которую надо найти.  Процедура
     отображает  список файлов, из которых пользователь выбирает нужный
     файл перемещением подсвеченной строки. Процедура передает  резуль-
     тат выбора вызывающей программе.
          Оба пакета фирмы Komputerwerk снабжены хорошо  организованной
     высококачественной документацией. Имена файлов процедур библиотеки
     FSUB упорядочены по алфавиту и, кроме того, снабжены ссылками, что
     облегчает  поиск нужной процедуры. Документация по пакету FMOD ис-
     пользует таблицы, в которых каждому модулю соответствует отдельная
     часть. Оба руководства предполагают знакомство разработчика с  Ре-
     дактором связей и Библиотекарем.
          Что  касается  недостатков, то учебник по библиотеке FSUB со-
     держит несколько неправильных написаний и искажений текста,  кото-
     рые  умаляют  его  всеобъемлющее  качество. Авторы непреднамеренно
     включили юмористическую нотку, перечислив процедуры перевода  тем-
     ператур в раздел геометрических функций (возможно, некоторые термо-
     метры  проградуированы в радианах?). Дистрибутивные дискеты содер-
     жат несколько процедур на Ассемблере, не упомянутых  в  документа-
     ции.  К сожалению, в оглавлении авторы пошли еще дальше, сообщая о
     процедурах, которые нельзя найти нигде - ни в документации, ни  на
     дистрибутивных дискетах. Такие противоречия огорчительны.
          Руководство  по  пакету  FMOD  содержит избыточные разделы, в
     частности, в описании модуля управления экраном. Существенным  не-
     достатком  этого же раздела является отсутствие описания того, как
     вывести информацию на экран до вызова программы  управления  экра-
     ном.  К  счастью,  правильная последовательность вызывающих команд
     приведена в примерах программ, включенных в пакет. И, наконец, пе-
     репутаны названия таблиц в разделе, посвященном организации меню.
          Нужно отдать должное фирме Komputerwerk, которая  включила  в
     пакет  FSUB  исходные тексты процедур как на Бейсике, так и на Ас-
     семблере. Способность проанализировать исходный текст  бывает  за-
     частую  очень  полезна, когда разработчик принимает решение об ис-
     пользовании процедуры. Кроме того, это позволяет "подогнать" алго-
     ритм к конкретному случаю. Фирма Komputerwerk приводит также вклю-
     чаемые (include) файлы описаний функций и  подпрограмм  для  среды
     QuickBASIC. Для процедур пакета FMOD исходные тексты не приводятся.
          Многочисленные примеры программ пакета FSUB предназначены для
     обучения  разработчиков путем демонстрации типичных вызовов проце-
     дур. Образцы программ пакета FMOD более сложны, но,  впрочем,  они
     не перегружены изощренным программированием. Учебная ценность нес-
     кольких примеров немного снижена тем, что имена параметров вывзова
     в  примерах  и  документации не совпадают. Хотя это и не влияет на
     работоспособность программ, несоответствие мешает  соотнести  ком-
     ментарии учебника с текстами примеров.
          Наибольшим  недостатком продуктов компании Komputerwerk явля-
     ется политика фирмы в части сопровождения. Техническое  сопровожде-
     ние  осуществляется по телефону по жесткой таксе 50 долларов в час
     с оплатой не менее часовой консультации. Персонал службы сопровож-
     дения требует сообщить номер кредитной карточки до ответа даже  на
     простой  вопрос.  На письменные запросы фирма отвечает по принципу
     "по мере возможности". Такая политика равносильна очень ограничен-
     ному сопровождению или его отсутствию.
          The West Chester Group. Пакет The Screen Generator  фирмы  The
          ----------------------
     West  Chester  Group  является гибким инструментом, предназначенным
     исключительно для создания и применения входных и выходных экранных
     форм. Стоимость пакета 79 долларов. Поскольку пакет разработан  для
     использования в разных языковых средах, он должен привлечь внимание
     фирм, ведущих разработки на нескольких языках программирования.
          Пакет работает в среде интерпретатора Бейсика фирмы IBM  и  с
     трансляторами  Бейсика  (в  том числе TurboBasic фирмы Borland), в
     среде Фортрана (IBM, Lahey, Microsoft), Си (TurboC фирмы  Borland,
     Lattice C,  Microsoft 5x,  Microsoft QuickC),  Кобола (MicroFocus,
     Microsoft, Realia, Ryan-McFarland ), Паскаля (TurboPascal 4.0 фир-
     мы Borland) и Клиппера фирмы Nantucket. Пакет  включает  отдельные
     интерфейсы  и  примеры программ для каждого языка. Поддержка среды
     QuickBASIC включает в себя BAT-файлы для создания библиотек. Пакет
     состоит из двух основных частей - программы Screen Painter и прог-
     раммы Screen Manager. Фирма поставляет пакет на трех  дискетах  по
     360 Кбайт. Исходные тексты программ не приводятся.
          Создание  экранных форм ведется непосредственно на экране при
     помощи  программы  Screen  Painter,  которая  представляет   собой
     EXE-файл,  запускаемый вне среды прикладной программы. Разработчик
     создает форму, выбирая в меню нужные цвета и графические  символы.
     Простые средства редактирования позволяют разработчику перемещать,
     копировать  и  удалять  текстовые и цветовые блоки. Функция отмены
     восстанавливает состояние экрана до выполнения  последней  функции
     редактирования.  Разработчик может вводить текст в любом месте эк-
     рана. Расположение полей определяется вводом символа  #  в  нужной
     позиции экрана.
          После  создания первоначального вида экранной формы программа
     Screen Painter запрашивает информацию о типах полей. При этом  для
     каждого поля отображается таблица описания поля (ТОП). Разработчик
     указывает длину поля, его шаблон и формат. Поля могут быть помече-
     ны таким образом, что при завершении конечным пользователем работы
     с полем прикладная программа автоматически передает управление вы-
     зывающей  процедуре.  ТОП  выводится  в различных участках экрана,
     чтобы не закрывать поле, с  которым ведется работа, - красивое ре-
     шение.
          Экранные формы накапливаются в библиотеках.  В  пакет  входит
     программа-библиотекарь, помогающая разработчику следить за состоя-
     нием форм.
          При том, что экранные формы при помощи этого пакета создаются
     сравнительно  просто, процедуры для работы с формами оставляют же-
     лать много лучшего, в основном из-за организации вызова процедур и
     состояния документации. Продаваемая версия пакета  требует,  чтобы
     до  вызова  была запущена резидентная программа SGX.EXE. Для того,
     чтобы вызовы процедур отрабатывались нормально,  SGX  должна  быть
     запущена  перед запуском QuickBASIC. Затем отдельный EXE-файл уда-
     ляет SGX из оперативной памяти.
          Во введении к учебнику фирмы West Chester программиста призы-
     вают "поиграться" с примерами экранных форм, чтобы самому почувст-
     вовать возможности программы. Однако в учебнике приведена процеду-
     ра запуска, в которой отсутствует предварительный запуск SGX.
          В качестве альтернативы разработчик может  приобрести  за  49
     долларов  объектный  модуль  SGX.OBJ. Напомним, что редактирование
     этого файла с прикладной программой избавляет от необходимости за-
     пуска резидентной версии.
          Способ вызова программы Screen Manager  выглядит  громоздким.
     Учебник утверждает, что при вызове нужно передавать только 7 пара-
     метров.  Однако  сами передаваемые параметры зачастую представляют
     собой конкатенации меньших параметров. Например, приводится  вызы-
     вающая последовательность для отображения экрана:
          
          CALL SG(oper$, lib$, scrn$, drive$, scb$, fdtbase$, status$)
          
          Строка scb$ формируется путем конкатенации  девяти  самостоя-
     тельных  строк-параметров перед вызовом SG. Длины полей и их коор-
     динаты передаются программе SG не как числа,  а  как  коды  ASCII.
     Например,  20-символьное поле в 7-ой строке, 12-ом столбце опреде-
     ляется конкатенацией CHR$(20)+CHR$(7)+CHR$(12).
          Использование программы Screen Manager требует последователь-
     ных вызовов SG,- одного для отображения экранной формы, второго  -
     для  считывания  данных.  SG  может считать значения всех полей за
     один вызов или считывать их по одному. При  вызове  на  считывание
     проверенные  значения передаются вызывающей программе через буфер-
     ную символьную строку. Вызывающая программа должна  разложить  эту
     строку  на  составные части и выполнить при необходимости числовые
     преобразования. В число других функций, которые могут быть выполне-
     ны при вызове модуля SG, входят загрузка библиотек и  их  удаление
     из оперативной памяти, корректировка ТОП, сортировка ТОП, вывод на
     экран и проверка нажатия клавиши.
          Документация  фирмы West Chester представляет собой тоненькую
     брошюру в пластиковом переплете. В некоторых  местах  без  видимых
     причин  выбран  слишком маленький шрифт. Примеры вызовов приведены
     для Бейсика, Си и Фортрана. Пример программы на дискете  представ-
     ляет  собой  сложный сплав функций работы с меню и отображения эк-
     ранных форм, впечатляюще демонстрирующих возможности пакета Screen
     Generator. Польза могла быть большей, если бы  вызовы  в  примерах
     программ совпадали с описанными в руководстве.
          Заявки  разработчиков  по  поводу оказания технической помощи
     принимаются фирмой через автоответчик. Персонал West Chester Group
     ответил на тестовые заявки на следующий день, дав точные ответы на
     все вопросы.
          
          
                                Выбор процедуры
          
          Трудно отдать предпочтение какому-то одному из  этих  инстру-
     ментариев,  поскольку несмотря на некоторые пересечения, каждый из
     пакетов имеет свои уникальные по возможностям процедуры. Несомнен-
     но, что разработчики должны учитывать как ближайшие, так и ожидае-
     мые потребности в инструментарии. Но даже если функциональные воз-
     можности пакетов перекрываются, стоит приобрести несколько из них,
     чтобы получить в результате возможность выбора из тысяч  возможных
     лучших частей каждого пакета.
          И  ProBas  фирмы  Hammerly,  и  QuickPak  Professional  фирмы
     Crescent сочетают в себе обширные наборы ассемблерных  процедур  с
     понятной  документацией,  делая  их, безусловно, наиболее ценными.
     Эти продукты оценят и профессионал, и  новичок.  Исходные  тексты,
     включенные фирмой Crescent, являются определенным преимуществом. В
     то же время, процедуры фирмы Hammerly для работы с расширенной па-
     мятью и виртуальными экранами - это мощный инструмент.
          Высокую  ценность  имеет и пакет ToolKit фирмы Exim, несмотря
     на меньший набор функций и менее понятную документацию. Для бесст-
     рашных программистов, которых не  пугает  ростовщическая  политика
     фирмы  Komputerwerk  в области сопровождения, библиотекав Finally!
     тоже предложит немало полезных функций за умеренную плату.
          Более специализированный пакет QBase  фирмы  Crescent  явится
     выгодным  приобретением для разработчиков, нуждающихся в реляцион-
     ной базе данных средних размеров. Пакет содержит также  великолеп-
     ный  генератор входных форм и программы входного контроля, которые
     применимы и для прикладных программ, не связанных с базами данных.
     Пакет Finally! Modules фирмы Komputerwerk содержит  несколькоочень
     удачно  разработанных процедур; однако его стоимость в сочетании с
     необходимостью приобретения библиотеки Finally!A Subroutine Library
     снижает его ценность.
          Несмотря  на  ограниченный  набор  функций,  пакет The Screen
     Generator фирмы West Chester очень гибок и его  применение  значи-
     тельно целесообразнее самостоятельной разработки процедур создания
     входных форм и контроля ввода. Разносторонние интерфейсы этого па-
     кета хорошо послужат в разработках, ведущихся на нескольких языках
     программирования, но для приложений, написанных только на Бейсике,
     это не лучший выбор.
          Каждый  из этих инструментариев для Бейсика хорошо функциони-
     рует. Пакеты различаются прежде всего количеством и характером вы-
     полняемых функций, а также качеством документации. Каждый из паке-
     тов является выгодным с точки зрения времени, которое бы понадоби-
     лось разработчику, чтобы собрать что-либо подобное "с нуля". Поль-
     зуясь одним из этих инструментариев, Вы сбережете  немало  времени
     (и  денег)  и,  в то же время, значительно поднимете уровень Вашей
     проектной среды на Бейсике.


Яндекс цитирования