Text
                    н. н. смирнов
ПРОГРАММНЬIЕ
СРЕДСТВА
ПЕРСОНАЛЬНЬIХ
эвм
Ленннград «Машиностроение»
Лешшградское отдеJiение, 1990


ББК 32.973 С50 УДК 519.6 С50 Рецензент канд. техн. наук С. Н. Баранов Смирнов Н. Н. - Программные средства персональн-ых Л.: Машиностроение. Ленингр. отд-ние, 272 с., ил. ISBN 5-217 -00029-5 эвм. - 1990.- Содержится краткое описание основных наиболее популяр­ ных программных средств персональных ЭВМ отечественного и зарубежного производства. Даются рекомендации по адаптации программных средств, организации диалога с конечными поль­ зователями, созданию собственной инструментальной среды. Для ИТР и экономистов. С 2404040-000 -988 l(Б 34 _ 24 _ 89 038 (01)-90 ББI( 32.973 ПРОИЗВОДСТВЕННОЕ ИЗДАНИЕ Смирнов Николай Николаеви'I ПРОГРАММНЫЕ СРЕДСТВА ПЕРСОНАЛЬНЫХ ЭВМ Редактор Н. В. Сергеева Художественный редактор А. Н. Волкогонова Технический редактор Т. П. Малащкина Корректор В. В. Ру,11янцев Переплет художника А. И. Бородина ив No 6742 Сдано в набор 29.11.89. Подписано в печать 18.01.90. М-15512. Формат 84Х Х108 1 /.,. Бумага типографская No 2 Гарнитура литературная. Печать вы­ сокая. Усл. печ. л. 15,12 (в т. ч. вкл. 0,84). Усл. кр.-отт. lli,38. Уч .-изд. л. 16,27 (в т. ч. вкл 0,9). Тираж 112 ООО экз. Заказ 896. Цена 1 р 20 к. Ленинградское отделение ордена Трудового Красного Знамени издательс1nа «Машиностроение», 191Uб5, Ленинград, ул. Дзержинского, 10. Типография N• 6 ордена Трудового Красного Знамени издательства «Машино• строение» при Государственном комитете СССР по печати 193144, Ленинград, ул. Моисеенко, 10. ISBN 5-217-00029-5 © Н. Н. Смирнов, 1990
ПРЕДИСЛОВИЕ Когда я принес эту книгу в издате.1ьство, первое, о чем меня спросили, - для ~юго она 1iаписана? Если для программистов, то некоторые разделы нужно расширить, а другие сократить. Ест, не для прсграммистов - то наоборот . .Я пытался объяснить, что программные средства персональной ЭВМ - это нечто такое, что всегда захваты­ вающе интересно и для новичка, и для профессионала. Объяснять приходилось многим, и тогда я решил написать это предисловие. Программные средства персональных ЭВМ - что это такое? Каждому хорошо известно, что программы для ЭВМ создаются уже несколько десятилетий. По мере естественного развития вычислительной техники создава­ лись и все более мощные программы, однако переход на очередное поколение ЭВМ не приводи.1 к принципиальным переработкам уже существующих программ. Более того, считалось разумным конструкторам машин и програм­ мистам придерживаться максимальной преемственности с тем, чтобы дорогое программное обеспечение старых машин w.огло использоваться и на новых. Появление персона·льных ЭВМ (ПЭВМ) полностью изменило все привычные представления. Широчайшая область приме­ нения ПЭВМ потребовала создания принципиально новых программных средств. И эти средства легко узнаваемы, так как они несут в себе некоторые общие черты, позволяю­ щие безошибочно выделять их из любого множества программ, подобно тому, как мы легко можем отличить рисунок, выполненный профессионалом, от упражнений ребенка. Если просто. продолжить эту аналогию и сказать, что программное средство, ориентированное на работу с конечным пользователем (так именуют почему-то пользо­ вателя-непрограммиста), есть произведение искусства, - )* 3
это никого не удивит, поскольку о своем труде програм­ мисты всегда выражались несколько высокопарно. И тем ве менее это так, хотя требует существенных уточнений. В эру, предшествовавшую появлению персональных ЭВМ, изящные решения в программе могли вызывать эстетическое чувство лишь у нескольких десятков специа­ листов (своего рода элитарная культура), теперь же вос­ приятие достоинств программных средств становится, так и хочется сказать, «доступным миллионам». Однако здесь речь не может идти о противопоставлении элитарной и массовой культур, а скорее о формировании новой культуры, одинаково интересной и профессионалам, и любителям. И эта культура создается у нас на глазах как синтез науки, техники и искусства. Чтобы не быть голословными, рассмотрим краткую историю создания персональных ЭВМ. Общепринято счи­ тать, что создателями первой персональной ЭВМ являются два двадцатилетних студента колледжей США Стив Джобс и Стив Возняк. Это происходило так. До 1976 года самой доступной ЭВМ являлся микрокомпьютер Altair, однако, чтобы сде­ лать на этой машине что-либо полезное, требовалось при­ обрести дополнительные устройства. В итоге цена комплек­ та возрастала существенно. Три тысячи долларов студен­ там колледжа было «не поднять», поэтому Стив Возняк, несомненно гениальный изобретатель и программист, решил собрать машину самостоятельно, используя наборы радиолюбителя «сделай сам». Следует сказать, что студенты имели неплохую подготовку - Джобс работал в фирме «Атари» (Atari), а Возняк - в «Хьюлит Паккард» (Hewlett Packard). Созданная машина включала в себя клавиатуру, бт,з­ кую к клавиатуре печатной машинки, и системный блок, реализованный на одной плате. Все это легко размещалось в «дипломате». Первоначально информация отображалась на подключаемом бытовом телевизоре, а затем были разра­ ботаны программно-аппаратные средства и к компьютеру был подключен графический дисплей, сначала монохром­ ный, а затем и цветной. Машина, также как и фирма, созданная 1 апреля 1976 r., получила название Apple. Причин именно так назвать свое детище было две - Джобс был вегетариан­ цем, и оба увлекались ансамблем Beatles. Было выпущено три модели Apple: первая тиражом 200 экз. (сейчас пред- 4
мет коллекционирования), вторая модель (в производстве с 20 апреля 1977 г. по l августа 1983 r.) - 3 ООО ООО экз. (находится в эксплуатации), третью модель постигла относительная неудача. В этой истории много поучительного. Последняя модель Liza была объективно лучше машин фирмы «ИБМ» (IBM). Однако к этому времени могучая фирма IBM уже контро­ J111ровала рынок и суме.1а в короткий срок буквально «завалить» потребите.~я программными средствами для сво11х машин - IBM РС и IRM РС/Х Т. Apple не иыела ресурсов для достойного ответа и очень быстро покинула чис.10 ведущих фирм - разработчиков ПЭВМ. Таким образом, судьбу персональных ЭВМ решили не столько удачные аппаратные решения, сколько богатство программ­ ных средств, - это первый очевидный вывод. Второй, менее очевидный, - в условиях монополизации развитие научно-технического прогресса замедляется. Сейчас Возняк возглавил фирму «ИВМ» (IWM) (Inte- grated Wozniak Machine), а Джобс организовал новую 1шмпанию «Некст» (NEXT). Судьба изобретателей, может быть и не такая блестящая, как представлялось .пет ш1ть назад, тем не менее обеспечена. Поэтому вернемся к началу ис1ории и постараемся понять, что предоnреде.пнло появле­ ние персональных ЭВМ. Традиционно в ЭВМ принято разделять аппаратную часть (Hard\vare) от nрограмl\1ного обеспечения (Soft\vare). Конструкторы персональных ЭВМ располагали стандарт­ ным набором компонентов. Они предложили удачную ком­ поновку и оригинальную архитектуру машины, которая, как мы теперь видим, широкого развития пока не полу­ ч11ла. Тогда проанализируем, что сделано в области про­ граммного оfJесnечения. Возня к написал первую версию языка Бейсик (Applesoft) для своей машины и с ее по- 1\Ющью разработал несколько зрелищных и увлекательных игр (в этой работе участвовали дизайнеры). Это привлекло первых, так сказать легкомысленных, покупателей. Следу­ ющие программные средства - текстовый редактор и таб­ личный процессор, без всякого преуве.,ичения, покорили суровые сердца деловых людей. ЭВМ стала дос1упна и нужна всем, т. е. она стала персональной. Очередная исто­ рил про Золушку состоялась. Теперь, по крайней мере на интуитивном уровне, нам должно быть понятно, что программные средства персо­ на.1ьных ЭВМ отличаются от стандартных программ или 5
пакетов прикладных программ зрелищностью, наг.пяд­ ностью, доступностью, что входит в понятие «дружествен­ ный интерфейс с конечным пользователем». Современные средства, кроме того, располагают развитой помощью и самоучителем, имеют все более развитый и удобный для пользователя язык для организации диалога. Набор мощ­ ных программных средств, ориентированных на любые области человеческой деятельности, настолько велик, что заставляет в корне пересмотреть организацию работы на ПЭВМ. В этой связи можно рекомендовать следующее. Если Вы не программист и собираетесь использовать машину в своей профессиональной деятельности, не спешите осваивать язык программирования. Начните с того, что ознакомьтесь с существующими программными средствами, выберите нужные и работайте. Это, как пока­ зывает практика, самый эффективный путь к существен­ ному повышению производительности Вашего труда. Вся­ кая тщеславная попытка написать именно свою программу на каком-либо языке программирования чаще всего будет равносильна изобретению очередного велосипеда. Вы потеряете массу времени, про задачу все забудут, и Вам придется либо догонять ушедших вперед коллег, либо переквалифицироваться в программиста. Если же Вы программист, то прежде чем браться за программирование задачи, подумайте, каким или какими имеющимися сред­ ствами ее можно решить, и только в том случае, когда нужных средств не обнаружено или какая-то часть задачи остается нереализованной, воспользуйтесь тем языком программирования, на котором удобно работать прежде всего Вам. Строго говоря, практически любое современное программное средство имеет свой язык программирования, часто не уступающий по своим возможностям классическим языкам высокого уровня, используемым в больших маши­ нах. Поэтому программа, созданная, так сказать инду­ стриальными методами, на основе удачно выбранных (это подчеркнем) программных средств, будет мало чем отли­ чаться от программы, выполненной «вручную». И еще: не пытайтесь «выжать» из машины все ее возможности по памяти и быстродействию. Это персональная машина, она должна быстро решать задачи, мгновенно реагировать на Ваши команды, информировать о ходе решения. Лучше громоздкие задачи или большой объем данных передать на мощные ЭВМ - они сейчас незаrружены. Это ни в коем случае не сделает Вашу работу менее 6
интересной и творческой, напротив, Вы будете быстрее продвигаться к результату, у Вас появятся возможность и· время глубже продумать постановку задачи, учесть новые факторы, безболезненно внести любую корректи­ ровку. В этой книге предлагается функционаJ1ьно полный набор программных средств для ПЭВМ так называемой «интел.1овской» архитектуры класса IВМ РС/ХТ и РС/АТ, получивших наибольшее распространение в мире и у нас в стране. Этот набор вполне уместно назвать «джентльмен­ ским», поскольку все рассмотренные программные сред­ ства возглавляют своего рода международный «хит-парад» программ своего класса. Чптатель этой книги может иметь самую скромную подготовку по информатике, в объеме, например, школь­ ного курса. Однако такие разделы, как утилиты, сuстемы программирования, СУБД, организация диалога с конеч­ ным пользователем и создание собств.енной инструменталь­ ной среды, будут интересны только подготовленным читателям. Чтобы еще точнее ориентировать пользователя при выборе программных средств, приведем следующую, ко­ нечно условную, таблицу. Специальность Инженер, науч­ ный работник Экономист Преподаватель, писатель Служащий Раб01ник коопе­ ратива Бухгалтер Программист Программные средства Интегрирован­ ные программные средства, «Эрми­ таж» Табличный про­ цессор, интегри­ рованные про­ граммные средства Текстовый ре- дактор Текстовый ре- дактор, интегри­ рованные про­ граммные средства Текстовый ре- дактор, табличный процессор Табличный про­ цессор Все Таблица Воэмож11ая облас1ь применения Ведение технической до­ кументации, проведение рас­ четов, решение оптимизаци­ онных задач Проведение аналитических расчетов Подготовка н редактирова­ ние текстов Подготовка документов и отчетов Ведение делопроизвод-' ства, расчет смет и кальку­ ляций Ведение форм бухгатер­ ской отчетности Разработка программных средств, подготовка техниче­ ской документации 7
При описании программных средств конкретные мо­ дели или фирмы- изготовители машин не указываются, так как в настоящее время известно свыше тысячи легально и полулегально распространяемых моделей ПЭВМ, выпол­ ненных по стандарту IВМ РС ХТ и АТ на микропроцессо­ рах Intel-8086, -80286, комплектуемых дисководами, дис­ плеями, принтерами, клавиатурой, . «мышью» и т. п., изготовляемых в десятках стран мира. Описание каждого программного средства содержит краткую инструкцию по началу работы, перечень основ­ ных функций, ограничения, области применения и завер­ шается примерами, которые выполнены с помощью этого же средства. Хочу представить читателям своих помощников и поблагодарить их за оказанную помощь в подготовке материалов рукописи, разработке примеров и апробации рассматриваемых программных средств на отечествен­ ных (ЕС-1840, ИСКРА-1030 и Нейрон И9.66) и зарубеж­ ных (IВМ РС/ХТ и РС/А Т) ПЭВМ. Это научные сотруд­ ники: Р. В. Зайцев (гл. 3 и 7), В. Ю. Рудановский (гл. 2 и 9), Г. А. Сочнев (гл. 4, 5, 6 и 8), инженер-программис'Р Ж. В. Прокопенко (подготовка макета рукописи). Н. Н. Смирнов
Глава 1. ОПЕРАЦИОННАЯ СИСТЕМА 1. 1. Операционная система - главный компонент базового проrраммноrо обеспечения Выбор операционной системы (ОС) является важным . этапом, оказывающим влияние на эффективность работы всех компонентов программного обеспечения. В настоящее время известно большое количество операционных систем, отражающих как развитие технических средств, так и стремление разработчиков улучшить функциональные и эксплуатационные характеристики, повысить степень ком­ фортности ОС по отношению к пользователю. Более позд­ ние версии одной и той же операционной системы иногда представляют пользователю принципиально различные возможности. По мере развития операционных систем для ПЭВМ определились их основные функции: автоматический запуск системы с первоначальным самотестированием аппаратных и программных средств; обеспечение диалога с пользователем в максимально доступной форме; обеспече­ ние эффективного управления вычислительными ресур­ сами. В состав любой современной ОС для ПЭВМ входят элементы, которые обеспечивают управление процессом выполнения операций, диспетчеризацию очередей, плани­ рование и обработку прерываний, уровни приоритетов; организацию разделов памяти, сегментирование, динами­ ческое и оверлейное размещение модулей, планирование перекачки памяти и т. д.; управление внешними устрой­ ствами, обработку запросов ввода-вывода, выделение памяти, буферизацию, блокирование данных; управление вычислительными процессами, их синхронизацию, связы­ вание и взаимное исключение; управление данными, включая совместное использование наборов данных, их защиту, различные методы доступа, ведение каталогов. Перечисленные функции реализуются системными про­ граммами, составляющими ядро операционной системы. 9
Окружением ядра операционной системы являются утили­ ты, редакторы, компиляторы и другие программные сред­ ства, составляющие обслуживающую часть ОС. Ядро ОС обеспечивает базовые функции для окружающего про­ граммного обеспечения и допускает (в развитых мик­ ропроцессорных ОС) расширени~ обслуживающей части ОС, например, поддержку СУБД, графических интер­ фейсов, средств сетевой обработки и т. д. Ядро опера­ ционной системы постоянно находится в оперативной памяти. Остальное программное обеспечение распо.1агается на внешних носителях. Естественно, возникает вопрос: если все ОС для ПЭВМ фаюичес,ш выполняют одни и те же функции, то что должно являться критерием при выборе конкретной ОС для использования? Ответ на этот вопрос в общем виде можно сформулировать так: ОС эффективна при использо­ вании, если она удовлетворяет сегодняшим потребностям и достаточно универсальна для того, чтобы обеспечить работу в будущем. Важнейшими характеристиками для окончательного решения вопроса о выборе операционной системы являются ее распространенность и наличие боль­ шого количества прикладных программных средств, реали­ зованных в ее среде. Препятствием к использованию прикладного програм­ много обеспечения в различных ОС является то, что каждая конкретная ОС определяет свой способ организации дан­ ных в файлы, индивидуальную структуру, форматы меток и т. д. Также зависят от ОС и команды ввода-вывода, используемые прикладными программами. Помимо указанных ограничений еще одной сложностью является несовместимость форматов дисков, что препят­ ствует прямой передаче программ и файлов данных из одной ОС в другую. Так, в системе М86 емкость дис1{а составляет 316 Кбайт. На дорожке при этом располагается по четыре сектора емкостью 2 Кбайт каждый (20 ), а в системе MS-DOS (версии 3.0) емкость диска составляет 360 Кбайт при записи на дорожке девяти секторов по 1 Кбайт каждый. Следующая проблема - совместимос'Гь ОС с различ­ ными типами аппаратуры. Для частичного решения этой проблемы при разработке ОС используется принцип модульной организации и независимости операций ввода­ вывода от конкретных устройств, а также применяются специальные утилиты и эмуляторы. 10
Однако в целом проблема совместимости ОС как с б~зо­ вым, так и с прикладным ПО решается с помощью стандар­ та на операционную систему. Д.1я ЭВМ IBM FC таl(иМ стандартом является операционная система 1\1S-DOS (PC-DOS). Рассмотрим возможные варианты испо.1 ьзовннш1 раз­ J:ичных ОС для отечественных 16-разрядных ПЭВ,\\. С ПЭВN\ ЕС-1841 постав.1яются ОС /1\86 издания 02 (типа СР/М-86), Альфа-ДОС (типа MS-DCS версии 3.20) и система для 8-разрядных ПЭВМ CJ\\-1800 с унифиш;ро­ ванным интерфейсом Микрос-1841 (типа Ul\IX) [161. Операционные системы ПЭВМ Нейрон И9 .66 представ­ лены ОС Нейрон-ДОС, совместЕмой с .l\\S -DOS версн11 3.0, и ОС Нейрон-ДОС2, совместимой с системой СР/М-85 [ 12 !. Машины параметрического ряда Искра (базовая :-.юдель ИСКРА-1030.11) имеют ОС АДОС, совместимую с MS-DOS [23 ]. Таким образом, можно говорить, что отечественные ПЭВМ поддерживают три типа операционных систем: М86, Микрос и MS-DOS. Операционная система М86 является русифицирован­ ным аналогом системы СР/М-86 фирмы «Диджитал рессрч» (Digital Research). К достоинствам этой ОС следует отнести .. ее простоту и удобство в работе, минимум команд, охваты­ вающих основные операции с файлами. Поэтому достпг­ нутое в М86 удобство в работе с русифицированной систе­ мой команд является, на наш взгляд, кажущимся, и отно­ сится прежде всего к начинающим пользователям. С ориен­ тацией на пользователя-непрофессионала реализова11 и стиль меню. Однако очень скромный набор современных инструментальных средств резко ограничивает область применения данной операционной системы. Вторая поставляемая ОС - Микрос - вряд ли найдет широкое практическое применение, поскольку ее аналог также не имеет в своем составе развитого программного ОI{ружения. Полезным достоинством в Микрос является наличие эмулятора ОС 1800, устанавливаемой на ЭВМ С.1\1-1800. Несмотря на то, что СМ-1800 (ради которой собственно и был задуман этот режим и сама ОС Микрос) снята с производства, оказывается, что в режиме эмуляции можно читать дискеты, подготовленные на ПЭВМ Робо­ трон-1715 и Электроника. К недостаткам этих ОС, быть может не столь существенным, следует отнести и недоста­ точную документацию по работе с системами. 11
Таким образом, отсутствие развитого программного окружения ОС M8G и Микрос затрудняет широкое исполь­ зование и разработку прикладных программных средств в их среде. В отличие от СР/М популярность ОС MS-DOS поддер­ живается благодаря постоянно пополняемому большому числу ПС, в том числе сервисных программ, интегрирован­ ных систем, СУБД, языков программирования, инстру­ ментальных средств, текстовых редакторов и т. п. MS-DOS легко настраивается на схемные средства, поскольку ее базовая система ввода-вывода (В 10S) яв­ ляется открытой для изменений и допускает написание пользователем собственных системных программ с после­ дующим их включением в состав стандартных средств ос. В аннотациях к ПС зарубежных фирм часто указы­ вается ОС PC-DOS. Несколько слов об этой ОС. Фирма IBM, следуя принятой современной тенденции, реализо­ вала базовую систему ввода-вывода (BIOS MS-DOS) аппаратными средствами в виде специальной микросхемы. Полученная программно-аппаратная версия ОС MS-DOS бьIJJa названа PC-DOS. Аппаратная реализация части функций несколько улучшила временнь1е характеристики MS-DOS. Однако PC-DOS стала закрытой для расширения, жестко привязанной к конкретным, как правило разрабо­ танным по стандартам IBM, техническим средствам, что сужает область ее использования. Среди пользователей отечественных ПЭВМ наибольшее распространение в настоящее время получили версии 3.10 и 3.20 MS-DOS, в которых реализован драйвер накопителя на гибких магнитных дисках, позволяющий рассматривать устройство А как устройство А и С, а устройство В - соответственно В и D. Применение этого драйвера позволило в два раза увеличить емкость каждой дискеты. Особенностью этой версии является также возможность ввода, обработки и вывода букв кириллицы (прописных и строчных). Еще одно преимущество использования этой ОС - поддержка большого количества адаптированных и оригинальных программных средств. В частности, имеется реализация СУБД dBASE III-PLUS - в русском варианте Микро­ РС-2; текстовый реда1<тор «До1<умент», табличный процес­ сор W86, Ми1<ро-Си, Интерэкснерт, интегрированный пш<ет «Мастер». ]2
Таким образом, для отечественных 16-разрядных ПЭВМ целесообразно, по крайней мере на ближайшие несколько лет, использование операционной системы MS-DOS. 1.2 . Основные сведения о структуре MS-DOS По операционной системе MS-DOS известна хорошая книга В. М. Брябрина. Но так как наша цель заключается в быстром и самостоятельном освоении программных средств, приведем здесь необходимый, но по опыту доста­ точный, набор сведений по MS-DOS версии 3.10, подробнее остановившись в следующей главе на описании работы утилит, по которым отсутствует сколько-нибудь система­ тизированная информация. Операционная система MS-DOS состоит из следующих компонентов: базовая система ввода-вывода (BIOS); блок начальной загрузки (Boot Record); модуль расширения базовой системы ввода-вывода (... В1O.СОМ); модуль обра­ ботки прерываний (...DOS СОМ); командный процессор (CO.MMAND. СОМ); утилиты FORMAT. СОМ, DISKCOPY. СОМ, PRINT. СОМ и др. Имена файлов ВЮ.СОМ и DOS.COM обычно имеют некоторые дополнения, указывающие на принадлежность к данной системе, например IВMBIO.COM. Базовая система ввода-вывода находится в постоянном запоминающем устройстве (ПЗУ),• установленном внутри системного блока, т. е. имеет аппаратно-программную реализацию. Остальные модули могут находиться на дисках. Блок начальной загрузки всегда размещается (после форматизации) в нулевом секторе нулевой дорожки любого диска. Модули В1O.СОМ и DOS.COM также размещаются в определенной области дисковой памяти. При форматиза­ ции диска эту область можно зарезервировать для после­ дующей записи модулей операционной системы. В даль­ нейшем эта область является недоступной для пользова­ тельских программ и утилит, что гарантирует сохранность ОС от случайного удаления. Если при форматизации дис­ кеты эта область не была зарезервирована, то все дисковое пространство будет доступно для размещения файлов пользователя или утилит. В дальнейшем поместить систем­ ные файлы ВIО.СОМ и DOS.COM на такой диск невоз­ можно. 13
Командный проuессор COM,1⁄2AND.COM является обыч­ ным файлом и размещается на диске, так сказать, на общих основаниях. Утилиты ОС также являются обычными фай­ лами и могут отсутс1вовать на системном диске. Доступ к этим файлам обеспечивается так же, как и к файлам пользователя. Таким образом, файлы операuионной систе!1-fы зани­ мают определенное место (по размерам и размещению) на диске, что снижает общий объем доступной дисковой памяти на определенную величину, которая зависит от версии ОС и количества системных программ, расширяю­ щих ее возможности. Поэтому целесообразно хранить системные файлы на спеuиальном системном диске. Загрузка операuионной системы выполняется автома­ тически при вкrщ>чении ПЭВМ в сеть («холодный пуск») или с помощью одновременно нажатых клавиш AL Т (ДОП), CTRL (УПР) и DEL (УДЛ) - «горячий пуск». Рассмотрим подробнее проuесс загрузки в первом варианте. После включения ЭВМ в сеть базовая система ввода-вывода выполняет тестирование оперативной па­ мяти, клавиатуры и дисплея. Так как BIOS размещается в ПЗУ, то на этапе самотестирования обращения к диско­ водам не производится. Время тестирования зависит от проuессора объема оперативной памяти и, как правило, занимает от нескольких секунд до минуты. При обнаруже­ нии ошибки на экран выводится соответствующее сообще­ ние. Работать на такой машине нельзя, вернее, не удастся. Правда, неисправности иногда удается устранить, самосто­ ятельно проверив плотность разъемов, пошевелив платы или прогрев в течение 10-20 минут машину. При отсутствии ошибок BIOS вызывает с диска блок начальной загрузки, который принимает управление на себя и, в свою очередь, осуществляет загрузку остальных модулей ОС. Б.тюк начальной загрузки (далее загрузчик) представ­ ляет собой небольшую программу, которая выполняет проuедуру загрузки с системного диска в оперативную память модуля расширения базовой системы ввода-вывода и мо,llуля обработки прерываний. Поиск этих файлов на системном диске выполняется следующим образом: про­ сматриваются первые две позиции каталога диска, если там нет информаuии о файлах BIO.COM и DOS.COM, то такой диск считается не системным,очем выводится сообще­ ние на экран. В этом случае необходимо установить систем­ ный диск и нажать любую клавишу. Файлы В10.СОМ 14
и DOS.COM при перезаписи всегда помещаются в начало диска. При наличии жесткого диска (винчестера) порядок поиска систс•мных файлов зависит от установки гибкого диска - если он установлен в дисковод А, то загрузчик предпоJJаrает, что это системный диск и будет выполнять загрузку то.'1ько с него. Если гибкий диск не установлен, то системным считается жесткий диск, с которого и будет выполняться загрузка. Модуль В1O.СОМ сначала передает управление модулю обработки прерываний ОС, затем загружает с систем­ ного диска командный процессор и передает ему упра­ вление. Командный процессор CO.MMAND .СОМ располагается на системном диске как обычный файл. При загрузке в память часть указанного файла, называемая резидентной, поскольку она постоянно размещается в ОЗУ, распола­ гается за двумя рассмотренными файлами ОС, остальная часть - транзитная, подкачиваемая при необходимости, располагается, начиная со старших адресов памяти про­ цессора. Резидентная часть совместно с двумя другими файлами ОС составляют ядро ОС, постоянно находящееся в оперативной памяти. Программы резидентной части COMMAND.COM выпол• няют: обработку файла AUTOEXEC.BAT при загрузке системы; восстановление в памяти нерезидентной части COMMAND .СОМ при ее уничтожении; стандартную обра­ ботку прерываний, определенных пользователем. Прикладные программы, несмотря на загрузку с младших адресов, могут частично или полностью пере­ крыть область памяти с нерезидентной частью COMMAND. СОМ. В этом случае специальная программа из резидент­ ной части командного процессора подзагружает файл COMMAND.COM снова. Если в процессе работы системный диск был заменен на другой, на котором не оказа.rюсь требуемого файла, то на экран выводится указание: «вставьте диск с COMMAND .СОМ в драйвер А, нажмите любую клавишу». Без восстановления нерезидентной части командного процессора работа не может быть продолжена, поскольку именно она выполняет функции приема, ана­ лиза и выполнения команд пользователя, а также обраба­ тывает командные файлы. В процессе загрузки программы пользователь иногда должен вьiбрать или установить тот или иной параметр. EcJIИ вместо ответа нажимается клавиша ЕТ (ВВОД}, 15
никакого значения не вводится и процесс загрузки про­ должается. Один из вопросов к пользовате.1ю в процессе инициа­ лизации операционной системы может быть связан с опре­ делением объема виртуального диска в Кбайт: Туре virtual disk size in Kbytes: Виртуальный диск - это прообраз обычного накопи­ теля на маrнит1ю~1 диске, но как бы созданного в операт11в­ ной памяти. Смысл создания виртуального диска состоит в значите.1ьном ускорении работы за счет сокращенин времени на чтение и запись файлов, поско.1ы<у доступ к информации в ОЗУ происходит значительно быстрее, чем доступ 1< реалыюму диску. Из практических соображенIJЙ испоJ1ьзовшше вирту а.льного диска позво,1яет прод.ли~ ь срок службы дисководов и дискет. Однако надо иметь в виду, что .любой сбой питания или процессора разрушает содержание виртуального диска. В качестве «п.1аты» за с1<орость выступает объем ОЗУ, оставшейся свободной для загрузки программ и размещения данных. Для создання виртуального д1:ска 1ребуется специальная программа, оGсспсчивакщая его раСоту (драйвер). В f.ольшинстве CJ1) чаев, как показано выше, драй1:ер запрашивает объем оперативной пгмяти для виртуального дис1<а у пользова­ п•.;:я. Это число ~.южЕо оценить приближешю. Определяю­ щими фактораr-1и являются: сбщиi1 объtм операт11в1юii па~1ятн, из которого вычитаются объем памяти опсранисн­ ной системы (11риблизительно €0 Кбайт) и объем пашп и для прикладных программ (оценивает пользователь). Оста.r1ьная часть ОЗУ 111.ожет быть использовсша 11од вир­ туалы.ый дv.ск. При пажатни клаввши ВВОД вJJртунт.)- 1:ый днrк не ссздается. В неко1орых ПЭБ.М вну1ренние часы и каленлар1, пе ра(отают после вьшлючення 1111танил. Поэтому операuион­ ная с1:стема при каждом запуске устанавл11вает текущее про.1я II дату 1:0 желанию пользоватеJiя. Как было сю1зано, мсж1ю игнорировать устю-ювку времени II даты, наж11~1ш1 клашш:у ВВСД. Если же устююв1<а указанных парамет­ ров необходима, 10 следует придерживаться q.ормата, который можно определить из сообщения операшюшюii системы. Нг.поминаем, что при вводе даrы нужпо отлнча1ь европейский стандарт [день!, lмесян 1, !год I от американ­ СJ<ОГО lмесяu ), !день], !год 1. Н Оо.'lьшинстве нерсий ОС, нзвестных у нас в стране, используе'1ся, как правиJiо, евrопейский стандарт. 16
Операuио1111ая с11сте~1а располагается па диске, на О, 1, ... , 5 дорожках, наsъшаемых с11сте:-m1,1:-.111. Они недоступ­ ны для по.1ьзовательс1шх проrрю1:--1, что гарантирует сох­ ранность операциошюй систе:.1ы. По завершении ззгруз,ш опёрашю11ная с11сте:-.1а пС'ре­ ходит в ож11дан11е ввода 1ю:.1анд с клав:инуры, по~1ещая на экране приглnше1ше А >. Оно пrжазывает готовность к приеыу КО\1;:Шд, ПIJI~ЧC,\I ~Ш:П!ВIIШ! д;IСКОВОДОМ, т, е. дисководш1, 1( 1,оторш1у бу д'с'Т обращатьсл операционная система, rr::1яется .1езый диско1юд. Правы~": дr1сковод l\IOЖIIO акпшнзировать с по:-.1ощыо ввода с 1и1~1в11mуры 1-::Оl\Ншды В: (дrюеточие являетсн отличите.1ы1ым признако~1 длн системы, по котороVIу она «понимает», что В - это адрес д11с1(овода, а не н:v1я про­ граммы). Пос.1е отработки этой кол1анды на дисплее по­ является сообщение В >. Набор I<О:\,'fанд на к.1авнатуре можно выполнять на любом регистре, так как после нажатия клавиши ВВОД строчные буквы будут преобразованы в прописные. Длн стирания с1шво.:~а в позиции курсора можно использовать Елавишу «+-». ОдноIЗремевное нажатие клавиши CTRL (в далы1сйшеы ny дет обоз11ачаться с1шволом "') 11 неко­ торых других вызывает следующую реакцию с11стемы: "'Н - стирание знака в поз1щи11 курсора; --J - перевод курсора на сл~дующую строку без окончания ввода 1юмс:11д.ы, рекомендуется для набора длинных команд; --с-· отмс0 на текущей ко~1анды; "'Р - нывпд терм·ииальных сообщений на печатающее устройстrю; лля от:.1ены rежиыа следуrт повторное на­ жатие 1(ла11иши; "'S - прнпстанавливает вывод на э:(ран дисплея, по­ вторное наж?..тие клавиши, отменяет режю,1. После нажатия I(.1авиши ВВОД ввод команды счи­ тается за1<ончен11ьш, введенная ко~1апда проверяется систе­ мой на прави.пыюсть н зате:1-1 вьшолняется. Некоторые !(Оl\1анды могут иметь параметры. Следует иметь в виду, что общая длина командной строк!! не должна превышать 127 симво.1ов. Команда отделяется от параметров одним пробелом. Как правило, !(Оманды операционной системы вызы­ вают обращение 1( дисководу для считывания и/или запнса файлов с дискеты 11л11 на дискету. Поэтому необход11мо подробнее остансвиться на понятии фаiiла. 17
1.3. Файлы и команды операционной системы Файл - это именованная область внешней пю1ят11 для хранения програ;1,ш и данных. В фай.1е :\юrут содержаться текстовые доку:-.1енты, чис.1овые данные, закодированная таб.1нчная, графическая II другая ипфор:\1ация. Фай.1 д.1н ПЭВ,\\ - это основной 11нq:ор:\1ационный объе1п («в11д;1:\1ый» д.1я по:1ьзовате.1я), с которьш работает с.,пераu;1сш:зя сис1е:\1а. Все фай.1ы 1,аждой "JJ1с1,еты регнстр11руются опt·раш1сн­ ной систе:\ЮЙ в справочннке (directcry), которыii ~!Czl;!JO иначе представить как оrлав:1сние дискеты. ,\\инищ•льный объем файлов на д11с1<ете - одна зона, макс11:--1ат,ный - объе:--1 всей дискеты. Объе:\1 паш1111 на дис1,ете и ве.1ичина зоны (сектора) опреде:1яю1ся в байтах и завпсят от сj:орматизащш (раз:\1етк11) днскег. Подробнее эти вспросы рассматриваются в гл. 2. Обозначение файла состоит из Иl\1ею1 фай.1а II т11 па файла (расширения), которые отделяются точкой. И;1,1я файла - произвольная комбинация не более восьми сим­ волов, тип файла - произвольная комбинация не более трех символов. Згпрещается использовать в обозначении файла, то есть в ero имени и типе, следующие сю,:волы: <>.:;=?*· Обозначение q,айла Д()ЛЖНО быть уникгльньш для каждого файла. Как прави.rю, файлы, относящиеся к одной задаче, и;1.1еют одинаковые имена, но разные типы, например: PROG.C01'1\ - программный фай.r1 в l\Iашинных кодах; PROG.OBJ - программный файл в объектных кодах; PROG.BAS - программный файл на исходном языке; PROG.DBF - файл данных для обработки программой. Т!iп файла может отсутствовать, однако необходю:о учитывать, что некоторые програмl\lы предполагают опре­ деленные стандартные обозначения 111пов фай.1а, что позво.1яет опускать эти символы при наборе команд. В случае применения нестандартных комбинаций символов для обозначения тппа файла набор этих символов является обязательным. Стандартные обозначения типов файлов позволяют определять характер файлов чисто визуа.11ыю. Используются следующие стандартные обозначения типов файлов: СОМ - файл-программа в машинных кодах, готовая к загрузке и выполнению; такие файлы формируются, 18
как правило, из файлов типа OBJ в результате работы программы редактора связей; OBJ - фай.1-программа в объектных кодах; эти файлы фор:..шруются в резу:1ьтате работы компиляторов; BAS - фай.1-программа на исходном языке Бейсик; FOR - то же, на языке Фортран; J\\AC - то же, на языке l\\акроассе1блер; С- тоже, наязыкеСн; PR:\' - фай.1-.111стннг; форш1руется, н.:шрю:ер, при работе ко:--;п11:1ятора при заданпи днсковода в качестве устроi°~ства д.1я вывода; ТХТ - текстовые фай.1ы-;:юкуl\!енты; OVR - овер.1ейные файлы (загружаются в оператив­ ную паl\:ять в проuессе работы п;:югрю1,1ы); ВАК - фай.1-1юп11я; формируется в резу.1ыате запнси на дискету фа~"1.1а с ш1ене1, 1<0торое уже есть в справоч­ нш,е; расш11рение ВАК п;)Исванвается старо:.1у фай,1у. Прю1еры обозначения фаi:.1ов: FORMA Т .СОМ-файл-программа форматизащш д11скет; PR .BAS - файл-исходный текст программы на язьше Бейсик; REFOR.TXT - текстовый фай.1. В обозначении файлов могут использоваться символы «?» и «-к-». Символ * может использоваться на месте имени фай.1а им, типа для обозначения группы фай.пов с .1юбыми именам11 или п п::-~ми. Напрш1ер: -х-.СОМ - идентифицирует все файJJы с типом C01'v\; ВВ1. * - идентифицируются все существующие фай.1ы с именем ВВ I и J1юбыми расширениями (это могут бь11ь фа11J1Ы BBI.COM, BBI.BA, BBI.TXT и др.); *· * - идентифицируются все фай,1ы на дискете. Знак «?» в спреде.r1енных позиuиях в имени фай.1а ИJJИ тн11а допускает нам,чие в этой позиции .1юбого си~шо.1а, ш;пример: АВС? .СО.М - идентиф11ц11руются фаii.ш ABCI .СОМ, ABCD.COM и т. д.; ???.ВА - идентифицируются все фай.1ы с типо:v1 ВА, у которых имя фай.1а состоит из JJюбых трех си;1.шо.1ов. Таким образом, д.1я точного задания файлов в опера­ цнонной системе необходш,ю указать: пш-устройства : имя-файла.тип-файла При создании файла можно задать атрибуты R/\V (чтение и запись) или R/0 (то.1ько чтение). Первый атри-
бут означает возможность чтения, изменения и удаления файла. Файлы с атрибутом R/O могут то.1ько читаться, удаление и изменение такого файла невозможны без смены атрибута. Стандартным а1рибутом фай,'lов (значением по умолчанию, задаваемым операционной системой) является R/W. Изменение атрибута R/W чтения (записи) можно выполнить, например, с помощью утилит. Устройство, на котором располагается файл, можно не указывать, если файл расположен на активном устройстве. Существенным отличием операционной системы MS- DOS, начиная с версии 2.0 и старше, от более ранних вер­ сий, а также от ОС СР/М является расширение понятий файла и директория, что позволяет поддерживать иерархи­ ческую структуру хранения файлов на дисках. Такой подход хорошо зарекомендовал себя в системе UNIX и позволяет составлять дерево каталогов, которые находятся на разных уровнях. В соответствии с этим «деревом» дисковое пространство также разбивается на несколько об"1астей. При этом достигается несколько целей: выде­ ляются все файлы, относящиеся к какой-либо программной среде, например, к системе Lotus; распределяется дисковое пространство между разными пользователями, которые становятся полностью не свя.занными при манипуляциях файлами, выборе имен и т. д.; выделяются в отдельные группы логически однородные файлы, например: файлы­ документы или файлы-исходные тексты программ и т. д. На практике такой подход дает эффект только при нали­ чии жесткого диска большой емкости. Гибкие диски, как правило, являются индивидуальными носителями для каждого пол ьзоватсля. Команды пользователя можно разделить на команды ОС и команды вызова исполняемых программ. Для работы с файловой системой в MS-DOS используются следующие команды операционной системы: DIR - вывод содержи­ мого директория на экран (принтер); СОРУ - копирова­ ние файлов; REN - переименование файла; DEL - уда­ ление файлов; ТУРЕ - печать на экран (принтер) содер­ жимого файла; MKDIR (MD) - создание нового директо­ рия; CHDIR (CD) - смена текущего директория; RMDIR (RD) - удаление диреюорня; РАТН - установка воз­ можных маршрутов для поиска файлов. DIR является наиболее часто используемой командой ОС. В общем случае она задается следующим образом: DIR [У:) [имя файла 1 [/Р 1 [/W] 20
В формате этой команды все параметры являются необязательным11. Если ко1,1апда иУrеет в1щ DIR без пара­ метров, на экран выводится перечень фай.1ов, находя­ щихся на активном дис1<оводе в текущем директор11и. Имя каждого фай.ТJа заниУrает отдельную строку, в кото­ рой указываются зан~1:1.1ае;1.шй ны объеы дисковоi1 пс1Уrяти, дата и вре~1я создания. Если диск 11 (п.1и) директорий имеют ИI\lена, то они выводятся перед инфор,1ацией о состоянии ката.1оrа. Ес.111 какой-либо фай.1 в д11реl(тории не имеет расш11реш1я, но не ол.1ечен DIR , этот файл является подкаталогом. Парамегр У позво.1яет получить информацию о r.1авном директории указанного диска. Парал1tтр <,юн1 файла» ис­ пользуется д.1н вывода содерж11,юго указанного поддирек­ тория шш инфорs,шц1ш об указанных файлах. Параыстры /Р и /\V управляют фор,1атоы вывода на экран. При задашш параыетра Р эн:ран будет останав­ ливаться каждый раз при за110.с~нсюш всех строк экрана. Параметр / W ыеняет форл1ат вывода - список файла содер­ жит толы<о 11:v1ена, которые распо.1аrаются по шесть на стро­ ке. При выводе директория без задапия парю.1етров управ­ ления экраном ~южно останов ин, «беrущr1й экран» ко~1бина­ цией клавиш CTRL (УПР) и S. Повторное нажатие этих J<лавиш приведет I< продолжению вывода. Нажатие 1,лавиш CTRL и Р прнведет к дублированию вывода на принтер, повторное нажатие ко~1бн11ац11и отключает вывод па принтер. По ко~1апде СОРУ 1\!Ожно скопировать указюшый файл на заданный двск с любым име1;см. Для коп11рованш1 нес1<0лью1х файлов nоз:--.южно применение так называемого шаблона. Пр11 это:-.1 файлы копируются на заданное устрой­ ство С ИСХОДНЫ~11! l!I\leHal\111. Для вызова этой l(ОМЭНДЫ используется фор\1ат: СОРУ IYl: l [имя-11 [У2: 1 [имя-21 I\' 1 Здесь Yl и У2 - необязэте.,ьные параметры, опредс­ J1яющие соответственно источник и присштк файла. По умолчанию в"1есто Yl и У2 понш.1ается активный дисковод. Если ни Yl, ш1 У2 не у1<азаны, то с:~едует обязате.,ьно указать Иi\1я-:?, что будет означать I<опирован11е фпй.,,а на то же устройство, но с друпш ю1енсм. Имя-2 также необязате.пьный параметр, однако, нмя-1 имя исход­ ного файла должно быть задан~ или точно, илн с nомо­ щыо шаfiлона. Если н,1я-2 не у1<азано, то файл копирует­ ся с нсходным имене,1, в противно:.1 случае 1<0пия фш"1- ла имя-! будет иметь имя-2. 21
Другая ~.;_ель испо.1ьзова11ия сператора СОРУ состонт в соединении нескс.1ьких файлов н записи по.1ученного результата в новый файл. В этсм с.1учае имя-\ предс1ав­ ляется ка 1, ссвок 3 пнссть ю.1ен ссед11няел1ых фай.1ов, пере­ чис"1енных со знакс:-.1 «+». Ес.1н ю~я-2 в таксл1 варш:нте СП) щено, сое,:~,11ненные фаf·.1ы бу,:~,ут з,пнсаны в фгй.1, указанны~"~ в перечне первь·~т. Де пускается в 1,ачестве шас.10па 11;,.rtнп нспс.1ьзовать знак ««·». Еапр11лтер, LOTl;S. +:· - означает все файлы r ю1ене:-.1 LOTUS; *.DCC - означает все файлы с тv.по~1 DOC; *·* - означает все фай.1ы активного дисковода 1еку­ щего директория. Параметр \ 1 (верпфш::ация) вызывает кснтро.1ь совпаде­ ния скспированных файлов с исходными. Время обработки команды в этсм случае заыетно уве.1ичивается. В качестве второго устройства допускается испо.1ьзо­ вание символического имени любого внешнего устройства. Чаще всего используется имя PRN, что приведет к выводу содержимого на принтер. Команда REN испо.11ьзуется для переиJ\,;енования фай­ лов, она имеет следующий формат: REN [У:] [старое имя] [новое имя] В этой команде тоже можно использовать шаблоны при задании имен файлов. Однако необходимость модифи­ кации группы имен на практике возникает очень редко. Заметим, что команда не работает собственно с файлами, - меняются имена только в директории. Удаление файлов выполняется командой DEL (или ERASE). В качестве имени удаJ1яемого файла можно ис­ пользовать шаблон. При работе с этой 1юмандой опера­ писнная система «не спешит» обрабатывать команду и просит под, вердить уверенность пользовате.1я в правомер­ ности действий по удалению фай.ТJов. При обработке этой команды содержимое файла не разрушается, происходит лишь вычеркивание его имени из директория. Существуюr специальные программы, которые позволяют восстановить удаленные файлы. Однако, если сразу после удаJ1ения эта операция не была выполнена и на диске бы.11и созданы новые файлы, восстановление стертых файлов может не состояться из-за физического их разрушения новым файлом (то ес1ь из-за выделения под новый файл учасп<а памяти, занятого ранее «удаленным» файлом). 22
Команда ТУРЕ используется для ВЫI3ода содержимого файла на экран и принтер. В качестве аргумента должно Gыть указано полное имя файла (шаблон в этой команде 11спользовать нельзя). Необходимо отмети1 ь, что эта 1ю,1анда прнменныа только к текстовым фай.1а:-,1. Фай.1Ь1 11 на СО,\\, ЕХЕ, OBJ, распечатанные по этой колiанде, n;Jедстав.'!яют собой неч11тао1ый набор с11мно,1ов, по­ ско.1ы,у 1шq:ор:-,1ац11я в ннх хранится в несюшо.1Lной cj'op:,1e. В некоторых кщ1апдах допускается задавать устμой­ стnа n виде: А: DIR>PRI\ Вывод нескольких фай.'lоn на прннтер можно выпо.1юпь по ко~1анде: А :СОРУ PROG.* PRN За:-.1етн:-.1, что альтернативны:--1 1шенс11 д.1я PRN ЯB,lf!· ется LPTI с соотвстс·1вующим номерол1, чаще всего 1. С.1с-J.ует ост11новн 11,ся на спгuиа:1ьной группе так паз,,:вае~:ых 1<0:,1андных фай.10в - особой разновидноста 1:lпо.111яемых n,юграю1. От файлов СО,\\ и ЕХЕ ко:-,,1андные фаС1лы отличаются как пшо:-,1 файла (ВАТ), так и содержа­ ШiС'М. В отличие от CON\ 11 I::XE файлы ВАТ представляют со(.01°1 текстовые файлы, которые могут быть созданы и,1и те,,стовыми редакторами, и.'111 по ко:.1анде СОРУ сле,:~.ую­ rщ•го формата: А: СОРУ CON: имя файла.БА Т текст IZ А> Содержание ко,1ан,1.ноrо файла последовате.1ьно интер­ n~tн:руется командны:-.1 процессоро:-.1. Текст в файле может содержать: команды ОС (как резv.щ:-нтные, так II транзитные); обращения 1, другим коыандным фай.1ам; специальные команды процессора; м·:1 к11. Таю1:-1 образом, ком;:~ндные файлы могут быть 1:спо.:1ьзованы для достижения следующ1:х ueJJeii: объеди­ н~1шя команд ОС и :Jап\тка раз.1ичных исr10.111яемых п югрюt\1 в 011;:~еде.1енную nоследоватеJJьность, то есть в:,.поJJнения ко,1анд без внода их с 1<.'!авиатуры; упj)ав.1ения п )с.1едсвате.1ьнсстью r:ь:П'J.11-1ения ко:-.1анд в ВАТ-файле (переход на меп;у, организация цик.10в, проверка усло­ внii). выпо:1нения коыандных фай.1ов д.1я раз.111чных значе­ ю1i'~ пзрю1етров (нап;:тмер, и:.1ен файлов), задавае:-.шх с к.1,шиатуры. Прю1сром Еомандного файла яв.1яется фай.1 AL1TOEXEC.BA Т, 1<оторый авто:-.1атичес1ш ::~агружается и выполняется при I3ЬIП0.1нении загрузки операционной 23
системы. С помощью текстового редактора можно откор­ ректировать указанный кол1андный файл, напри111ер, до­ полнить его вызовом системы dBASE II I PLUS, если пользователь дальнейшую работу проводит в этой системе. Выполнение любого кол1андного файла можно прервать одновременным нажатием клавиш УПР (CTRL) и С. Прерывание файла сопровождается сообщением: Terminate Batch Job (у/п)? Ответ У приводит к завершению выполнения команд­ ного файла, N - к продолжению выполнения с места прерывания. Последняя команда ВАТ-файла может быть именем другого командного файла. При этом рекурсивные ссьтки, то есть обращения к и111ени текущего файла, не разрешены. В каждом выполняемом файле может использоваться до десяти замещаемых параметров. Рассмотрим простейший пример командного файла с именем START. Подготовить такой файл можно любым текстовым редактором, в данном с.1учае - по команде СОРУ: А :СОРУСОN:ВЕGIN.ВАТ-копирование в файл BEGIN.BAT информации с клавиатуры; DIR>PRN - вывод каталога на принтер; PROGl - вызов программы PROGl; DEL FILJ.OLD - удаление файла FILI.OLD; REN FILI .NEW FILI .OLD - переименование файлов. По команде ~z (Упр/Z) завершается процесс формиро­ вания файла BEGIN.BAT. Для запуска необходимо выполнить команду: A:BEGIN При выполнении командного файла каждая команда будет выводиться на терминал, как если бы ее вводили с клавиатуры. Результаты отработки команд также выво­ дятся на экран. Для подавления вывода команд и резуль­ татов на терминал используется 1юманда ЕСНО OFF. Если эта команда не приведена, предполагается действие команды ЕСНО ON (то есть режим вывода включен). Команда ЕСНО с форматом ЕСНО [текст I приводит к выводу указанного текста на терминал. Последние две команды позволяют рационально построить диалог, избав­ ляя от лишних нажатий клавиш или назойливых сообще­ ний. Остальные функции операционной системы - формати­ зация дискет, копирование (слияние) файлов, перезапись операционной системы на другую дис1<ету, перенастройка параметров операционной системы - выполняются тран­ зитными командами (системными программами-утилитами). 24
Транзитные команды являются, по существу, утилитшш1 операционной системы и рассматриваю rся в с,1едующей главе. 1.4. Недостатки MS-DOS и пути развития • операционных систем ПЭВМ Как видно, MS-DOS представляет пользовате.1ю боль• шие, но далеко не безграничные воз:vюжности. Рассмотрим принципиальные недостатки этой ОС, учитывать которые необходимо при разработке систем, ориентированных на работу с конечным по.11ьзователем 11 поддерживающих большие объе;-.ш данных. Природа этих недостатков заключается в том, что эта ОС морально уста­ рела. Если сказать одним словом, то эта ОС «тупая». В какой-то степени это связано с тем, что /1\S-DOS не испо.'Jьзует всех богатых аппаратных возможностей архитектуры микропроцессора. Похоже, что ОС делалась наспех - из восьми имеющихся уровней прерываний анализируются только нулевой и первый, поэтому непроду­ манные попытки встроить в ОС ассемблерные проrрю,1мы приводят к непредсказуемым результатам. Необходнмо сказать, что ОС Unix лишена этого недостатl{а, поскольку в ней контролируются все уровни прерываний. Однако основная причина недостатков !{роется в не­ критичном заимствовании концепции ее построения, выра­ зившемся в изначально принятом поверхностном взгтrде на функции ОС ПЭВМ. Нетрудно заметить, что прообра­ зом MS-DOS, а тем более СРМ и М86, явились ОС больших ЭВМ. Как говорили римляне: «quod licet jovi, not licet bovi». Простой перенос идеологии построения ОС больших машин на класс ПЭВМ оказался не эффективным. Постараемся на трех примерах показать это с то 1 1ки зрения конечного пользователя и разработчика пр111<.1ад­ ных систем. П р и м е р 1. Рассмотрим достаточно типичный слу­ чай. Ру1юпись этой книги объемт.1 почти 500 Кба~"п под­ готовлена текстовым редактором в среде l\\S-DOS. Пред­ положим, что в каком-то месте необходимо поспннпь запятую. Что делает нормальный человек, работан с практичес1<и готовым текстом? Он берет ручку 11 ставит запятую. Времени одна се1<унда. Даже известнап своим трудоюобием супруга Льва Николаевича Толстого не ста.1а бы из-за этой мелочи в девятый раз переписывать «Анну Ка ренину». А как поступает ПЭВ,\\ с быстродействи- 25
ем в сотни тысяч операций в секунду? Машина сначала добросовестно читает, а затем после корректуры переписы­ вает весь фай.1. Итак, пз-за одной запятой размером l байт пришлось затратить десrпки секунд вреиен11 и запять допо.1нителы-ю 0,5 Мбайт памяти. Конечно, бы.10 бы разу:\ШО, ес.1и бы маш11на ана.1изнро­ вала объе:,1 работы, в дэ1-1.ном с.1учае коррек-,нровки, 11 сr.1\:сстоятельно п.1анирова.1а бы свою работу. В такой поен новке эта проб.1ема 1ребует решения одного нз г.1ав­ ных вопросов 1шбернетшш: что такое пнфор~:ацня с точки зрешш 111аш11ны? П р 11 м е р 2. Рассыотрим работу с.1ужбы, обрабаты­ вающей бо.JJьшие объемы информации, - это может быть бухга.,терия, канцелярия, конструкторский шш техно:ю­ rический отделы и т. п. Ес:ш поступн.r~ нестандартный запрос, то д.т1я ответа на него находятся по описи нужные ПШlEII II буl\1аrи И ГОТСВIПСЯ справка. Как поступает машина? Ни1,ак, поскольку она знает тсю,1ю одну или две дискеты, которые в нее встав.1ены в даы:ый 1\юмент. Все оста.JJьные дискеты д.1я нее не сущест­ Е) к~т, с какш.:11 дискетами машина работала, она не помнит. Поэ1ому разработка прикладных систем, ориентиро­ ваш~ых на обработку значительных объемов информации, раз:\1,щаемой на бо.1ьшом 1юличестве дискет, сопряжена с 1:есбходимостью детальной проработки технологии веде­ л1:я (;азы данных и решения целого ряда орrан11зац11онных вспросов. Простое физическое увеличение памяти ПЭВМ э1у проблему не решает - найти, скажем, в винчестере объемом 70 Мбайт забытый файл ничуть не легче, чеы просмотрев 60 дискет. Остроту э1ой проблемы отчасти сш:мает включение ПЭВJ\1 в ло1<альные, с мощными файл-сервераыи (устрой­ ства д:1я хранения II рацсления данных в сетях), il r.1оба:1ьные вычислительные сети, располагающие прак­ тически неограниченными совокупными ресурсами памяти. Однако, даже если не рассматривать экономический аспект, сеш проектируются и создаются, как правило, ориенти­ ровnнными на вполне конкретные инфор:..tацнонные по­ трсб1юсти. Во всех случаях любая память, как бы велика она ни была, все-таки конечна II в соответствии с законом Пар­ кинсона будет рано или поздно заполнена. Вопрос что хранить, а что стереть, на время забытый, возникнет вновь. Если в мегабайтах че.-10веку трудно разобраться, 26
то в гигабайтах это те~1 более с.1ожrю. Поэто:-.1у бы.10 бы же.ТJате.r1ьно, чтобы ОС представля.:1!.1 средства д.1я органи­ заuив надежного ведения баз данных, П,J.:~.черкнс:-.1, во nрtж:н11. В тер:-.шнгх уже ~ пJ:ш1нутой «I:~·,:юGpoiI» па:-.1яш Ю!СерЕеТI,IШ pcI.:..Clilie :~Той прuб.1е:.1н CCH..;;__iI() С ПJНЯТ!Iбl :.!!1pCiliiJ! . ll р 11 ,1 ер 3 Ес1сс1;:~то:,, 1,огорыi"1 з,1есь будег гrро- 11., "Юсrрr,рс -!Зс:!1, псч111 тс1юке нсuе,.10\1 про~;J~\I'ШСТа\1, как Il пpe,1ь•.1:, LL.l'lf. О,lШШО он Hc·ПC.:Ci)C,J.CTBeHHO п.ыяет на на­ ДЕ')l\!iСС1Ь [! Ж,!В\ ЧlCl Ь CifCГ€\!. В 0611~01 с.1: чае ПЭН,\\ рэс11е>.1,,гас1 с.1е,1ующ1:\1:1 ресур­ сг,1:1 пю1н гн: виртуал1,ныi1 ,:щс1<, жсс·r JШЙ ,11Jc1<, г:16ю1й д11ск, стр11:-.1:-.1ер (устройс1но ,1:1я запнс11 на ыагннтную :1енту). Расою1 рш1 н качествсшю оценю~ n 1 (t), п2 (t), nЗ (t) п4 (t) - соотпеrственно вероятности потерн 11нфор:-.1ац11н на каждом из названных устройс1в как функции вре11ени. По опыту, прн увс.111чеш111 времени работы >Зnt будет выпо.1шm.:.ся неравенство: nl (t)>n2 (t) >n4 (t). Расо10тр11м вероятность потери информации, как пол­ ную вероятность, обус.1ов.1енную физическими и ыехани­ чесю1ми свойствами носителей и устройств, так и возмож­ ностью наступления случайных - фатальных событий, например, отк.1ючение э:1ектроп11 гания, разметка по не­ осторожности 11лн преднамеренно дисков и т. п. ~/читывая, что время поиска информации на устроiiст­ вих существенно различно, системы должны проектиро­ ваться так, чтобы при м11нимаJ1ьном времени доступа к информации вероятность ее потери была бы мала. Решение этой про6ле:-.1ы, которое напрашивается само собой, состоит в своевре:-.1снной перекачке инфор~1ации с менее надежных, но быстрь;х устройств на более надежные, но медJ1енные, т. е. с в;1ртуалыюго дис1<а на жесткий, заrем на дискеты пли стример. В свя,и с эпш возникает вопрос: можно ли надеяться, что ОС са\юстоятельно распорядится своими ресурсами пс1~1ят11 с те:'>1, чтобы м1шюшзиров;пь вероятность потерн 11нформаш111 при ~а;rанном вре~1ени реакции? Ответ отрп­ цате.:~ьный. С появлением последних 1vюдслей ПЭВМ, имеющих опе­ ративную память, измеряемую мегабайтами, жесткие диски на 100 и более Мбайт, стириммер с касетами по 60 Мбайт, оказывается, что по своим возможностям такие ПЭВМ в состоянии обеспечивать информационные потребности крупных служб. Однако рационально организовать работу 27
всех устройств в соответствии с общей целью снсте,ш без выешате.1ьства специа.111ста-с11стемщ1ша нли ад:v~инистра­ тора базы данных оказывается Нl'возvюжно. Н какой-то степени повторяется с111уацня с 60.1ы111н1и ЭВМ. 1-fеобходш.ю с1<азать, что разр11ботчи 1ш базовых про­ гращ.шых средств и даже раз.1ичных метода- 11 предметно­ ор11ентIIрованIIых с11с1еч стараются этой проб.1ел1ы не за\1rчать. Хотя что-то ~южно t'5ы.10 бы с,1е.1ать в ра:.11<ах существующей ОС. Работа с прогрю1м11ыл!11 сре,1сгва'.111 рассil1атр11вается ка к «ра6ота на час»: загrуз11.1 с11стему, вспши:1 д11скету, отрйGота.1 и уше:1. Предс1ав.1яе1ся, ч10 пр11 разработке эффективных и надежных с11сте11 необхо­ дшю уг.1убить ме·1одо:югню проектирования путем спе­ цнального исследования не только тра,11щ1юнных вопросов выбора структуры базы данных, разработки а:1горит:.10в, построения ш1алогов, но и ана.1иза функщюнирования c11cтe:vi на дтпе:1ьных 11нтервалах времени. Речь идет о со:щан1111 нового класса систе:v~, которые в отличие от систем реального времени !\южно назвать системами неограниченного времени. Но, разумеется, комплексное решен11е проб.1еi11Ы созда1111н сис1ем нсограннчешюго nре­ мени до:1ж1ю опиратьсн на бо,1ее совершенную oпt:pau,II011- 11yю среду. В чем с точки зрения 1юm,зователн вндитсн отт1ч11е будущей ОС от сущес1вующ11х? Вернемся еще раз J( при:v1срш,1 11 пр0сша:111з11рус~1 при­ чины, вызв;:~вшие рассмотренные ситуации. В первом примере ыаши11а безду\ШО псрсп11сыва.'!а фа11л, так как не соотнес,1;:~ объе:v~ы корректуры и файлr1, т. е. ОС, зная объе;-.1ы файлов, Тб1 не мeIIee 11сно,1ьзует эти знания то.1ыю д.r1н того, чтобы детпь 11а:\-1ять на зa,1.:iII­ нo:-.1 устрой с I ве. Во второ~1 - ОС, ю1ея сре;1.стuа д.1я з::~,1ы111я 11,1е1111 1юс1iтеля, в частности диске1ы, 1е~1 не менее не хра111п ш1 11х имена, ни дирl'ктор1111. В третьем - ОС, распо.1агая средствами д.1я зада1111п да1ы и времени, созда1111я фа11J1й, также с эт~1:v1 не рабо­ тает. Представ.1яется, что са:-.1ы11 естественный выход нз этого по.1ожения можно най111 расшир1ш 11онятне основ­ ного информационного объеюа, с 1,оторым раGотает ОС файла. Сохраняя прежний терыш1 «файл» достаточно для реше­ ния выявленных проблеы сделать допустимым, например 28
следующее опнсание имени файла: [имн 11оснтеш1 1. [ш,ш файла 1 . [объем 1 . [дата и время создания 1 . [поле при­ мечаний] . Здесь все параметры, кроме существующего имени файла, не обязательны. Если бы при этом ОС взяла на себя ту работу, которую пользователь каждодневно выпо.тняет, прос:-,1атривая оглавления, анализируя ноыера дисков, имена фай.ТJов, 11х объемы и время создания, э10 могло бы явнться большим достижениеы. Даже если не использовать термины «искусственный интеллект» и «самообучение», можно представить, как упростилась бы работа, если бы машина знала содержание всех дискет, с которыми она работала, а в программах можно было бы многократно нспользовать файJiы с одина­ ковыми и!'.1енами II ОС различала бы их по месту размеще­ ния, объему, дате и вреыени создания; если бы, наконец, ОС сама решаJ!а, что и где хранить, подс1,азываJiа бы с каким именем дискета необходима ей дш1 работы. Интересно, что все эти идеи так или иначе опробованы и частично реализованы, но они находятся в зародышевом состоянпи и не получили законченного развития. В самом деле, существуют понятия «каталог», путь в каталоге, «подкач1<а>> и т. д., но места их применения локализованы в 1юнкретных устройствах и не распространяются ни па машину, ни тем более на внешнюю среду, в 1<оторую эта машина как расширитель интеллекта встроена. Конечно, реализация этих идей потребует, в свою оче­ редь, выде,1ения ресурсов памяти и также со временем обнаружится порог «11ыслительных» способностей новой ОС, однако бурное развитие схемотехники делает это опасение непринцишrальным. Кстати, создается впечатление, что темп, заданный схемотехникой, оказался не под силу информатике, кото­ рая едва успевает производить «на скорую руку» прогр;:ш­ мы, хоть как-то обеспечивающие возможность работы на все новых и новых устройствах. Хочется надеяться, что время компьютерной «эйфорни» минует II разработчшш общесистемных средств предложат нам действительно удобную и умную ОС. Это совсем не значит, что труд по освоению современных программных средств будет напра­ сен. Без сомнения, все накопленное програм~шое об2спече­ ние будет поддерживаться и новыми сп~рационны:ми системами.
Глава 2. УТИЛIIТЫ 2. 1. Утилиты базового состава DOS Утшшта - это отде"1ьная независимая сервисная npo- rpaыi\Ia. Сервисные програы:--ш разрабатываются д:1я широ­ кого спе1,тра пр1:;,.1енен11й. В зависимости от назначения упrлн 1ы ус.1овно r.южно кт1ссифнuировять с.1едующ1ш образоl\i: базового состава COS; общес11сте:\11Iь:е; д.1я разр;~­ бопш проrрам:-.1 (от:1адчию1); 1аб.1нчных npoueccopcв; баз данных; интеrрирсванных де.'iсвь:х шшетов; шюгоо1,0111ше интерсj,еi1сы; конечного пользсnа,сля; сбс.1уж11nаш1я уст­ рсйс1в ПЭВЛl. Как вндно, пс~;ятие «утн.11rт?)> тракту('тся очень шн­ роко. В зарубежных ка12.1огах 1< ути.11пё.:,1 01 нссят даже средс~ва конеч1юго rю.11Ьзсва1с:1н, Е, прю:tр шш<:т зс11111с­ ная 1ш11ж~-;а - 1<?..1ь1,уля1ор - Side Kicl<. i\:ы л..:е ,1_1я :>доб­ с1ва изJчення 6Jдо1 исr10.1ьзсвать этот 1ермЕн то:11, 1 :0 Пр!Шf'!i!!Тf'ЛЬНО !( fаэсвс~1у ссставу cos 11 ССЩСС!JСТСШIЫ\1 средс1п,l:-.1. СведенIJя о некоторых других :'> 111литах как проrраJ1.1мных средствах, расширяющих воэ:,:ожносп1 не­ ко1орых известных крупных пакетов проrраш,1, будут даны в состветствующих разде.1ах. В ст.r111чие от встроеннь:х или «в1:уч~с~-:ш:х» 1ю~1анд DOS, реа.1и2уемь:х подnрогр:ш:-1аыи 1 J)f х ос1ювнь:х ~юду­ лсii, <внешюн.'» 1ю!\1ан,1ы, 1ю1орые оfыч1:о 1,хо;~я1 в ста11- дар1ныf1 ко~·п.1е1,т DOS, реат1зуютсн посредлвс'.1 ан10- 11оiРь:х серв1:с1-,ь•х проrра~:м (утllлит). Гirн практичсс1юй раС01 ~ на11со.1ее часто испо.'!Ьзуются утнл1;ты PR I ;-..:т СО,\\, F ОR:\\Л Т СО1\\, (Н I,DSК.COЛ\, J\'.OOE.CO,I\\. Другие п;-огrп;:,:ы испо.1ьзу1стся реже. Н1:,:.е пр~шеден c111:col{ ) 111.1п, входящих в базовый сост с~ в LOS: ЛSSI G)\ СО.\\, DISKCO.i\\P.COJ\\, J\\ODE COJ\\, SYS.COM, BACKl Р.СО.\\, DISKCOPY.C0,1\\, PR II\T.CO,\\, TREE СО,\\, СН KDS К. COJ\\, ГORJ\iAT.CO}\\, JH"CC\TI~ .СС.\', CO .i\~P СО.\\, GRAPH ICS.CC,\\, R [STCR [ .lC;\\. P,:1. L~!Cl r1:"1 работу ЭТl!Х J ТIJIOIT. зо
ASSIGN. СОМ. Утилита позволяет заменить временно имя устройства. DOS всегда будет использовать новое имя устройства, если в некоторой ко~~анде встретится старое ш1я. ASSIGN создана д.1я работы с прогрюшюш, которые пре,1по.1агают на.111ч11е фай.1а на конкретноы устройс1 ве Ут11.1I1та поддерживает работу этих прогрю1м с жестюш ,111с1ю,1. BACKUP. СОМ и RESTORE. СО.'\1. Эш уш.111ты нс­ по.1ьзуются ,:~.1я архивац1111 фай.1ов с ,1-:ест1шх ,1_11с1<0в на днскеты II нх восстанов.1еш1я с .щскет. BACKUP.CO .',\ пе­ ренос11т фт"1,1ы с жесткого диска ш1 ,:щскету. Фор\1ат обращенш1 с,1е,J.ующ11й: BACKL;P [С:] ШУТЫ [И,\\Я ФАЙи1ЛI [D:I [/S] [ 1\\] [/А] [1D:М,\\-ДД-ГГ] Здеи, [С: 1 - ю1я твер,J.ого дис1<а, который архrшнруется; lfl~Tb] - путь к като:югу, файлы которого будут архи­ в11рсвюься (псннтне «путь к ката.югу» - с~1. [16 ], стр. 23); [И,1\\Я ФАЙЛА 1 - ю1сна фай:юв, которые арх1ш11руете; 1D: 1 - и~1я устройства, в 1ютор~;о.,1 нахо;щтся д11скета для зап11с11 фай.1ов (куда будете архивнроваrь); [/S] - архи­ вирует файлы из всех подкаталогов текущего каталога, несмотря на степень в.1ожен11я; [/1\\ 1 - указывает DOS архивировать то,1ько фай.'lы, измененные после предыду­ щей работы ВЛСКUР; оп1етю1, что прн зап11с11 фай.1а DOS делает отметку, а BACKUP ее с·111рает; [/А 1 - ар­ ХI!в11руемые файлы будут добаелены к уже хранящю1ся на днскtн·; l/D] - у1,а,ьшзет архивировать только фай,'lы, создашъ1е не ранее зс1данно11 даты. Когда одна дискета з?пnлшi1сн до конна, DOS запросит другую. ~1111Jнпа RLSTORE.CO1\\ восстанав.ншает фа1"1.1ы с д1;скеты на жест~шй диск. Фор:"11ат обращенпя к ней с,1едующий: RESTORE [D: 1 [С: 1 [ПУТЬ 1 [И,\\Я ФАЙЛА 1 [/S 1 [iP 1 Здесь [D: 1 - ш1н гибкого диска; [С:] - имя восстанав­ Л!lваемого твер:1.аго диска; [ПУТЬ] - нмя каталога, в котором будут размещаться восстанав.1иваемые файлы; если путь не специфицирован, все файJIЫ пойдут в главный каталог; [ИМЯ ФАЙЛА 1 - имена файлов, которые не­ оfходимо восстанавлиnать; [/S 1 - восстанавливает все архивированные каталоги, подкаталоги и файлы; [/Р 1 - дает указание DOS спросить перед восстановлением о 31
файлах, которые были изменены после последнего архиви­ рования или от:.1ечены «только для чтения». Например: RESTORE А: С:/ /S Все файлы и катаiюги с архивной дискеты на устрой­ стве А восстанавливаются на устройство С. СН KDSK. СОМ. Утилита произво.:шт проверку дис!(а Она прос~1атривает FАТ (таб:11щу распре,::~.е.1ения файлов - с~,. п. 2.2) 11 каталоги, проверяя их на соответствие. Инфор:--1ащш о размещеv.~rи файла находнтсн в FA Т (об это:-.1 ниже), кро~1е того, в ката.1оге указаны начальный н:1астер файла и общий размер фай:1а. Если в результате пrосl\!отра СН KDS К вынвила несоответствие между FАТ 11 инфор>i1щией ката.1ога, то она выдаст сообщение о «rютеряш1ых,> кластерах. По желанию пользователя эти кластеры могут быть объединены в файлы FILEnnnn.CI-:1 К, где число nnnn - номер фай.1а, начиная с 0000. Ути.1ита СН KDSK испо.1ьзуется для проверки каче­ ства заnнси инфор~1ации на диске (формпт обращения: CHKDSК/F). Для обеспечения более полной информации о ходе проверки служит формат обращения с ключом V (всриф11 кация): СН KDS K/V. В общем случае файл на диске может быть размещен не непрерывно, а фрагментами, что зюледляет операции с файлом. Д.11я устранения фрагменташ-111 можно, задав иш1 фа11ла д.1я CHKDSK, осуществить проверку файла па наличие фрагментаrши. !:ели фрагментация обнару­ жена, ее можно устранить !(ОП11рованием файла. СОМР. СОМ. Утилита СОМР служит для сравнения двух и более файлов, но не целых дис1<ет. Формат обращения СОМР IСПЕЦИФИКЛЦИЯ-11 [СПЕЦИФИКАЦИЯ-21. Если ути.1ита обнаружит рюющу щ:'жду файлами, то она укажет ее l\1ec10 и nыведет НС'совпад,,ющне байты n шестнадцатеричном виде. Если сраРш,ваемые qшЙJIЫ ока­ жутся разной длины и,пн ч1:с.10 пtсоепаде1111й превысит 10, то СО1ЧР прекратит работу. Лля сравнения и ко11ировпнн11 диске1 нс 110.1ьзvются утнлпты 01sксомР.r:ом 11 01sкcorv сn,ч. При rыпо.1- нснии DISKCOPY 11рон3r.оюпсч 11рtдварительное фор:-.1п­ тир 1}Rание днска-l(ОПИИ, 1!8П[НiМер: DISKCOMP д: R: i сравнt>нпе д~ю<еты А: и В: IJISKCOPY R: D: l 1юп11рова11ие дискеты В: па D: FORMAT. СОМ и SY S. СОМ. Эти утплиты служат для форматирования дискt>т и нодrотовкн их I< ис110.%зованию. 32
FORMAT nроизволит ининиализа,шю чистоrо дис1{а R qорма re MS-DOS. Параметр /S 1юзволяет подтовить щ1с1,ету для коннровзнияфайлов опЕ·рашюнной системы l[\азу 1юс.r1е ~авt-ршения фор~1атирования днс1{а (FOR1\1AT lj./~;). Утилита SY" производит rюпирован11е сис1t-мных фaй­ JIOf· из устройства, приннтого по умо.нчэнню, на указанный Д11С'К TREE. СОМ. Утилпта п0Еазыв;1ст 1<аталоги устройства (rю уl\1оJJчанию или заданного). Формат обращения: TR ЕЕ ID: 1 1/F ]. Здесь D: - имя ус1ройе'1в:1; /J-::: - задает вывод п<·ех файлов из по,щаталоrон. PRI NT. COJ\\. Сервисная программа PRINT. СОМ. об,'t:llечивает ,юстансвr,у текстовы.х фэй пов в очередь на печаrь. Печать 11роизводится на фоне J11Uбой другой зада 1ш. Ф()рмат обращенив к этой 11роrрамме имеет следующий ш1:1: PRINT (специфи1<а11ия файла 1] k11е1шфrшаш1я фай­ J;а ~]... При таком обрашении все ую~занные ф:~йлы ставятся в 0<1ередь на вечаrь и, ес.1111 принтер сnобод~н и готов к печати, ср~зу же начинается печать первого файла. Умол­ ча1111е для максиl\~альноrо числа файлов в очереди равно 10, но оно может быть изменено. Обращf'пие к программе Р f<] NT может быть снабжено 11арю.1етрами, которые вm­ дт ся вслед за имене'VI фяй.тrа через слзш (/). Преду1;мотрено использование следующих параметров: /Q:ff (ff - макси­ мальное чис1ю файлов в очереди); /D:pp (рр - имя прин­ тера ит1 друго1·0 устройства для вывода данного файла); /В:ЬЬ (ЬЬ - размер буфера в байтах (по умолчанию 512)); /С - признак исключения дянноrо файл,~ и всех последую­ щих из очереди; /Р - отмена действия /С; По 1юманде PRINT /Т все файлы 11с1{лючаются из очереди. MODE. СОМ. Многофункциональная утилита имеет четыре режима работы, которые обеспечивают: настройку принтера; изУ~енениr формата выrода на экран; настройку на работу с пос-ледовательными устройствами типа модемов; nеренаправление выхода нринтера. В режиме I MODE нозволяет управлять мяксимальной длиноi~ строки п расстояниеl\1 между строками на стандарт­ ном пршпере, обс,1ужнвая до трех принтеров. Н:~чиная работу G у1илитой, необходимо указать, н:1 какой принтер будет осуществляться печать. После имеrт 2 Смирнов Н. Н. аз
прннтсрJ через дпоrточ1rе следует за'lатr, цаксп\!э;rr,пос ч11с:1'1 '>Накоr n строке. Выбнра1ь можно между 80 11 132. На прн '.1ер, длн г1с,,1учен ы~ восы.mдесяти зна кон в t'тrске с.1е·1ует задать l\IODP LPT\ : f-\() Пос,12л111i'1 11apю1err MODF: д:1н реж11\1а r,pr:Prep::i, з:i;Larae:-.-1ы11 через за11ятую, 01,ре;~,е:,нет расс1оян11е щ'ж,1у сrоокаv1и, которое за;цеrся кол11чествоN1 строк fi::i один дюй~ по вертикали. Шесть строк на дюйм, напрщ1ер, ~южно получить, задав MODE LPT2 : 132,6 В режиме 2 утилита MODE позволяет увсл11читr~ обычный раз:-.rер кажnого знака в два раза. Стандар1но на экране раз:v~ещается 80 знакон в одной строке. Расширtн­ ный в два разя Тf'кст более ясен 11 легок для чтения; прн этом в строке пт.н:щяется 40 знаков. Kpov1e уста1юnю1 раз:-.-,ера, MODE можно испопьзотпь для переl\lещсния v..10бражения на "'Жране в11раво 11 ВЛЕВО. Эю необходимо, если тернются не1<оторые знш,и на гр,щи­ нах экрана. Пример оrран,ения: l\\ODE 40, l. - сдш1г влево на два расшнренРых знака; MODE 80, R - сдвиг вправо па два обычных ::>накя. В это:-.-t режиl\Iе, если до~ав111ь .запятую и Т после I, и.~и R, будет показан примерный ряд си\1волоn, которые займут целый экран. С помощью этого 11рнема удобно центрировать текст на ">Кране. Существуют еще с~юсобы исполиован:1:1 l\~ODF. JJMJ управления экраном. В общем случае фор,1аг сбра111ен11я к MODE Р режиме 2 слелующ1-1й: MODE [N], М [, TI Здесь N - ,:ож.Е:'т при11ю1ап, с:н,'дующнс зн:~ч~:.ния: 4(), k0, MONO, BW80, СО80, B\V4{), (040,; iЧ -- ""НаЧ=НИЯ, ) к:1- занные в прш1ере обрэщения; за:щние r1нр?.'.1~1 ра Т (Оi•ЫТ· ный обра-з('11) позrю:~неr пре,1варнте.11,!10 !:H,II>t>cти макс~ на э~:г,а:1; 1ша:~рзтн~,1е скобки о,нач:1к,т щ,0611J 01тсль11ый 1;nр1- ыетр ~1eikrm1я I!с:югорьrх зпачсннй п::1~nvtt'l p:i N былн р,1с­ сыотре1н,1, [IO'HO\i'j Cl.:J31!0PJC\1CЯ на OCTf\Pl!ll!XCЯ: 1\\0l\:O - 11ере1<лючаст черно белыf1 а:~.а11н"р; кол1:чс­ сгrю с11\шож,в н строr<е всегд~ 80; В\1/80 - переr{,1юч<1ет п.rтатv для uветнnй грм!·Рк11 на черно-бе.'lое 11:-юбражение, 80 сюшолов в строке; COR0 - flерек.1ючаеr пла1 у дл~ UРетной гра,ри ки и пветнсrо изсбраженип, 80 с·и:v1Ролов в cтpOI<ei
B\V40 - nере1<лючает пветвоii графиче,·кий адаптер ш1 uерно-белое изображение, 40 снмво.'!ов в сгроке; СО-Ю - 11еректсчает плату для пвстной графики и нветно, о 111сбраже1111я, 40 с11:~.11ю.1ов в строке. R ре,1<Рме 3 J\\ODE 1юзволяет у11равлять асинхронным ксншун111,а1нюнньш адаптеро~1, посрfдством которого осу­ ще..:1 вляен.я свSJзь ПЭВЛ\ с ввешш1ы миром. MODE ин11- ниа:1нзирует адаliтер и усншавлнЕает протокол. Формат обрш1~еш1я к .I\\ODE в этт1 реж1ше. 1'-IODE CO.l\in: Сод [, четность [, бит-давпые [, стоп­ бнты 1, PIIII 9десь бод - скорость передачи данных; четность - спо­ соб проверки символа на правильность; бит-данные - д.1ш11а с11мво.1ов в битах; стоп-биты- сигнализируют о конце 11средачи. В этом формате допускаются следующие возможные з11аче11ня парю1етров: Бод 110, 150, 300, 600, 1200, 2400, 4800, 9600. Четность: N - нечетное, Е - четное (по умолчанию). Бит-данные: 7 или 8 (по умолчанию 7). Стоп-бнты: 1 или 2 (ес.'ш бод-110, по умо.1ча11ию 2). На­ пример: J\IODE COMI : 300, N, 8, 1, Р Здесь Р - указывает, что будет использоваться асин­ хронный адантер д.r1я связи с принтером; если принимаю­ щее устройство не отвечает, то попытка продолжить пересылку симно.'!ов будет повторена. В реж1ше 4 утилита .l\1ODE направляет параллельные выходные дапные для приптrра к адаптеру. Это требуется в случае, если необходимо 11с1юльзовать не параллель­ ный IВJ\\-пр11нтер, а последовате,r~ы1ый принтер. Для его по;JС'оед11нев11я используется асинхронный 1юммун11ка­ щюнныi\ адаптер-стык С2 (RS-232C). Затем MODE в ре­ жш1е 3 с пара\!етрш1 Р 11ниц11а.'!изирует асинхронный адап­ тер, 1юr.1е: чего IЗЫП0.1няется Л\ОDЕ в peж11:vre 4 MODE LPTI: СО.\\!. GRAPH iCS. СОМ. Серв11сная прогрю1ма GRAPHICS испо.1i,зуе1ся д.1я выдачи на приитер графической копии экрана. Для ее использования необходимы следующне спе1ща.11.,ные устройства: плата для цветной графики; rr,1 ф11чеС'Е!IЙ 1\Ю1штор; ыатричный принтер типа 1В.М. 35
После вызова этой утилиты нажатие клавиш Shift и PrtSc вызывает вывод на принтер графической копии экрана. При этом возможны три варианта: 1) если экран находится в текстовом режиме, то копирование происхо­ дит точно так же, как и без команды GRAPHICS; 2) если экран находится в режиме 320Х 200 точек, то на принтер копируются текст и графические изображения, причем закрашенные цветные области отображаются на бумаге в оттенки серого цвета, если принтер не цветной; 3) если экран находится в режиме 640 Х 200 точек, то изображение копируется на принтер повернутым на 90 градусов (правый верхний yroJ1 экрана отображается в ле­ вый верхний угол на бумаге), при этом изображение как на экране, так и на принтере одноцветное. После вызова программы GRAPHICS при копирова­ нии изображения с экрана точки черного цвета отобража­ ются на бумаге в белый цвет, и наоборот. Чтобы инверти­ ровать цвета печатаемого на бумаге изображения, необ­ ходимо обратиться к GRAPHICS с параметром /R. После этого черные точки экрана будут становиться черными и на бумаге. Используя Еsс-последовательности, можно легко со­ ставить собственную удобную программу для вывода на принтер графических изображений или файлов. Полученные таким образом файлы могут содержать графические иллюстрации к текстовым документам и ста­ тьям. Вывод на печать файла с изображением, соответ­ ствующим одному экрану, занимает несколько секунд. Оrметим, что утилита GRAPHICS может работать совместно с программой MODE. 2.2 . Общесистемные утилиты DOS Помимо сравнительно простых утилит, входящих в ба­ зовый состав DOS, существует достаточно много отдельно поставляемых мощных сервисных программ. В этом разделе будут описаны утилиты, которые получили наи­ большее распространение и могут быть рекомендованы для использования. Этот материал было бы естественно поместить в раздел «Операционная система», однако он оказался здесь, поскольку предназначен для квалифици­ рованных пользователей. Прежде чем мы перейдем к рассмотрению общесистем­ ных утилит, необходимо дать определения терминам, 36
которые встретятся в тексте, а также сказать несколько слов об организации хранения информации на диске и размещении ее в памяти ПЭВМ. В рассматриваемой операционной системе информа­ ция на гибком диске размещается блоками по 512 байт. При двойной плотности записи на диске помещается 720 блоков; блоки нумеруются от О до 719 и носят названия физических секторов или просто секторов. Структура размещения информации на гибком диске представ.1ена на рис. 2. 1. Цифрами на рисунке обозначены номера секторов, в которых размещаются соответствую­ щие области. Файлы размещаются в области данных пор­ циями (кластерами), начиная с физического сектора 12. Физиче- Логический сектор о 1...707 ский сектор О1234 567891011 12 13 ... 719 Диск 1 В I FAT 1 ROOT DIRECTORY AREA 1 DATA I_ Область данных -Обласrь корневого ка1алога -Таблица распределения фаiiлов -Облас1ь начального загрузчика Рис. 2.1 Кластером называется группа из нескольких последо­ вательных секторов (от 1 до 8); для гибкого диска размер кластера образуется из двух секторов. Сектора, в которых размещается область данных, на­ зываются логическими секторами. Таким образом, нуле­ вой логический сектор соответствует двенадцатому фи­ зическому сектору. Нулевой физический сектор содержит область начального загрузчика. Таблица F АТ является таблицей переменной длины и состоит из элементов по 1,5 байт каждый. Первый и вто­ рой элементы стандартны для всех дисков с одинаковой разметкой. Например: FDF FFF (для формата девять сек­ торов на дорожку при двусторонней разметке). Первый файл в таблице FA Т описывается, начиная с третьего элемента таблицы. Для первого файла начальный кла­ стер 2, а элемент, начиная с которого он описан в таблице, находится со смещением 2 * 1,5 байт. 37
С,1едовате,1ьно, смещение в таб.11ще (S) может быть определено по cj:op~1y"1e: S = Е (1,5 * N), где N - ноыер е,тартовоrо I<ластера; Е - це.т1ая часть от числа. Каждо:-.1у файлу на диске соответствует цепочка s.1е­ ментов в таб.тJИце. В цепочке у1<азаны кластеры, занРыае­ мые файлом. Элемент ООО в таблице - свободный I<.1а­ стер. Элемент FFF - последний к.1астер в фай.1е. Эле­ менты FFO-FF7- зарезервированный КJ1астер либо плохой кластер, если стоит вне цепочки. Любые другие зна­ чения элемента указывают на следующий ю1астер в це­ почке. Номер следующего кластера в цепочке не обяза­ тельно последовательный, по обязательно больше пrr:~ы­ дущего. Область корневого каталога занимает на диске сек­ тора 5-11, на которых хранятся 1шена всех фай,1ов 11 подкаталогов, находящихся на диске. Начиная с сектора 12, размещается область данных. В ней находится информация, содержащаяся в файлах. Вся информация о распределении файлов находится в таблице распределения файлов и дается в к.1астср11ой q:орме. Для вычисления номера физического сеюора можно воспользоваться следующей формулой: (Номер сектора) = 12 + (Номер кластера) х 2 Информация заносится на диск на первое от начала свободное место. Первый кластер с данными при ус.1оы111, что запись производится на чистый, отформатированный диск, имеет номер 2. Поэтому первый файл, записывае\JЫЙ на чистый диск, имеет стартовый кластер 2. Теперь необходимо немного сказать об орrанизтшн оперативной памяти ПЭВМ. Оперативная память ПЭВМ разбита на маленыше «порции» (обычно 16 байт), называемые параграфами. Сегмент - это порuия памяти длиной почти 64 Кбайт, начинающаяся на границе параграфа. Номер сегмента и смещение внутри сев1ента ш·1есте определяют l\!Е'Сто в па­ мяти. Рассмотрнм некоторые важ11ыс ут11.'1иты этой группы. Утилита DISK RёPAIR (исправитею,дис1{а)фир~1ы IВ1\\ Corporation предназначена д.1я редактирования 11нфорыа­ uии или на диске, ил11 прямо в оперативпой пэмяш ПЭВМ. Disk Repair (DR) 1шеет следующие режимы: HELP - вывод на дисплей главного меню; EXPLAIN - 01111сание 38
сообщений и полей; BIOS SECTOR - режим абсолютных (BIOS) секторов; DOS SECTOR - режим логических (DOS) секторов; FILE - режим файлов DOS; MEMORY - режим памяти; DIRECTORY - режим каталога; FAT - режим таблицы распределения файлов; PARAMETER - режим параметров диска; INTERRUPT/CALL - режим вызова и прерывания программ. Как и большинство других отдельно поставляемых утилит, DR снабжена удобным меню. Выбор нужного режима производится нажатием соответствующей функ­ шюнальной клавиши. На рис. 2.2 показано оформление кадра, который появится на экране после нажатия кла­ виши FЗ (режим BIOS Sector Mode). На рисунке в правой части экрана помещаются 256 байт информации в коде ASCII, в левой части - та же информация в шестнадцатеричном представлении. Здесь для иллюстрации выбран текстовый файл. Disk Rep11ir -- В IOS Sector J\1ode Addr +о +4 +в +с ASCII 00000 20202020 20202020 20202020 20202020 00010 20202020 А2АОАЛАО ADBIA8BF 0D0A2020 Dакансия 000FO 20202020 20202020 20202020 20202020 Drive Cilinder Head Sector Cl11ster Вios Sector Mode 01 ООО 1 09 0004 Commaпd: Fl Help F2 Explain F3/F4 Scctor F5 File F6 Мет F7 Dir F8 FAT F9 Param FlO INT Рис. 2.2 Для по.r~учення описания какого-либо поля следует подвести курсор к желаемому значению и нажать кла­ вишу F2. Для ввода r<оманд используется специальная командная строка. Команды вызываются по первой букве. Список команд: WRITE (запись модифицированного буфера на диск]; SAVE [запись кластера в сохраняемый фаf1л ); EBCDIC 11.riи ASCII [вывод на экран в кодах EBCDIC/ASCII ); DECIMAL или НЕХ [сменить основа­ пне системы счвс.'Jс1шя ]; QUIT [конеu программы и возRрат в DOS] Ош:санис по.чей в режиме BIOS SECTOR. Поля в ре­ жи;..1е В lOS Sector Mode (пятая строка экрана снизу на рпс. 2.2) имеют следующие значения. 39
Поле Drive содержит адрес дискового накопителя. Адреса начинаются с 00. Например, диск А имеет ад• рее 00, а диск В - О 1. Жесткие диски имеют адреса, на• чиная с 80. Например, первый жесткий диск (С) имеет адрес 80, а второй жесткий диск (D) - 81. Поле Cyliпder (цилиндр) - это набор дорожек на диске, которые могут быть использованы без передвиже­ ния головки диска. Это поле содержит шестнадцатерич• ный номер текущего цилиндра. Поле Head содержит номер головки, который показы­ вает, какая головка используется для чтения данных. На односторонних дискетах используется только одна головка (головка О). На двусторонних дискетах исполь­ зуются головки с номерами О и 1. Жесткие диски могут иметь более двух головок. Поле Sector содержит номер сектора на текущей до­ рожке. Номера секторов находятся в диапазоне 1-8 или 1-9 . Поле Cluster содержит номер кластера, который свя• зан с сектором, указанным в поле SECTOR. В нижней строке (рис. 2.2) указано, с помощью каких клавиш можно перейти в требуемый режим. Приведем некоторые особенности работы в этих режимах. В режиме Sector (переход по клавише F4) используе­ мые поля содержат следующую информацию: FILESIZE- paзмep файла (баi'п); OFF5ET - число, которое показы­ вает, какие именно 256 ба11т файла необходимо вывести на дисплей; для движения по файлу используются кла• виши PgUp («страница вверх») или PgDn («страница вниз»); FILE NAME - имя файла; DIRECTORY - имя каталога, в котором находится файл. В режиме Mem поле SEG : OFFSET указывает адрес. Он определяет каждые 256 байт памяти, которые будут отображаться на экране дисплея. В этом режиме воз­ можно редактирование оперативной памяти ПЭВМ. Для перехода в режим F АТ используется клавиша F8. В режиме F АТ содержимое таблицы распределения файлов выводится на дисплей в удобной для анализа и редактирования форме. Этот режим позволяет систем­ ным программистам выполнять операции по восстановле­ нию информации на диске. В режиме Parameter (переход по клавише F9) дается подробная справка о диске и об информации на диске. В режиме INT (lnterrupt/Call) поле Interrupt Numbeir 40
содержит число (вектор прерывания), которое будет ис­ пользовано nри выполнении команды INT. Поля верхней группы регистров представляют внутренние регистры. Их можно установить перед выполнением команд INT или CALL. После выполнения команд INT (или CALL) возвращае­ мые значения высвечиваются на экране дисплея в нижней группе регистров. Возврат в DOS по команде QUIТ. РС- TOOLS. Эта утилита, разработанная фирмо~ Sof tware, предоставляет пользователю наиболее полнuи набор сервисных услуг, необходимых для работы с дис­ ками и файлами. PC-TOOLS имеет два меню: для работы с файлами и для работы с дисковыми и специальными функ­ циями. Переход от первого меню ко второму осуществляется нажатием функциональной клавиши FЗ. Клавиша FIO позволяет изменить имя дискового устройства. При работе с файлами предоставляются следующие услуги: «С» - копирование файла или файлов; «М» - перемещение файла или файлов (файл-источник удаля­ ется); «О» - сравнение содержимого файлов; «F» - поиск строки символов в файле или файлах; «R» - переимено­ вание файла или файлов; «D» - удаление файла или файлов; «V» - верификация файла или файлов; «Е» - редактирование файла или файлов; «А» - получение атри­ бутов файла или файлов и даты (времени) последнего об­ новления; «Р» - печать содержимого файла или файлов. Перечень услуг при работе со сменными дисками и специальные функции: «С» - копирование с одного ди­ ска на другой; «М» - снятие карты памяти (МАР) с диска и получение информации о расположении файлов на дис­ ке; «О» - сравнение содержания двух дисков; «F» - поиск строки символов на диске; «R» - переименование метки тома; «V» - верификация диска; «Е» - редакти­ рование диска; «L» - получение директория, в котором файл или файлы размещаются; «N» - форматирование диска. Утилита снабжена многочисленными подсказками и постоянно поддерживает «дружественный» интерфейс с пользователем. Для выбора режима достаточно ввести соответствующую латинскую букву. COPYWRIТE (автор Robert Т. McQuait). Эга про­ грамма предназначена для копирования защищенных 41
дискет. Она обновляется каждый месяц, чтобы соответ­ ствовать последним разработкам в области защиты дискет. Поэтому качество ее работы зависит от месяца и года из­ дания. COPYWRIТE не может копировать дискеты, за­ щищенные с помощью лазерной «дырки». СОРУ 11-РС (Central Point). Эта программа позволяет сня rь только архивную ~<опию с дискеты. Она не предна­ значается ни для каких других целей. Пакет NORTON UTILIТIES фирмы «Питер Нортон Компьютин» (Peter Norton Computin) предназначается для редактирования информации на диске и восстановления стертых файлов. Norton Utilities предоставляет пользова­ телю три меню. Выбор функции в меню осуществляется нажатием соответствующей функциональной клавиши. Главное меню предоставляет следующие возможности: FJ - изменение выбора (диска, директория, файла или сеr{тора на диске); F2 - отображение информации на диске (просмотр и корректировка данных); FЗ - восста­ новление стертых файлов; ESC - выход из программы. Второе меню предоставляет следующие возможности по отображению дисковой информации: Fl - изменение выбора; F2 - отображение технической информации о диске; FЗ - карта распределения диска; F4 - отобра­ жение информации о выбранном элементе; Fб - чтение и корректировка содержания выбранного элемента; Fб - отображение информации каталога; ESC - возврат в глав­ ное меню. Третье меню предоставляет следующие возможности при восстановлении файлов: Fl - смена выбранного диска или каталога; F2 - выбор стертого файла для восстанов­ ления; FЗ - отображение информации о стертом файле; F4 - поиск данных стертого файла; FS - сохранение восстановленного файла; ESC - возврат в главное меню. Norton Utilities принадлежат, как и PC-Tools, к числу наиболее популярных утилит. В отличие от PC-Tools при работе с секторами Norton отображает целиком сек­ тор, что представляется более удобным. Фирмы постоянно соnершенствуют свои утилиты, практически ежегодно предлагая новые их версии. Из удачных разработок П. Нартова можно назвать также утилиту Qick-UnErase, которая позволяет быстро восстановить стертые файлы. С пользователем поддерживается минимальный диалог. Достоинство программы в простоте диалога и высокой с1ю1юсти выполнения услуг. 42
SMAP. Эта программа совсем проста и не поддержи­ r,ает интерфейса с пользователем, однако она позволяет увидеть размещение программ в оперативной памяти ПЭВJ\,1. Видеокадр программы SMAP представлен ниже: * * IВМ Iпternal Use only * * System Storage Мар Version 1.3 (С) Copyright ВМ Corp. 1984 Addr Program Parent Sg Bytes Hooked Vectors (ОС2Е) DOS UNKNOWN 2 3232 22 23 24 2Е (ODO2) Е1840 DOS 2 144 (ODOD) Ю840 DOS 2 1680 09 (OD78) EDISK DOS 2 1264 (ODC9) DOSEDIТ DOS 2 2016 21 (ОЕ49) FX85 DOS 2 368 17 Free memory 3 4654472 Next command adress: Е66 Как видно, использование рассмотренных утилит пред• ставляет большой интерес прежде всего для системных программистов. ПоJ1ьзователи, не ставящие перед собой: задач создания сложных программных продуктов или модернизации существующих пакетов, могут вполне уве­ ренно работать, даже пе догадываясь о существовании этих программ. 2.3. Архиваторы Как бы ни была велика емкость «винчестера», она, как и все на свете, конечна. Рано или поздно ресурсы жесткого диска будут исчерпаны и для его освобождения потребуется создать архив программ и теr<стовых файлов на дискетах. Для таких целей: более всего подходят спе­ циальные программы - архиваторы. Онп обладают тем преимуществом перед обычными программами копиро­ вания, что позволяют «сжимать», и довольно значительно (в особенности текстовые), файлы. Большой популярностью среди архиваторов пользу­ ется комплект программ PKARC FASTI, созданный фир­ мой PKW ARE INC. Основу комплекта составляют програм­ мы PKARC (архиватор) и PKXARC (реархиватор). Программа записи в архив PKARC. Формат вызова этой программы следующий: PKARC [опция 1 (имя архива) [D : РАТН] (специ­ фикация файла (ов)) В табл. 2.1 приведено описание функций, выполняе­ мых после задания опций. 43
Опция А u F м х L G V Таблица 2.J Фv11кuня ДобавИ1ь файлы в существующий архив или создаrь но­ вый архив с укnзанными ф1JйJ1ами. Ес,1и фаiiлы не ука­ заны, то есе файлы текущего кю ялоrа добавляются в арх11в Выполняются действия, как и А опuии «А», за тем исклю­ чением, что если указанные в архиве файJIЫ уже с'(щес,вуют, 10 будут заменены те из них, дата создания которых меньше, чем у записываемых файлов Просматриваются все файлы, у1(аза11ные в спепифиющии. Опuия работает так же, как «U», но Файлы II архиве могут лишь корректироваться, а новые файлы не добавляю1rя в аохив Работает. как и опция «А», но оригинальные файлы после добавления в архив у11и 1rrожаются Добавить комментарий к архиву Вывести на дисплей информацию о лицензии 1111 исполь­ зование программы Засекречивание архива Выдать каталог архива Опции могут быть заданы списком, однако опция «G» должна быть последней в этом списке; за опцией «G» должен непосредственно следовать пароль. Например: ~ P KARC AGPAROL DOC В: *· ТХТ, по этой команде будет создан архив DOC. ARC. В него будут добавлены все файлы с диска В:, имеющие расширение ТХТ. Архив будет защищен паролем PAROL. Программа выборки из архива PKXARC. Формат обращения к ней следующий: ~ PKXARC [опции] (имя архива) [D : РА ТН 1 {спецификация) В табл. 2.2 приведены используемые опции. Например: )PKXARC GPAROL DOC, по этой команде с помощью пароля PAROL выбираются все файлы из архива DOC. После того как архив создан, существует возмож­ ность преобразовать архив в так называемый самораскру­ чивающийся ЕХЕ-файл. Это позволяет отказаться от использования PKXARC для выборки файлов из архива. Потребуется лишь дать команду на исполнение этого ЕХЕ-файла. Для создания саморасr<ручивающеrося архива нужно последовательно выполнить следующее: исполь­ зуя PKARC, создать архив; <(слить» архивный файл 44
Опция R с р т V Таблица 2.2 Функция Обычно PKXARC сflрашивает: «OVERWRITE? (Пе­ реписаrь?)» - если выбираемый из архива файл будет записываться на уже существующий фаilл. Данная опция позволяет переписать существующий файл без выдачи вопроса Вывод файлов из архива на экран То же на принтер Проверка целостности архива. PKXARC подсчиты­ вает циклическую контрольную сумму для каждого архивного файла и сравнивает с тем значением, что уже хранится. После проверки каждого архивного файла выдается сообщение ПоJiучение каталога архива. В списке будут ука­ заны имя файла, цлина файла до сжатия, метод сжа­ тия, процент сжатия и значение циклической кон­ трольной суммы ЕилиХ Выборка файлов из архива. Эти опции действуют по уммчанию. Они не могут использоваться совместно с другими G (пароль) Выборка файлов из архива по паролю с файлом PKKOPF.PK по команде>СОРУ/В PKKOPF. РК + (имя архива). Е-ХЕ. Эффективность работы архиватора можно оценить, используя опцию V (вывод каталога). Фрагмент получае­ мого каталога представлен ниже: PI<XARC FASTI Archive Extract Utility Version 3.5 04-27-87 Copyrlght (С) 1986, 1987 PI<WARE lnc. All Rights Reserved. PKXARC/h Searching: e:/arc/PC1.ARC for help Filename Lenght Method Size Ratlo Date Time CRC --- - 45T.DB 896 Crunched 278 69% 05-12 -89 01 : 50: 14 С50В 45t.DS 512 Crunched 153 71% 05-12 -89 01 : 50: 14 84D7 0067 326960 208108 37% В нижней строке архива PCI.ARC указан общий про­ цент сжатия, составивший 37 % . Заrолово1< каталога на рисунке содержит кроме имени, объема и времени созда­ ния указание метода, с помощью которого осуществля­ лось сжатие, и циклическую сумму (CRC) - шестнадца­ теричное число. 45
Следует сказать, что программы-архиваторы можно использовать и на ПЭВМ, не оснащенных жестким дис· ком. 2.4. Знакогенератор дисплея Рассмотрим проблему, связанную с настройкой дис­ плея ПЭВМ на работу в требуемом алфавите. Настройка заключается в программировании гарннтуры знаков (зна­ когенератора). Поскольку принципы программирования знакогене­ ратора дисплея ПЭВМ достаточно общие, рассмотрим случай монохромного псевдографического дисплея. Для обеспечения работы дисплея ПЭВМ обладает специальным модулем - адаптером дисплея. Адаптер монохромного псевдографического дисплея ПЭВМ типа IВМ РС имеет перезагружаемый генератор знаков емкостью 8 Кбайт, который содержит точечные представления для 256 сим­ волов. Фактически эти 8 Кбайт памяти знакогенератора размещены в оперативной памяти ПЭВМ и занимают адреса с DC000 по DDFFF. Каждый алфавитно-цифровой символ представляет со­ бой в максимальном случае матрицу 7Х9 точек изобра­ жения, а каждый псевдографический - матрицу 9Х 14 то­ чек, причем, каждый символ кодируется с учетом меж• символьных и межстрочных пробелов. При загрузке генератора знаков на каждый символ отводится по 32 байта (16 слов), которые в дальнейшем будем называть матрицей символа. На рис. 2.3, а и б показано размеще­ ние областей для кодирования алфавитно-цифрового и 46 а) t5 ........ б . .... 1 О 6J15 ...... В ........ 1О 1 cлotJo g· спабо 1~ слабо tб спада с с Рис, 2,3
nсевдоrрафического символов в матрице символа соот­ ветствен но (А- область для кодирования алфавитно­ пифрового символа (7 х 9); В - область для кодирования nсевдографического символа (9х 14); С - неиспользуе­ мая область). При размещении существенным является лишь размер областп для символа, относительное же ее расположение в матрице символа определяет лишь место символа внутри строки, т. е. символ может быть приподнят или опущен относительно условного уровня строки на экранf', которому соответствует девятое слово в матрице символа. Неиспользуемая часть матрицы мо­ жет быть заполнена как угодно. Пример кодирования буквы «Р» в области А показан на рис. 2.4. Значение бита, равное единице, соответствует точке на экране дисплея. Биты (область А) Слово 654321 1 111111 11оо11 . 11оо11 . 11оо11 . 11оо11 . 111111 . 11оооо 11оооо 9 111ооо Рис. 2.4 о о 1 1 1 1 о о о о Вид буквы на экране ****** ** *** ** *** ** *** ** *** ****** ** ** *** Приведем алгоритм для программирования генератора знаков монохромного псевдоrрафического дисплея: вы­ вести в 8-разрядный порт управления дисплеем (адрес порта 3В8) константу ООН (шестнадцатеричное); загру­ зить матрицы соответствующих символов в область гене­ ратора знаков, размещенную в адресах DC000-DDFFF; вывести в порт 3В8 константу (например, 29Н), которая устанавливает требуемый режим работы дисплея. Режим «25*80» означает (единица в нулевом разряде), что на экране дисплея размещаются 25 строк по 80 сим­ волов. Режим «видео» (единица в третьем разряде) позво­ ляет отобразить символы в соответствии с их атрибутами, в противном случае экран дисплея погашен. Режим 47
«разрешить мерцание» (единица в пятом разряде) раз­ решает мерцание символа на экране. Остальные разряды не используются. Для задания функции дисплея следует поместить единицу в соответствующем разряде. Указанный алгоритм реализован в программе на языке Макроассемблер, которая приведена ниже. CODE START: 48 ТITLE SEGMENT ASSUME ORG PUSH РОР CLD MOV MOV PUSH РОР ES MOV MOV MOV XOR оuт Загрузка генератора знаков дис­ плея ЕС-1840 CS:CODE, DS:CODE, ES:CODE l00H CS ;регистр CS сохранен DS SI, GEN АХ DC00 АХ DI, О СХ, 2000Н DX, ЗВ8 АХ, АХ DX, AL ;в стеке ;DS=CS ;флаг DF=0 указы­ ;вает направление увеличения счетчика ;при выполнении опе­ ;ратора R EPZ MOVSB ;Sl = указатель блока ;матриц символов ;АХ= DC00 ;ES=DC00, с уче­ ;том механизма ад­ ;ресации в ПЭВМ ;этому значению со­ ;ответствует физи­ ;ческий адрес DC000 ;Dl=0 - смещение ;в области генера- ;тора знаков ;СХ=2000Н - счет­ ;чик пересылаемых ;байтов DХ=ЗВ8 - адрес ;порта управления ;дисплеем ;АН=О, AL=0 ;установка дисплея в ;режим загрузки ге­ ;нератора знаков
REPZ MOVSB ;загрузка генератора ;з-наков DS: [SI 1 = ;:= )} ES:[DI1 MOV AL, 29Н ;задание функций ;дисплея OUT DX, AL ;перевод дисплея в ;рабочий режим XOR АХ,АХ ;AL=0, АН=О INT 21 ;завершение про- ;граммы GEN DB 2000 DUP (?) CODE ENDS END В этом примере область матрип символов просто резер­ вируется. Предполагается, что она будет заполнена в про­ пессе редактирования средствами трассировщика А Т86 в режиме FONT. Этот процесс будет описан ниже. Если бы мы собирались использовать программу сразу, то вместо псевдооператора DB 2000 DUP (?) следовало бы поставить последовательность псевдооператоров вида DW IFF, 080, ... , IF0, каждый из которых описывал бы матрицу определенного символа. Создание шрифта для дисплея. Если все это показа­ лось слишком сложным, можно не писать свою собствен­ ную программу, а воспользоваться одной из многочислен­ ных готовых программ, которые выполняют загрузку знакогенератора дисплея, например CYRFONT. СОМ, и выполнить ее редактирование с помощью трассиров­ щика А Т86. Это позволит создать свой собственный ва­ риант шрифта или даже перейти к другой кодовой таб­ лице. Для этого, загрузив А Т86, необходимо выполнить следующую последовательность команд. 1. Загрузить в рабочую память А Т86 программу за- грузки генератора шрифта (CYRFONT. СОМ): >N А : CYRFONT. СОМ >L 2. Перейти в режим восстановJ1ения ассемблерного текста программы: i>U CS: 0100. Нажимая клавишу «пробел», про­ смотреть программу и обнаружить адрес, начиная с ко­ торого расположены матрицы символов (как правило, они располагаются или в начале, или в конце про­ граммы). 49
3. Перейти в режим FONT: >FONТ **** : **** (например > FONТ 1Еб2 : 0123). В режиме FONТ на экране дисплея справа будет размещаться карта изображений всех знаков той таблицы, которая загружена в настоящий момент, слевr.­ таблица, наглядно и укрупнешю показывающая внд про­ граммируемых символов. Таблица, в которой отобража­ ется верхняя часть буквы «Р», приведена на рис. 2.5 . В таблице отображаются 16 IE62:0256 IE62:0257 IE62.0258 IE62:0259 IE62:025A IE62:025B 1Е62:025С 1E62:025D 1Е62:025Е IE62:025F 1Е62:0260 1E62:026l 1Е62:0262 1Е62:0263 1Е62:0264 lЕб~:0265 байт, то есть ровно половин а ******. матрицы символа, что, ко- **. *** нечно, снижает наглядность. **• Для перемещения по карте • * * симво.~юв, расположенной па .** . * * * экране справа, используют клавиши управления движе- **. *** нием курсора. При этом в **• **· Рис. 2.5 таблице слева последователь­ но отображаются матрицы соответствующих символов. 4. Выполнить редактиро­ вание символа. Кроме са­ мого символа в таблице зна­ чком «белое лицо» (на рисунке он не показан) отмечается текущее положение курсора. Редактирование выполняется с помощью команд, при­ веденных в табл. 2.3 . 5. Закончив редактирование символа, нажать кла­ вишу «ввод». 6. Подготовив матрицы для требуемых символов, со­ хранить отредактированный файл на диске, например под именем CYRFONТ: >W А : CYRFONТ. СОМ 7. Выйти из трассировщика А Т86: >Q >QUIТ АТ86 (Y/N)? >У Для последующей работы с созданным загрузчиком знакогенератора необходимо дать команду на его выпол­ нение. Если работа в режиме нового знакогенератора будет производиться длительное время, то целесообразно команду запуска загрузчика генератора включить в ко- 50
Команда «Пробел» F !>\ R u H/V XiY Т/Е с CTRL-S/D CTRL-A CTRL-G/Y/B/Н Таблица 2.3 Выполняемое деnствие Очистить (установить) ячейку таблицы Перевернуть символ «вверх ногами» Отразить символ относительно условноii верти­ кальной центральной линии Инвертировать изображение Вернуть символ в исходное до начала реда1п11- рования состояние Встав111ь горизонтальную (вертикальную) линию Удалить горизонтальную (вертикальную) линию Определить блок копирования между «Т» или «Е» Копировать блок в положение текущего курсора Установиrь (удалить) ячейку таблицы Верну1ь курсор в левый верхний угол таблицы Перемещение курсора: G - влево; Н - вправо; У- вверх;В - вниз мандный файл загрузки ОС AUTOEXEC. ВАТ с тем, что­ бы его загрузка производилась автоматически. 2.5 . Программы для работы с ленточным стримером Ленточный стример (или просто стример) - это такое устройство персональной ЭВМ, которое позволяет вспом­ нить технологию работы на больших и мини-ЭВМ. Го­ воря точнее, стример - устройство хранения данных с последовательным методом доступа. Информация поме­ щается на магнитной ленте, упакованной в кассету (Data cartrige). Кассета данных по размерам и внешнему виду напоминает магнитофонную компакт-кассету. Различают кассеты емкостью 40, 60 и более Мбайт. По габаритам стример примерно соответствует размерам дисковода для гибких дисков. Конструктивно стримеры выпускаются в виде отдельных (автономных) устройств или встраивае­ мых блоков. Скорость доступа к данным у стримера сравнима (вернее немного меньше) со скоростью обмена информации дисковода гибких дисков. Так, копирование 150 Кбайт с жесткого диска на гибкий (гибкий диск заполнен на 50 %) занимает 25 с; копирование 150 Кбайт с жесткого 51
диска на кассету данных (r<ассета емкостью 40 Мбайт заnолнена на 50 %) занимает около 30 с. Процесс форма­ тирования и разметки ленты занимает около 35 мин. Сброс 20 Мбайт информации с жесткого диска на форма­ тированную ленту занимает приблизительно 20 мин. Использование ленточного стримера позволяет не только хранить большие объемы информации на магнитной ленте, но и повысить надежность разрабатываемых прикладных систем. Применение стримера особенно необходимо в ,юмплекте оборудования сетевого файл-сервера. В этом случае жи­ вучесть прикладной системы поддерживается регулярным копированием программ и данных с жесткого диска на стример. Копирование может производиться как в интер­ активном режиме, так и в автоматическом, с помощью специальных программных средств. Для обеспечения ра­ боты стримера фирма «Талrрэс Текнолоджис» (Tal- lgrass Technologies Corp.) выпускает необходимое про­ граммное обеспечение. В комплект входят следующие программы: TMSINIТ; TMS; PREPTAPE; ALARM; ALARMCLK; ТЕХ; XTREE; IMAGE; BACKTRACK; MMENU. В табл. 2.4 кратко перечислены функции, вы­ полняемые этими программами. Порядок подготовки кассеты к работе: описать в файле CONFIG.SYS стример командой Device-TMSINIТ. СОМ; вставить кассету данных в стример; загрузить программу TMS. ЕХЕ (после загрузки она остается резидентной в па­ мяти, занимая около 150 Кбайт), эта программа поддер­ живает все операции по управлению кассетой данных (программа может быть также включена в файл AUTOEXEC. ВАТ); вызвать программу MMENU и выб­ рать режим PREPTAPE; форматировать кассету, если она новая; разбить кассету на тома после форматирования (допускается до пяти томов) или, если требуется, изме­ нить прежнююю разбивку, однако при этом все данные на кассете будут потеряны. Работа со стримером. Для работы со стримером необ­ ходимо, еще раз напомним, чтобы устройство-стример было описано в файле CONFIG.SYS, а программа TMS - загружена. После этого можно приступать к работе. За­ метим, что если использовать, например, утилиту Norton Commander, то работа с кассетой ничем не будет отлича­ ться от работы с дисками. Точно так же, используя кла­ виши управления курсором или «мышь», можно двигаться 62
Программа TMSINIТ тмs PREPTAPE ALARM AI.ARMCLK ТЕХ XTREE IMAGE BACKTRACK MJ\\ENU Таблиuа 2.4 Функция (Назначение) Драйвер стримера Система управления кассетой данных Подготовка кассеты к работе: форматирование; раэбив~<а на тома Установка времени начала архивации данных в автоматическом режи,1е Резидентная программа, аrпивиэируемая за 2 мин до времени, установленного программой ALARM, дасr звуковой сигнал, после чего в установленное время запускает командный файл TGALARM.BA Т Фай.'Jавые операции на стримере: архивирова111<е каталогов; копирование файлов; с11ятие справки с rома Организl'!ция каталогов на дисках и кассетах Операция архивирован11я жесткого диска; архи­ вирование жесткого диска uеликоv~ на кассету; вос­ становление всего архива с кассеты па дисr<; вы­ борочное восстановление архива с кассеты на диск Автоматическая пофайловая архивация Интерфейс с пользователем для ре.боты с про- граммами BACKTRACK, ТЕХ, РIШРТАРЕ, ALARM, XTREE, IMAGE по каталоговой структуре, создавать новые I<аталоrи, копировать, переименовывать, редактировать и просмат­ ривать файлы. Для архивирования жесткого диска па стример лучше воспользоваться программой IMAGE. С ее помощью можно создать архивный образ жесткого диска на I<ассете данных либо выполнить автоматическую пофайловую архивацию. Программа ТЕХ - специальная программа, позволяю­ щая выполнять различные файловые операции. Состав этих операций шире, чем в Norton Commander, так как добавлены операции: BACKUP (архивировать каталог); PRINT (печать); RESTORE (восстановить архив на диск); UNMOUNT (заменить кассету данных); ZAP (корректи­ ровать данные непосредственно на кассете). Программа ТЕХ работает не только с кассетой данных, но и с ди­ сками. К недостаткам программы относится отсу-Рствие поддержки «мыши». Архивация по «будильнику» . Для обеспечения вы­ полнения файловых операций в желаемое время следует 53
использовать программы ALARM и ALARMCLK. Для этого необходимо выполнить следующее: включить ALARMCLK в файл AUTOEXEC. ВАТ; установить путь (РАТН) от программы ALARM к программе ALARMCLK; вызвать программу ALARM, при этом на экране понвится меню, содержащее функции ADD/DELETE ALARMCLCCK IN AUTOEXEC.BAT SET ALARM ТIМЕ SNOOZE FOR 30 MINUTES ALARM ON/OFF Ис11ользуя клавишп управления движением курссра, выбрать функцию SET ALARM ТIМЕ и установить времн (час и минуту) начала архивапии, например 23 : 59; установить «будильник» в положение «включен» (ALARM ON); запустить программу ALARM.CLK. За две минуты до начала архивации проrращ1а исполнит короткую ме­ лодию, что укажет пользователю ее готовность прнс1у­ пить к работе. Если потребуется отменить немедленную архивацию и перенести ее на другое время, необходимо вызвать функцию ALARMCLOCK н выбрать опuию SNOOZE, что позволнт отложить операцию на 30 минут после мелодии. Это можно проделать любое число раз. Несколько рекомендаций: для того, чтобы nrorpaYiмa «будильник» работала в заданное время, можно включнть ее в файл AUTOEXEC. ВАТ (это ~южпо сделать выборсм функции ADD/DELETE ALARMCLOCK IN AUTUEX ЕС. БА Т); непременным условием автоматпческого включения файловых операпий является наличие кщ1апдпого файла TGALARM. ВАТ, который будет вызвнн для нсполнения в заданное время. Этот файл для выполнеmн1 архивации мог бы выглядеть следующим образом: ЕСНО OFF CLS ТЕХ BACKUP (РАТН} (РАТН} IF ERRORCEVEL l GOTO FAIL ЕСНО Оnераш1н архнв11ровап11я (РА ТН) на (РА ТН} завершилась успешно GOTO ОЮ :FAIL ЕСНО Операция архивирования не выполнена :ОЮ Автоматическое восстановлешrе пнфсрмации с нас­ сеты на диск можно выполнить с помощью, например, следующего командного файла: 54
ЕСНО OFF CLS ТЕХ RESTORE (РАТН) (РАТН) IF ERRORLEVEL I GOTO FAIL ЕСНО Операuия восстановления (РА ТН) на (РА ТН) завершилась успешно GOTO ОКI :FAIL ЕСНО Операuпя восс1 аповлення не выполнена :OI(l Следует отметить, что для работы программ ALARM и ALARMCLK не требуется никаких доrюлюпельных ап­ nара11Iых средств (имеются в виду встроенный таймер и СМОS-память). Рассмотренный способ сохранения информаuии об­ ладает одним недостатком - отсутствует удобный интер­ фейс с прикладной системой. Забегая вперед, укажем способ организаuии архиви­ ров11н11я и восстановления программного обеспечения и базы данных с помощью программы, созданной средствами Clipper. Прежде всего создаем экранное меню, содержащее все необходимые для работы администратора прикладной системы режимы. Функция INKEY () обеспечит наблю­ дение и срабатывание «будильника» в те интервалы вре­ мени, когда система «свободна», то есть не выполняет 1шкюшх заданий. Использование этой функuии может незначите,1Jыю (до I мин) задерживать срабатывание «бу­ дилышка», что в общем несущественно. Функции соб­ ственно архивирования II восстановления могут быть реа­ лизованы с помощью общесвстемных утилит (СОРУ, BACKUP и RECTORE) по команде RUN. Однако пред­ почтительнее использовать команду системы Clipper - СОРУ FILE ... , поско.1Jьку она работает быстрее, допускает обслуживание как гибких, таI< и жестких дисков и позво­ ляет полностью контролировать проuесс записи, оставляя воз\'южность 11нтеракт11вной работы с администратором. Пра~пика показывает, что предложенный способ сох­ ранения информации целесообразно использовать в дли­ тельно и непрерывно работающих системах. Экономически он оказывается более оправданным, чем ведение «горя• чих» 1,опий базы данных (запись производится и в ос­ новную, и в резервную базы данных), использование спе­ циаJIьных файлов - прот01юлов новых записей или ве­ дение журнала регистрации контрольных точек.
Глава 3. ЯЗЫКИ ВЫСОКОГО УРОВНЯ И. СИСТЕМЫ ПРОГРАММИРОВАНИЯ 3.1. Обзор языков высокого уровня Однозначно рекомендовать или спорить о достоинст­ вах того или иного языка, в том числе и языка програм­ мирования, - довольно неблагодарное дело. Практиче­ ски выбор языка программирования для персональной ЭВМ чаще всего определяется исходя из приобретенного ранее опыта работы на том или ином языке, имеющейся системы программирования и, конечно, сложности постав­ ленной задачи и перспектив дальнейшего ее использова­ ния. Основные инструментальные языки высокого уровня для ПЭВМ - это в основном широко известные языки, используемые на «больших» ЭВМ, - Бейсик, Паскаль, Си, Фортран, КобоJ1, Лисп, Пролог, АДА. На учебных (школьных) ПЭВМ используются языки: Рапира, Робик, Лоrо. Не • вдаваясь в детальные описания указанных языков, рассмотрим кратко их основные свойства и воз­ можные области применения. Бейсик. Причина широкого распространения этого языка прежде всего в том, что Бейсик очень прост в ос­ воении и использовании (10 ). В Бейсик, как правило, встраиваются удобные функции для работы с экраном дисплея, клавиатурой, внешними накопителями, прин­ тером, коммуникационными каналами. Это позволяет от­ носиться к Бейсику как к «продолжению» аппаратуры пэвм. Появление трансляторов, которые на этапе составле­ ния и отладки программы используют преимущества ин­ терпретационного режима, а после завершения отладки компилируют программу, формируя эффективные машин­ ные коды поставило Бейсик в ряд с другими языками высокого уровнн и придало ему дополнительную популя­ ность. Достаточно сказать, что ТurЬо-трансляторы большей 56
частью написаны па Бейсике, благодаря чему эффективно организованы работа с экраном, световая подсветка кур­ сора и участков «окон». В настоящее время имеется довольно много реализаций этого языка, но наиболее популярна версия Бейсика для операционной системы типа .МS-DOS. Ядром Бейсика является так называемая кассетная версия объемом 32 Кбайт, встроенная в ПЗУ машины. Термин «кассетная» связан, по-видимому, с первымп мо­ делями мини-ЭВМ, загрузка в которые производилась с помощью кассеты с магнитной лентой. Дисковая версия, расширяющая возможности кассетой, является частью ДОС и имеет операторы доступа к дискетам. Самыми ши­ рокими разновидностямп Бейсика являются расширенные версии под именем Basica, разработанная фирмой IBM, и GW-Basic, разработанная фирмой «Оливепи персонал компьютер» (Olivetti Personal Computer). Поставляемые другими фирмами версии этого языка мало чем отличаются друг от друга, программы на Бейсике могут быть сравнн­ телыю легко переработаны для любой модифи ка нии или версии, конечно за исключением тех случаев,когда нереали­ зуемость тех или иных операторов может принципиально влиять на смысл и постановку задачи. Паскаль и Си. Эти языки являются более сложными языками и используются программистами-профессиона­ лами. Трансляторы с этих языков работают в режиме компиляции, что позволяет создавать эффективные ма­ шинные программы. Важным для построения больших программных систем свойством этих языков является модульность. Особенности этих языков способствовали тому, что именно на Паскале и Си разрабатывается большинство крупных программных систем для персональных компью­ теров. Следует отметить, что между указанными языками, несмотря на общее сходство, имеются существенные раз­ личия. Паскаль [ 13] является, так сказать, классическим языком программирования и наряду с Бейсиком счита­ ется также учебным языком; он принят во многих учебных заведениях как базовый язык для изучения программи­ рования. Язык СИ (20] первоначально был ориентирован прежде всего на разработку системных программ. Этот язык, в част­ ности, послужил главным инструментом для создания 57
операuионных систем UNIX и MS-DOS. В этом языке имеются более гибкие средства для эффективного исполь­ зованн я особенностей аппаратуры, чем в Паскале. С дру­ гой стороны, синтаксис Си сложнее, чем Паскаля. Однако в uелом эти языки сравнимы. Широкое распространение получили созданные про­ граммные продукты для работы с этими языками: Turbo Pascal и Turbo С фирмы «Борланд Интернэшнл» (Borland /nternational), Lattice С Coшpiler фирмы «Инновентив Софтвэа ЛТД» (lnnovative Software LTD), С Coшpiler IJ Pa~cal Coшpiler фирмы «Микрософт» (Micros). Фортран и Кобол. Эти языки имеют очень точно опре­ деленные области применения. Язык Фортран [21 J в реализациях для ПЭВМ Fortran Coшpiler фирмы Microsoft, Fortran 77 для РС DOS и СР/Р 86 фирмы «Диджитал Ресерч» (Digital Research) q-радиuионно широко используется при разработке про­ грамм для решения инженерных задач. Кобол создан для решения экономических задач [ 12]. Особенно популярен Cobol Coшpiler фирмы Microsoft. По данным, представленным автору специалистами со­ ветско-болгарского института «Интерпрограмма», про­ граммы, составленные на Коболе, работают в 1,5-2 раза быстрее реализованных на Бейсике. Лисп и Пролог. Эти языки искусственного интеллеюа tfoжe удобно представлять парой, поскольку они очень близки по своим возможностям. Что их существенно от­ личает, так это географические области распространения: Лисп популярен в Америке, Пролог - в Европе. Их реализации для ПЭВМ Turbo Prolog и Mu Lisp фирмы Microsoft. На существующих ПЭВМ рассматривать эти языки как средства для создания серьезных, не игрушечных ЭI{спертных систем было бы наивно. Заканчивая этот обзор, с,педует упомянуть язык АДА, получающий все бо11ее широкое применение при проеюи­ рованни систем реат,ного времени, в частности ГПС. Фирмой «IЗести» (Wesfi) разработаны компилятор с языка J anus/ADA, работающий в ОС СР/М 86, а также средство для моделирования 1 аких систем - GPSS [22]. В последнее время понrзился нonыii класс языков, ориентироnанных на создание систем управления базами данных (широко известный dBASE [7 ]), и распределенных с11с1ем. К последним относится пепроuедурный структу- 58
рнрованrrый я:шк четвертпrо поко.1е1111я SQL (Structured Qtrery Lапgшще). Пп r.rе,1ешш уже была 1Jыс1,юана мысль, что так как ПЭ[).\\ -- CJTn об.1асть актшшоrо бизнеса, то судьбой ап­ паратных, проггю.1ыl!ых, 11, конечно, языковых средств распоряжается не строгая наука, а, будем говорить, день­ ги, опосредованные в количестве разработок, выполнен­ ных на данном языке, 11 сопутствующей рекламе, поэто:-.1у целый ряд хороших, а может быть и лучших языков ока­ зьшаются пока не доступными для широкого применения, поскольку не разработаны надежные трансляторы. Как признаются зарубежные разработчпки, чтобы продвинуть программное средство на рынок, требуются условно l млн долларов на разработку и 3 млн долларов на рек­ ламу. это, разумеется, энтузиастам-одиночкам пе под силу. Крупные же фирмы неохотно идут на финансирование принципиально новых разработок, поскольку это свя­ зано с риском потернть влияние на сложившемся рынке традиционных программных средств. Поэтому в настоящее время развитие язьпювых средс1 в происходит не столько за счет появления новых язы1<оп и трансляторов, сколько за счет совершенствования су­ ществующих. При этом можно отметить две тенденции. Первая - создание все более удобной среды для собст­ венно программирования па языке, вторая - постепен­ ное устранение явных недостатков языков за счет расширения их возможностей путем включения эффектив­ ных средств для быстрого создания меню, описания вход­ ных и выходных форм, предст~плсния данных, включая деловую графику и т. п. В какой-то степени наблюдается «стирание граней» между языкаш1. Возможности, представляемые последншш верспямн трансляторов, настолько велики. что для нх определения оказалось оправданным ввестн новый тер1шш - «системы проrра:-.шировапия». 3. 2 . Систс~:ы nрсrра~.:мпрования Средства проrраi\1:vшровання на языr<ах высокого уровня ПЭВМ включают в себя встроенный пнтерпретатор языка Бейсик (здесь это не рассматривается, так как до­ кументация по Бейсику приходит с машиной) и транслято­ ры различных языr<ов, работающие в интерпретирующем или компилирующем режи.-.1е. 59
Учитывая специфику ПЭВМ, соnременпые трансляторы дают пользователю, ка~{ правило, следующие возмож11ос1п: редактирование программ (функция Eclit); загрузка, за­ пуск программ (Load, Run); компиляция (Coшpile); отладка (Debug); сохранен11е файлов, результатов про­ rошш, протокола работы (Save). Несмотря на то, что во всякой операционной системе есть редактор текстов, трансляторы, тем пе менее, вклю­ чают и свои редакторы, которые имеют дополнительные возможности, необходимые для быстрого набора про­ rраш.1ы на конкретном языке. Например, в GW-трансляторах фирмы Olivetti Personal Сотри ter для набора зарезервированного в язы1{е слова достаточно нажать одновременно к.павишу «Доп» и пер­ вую букву любого из слов: Width, Else, R11n, Т!1еп, lJsing, Iпput, Ореп, Print Auto, Screen, Delete, For, Goto, Hexs, Кеу, Locate, Xor, Color, Val, Bsave, Next, .1\'\егvе. Широко распространены трансляторы Turbo фирмы Bo,/and International для языков Бейсик, Си, Пролог, Фортран, Ассемблер. Следует сказать, что фирма широко использует в своих трансляторах лучшие из имеющихся 1<ом1111ляторов и интерпретаторов. Так, в Turbo С испоJ1ь­ зуется компилятор фирмы Microsoft. Такой подход гаран­ тирует высокое качество продукта. Работа с ТurЬо-трансляторами всех языков внешне совершенно одинакова, поскольку пользователю предо­ ставляется стандартный набор функций, отображающихся в главном меню: FILE - работа с файлами; EDIТ - редактор; RUN - запуск загруженной программы; COMPILE - компиляция; OPТIONS - задание опций компиляпии; PROJECT - описание сt:>гментирования программ; SETUP - расположение окон; WINDOW -- режпм окон; DEBUG - задание режима отладки. Разработчики построили Тurhо-трансляторы по еди­ ной идt--о.ТJоrии, что позволило: подключать комппляторы с ЛJ(lбuro языка к ТurЬо-оболочке, которая о6еспечнвает работу с rюльз('lвателем (дисплеем); в некоторых случаях совместно отлаживать программы, написанные на разных языках (ш1пример, Си- и Пролоr-програv1мы); поддержи­ вать единый стиль диалога с пользователем путем ис­ пользования стандартного набора функнио11альпь1х и уп­ равляющих клавиш (например «КЛЮЧ» - возврат в пре­ дыдущее состояние работы тра11сля гора; F l - подсказка; 60
«ВВОД» - выбор режима или вида работ; -.- - управ­ ление движением курсора по экрану или внутри «окна»). ТurЬо-трансляторы имеют мощную систему помощи, которая существенно упрощает освоение и работу с ними, однако большой набор предоставляемых пользователю возможностей делает необходимым снабдить это средстяо, так сказать, кратким путеводителем. Для знакомства с системами ТшЬо достаточно рассмотреть какой-либо один транслятор, мы это сделаем на примере системы Turbo-Basic. 3.3 . Работа в Turbo-Basic Дискета с Turbo-Basic должна содержать следующие системные файлы: транслятор - ТВ.ЕХЕ; файл помощи - TBHELP. ТВН; файл конфигурации с расширением ТВ (обычно TBCONFIG.TB). Работа по созданию пакета программ включает сле­ дующие этапы: набор (редактирование) программы и сох­ ранение ее на внешнем носителе (дискете); трансляцня; отладка отдельных программ; сборка отдеJiьных программ в пакет, В1{лючение макрокоманд; комплексная отладка; компле1<с1-1ая сборка и сохранение объектных кодов про­ грамм. Транслятор Tttrbo-Basio является удобным инстrу­ ментом для выполнения всех перечисленных этапов и, 1,роме того, предоставляет пользователю многообразный сервис, позволяющий сделать процесс работы увлека­ тельным. Для вызова Turbo-Basic достаточно набрать команду: А> tb. После запуска программы на э1<ране дисплея проявля­ ется первый кадр, содержащий главное меню (рис. 3 1). Перечень основных функций находится во второй строке, а в нижней строке, как и на любом этапе работы, Turbo Basic File Edit Run Compile Options Setup Window Debug Turbo Basic version 1.0 Copyright (с) 1987 Ьу Borland lnternational, lnc. Fl-Help F5-Zoorn F6-Next F7-Goto SCROLL-Size/move Alt-x-Exit Рис, 3,1 61
находится подсказка, поясняющая, 1<аким11 функu11011а.11ь­ ными клавишами можно ВОСПОЛLЗОВIIТЬСЯ. Для продо.11- жения работы следует 11ажа1ь к.11авншу .-ВПОД». Серед1111а экрана очистится, и курсор с подсЕеткой будет уста11ов­ лен на первой по порядку функuни File. Выrор ф\·111<1111и осуществляется подводом курсора 11а ыесто с именем этой функuии. Клавиша «ВВОД)} позволяет зафн1н:иро­ вать выбор фун1щ11н н переi'пи к следующему этапу - выбору опuии этой функшш (от английского орtiоп­ элемент выбора). • Рассмотрим функпии главного меню и соответствую­ щие им опuин. File -работа с файлами. Функция File служит для: указания рабочего директория; у1<аза~шя имен файлоn, с которыми будет производиться работа и которые будут загружаться или сохраняться на диске; выхода из Tшbo- Basic. 1 Эта функция имеет следующие опшш: Load, New, Save, Write to ... , Main fi\e, Directory, Chaпge dir, Os shel\, Quit. Load - используется для загрузки фt1йла с 11елыо компиляции, запуска, редактирования, сохранения, т. е. файлы должны иметь одно из расширений (ЕХЕ, ВАК, СОМ, ВАТ, BAS); по умолчанию - расширение BAS. Допускается вместо имени файла набирать символы « * » или «?» для вывода всего или части директория. Курсорами движения по экрану можно выбрать нужный файл. Нажатие клавиши «ВВОД» обеспечивает загрузку выбранного файла. Ne\v - очищает текущий редактируемый файл, сохра­ няя его имя. По умолчанию - имя NONAME. BAS. Save - используется для сохранения текущего файла на диске. Предыдущей версии этого файла будет присвоено расширение ВАК. Задать другое расширение позволяет опция Backup sourse file фуюшии Setup (см. ниже). Write to ... - присоединение нового имени к директо­ рию или переименование текущего файла прп записи его на диск. Main file - задание имени главного файла. Исполь­ зуется при работе с большими программами на стадии компиляции, сборки или отладки. Directory - служит для получения на экране листинга 1rекущего директория; выбора поддиректория; изменения маски просмотра директория. 62
Chat1ge dir - служит для задания нового текущего ди ректорня. Os shell - используется для временного перехода в ОС. При этом Tшbo-Ba-sic сохраняет свое текушее со­ стояние. Чтоt'iы спова продолжить прерванную работу с транслятором, достаточно ввести команду «Exit». Quit - выход из Turbo-Basio. Чтобы снова продол­ жить с ним работу, необходимо заново загрузить про­ грамму tb. Существует альтернативный способ выхода - на любом этапе работы достаточно нажать клавиши «ДОП»-Х. E(lit - редактирование файлов. Процесс редактиро­ вания в снсrеме Turbo в основно:м соответствует принятому в текстовых редакторах, поэтому мы приведем здесь только команды редактирования, поддерживаемые систе­ мой: Команды управления движением курсора Символ влево » вправо Слово влево :. вправо Строка вверх » вниз Прокрутка вверх » вниз Страница вверх » впиз Клавиши или комбинации клавпш -s или +- -о или-+ "'А -р ~Е или' стрелка вверх' ~х или 'стре,'Jка вниз• "'W .,..z .,..R .,..с Вставка и удаление Режим вставки Вставить строку Удалить строку » конец строки » левый символ » символ :. правое слово Блоковые Пометить начало блока » конец блока » слово ... v или ~N "'У "'Q~Y "'Н "'G или .... т команды 'ВСТ' ~к~в или 'F7' -к~ I( или 'F8' -к-т 63
Копировать блок Переместить блок Читать блок с дпека Писать блок на ДИ(.К Спрятать блок Распечатать блш< -к-с -к-v -к-r~ ~к--\V -к-н -к-р Прnчпе команды Окончание редаюирования без сохранения Сохранить и отредакн1ровать Задание нового файла » режнма таблицы Таблица Красная строка (вю1/откл) Восстановление строки Пометить место на экране Найти помеченное мес1 о Поиск по ключу Найти и переместить Повторить предыдущий поиск Проверить начальные буквы Отказ от команды Восстановить ошибочные сооб­ щения -к-о, -к-Q ИЛII Е'>С -- к-- S ИJIИ 'F2' FЗ -о-т - 1-1 -0 -1 -Q --L ~к--N ~ o--N -Q -F "Q--д -L -р -u -Q--w По окончании редактирования для выхода в главное 111еню требуется нажать клавишу «КЛЮЧ». Run - инициализация объектного кода программы. Чтобы прервать программу, которая заuиклилась, и вер­ нуться в главное меню, достаточно нажать клавишу Ctrl-Break (замечание: прерывание возможно, если задан Keyboard Break в опциях компиляции, причем, если задан At1to save edit options в функции Setup, программа авто­ матически запишется на дис1{). Compile - компиляция текуш,ей программы. Если файл Main не опредt'лен, то комп11лируется загруженный файл, в протпвном случае необходимо сохранить текущнй ра­ бочий файл, а потом уже начинать компиляцию. Результатом компиляции может быть Меmоrу-файл (по умолчанию), ЕХЕ-файл или ТВС-файл в зависимости от того, включает ли текущая програщ1а обращt>,шя к другим подпрограммам, определен ли Маiп-файл, надо ли сохраня1 ь объектный код. 64
В режиме Compile предусмотрены опции: Memory, ЕХЕ file, Chain. Компиляция в память используется в тех с.!Jучаях, когда программа будет отлаживаться и редактироваться. Если программа окончательно отлажена и проверена, ее компилируют в операционной системе обычным поряд­ ком. Файлы с расширением ТВС не содержат библиотеку процедур, поэтому в отличие от ЕХЕ-файлов, они не могут быть инициированы операционной системой. Ра­ бота с ними возможна лишь под управлением Turbo Basic. Compile Options - опции компиляции. К ним отно­ сятся следующие: Compile to ... ; Keyboard break; Overflow; Parameter line; 8087 required; Bounds; Stack test; Metastatements. Compile to ... - Memory, ЕХЕ file, Chain (см. функ­ цию Compile). Keyboard break - эту опцию задают, если пред­ видят необходимость аварийного останова отлаживаемой программы. Останов программы задается символом Ctrl- Break (но не ~с). Отметим особо, что в случае аварийного останова операции ввода/вывода прерываются не сразу. Overflow - позволяет отслеживать ситуации пере­ полнения в арифметических операциях . . Parameter line - используется при отладке программы для того, чтобы сообщить выполняемой программе ин­ формацию, запрашиваемую ею по команде Command$. 8087 required - задается в случае использования ариф­ метического сопроцессора. В этом случае транслятор генерирует более быстрый и компактный код, специально приспособленный для эффективных вычислений с плаваю­ щей точкой. Bounds - проверка границ массивов. Stack test - проверка стеков при включении в про­ грамму процедур или функций. Команда $Stack позво­ ляет расширить стековую память. Metastateшent - псевдокоманды компиляции. Они делятся на три класса: Stack size - переопределяют раз­ меры стеков; Music buffer - определяют многообразие музыкальных нот; Communications - меняют размещение каждого буфера обмена данными (каждого порта). Эти команды включаются в текст программы, но они не являются программно-выполняемыми командами, а влияют на процесс компиляции программы. 3 Смирнов Н. Н, 65
Псевдокоманды компиляции: $ СОМ; $DYNAMIC; $ SEGMENT; $ EVENT; $ IF/$ ELSE/$ ENDIF; $ STАСК; $ STAТIC. Рассмотрим синтаксис команд: $ INLINE; $ SOUND; $ INCLUDE; $ COMn size, (n - указывает номер адаптера, size - размер буфера этого адаптера); $ DYNAMIC (указывает транслятору, что явно не описанные массивы нужно размещать динамически); $ EVENT {ON, OFF\ (указывает, что программы мо­ гут обмениваться событиями); $ IF (выражение 1) [$ ELSE (выражение 2) 1 $ ENDIF (позволяет в зависимости от условия включать в текст программы во время компиляции либо выраже­ ние 1, либо выражение 2; допустима глубина вложения операций $ IF не более 256); $ INLINE [byte list J : Шlespeo literal] (позволяет включить в текст программы подпрограмму в машинных кодах); $ SEGMENT (указывает начало нового сегмента про­ граммы, используется, если программа превышае1' 64 Кбайт); $ SOUND buffer size (задание буфера фона в опера­ торе PLAY; от 1 до 4096 нот). $ STАСК COUNT (задание размера стека во время выполнения. COUNT - число в интервале от 1024 до 32 К, по умолчанию - 1024 бит); $ STATIC (размещение явно необъявленных массивов статически, память для них отводится во время компи­ ляции). Sеtuр-функция. Позволяет менять и запоминать кон­ фигурацию Turbo-Basic в ТВ-файле (обычно CONFIG.TВ). Задание функции производится с помощью следующих опций: Colors, Miscellaneous, Save Options/Window/ Setup, Directories, Load Options/Window/Setup. Colors - позволяет изменять подсветку окон, оформ­ лять меню, удобно организовывать движение курсора по экрану. Чтобы запомнить измененную конфигурацию, нужно задать опцию Save Options/Window/Setup. Конфигура­ ция запоминается в файле с расширением ТВ (по умол­ чанию TBCONFIG.TB). Directories - позволяют задать конфигурацию ис­ пользуемых системой директориев: lnclude - включение 66
директорий при компиляции; ExecutaЫe - для ЕХЕ и ТВС (Сhаiп)-файлов; Turbo - для системных ТurЬо­ файлов. Miscellaneous - имеет опции: Auto save edit, Backup sourse files (Auto save edit - автоматическое сохранение отредактированного текста программы в случае, если во время выполнения этой программы пришлось прибег• нуть к аварийному останову; Backup sourse files - авто­ матическое сохранение предыдущей версии текста про· граммы). Load Options/Window/Setup - позволяет задать имя нового файла конфигурации Turbo-Basic. Save Options/Window/Setup - сохранение текущей конфигурации Turbo-Basic (файл конфигурации имеет расширение ТВС; по умолчанию - TBCONFIG. ТВ). Window - управ,11ение окнами. Позволяет управ.1ять размерами окон, цветом, открывать или закрывать их. Для задания окон используются опции: Open, Close, Next, Goto, Tile, Stack, Zoom (по умолчанию все окна открыты). Open - открыть окно. Предусмотрены окна: Run, Edit, Message, Trace. Выбранное окно становится актив• ным, т. е. все команды движения по экрану, функциональ­ ные клавиши и помощь относятся к этому окну. Close - закрыть окно. Закрытое окно становится не­ видимым на экране. Next - сделать активным следующее по порядку окно. Предусмотрен следующий порядок окон: Run, Edit, Message, Trace. То же самое можно сделать нажатием клавиши Fб. Goto - сделать активным ранее открытое окно. Ис­ пользуется в том случае, когда нежелательно возвращаться в главное меню. Tile - высветить на экран все открытые окна. Окна при этом будут иметь одинаковые размеры. Клавиша Fб позволяет активизировать следующее по порядку окно. Stack - сделать все открытые окна максимально боль­ шими по размеру. Zoom - увеличить размеры окон Run и Edit до мак­ симально возможных, т. е. до размера экрана. При этом контурные рамки с главным меню не будут высвечиваться на экране. Повторение команды (или нажатие клавиши Fб) вернет этим окнам первоначальные размеры. 3* 67
Debug - управJiение процессом отJiадки. Этот режим имеет опции: Trace, Run-time errors. Trace - позволяет проследить выполнение программы по командам. Run-time errors - выполнение программы до первой ошибки. Заметим, что кроме этого транслятор сообщает номер ошибки и курсор указывает ее место в исходной программе. При повторной трансляции Turbo-Basic, находя это место в исходной программе, не производит заново компиляцию, а заменяет команду в объектном коде на новую, то есть эта опция задает интерпретационный режим работы транс­ лятора. В дальнейшем, когда программа будет полностью отлажена, необходимо еще раз компилировать программу с целью получения эффективного объектного кода. 3.4 . Пример работы в системе Turbo-Basic. УниверсаJiьная программа перекодировки Работа с транслятором начинается с установки кон­ фигурации, что включает задание размеров и подсветки системных окон, указание рабочих и системных директо­ риев, режимов сохранения файлов и аварийного останова отлаживаемых программ. Для этого используются функци11 Setup и Window. Можно рекомендовать с самого начала увеличить раз­ меры окон редактирования (Edit) и выполнения (Run) до максимального размера экрана и убрать рамку с глав­ ным меню, т. е. в функции Window задать опцию Zоош. «По вкусу» можно изменить также стандартные размеры других окон. Для этого используется опция Ореп. Кла­ виша «фсд-стоп» включает режим изменения размера окон, а само изменение производится клавишами управления движением курсора. Повторное нажатие клавиши «фсд­ стоп» отключает режим изменения размеров окон, и в дальнейшем эти клавиши управления движением снова используются для передвижения курсора внутри окна меню. В результате такой установки при работе в режимах Edit и Run на экране не будет никакой информации, не относящейся к выполняемым функциям. Точнее: первая строка будет содержать имя дисковода, с которым произ­ водится работа, имя поддиректория, имя файла, номер строки и номер колонки, указывающей расположение кур­ сора, остальная часть экрана буде11 содержать либо 68
(fекст программы, либо вводимые-выводимые программой сообщения. Заметим, что информация в окне Ruп сох­ раняется даже при переключении функций с целью, на­ пример, исправить ошибку, т. е. позволяет сравнивать, как изменилась работа с экраном при изменении про­ граммы. Отметим одну особенность: транслятор включает воз­ можность автоматической активизации нужного окна в за­ висимости от выполняемой функции. Например, при ком­ пиляции программы активизируется окно Message, при отладке - Trace. Работу в системе Turbo-Basic мы рассмотрим на при­ мере полезной программы, разработанной Р. В. Зайцевым, позволяющей перекодировать текстовые файлы, подго­ товленные в любой из распространенных в стране таблиц, в любую требуемую. Подробно на кодировочных таблицах, определяющих соответствие между клавишами и выводимыми на экран символами, мы остановимся в разделе 9.2 . Здесь же рас­ смотрим краткую историю их появления. Распространение программного обеспечения ПЭВМ у нас первоначально связывалось с деятельностью советско-болгарского ин­ ститута «Интерпрограмма». Этим институтом для загрузки кириллицы была предложена таблица, которая здесь названа «старая» (болгарская). Одновременно институты АН СССР вели свои оригинальные разработки, исполь­ зуя таблицу, которая сейчас называется альтернативной. Эта таблица сохраняет многие символы псевдографики. И наконец, с началом массового производства отечествен­ ных ПЭВМ был принят ГОСТ, обязующий использовать третью таблицу, называемую основной. Следует сказать, что некоторые программисты для лучшей защиты своего программного продукта или с целью получения особых эффектов визуализации и уве­ личения быстродействия используют свои загружаемые (fаблицы. Расшифровка таких файлов требует разработки индивидуальных программ. Все используемые таблицы различаются лишь местом расположения символов кириллицы, что подсказывает оче­ видный алгоритм реализации программы перекодировки. Программа организована так, что после загрузки на экране выводятся сообщения на русском языке. Эти со­ общения будут читаемы только в том случае, если таб­ JJица, в которой набирается текст программы, и таблица, 69
в которой эта программа будет работать, совпадают. Для того чтобы программа стала действительно универ· сальной, предлагаем самостоятельно сделать варианте сооб­ щениями на английском языке, что, разумеется, гаран­ тирует правильное воспроизведение сообщений программы в любой загруженной таблице. Весь процесс работы программы происходит в режиме диалога и ввода с пульта необходимой информации, пер­ воначально следует указать имена входного и выходного файлов, после чего на выбор предлагаются три возможные таблицы кодировки: основная; альтернативная; старая болгарская и задаются вопросы, в какой таблице подго­ товлен входной текстовый файл и как должен быть зако­ дирован выходной файл. Возможный вариант такой программы приведен ниже: 5 codi %=О: codo%=0: cod%= 10 10 input «Имя входного файла:», inf $ 11 input «Имп выходного файла:~>, outf $ 20 print «Возможные номера таблиц перекодировки:» 40 Jocate, 10: print «1 - Основная таблица» 50 locate, 10; print «2 - Альтернативная таблица» 60 locate, 10: print «3 - старая болгарская таблица» 70 print 80 print «Итак,» if cod% = 10 then goto 90 else goto 110 90 Jocate, 20, 1: input «Номер таблицы исходного файла -», cod% 100 if cod% >3 or cod% < 1 then print «Номер неверен !»: cod% = 10: goto 20 101 codi %=cod% 110 locate, 20, 1: input «Номер таблицы выходного файла -» , cod% 120 if cod%>3 or cod%<1 then print «Номер неверен !»: goto 20 121 codo% =cod% 130 open inf$ for input as:j:j: 1 140 орел outf$ output as#2 150 while not eof (1) 151 line input # 1, si$ 152 1%=Jen (si$): if codi%=codo% then goto 320 160 for i%=1 to 1% 170 sym$=mid$ (si$, i%, 1) 180 sym%=asc (sym$) : sm%=0 190 if sym%<128 or sym%>239 then 300 200 if codi%= 1 and codo%=2 then 400 210 if codi%= 1 and codo%=3 tran 500 220 if codi%=2 and codo%= 1 then 400 230 if codi%=2 and codo%=3 then 700 240 if codi%=3 and codo%= 1 then 800 250 if codi%=3 and codo%=2 then 900 300 mid$ (si$, i%, l)=chr$ {sym%+sm%) 310 next i% 320 print #2, si$ 330 wend 333 close #2 70
340 end 400 if sym%<224 and sym%>175 then sm%=-48 410 if sym%<176 then sm%=+48 420 goto 300 500 if sym%<240 and sym%>175 then sm%=-48 else sm%=+64 510 goto 300 700 if sym%>223 and sym%<240 then sm%=-48 710 if sym%>175 and sym%<224 then sm%=+16 720 goto 300 800 if sуш%<192 then sm%=+48 else sm%=-64 810 goto 300 900 if sym%<192 and sym%> 175 then sm%=+48 910 if sym%<240 and sym%> 191 then sm%=-16 920 goto 300 Зададим имя файла программы COD. bas и разместим программу на дисководе Ь:. После вызова транслятора для изменения имени диско­ вода воспользуемся опцией Change dir в функции File. В ответ транслятор запросит новое имя дисковода, при­ чем курсор уже будет установлен в том месте экрана, где нужно ввести ответ. Достаточно ввести теперь букву Ь и нажать клавишу «ВВОД». Поскольку программа новая, необходимо в той же функции File задать опцию New. Набрав текст программы, используя функцию Edit, нужно переименовать файл (опция Rename to ... ) и дать имя COD. Расширение bas будет присвоено автоматически по умолчанию. Для выполнения компиляции следует задать выпол­ нение функции Compile. При этом компилируется «те­ кущая» программа, т. е. та, которая только что редакти­ ровалась. После выполнения компиляции активизируется окно Message, содержащее: количество строк в программе или номер строки с ошибкой, диагностическое сообщение об ошибке, если она есть, код завершения компиляции, объем памяти, необходимой для объектного кода. В нашем примере допущена ошибка; в строке 50 - использован неправильный разделитель команд. По на­ жатии клавиши «КЛЮЧ» транслятор автоматически будет настроен на выполнение функции редактирования Edit. Клавиша «ВВОД» позволяет активизировать окно Edit, клавишами управления движения по экрану курсор под­ водится к нужному месту и исправляет ошибку - опе­ раторы программы разделяются символом «:». Для за­ вершения функции редактирования нужно нажать кла­ вишу «КЛЮЧ». Теперь снова компиляция и выполнение (функция Run).
Глава 4. ПАКЕТЫ ОБРАБОТКИ ТЕКСТОВ. УПРАВЛЕНИЕ РЕЖИМАМИ ПЕЧАТИ 4. 1. Обработка текстов Пакеты обработки текстов, иначе текстовые редак­ торы, за рубежом Word Processing - текстовые процес­ соры, - являются одним из основных обязательных про­ граммных средств, которые должен освоить каждый поль­ зователь ПЭВМ. Программные средства этого класса предназначены для облегчения подготовки различных документов и тек­ стов, а в общем случае - файлов в символьном (тексто­ вом) виде. В настоящее время для этого класса ПЭВМ создано большое количество пакетов обработки текстов (тексто• вых редакторов или текстовых процессоров), которые раз• личаются объемом реализуемых функций. Простейшим редактором, поставляемым часто в со­ ставе DOS, является EDLIN. Этот редактор позволяет создавать, редактировать, записывать на диск, объеди­ нять произвольные текстовые файлы. Однако в нем от­ сутствуют средства форматизации текста, управления пе­ чатью, многие сервисные команды, что делает его при­ годным в основном для набора текстов не очень сложных программ. Для подготовки больших объемов информации на ПЭВМ рекомендуется использовать универсальные Tf'K • стовые редакторы, полностью перекрывающие возмож• ности EDLIN. В данном разделе мы опишем ППП для автоматизи­ рованной обработки текстов «ДОКУМЕНТ», созданный: на базе текстового редактора WORD STAR, постав.1яе­ мый с ЕС-1840, а также кратко остановимся на текстовом редакторе BRIEF фирмы UNDERWARE INCORPORA- TED. Пакет прикладных программ ДОКУМЕНТ. Система ДОКУМЕНТ состоит из четырех функциональных частей, 72
поставляемых в виде загрузочных модулей, каждый из которых может быть использован как самостоятельное программное средство или совместно с остальными. Система имеет следующие составные части: текстовый редактор (TEXIP.EXE); программа печати документов (DOKUM.EXE); программа работы с адресным массивом (ADR. ЕХЕ); программа архивирования документов (ARHIW.EXE). Работа с системой начинается с создания нового или с корректировки уже существующего текста. Однако, прежде чем приступить непосредственно к редактирова­ нию, головная программа TEXIP осуществляет диалог с пользователем, из которого узнает, какие пменно дей­ ствия ей предстоит выполнить и с файлом какого вида. Вызов текстового редактора: А > TEXIP (ВВОД) - предполагается, что файл расположен на активном уст­ ройстве А. После этого начинается простейший диалог, поддержи­ ваемый только на русском языке. Пользователь сообщает имя файла, с которым предстоит работать. В случае, когда файл с введенным именем: уже существует и не является документом:, диа.rюг прекращается и система переходит в режим редактирования. Если же имя новое, то диалог будет продолжен вопросом о типе файла. Пользователь может создать либо произвольный тек­ стовый файл, либо документ. Если это не документ (не­ обходимо ввести Н), то система переходит в режим редак­ тирования (создания) файла. Если же файл будет до­ кументом, то можно ввести пароль и на следующий вопрос системы: «Будете работать с авторской информацией?» если в дальнейшем предстоит обработка документа про­ граммой ARHIW (необходимо ввести Д). После чего первое пользовательское меню, отвечая на вопросы кото­ рого пользователь задает характеристики документа: имя документа; автор документа; классификационный ключ (служит для поиска документов); отдел; должность. После этого может быть получено второе меню для задания форматных характеристик документа. Затем го­ ловная программа ТЕХ IP вызывает текстовый редактор и передает ему управление. Текстовый редактор TEXIP. Этот редактор предназна­ чен для создания и последующей корректировки файлов, содержащих тексты произвольных документов (или их частей) или исходные коды программ. Редактор позволяет 73
Комбинация клавиш ~ЛЮЧ) ....М ЛЮЧ) .... Е ЛЮЧ) .... К ~КЛЮЧ)-S КЛЮЧ) .....F КЛЮЧ) .... Н 74 (ВСТ) .... N (ВВОд) -- (УДЛ) -т ""У .... Q .....Y Команда Справочные команды Движение курсора Вставка (удаление) Блоковые Специальные Формаrные Эr01 экран Управление движением курсора Символ налево » направо CJJoвo направо » HaJJt'BO В начало строки В конец » Строка вниз » вверх Экран вверх » вниз В начало файла В конец файла На отмеченную позицию Вставка (удаление) Вставка ДА (НЕТ) Начать новую строку Вставить пустую строку Стереть предыдущий симвоп » текущий rимвол » CJIOBO » строку » до конца строки Блоковые команды Начало блока Конец » Табтща 4.f Копирование блока, отмеченного клавишами Fl - начало, F2 - конец Перемещение Стирание Запись в файл Чтение из файла Вставка таблицы ВАРИТАБ Специальные команды Отметить позицию Конец редактирования Установка rабуляций Поиск (замена)
Комбинация кпавиш {FIO) {+) {-) -u ,,...w .... р .... О .....Р ....0 .... N .... o ....s ....o ....z ..... О ....А .... 0 .... L ..... о ....с ..... 0 .... 0 ....0 ....F .....0 ..... D ..... _ .. .. --+ Продолжение табл. 4.1 Команда Следующий поиск Ввод контропьноrо симвма Щелканье клавиш ДА (НЕТ) Форматные команJ1,ы Выравнивание ДА (НЕТ) Перенос целых слов ДА (НЕТ) Выравнивание абзаца Новая страница Раздел (пункт, подпункт) Пропуск строк Строка «Содержание» Атрибуты Адресный массив Центрирование текста Место содержания Форматное меню Вывод точковых команд ДА (НЕТ) Левая граница влево » » вправо получать на экране терминала документ, с которым в на­ стоящий момент работает пользователь, в том же виде, в каком этот документ будет впоследствии отпечатан. Таким образом, данный текстовый редактор работает по принципу «что видите - то и получаете». С ero по­ мощью можно подготавливать стандартные «шапки» и заготовки документов, а потом вставлять их в нужные места обрабатываемого текста. Кроме того, существует возможность включения в текст таблиц, подготовленных табличным процессором ВАРИТАБ. В текстах докумен­ тов, обрабатываемых данным редактором, могут также встречаться ссылки на адресный массив, информация из которого впоследствии (при печати) включается в текст документов. Для удобства работы ТЕХ IP снабжен много­ численной справочной информацией и подсказками. В табл. 4.1 приводятся основные команды и назначение клавиш и их комбинаций, подробное описание которых содержится в фирменном руководстве по TEXIP. После выполнения редактирования пользователь дол­ жен выйти из режима редактирования по команде ....С. 75
После ее ввода последует вопрос: «Сохранить или уни­ чтожить?» В случае ввода С результаты редактирования будут ~аписаны в файл и система запросит имя следующего файла. Для возврата в DOS необходимо нажать клавишу (КЛЮЧ} или (ВВОД}. Печать подготовленных документов осуществляется программой DOKUM, которая производит форматирова­ ние и распечатку документов в окончательном виде с уче­ том управляющих форматных характеристик, вставлен­ ных в тексты документов на этапе их обработки текстовым редактором ТЕХ IP. Вывод может осуществляться как на принтер, так и на экран терминала. При желании поль­ зователь может управлять начальными номерами страниц и параграфов в случае, если распечатывается, например, часть документа. Кроме того, допускается печать текстов в две колонки, если это позволяют физические размеры страницы. Вызов программы печати: A}DOKUM (ВВОД} На экране терминала будет получено меню программы печати, указав номер измененного параметра и его значе­ ние, можно задать требуемый формат. Программы ADR и ARHIW мы рассматривать не будем. Отметим лишь, что эти программы также ведут «прозрачный» диалог с пользователем, что, как правило, не вызывает особых затруднений. Текстовый редактор BRIEF. Текстовый редактор BRIEF является достаточно мощным средством, объеди• няющим свойства редакторов мини- и больших ЭВМ. BRIEF прост в использовании, обладает свойством от­ мены любого действия единственным нажатием клавиши «КЛЮЧ». Несмотря на то что встроенные команды вы­ полняют все стандартные функции редактирования, BRIEF позволяет создавать дополнительные команды, изменять существующие команды и переопределять зна­ чения ключей. BRIEF снабжен подробной справочной информацией и подсказками на английском языке. В отличие от редактора TEXIP текстовый редактор BRIEF может использовать до 15 буферов при редактиро­ вании текстовых файлов, поддерживает многооконный режим редактирования. Вызов текстового редактора BRIEF: А}В имя-файла «ВВОД» В табл. 4.2 приводятся встроенные команды редактора BRIEF. 76
Комбинация клавиш (дОП)-Ь (дОП)-о (УДЛ) (дОП}-d (дОП}-k Я1⁄48Н~~ (дОП}-w (дОП}-е !1~~~Home} КОН} ~ (PgUp} ,.. (PgDn} ,.. (Home) ""(КОН} .... _ -- !!101о~~gод1> - (СТОП) (Shift}-F5 (F5), (дОП}-s (Shift)-F6 (F6}, (дОП}-t (ДОП)-с (дОПЬm, (дОП}-а ~;gЙ~:оп~=ь ОП}-р щ8Н<=f (•}, (ДОП)-u Таблица 4.2 Команда Список буферов Изменить и,1я выходного файла Удалить символ (блок) » строку » до конца строки Просмотреть следующий буфер Прочитать файл в буфер Записать блок (буфер) на диск Прочитать файл в новый буфер Движение курсора Вверх на экран Вниз » » в верх окна вниз 1) В начало строки В конец » В верх буфера в низ » К предыдущему слову » следующему » Сменить окно Изменить размеры окна Создать окно Уничтожить окно Переключить память назначения ключей Воспроизвести то же Загрузить макрофайл Выполнить макрокоманду Оrменить команду Выполнить » Закончить поиск Поиск назад » вперед Повторить поиск Замена Пере1ипочить цветочувствительность Пометить блок Удалить в память Скопировать в память Вставить из памяти Отобразить текущую версию Выход Переход к строке Помощь Печать блока Приостановить сеанс Вставка (замена) Отмена выполненной команды 77
В заключение отметим, что во многих пакетах обра­ ботки текстов при выводе текстовых фай.,,ов на печать не предусмотрено изменение некоторых параметров пе­ чати или предусмотрены лишь стандартные изменения. Так, средствами ППП «ДОКУМЕНТ» можно получить распечатку, содержащую 1, 2 и т. д. интервалов между строк, т. е. целое число. Для получения расстояния между строк в полтора интервала, можно предJюжить простую процедуру, реализованную на Бейсике: 10 REM Процедура изменения интервала между строками 20 LPRINT CHR$ (27) «А» CHR$ (14) Процедуру необходимо выполнить перед вызовом про­ граммы DOKUM, а при подготовке документа с помощью текстового редактора ТЕХ IP в форматном меню необ­ ходимо использовать значение расстояния между стро­ ками по умолчанию, т. е. 1. Если подготавливаемый текст содержит формулы, заданные стандартными математиче­ скими символами, целесообразно использовать текстовый редактор АВС (2 ]. 4.2. Управление режимами печати ПЭВМ рассматриваемого класса чаще всего комплек­ туются матричными печатающими устройствами (ПУ) фирм Японии. Одними из самых распространенных ПУ являются принтеры фирмы «Эпсон» (EPSON) - FX-850 («узкая» печать) и FX-1000 («широкая» печать), отличаю­ щиеся размерами каретки. Эти ПУ позволяют: печатать буквы, близкие по ка­ честву к буквам пишущей машинки, или «черновиковые» буквы; выбирать один из многих вариантов типов букв и гарнитуры букв; запоминать в буфере объемом 8 Кбайт выводимую информацию; выводить текст со скоростью до 160 знаков. Проверка работоспособности ПУ производится авто­ номно или под управлением процессора. Печатающее устройство выполнено в виде отдельного устройства. Перед началом его работы необходимо про­ вести заправку бумаги в ПУ, подключить его к сети пере­ менного тока напряжением 220 В, затем включить сетевой выключатель POWER (положение ON), который нахо­ дится на левой боковой панели ПУ, при этом: загораются зеленые лампочки на панели управления POWER (пи­ тание), READY (готово) и ON LINE (неавтономно), 78
красная лампочка PAPER OUT (нет бумаги) загорается, если ПУ включено без бумаги или она подходит к концу; печатающая головка перемещается вправо, влево и оста­ навливается на левой стороне ПУ; ПУ инициируется и переходит в режим «Комплекс», после чего может исполь­ зоваться в работе. На панели управления кроме переключателя POWER расположены еще три сенсорных перек,1ючателя: ON LINE; FF; LF. Каждый из этих переключателей в зависимости от цвета панели выполняет одну из двух функций: с над­ писями на синей панели (ON LINE, NLQ, DRAFT) имеют силу действия, когда ПУ находится в неавтономном ре­ жиме (ON LINE); с надписями на серой панели (OF~ LINE, FF, LF) имеют силу действия, когда ПУ находится в автономном режиме (OFF LINE). Рассмотрим работу этих переключателей. Переключатель OFF LI NE/0 N LI NE. Положение ON LINE (неавтономно). При включении электропита­ ния выключателем POWER загорается зеленая лампочка ON LINE, подтверждающая, что ПУ находится в по­ ложении ON LINE. Если ПУ находится в положении OFF LINE (зеленые лампочки ON LINE и READY не горят), то для перевода его в положение ON LINE необходимо нажать кнопку ON LINE (зеленые лампочки ON LINE и READY загораются). Следует отметить, что при печати текста лампочка READY мигает и кнопка ON LINE при нажатии на нее не срабатывает. Если кончается запас бумаги или воз­ никает неисправность в механической части ПУ, то оно автоматически переходит в режим OFP LINE. Для про­ должения печати необходимо загрузить новую порцию бумаги или устранить неисправность и перевести ПУ в режим ON LINE путем нажатия кнопки ON LINE. Если ON LINE не горит" это означает, что ПУ нахо­ дится в режиме OFF LINE. Если зеленая лампочка ON LINE горит, то для перевода ПУ в режим OFF LINE необходимо нажать клавишу ON LINE, при этом погаснут лампочки ON LINE и READY. Переключатель FF/NLQ. FF (подача формата) - после нажатия на кнопку FF, если используется непрерывно подаваемая бумага, то она подводится к началу следую­ щей страницы. В случае использования листовой бумаги один лист бумаги выталкивается и необходимо вставить 79
новый лист. Функция подачи бумаги (FF) действует только в автономном режиме (OFF LINE) работы ПУ. NLQ (буквы, близкие по качеству к пишущей машинке) - после нажатия на кнопку NLQ (в режиме ON LINE работы ПУ) выбирается образец шрифта, близкий по ка­ честву к шрифту обычной пишущей машинки. ПУ вы­ дает при нажатии на кнопку NLQ двукратную зву­ ковую сигнализацию о подтверждении выбора сти­ ля NLQ. Переключатмь LF/DRAFT. LF (подача на строку) - после нажатия на кнопку LF (в режиме OFF LINE ра­ боты ПУ) бумага подается на одну строку. Если кнопка LF удерживается в нажатом состоянии, то бумага не­ прерывно подается вперед. DRAFT (черновик) - после нажатия кнопки DRAFT (в режиме ON LINE работы ПУ) выбирает~я стиль черновиковых букв, при этом ПУ выдает однократную звуковую сигнализацию о подтвер• ждении выбора черновиковых букв. Встроенные переКJiючатеJiи печатающего устройства. В ПУ есть два встроенных блока переключателей, кото­ рые позволяют выбрать режим управления по умолчанию, необходимый пользователю. Переключатели расположены с правой стороны. Для доступа к ним необходимо снять ребристую крышку, используя для этого крестообразную отвертку. Для снятия крышки выкручивают один винт и, прижимая крышку внизу, направляя усилие ладони снизу вверх, снимают крышку. Перед снятием крышки необходимо отключить питание ПУ, так как любое измене­ ние, сделанное при включенном электропитании, будет игнорироваться до тех пор, пока ПУ не будет выключено и включено один раз; снять статическое электричество с рук и стараться не прикасаться ни к каким компонентам на схемных платах, кроме переключателей. При от­ грузке ПУ изготовитель, как правило, устанавливает переключатели в следующие положения: режим печати «пайка»; поле устанавливается на максимум (левое поле на О, а правое - на 79); интервал между строками J/6 дюйма: длина страницы 12 строк; горизонтальные табуляции установлены через каждые восемь интервалов; набор интернаuиональных знаков; датчик расходования бумаги включен; сигнал возврата каретки выдается в конце строки без автоматической подачи строки; начало стра­ ницы устанавливается в позицию печатающей головки при сбросе печатающего устройства путем выключения элек- 80
тропитания или выдачи ЕSС-кода «@» или же при изме­ нении длины страницы с помощью ЕSС-кода «С». Следует учесть, что первоначальная заводская уста­ новка переключателей является достаточно удобной для подавляющего большинства пользователей и без большой необходимости не следует изменять их положение. Зада­ ние новых параметров печати целесообразнее осуще­ ствлять программным путем. Однако бывают случаи, когда эти параметры приходится изменять. Функции переключателей первого и второго блоков приведены в табл. 4.3 . На ПУ верхнее положение пере­ ключателей обозначено ON (включено), нижнее - OFF (выключено). Таблица 4.3 ci, с:,.о: о:., ~2 ">: Функция :,:., с:,,1;; ON OFF ио °'" переключателя <{_, :а! о о" .,,. . о о;: "'-' :I::,: cr);,, БЛОК 1 1 Режим печати Уплотненный «Пайка» OFF 2 Начертание нуля О (с косой о OFF 3 Датчик конца бу- чертой) Не действует Действует OFF маги 4 Входной буфер Использует Использует ON коды EPSON коды IBM 5 Режим печати Выделенный Обычный OFF 6-8 Используются для выбора интернациональных ON знаков БЛОК 2 Выбор печатающе- Действует Не действует ON го устройства 2 Дополнительный Выбран Не выбран OFF режим подачи бума- 3 ги выбран или нет Блокировка печати на расстоянии 2,54 мм Невозможна Возможна OFF от сгиба бумаги OFF 4 Автоматический пе- Действует Действует ревод строк только по команде процессора 81
Автономный контроJiь печатающего устройства. ПУ FX •850 позволяет в автономном режиме провести авто­ матическую распечатку всех букв и знаков его набора. Перед запуском на самопроверку необходимо загрузить бумагу в ПУ. Затем выключить электропитание выклю­ чателем POWER (положение OPF). Проверка произво­ дится путем одновременного нажатия одной из кнопок DRAFT (черновые буквы) или NLQ (качественные буквы) и включения выключателя POWER (положение ON). При этом будет распечатываться набор букв и знаков в одном из выбранных режимов DRAFT или NLQ. Само­ проверка будет производиться до выключения электро­ питания или срабатывания датчика расходования бумаги. Например, если выбран режим DRAFT, то на ПУ будет выведено: Version U-1.0 1 «#$% & ' ( )* +. - .0123456789:; {=)? @ABCDEFGHIJ KLMNOP QRSTUVWXYZ»::f=I:$% & ' () * +, -.0123456789:; (=}? @ABCDE FGHIJKLMNOPQRSTUVWXYZ["-] «#$% & ' ( )* +, - .0123456789: ; (=)?@ABCDEFGHIJKLMNOPQRSTUVWXYZ["-] ит.д. Выбор гарнитуры печатающего устройства FX-850 позволяет загружать любой шрифт из имеющихся табл. 4.4). 82 Режим 1 2 з 4 5 6 7 8 9 Уплотненная Расширенная Элит Подчеркнутая Двойной удар Гарнитура С подчеркиванием Верхний индекс Нижний индекс Пропускание через перфорацию Таблица 4.4 Максимапьиое чиспо знаков в строке 132 40 96 80 80 80 80 80 Зависит от гарнитуры
Получить любую из этих гарнитур можно путем последовательного нажатия кнопок OFF LINE, FF и LF. Рассмотрим последовательность операций при выборе шрифта. 1. Проверить включение электропитания ПУ и заго­ рания всех лампочек POWER, READY и ON LINE. 2. Одновременно нажать на кнопки OFF LINE и FF, придерживая их в нажатом состоянии секунду. Если ПУ даст двукратную звуковую сигнализацию перед отпуска­ нием кнопок, то это означает, что кнопка FF была нажата раньше кнопки OFF LINE и ПУ находится в режиме печати качественных букв (NLQ), который достигается путем двойного прохода печатающей головки. Для про­ должения выбора необходимой гарнитуры следует на­ жать кнопку OFF LINE (для перевода ПУ в неавтоном­ ный режим ON LINE) и кнопку DRAFT, если не тре­ буется печать качественных букв. Затем повторяют одно­ временное нажатие кнопок OFF LINE и FF. При отпуска­ нии кнопок OFF LINE и FF ПУ сигнализирует о включе­ нии функции выбора гарнитуры следующим образом: звуковой (один раз) сигнализацией ПУ; гашением лам­ почки READY; миганием лампочки ON LINE. 3. Нажать на кнопку OFF LINE столько раз, сколько указано в колонке «режим». Следует обратить внимание, что при каждом нажатии ПУ выдает звуковую сигнали­ зацию. 4. Нажать на кнопку FF для установки стиля шрифта. 5. Нажать на кнопку LF для выключения режима выбора типа (при этом панель управления возвращается к своей нормальной функции, но ПУ остается в автоном­ ном режиме OFF LINE). 6. Нажать кнопку OFF LINE (загораются лампочки ON LINE и READY, и ПУ переходит в неавтономный режим ON LINE). Режим «Пропускание через перфорацию» (ПЧП) приме­ няется при использовании непрерывно-подаваемой бу­ маги для печати листингов программ или другого мате­ риала, не управляемых прикладной программой. Этот режим позволяет не печатать по линии перфорации, по I{оторой бумага будет разрезаться. При выборе этого режима ПУ пропускает шесть строк после печати каждых 60 строк. Так как стандартная страница состоит из 66 строк, то это позволяет оставлять примерно 25 мм свободного поля на нижней части каждой страницы. Если 83
необходимо оставлять половину свободного поля на верх­ ней и нижней части страницы, то верхний край страницы следует установить примерно на 12 мм ниже линии пер­ форации. На этом выбор гарнитуры заканчивается и ПУ готово к работе. Следует отметить, что можно выбрать несколько гар­ нитур одновременно, например, расширенную гарнитуру с подчеркиванием. Для ее установки следует последова­ тельно выбрать следующие гарнитуры: расширенную; подчеркнутую; с подчеркиванием. 4.3. Загрузка шрифтов для печати Многообразие используемых (поставляемых) с 16-раз­ рядными ПЭВМ печатающих устройств (принтеров) и отсутствие отечественных принтеров порождают пробле."'1у печати букв русского и многих других алфавитов, ис­ пользуемых в СССР. Дело в том, что каждый принтер имеет стандартны1u1 набор печатаемых знаков. Этот набор, называемый кодо­ вой таблицей символов ПУ или шрифтом печати, находится в ПЗУ принтера. Естественно, что в ПЗУ можно поме­ стить любой набор знаков. Но поско.1ьку для ПЭВМ международным стандартом является ASCII, то и кодовая 'fаблица должна соответствовать коду ASCII. Код ASCII жестко фиксирует знаки с кодом от 32 до 127 (цифры, знаки препинания и латиница). Поэтому фирмы-изготови­ тели принтеров, которые до недавнего времени не очень интересовались кириллицей, помещают, как правило, в ПЗУ изображения знаков, соответствующие первым 128 кодам ASCII (от О до 127) плюс дополнительные буквы европейских алфавитов, регулируемые ДИП-пере­ ключателями, при этом оставшаяся часть кодовой таблицы либо дублирует первую (часто - курсивные изображения основных знаков), либо содержит знаки кодовой таблицы IBM, либо остается пустой. Конечно, при поставке ПУ в СССР русский алфавит заносится в ПЗУ, однако единой системы в этом пока нет. Так, в принтере FX-850, поставляемом с ЕС-1840.01, русским прописным буквам соответствуют коды от 161 до 193, а строчным - от 209 до 241. В принтере RAVI-8, поставляемом с ЕС-1840.05, коды русских букв - от 176 до 241, что соответствует основной таблице, принятой как стандарт у нас в стране. 84
Следует отметить, что в режиме высококачественной печати (NLQ) допускается лишь печать знаков кодовой таблицы ПУ. Поэтому при покупке ПУ выбор таблицы знаков имеет важное значение. К счастью, эту проблему, по-видимому, решает развитие техники: последние мо­ дели ПУ (например, FX-800/1000) допускают до восьми кодировочных таблиц в ПЗУ. Итак, перед пользовате.ТJем могут возникнуть две задачи: 1) буквы требуемого алфавита загружены в ПЗУ, но не так, как хочется; 2) букв требуемого алфавита в ПЗУ нет. Поставим проблему несколько шире - обеспечить пе­ чать пользовательского набора знаков. Мы выделим три возможных решения проблемы. 1. Написание перекодировочного драйвера ПУ (если русский шрифт в ПЗУ есть), т. е. резидентной программы, перехватывающей коды, посылаемые на принтер, и пре­ образующей в коды соответствующие таблице знаков принтера. В этом случае мы сохраняем режим высококачествен­ ной печати (NLQ). Однако надо иметь в виду, что исполь­ зование такого драйвера нарушает печать в графическом режиме, так как в этом случае посылаемые на принтер коды зависят лишь от печатаемого рисунка и могут быть в любом диапазоне и, следовательно, при перекодировке посылаемых кодов изображение нарушается. Поэтому более разумный путь - написание переключаемого, уп­ равляемого пользователем перекодировочного драйвера ПУ, то есть драйвера, перекодирующего посылаемые на принтер коды лишь при нажатии определенной комби­ нации клавиш. 2. Загрузка пользовательского шрифта при печати того или иного текста или рисунка. Эта возможность связана с тем, что помимо ПЗУ с определенным набором знаков многие принтеры, в част­ ности Ерsоп, имеют ОЗУ (RAM). Ряд команд принтера (Еsс-последовательности) позволяют записать в ОЗУ аль­ ч-ернативный набор знаков для АSСII-кодов и переключать ПУ на использование построенного набора как целиком, ч-ак и посимвольно. Возможны также копирование со­ держимого ПЗУ в ОЗУ и заполнение в ОЗУ неопределен­ ных знаков. Формирование пользовательских знаков и загрузку их в ОЗУ ПУ осуществляют специальные программы - 85
загрузчики шрифтов. При использовании пользователь­ ского шрифта существуют ограничения. Так, например, нельзя печатать загруженным пользовательским шриф­ том в режиме NLQ. Следует также отметить, что при выключении ПУ содержимое ОЗУ пропадает и пользо­ вательский шрифт необходимо снова загрузить. 3. Формирование пользовательского шрифта в гра­ фическом режиме. Эту функuию осуществляют так называемые про­ граммы - знакогенераторы. Рассмотрим подробнее одну из таких программ - LETTRIX фирмы «Хэммерлаб» (Hammerlab Corp.), кото­ рая обладает еще и. многими другими интересными воз­ можностями. Программа LETTRIX является резидентной програм­ мой, позволяющей осуществлять печать текста в графиче­ ском режиме любым сформированным заранее шрифтом, управлять режимами печати как глобально, так и внутри текстового процессора. Шрифты для печати формируются программой LXDESIGN.COM. Вызов программы-знакогенератора в зависимости от типа принтера следующий: 1) Epson FX/RX или IВМ А > LXDESIGN {шрифтl) {шрифт2} 2) Epson МХ А > LXDESIGN/M {шрифтl} {шрифт2) 3) C.ltoh, А > LXDESIGN/C {шрифтl} {шрифт2) где {шрифтl} - имя файла с формируемым или изменяе­ мым шрифтом; {шрифт2} - файл вспомогательного шрифта (по умолчанию - расширение имени файла со шрифтом - LХН). Следует заметить, что с каждой новой версией список возможных типов принтеров и соответственно способов вызова становится шире. После вызова появляется экран, на котором слева располагается матриuа 16Х 24 (пустая, если шрифт новый, или с первым по порядку символом, если шрифт старый), а справа перечисляются действия по формированию или изменению любого из 256 символов. Отметим, что допу­ скается копирование любого символа как из формируе­ мого, так и из вспомогательного файла со шрифтом. Таким образом, можно сформировать как шрифт с кириллицей 86
в любой кодировочной таблице, так и совершенно произ­ вольный набор знаков. После формирования одного или нескольких шрифтов можно вызывать LETTRJX. Файл с программой LETTRIX называется LX .СОМ, вызов также зависит от типа ПУ: Epson FX/JX/RX/LQ А >LX/E (шрифтl) (шрифт2) Epson МХ A>LX/M (шрифтl) (шрифт2) IВМ Graphics A>LX/G (шрифтl) {шрифт2) IВМ ProPrinter A>LX/P (шрифт!) (шрифт2) C.Itoh А >LX/C {шрифт!} (шрифт2) Допускается одновременное использование до семи шрифтов. Например, для принтера Epson FX-85/105, если мы хотим использовать заранее подготовленные в файлах RUS.LHX и ARTDECO.LXH шрифты, то необходимо набрать следующую команду: А >LX/E RUS ARTDECO Следует заметить, что LETTRIX загружается в память лишь один раз. Дополнить или изменить используемые шрифты можно лишь после перезагрузки ОС и повторного вызова программы. После загрузки LETTRIX размещается в памяти, ПЭВМ и начинает перехватывать коды, посылаемые на принтер, преобразуя их в графические знаки в соответ­ ствии с указанными шрифтами. По умолчанию исполь­ зуется шрифт, указанный первым в команде загрузки программы LETTRIX. При одновременном нажатии кла­ виш {Right-Shift) и (Enter} на экране появляется меню, предлагающее изменить режимы печати. Выбор осуществляется по принципу переключателя нажатием определенных клавиш, а именно: Действие/отмена LETTRIX Пропорциональная печать Выравнивание строки Выравнивание цифр Двойной удар вкл L р J N D выкл 1 р j n d 87
вкл выкл Жирный шрифт в ь Наклонный » 1 i Высокий » н h Широкий )) w w Сжатый )) с с Печать графических символов в том G g числе кириллицы (коды от 128 до 255) Печать команд LETTRIX Q q Выбранные режимы отображаются инверсно. По умол­ чанию включены следующие режимы: LETTRIX, про­ порциональная печать, выравнивание строки, печать гра­ фических символов. Нажатием цифровых клавиш 1, 2, 3, 4, 5, 6, 7 выби­ раются шрифты из числа загруженных. Можно также изменять и другие параметры печати: количество знаков и строк на дюйм, дополнительная левая граница (в 1/12 дюйма), минимальная длина строки для выравни­ вания, количество пробелов, рассматриваемых как ин­ тервал, расстояние между знаками (в 1/240 дюйма). Изменения, вносимые через меню LETTRIX, управ­ ляют печатью глобально, т. е. действуют постоянно на протяжении печати всеrо файла или документа. Помимо этого LETTRIX предоставляет очень полезную возмож­ ность управления печатью «изнутри» распечатываемого текста. Для этого при создании файла (можно использо­ вать практически любой текстовый редактор) в текс1' вставляются управляющие команды LETTRIX, а именно: знак '- плюс одна из описанных выше букв, цифр или специальных знаков. Например, включив в текст сочета­ ние символов '- В, последующий текст при печати буде1' пропечатываться жирным шрифтом (если дальше, ко­ нечно, отсутствуют другие команды). Таким образом, LETTRIX позволяет совмещать режимы и шрифты в про­ цессе печати одного файла.
Глава 5. СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ 5. t . Назначение и область применения СУБД В настоящее время при проектировании различного рода систем, обрабатывающих большие объемы сложно­ организованной информации, значительное распростра­ нение на ПЭВМ получили реляционные базы данных [8 ). Простота языка проектирования и манипулирования данными, удобство общения пользователя с подобными системами управления делают реляционные базы данных все более популярными при выборе программных средств, предназначенных для создания программных средств ко­ нечного пользователя. Одной из наиболее распространен­ ных систем управления реляционными базами данных на рассматриваемом r<лассе персональных ЭВМ является СУБД dBASE 111 PLUS. Эта система является развитием системы dBASE II для 8- и 16-разрядных ПЭВМ. [71. dBASE 111 PLUS работает в режиме интерпретации команд, что требует постоянного нахождения системы в ПЭВМ [1 ). В настоящее время широкую популярность приобрел компилятор с языка этой СУБД - Clipper, позволяющий создавать ЕХ Е-файлы программ, работаю­ щие в три-четыре раза быстрее созданных dBASE 111 PLUS. Программный 1юмплекс dBASE 111 PLUS функционирует в среде операционной системы MS-DOS и располагается на двух дистрибутивных дискетах. Первая дискета (SYSTEM DISK#l) содержит основ­ ные файлы dBASE 111 PLUS: DBASE.COM (заrрузчи1< системы), DBASE.LDl, CONFIG.DB, DBASE.MSG, DBASEINL.OVL. Кроме того, на этой дискете распола­ гаются программы и командные файлы инсталяции си­ стемы на жесткий диск. Вторая дискета (SYSTEM DISK:J::1:2) содержит файлы DBASE.OVL, ASSIST.HLP и HELP.DBS 89
Оrметим, что файл CONFIG.DB (файл конфигура­ ции системы) является необязательным. Он служит лишь для изменения некоторых параметров системы по умолча­ нию при загрузке dBASE 111 PLUS (назначение функцио­ нальных клавиш, цветов и т. д.). Файл CONFIG.DB можно создавать и изменять с помощью любого текстового ре­ дактора. При отсутствии в комплекте ПЭВМ накопителя на жестком магнитном диске применение данного программ­ ного комплекса затруднительно, так как само программное обеспечение занимает практически все свободное про­ странство на НГМД. И еще одно замечание. Некоторые организации в на­ шей стране провели адаптацию данного программного средства. Поэтому могут встретиться по существу такие же функциональные пакеты, но с другими именами. Наиболь­ шее распространение у нас получили русифицированные версии с именами РЕБУС и Микро-РС-2. При работе с адаптированной версией желательно все же следовать требованиям эталонного dBASE 111 PLUS с тем, чтобы в дальнейшем иметь доступ к широкому кругу пакетов, расширяющих возможности dBASE 111 PLUS или исполь­ зующих эту СУБД. Так, например, не следует использо­ вать буквы русского алфавита для задания имен полей файлов базы данных в системе Микро-РС-2 при проекти­ ровании программных средств, рассчитанных на совмест­ ную работу с программами из окружения dBASE 111 PLUS. 5.2 . Общие характеристики и ограничения dBASE 111 PLUS Система dBASE 111 PLUS теоретически поддерживает файлы базы данных, имеющие следующие характери­ стики: число записей - до 1 млрд; объем в байтах - до 2 млрд; размер записи - 4000 байт в файле DBF и 512 Кбайт в файле DBT; количество полей - до 128. В фирменном руководстве по dBASE 111 PLUS деликатно указывается, что приведенные значения могут быть огра­ ничены размером памяти конкретной ПЭВМ. Сразу сле­ дует сказать, что если бы в мире существовала ПЭВМ, способная достаточно быстро работать с файлами такого объема, то эта ПЭВМ называлась бы супер-ЭВМ. Допустимые размеры полей: символьные поля - до 254 байт; поля дат - 8 байт; логические поля - 1 байт~ поля примечаний - до 4096 байт или максимальная 90
длина записи используемого текстового редактора; чис­ ловые поля - до 19 байт. При работе с системой можно иметь одновременно до 15 открытых файлов всех типов или 10 открытых файлов базы данных. Системой обеспечивается точность чисел в 15 знаков до и 9 знаков после запятой. Следует заметить, что точка, отделяющая дробную часть, не считается за знак при определении точности. Точность в 13 знаков обеспечи­ вается при сравнении ненулевых чисел. В системе можно использовать до 256 активных вре­ менных переменных с общим размером до 6000 байт. Если память ПЭВМ превосходит 256 Кбайт, можно уве­ личить этот размер, назначив опцию MVARSIZE в CONFIG.DB. Размер временной переменной зависит от ее типа: символьная - назначенная длина строки плюс 2 байта; числовая - 9 байт; дата - 9 байт; логи­ ческая - 2 байта. Максимальная длина строки команды - 254 символа. Как видно, относительно технических возможностей ПЭВМ dBASE 111 PLUS, по существу, не имеет ограни­ чений, но это, разумеется, не должно создавать у раз­ работчика лишних иллюзий, поскольку легкость проек­ тирования системы, рассчитанной на обработку большого числа файлов, значительных по объему, может закон­ читься полной неудачей уже при загрузке базы дан­ ных. Рискуя ошибиться на порядок, можно сказать, что программное средство, выполненное с помощью dBASE 111 PLUS или любой другой СУБД, будет показывать приемлемое время реакции при работе с базой, имеющей несколько тысяч записей. Десятки, а тем более сотни тысяч записей никакая из существующих ПЭВМ в разумное время не обработает. Типы файлов. Система хранит информацию в виде дисковых файлов различных форматов. Имена файлов задаются в соответствии с требованиями ОС, с той осо­ бенностью, что не могут начинаться с цифры. Пользова­ тель назначает имя файла во время его создания. Тогда же следует назначать и расширение имени файла по умолча­ нию исходя из типа создаваемого файла. Однако пользова­ тель может ввести свое расширение, отличное от систем­ ного, путем простого ввода расширения в момент ввода имени файла. Однако в этом случае при обращении к файлу 91
необходимо задавать его расширение. При системном формировании расширения это не требуется. В табл. 5.1 приведены все виды файлов и их расшире­ ния по умолчанию. Двоичный Каталог Базы данных Страховые копии * Примечаний Вид фаllла Страховые копии примечаний Индекс11ый Командный Формата Марок Временных переменных Запроса Описания экрана Выборки Формы отчета Те1<стовый Таблица 5.1 Тип файла {расширение) BIN САТ DBF ВАК DBT твк NDX PRG FMT LBL МЕМ QRY SCR VUE FRM тхт • Файлы восстановления команд и процедур имеют это же рас 01ирение Рассмотрим эти файлы подробнее. Двоичные файлы (.BIN) - это программы, написан­ ные на языке Ассемблер, откомпилированные, отредакти­ рованные и переведенные в двоичную форму, так что они могут загружаться в память с помощью команды LOAD и исполняться командой CALL. Двоичные файлы соз­ даются, когда «ассемблированная» и отредактированная программа преобразуется из формата ЕХЕ в формат СОМ с помощью команды DOS EXE2BIN. Файл каталога (.САТ), или для краткости - каталог, прообраз журнала, помогающий пользователю отслежи­ вать все свои файлы. Так, если файл базы данных регу• лярно используется вместе с файлом индекса, форматом экрана пользователя, формой отчета, файлом выборки и файлом запроса, можно запомнить имена всех этих файлов в каталоге. Тогда при «активизации» каталога будут открыты только эти файлы. Файл каталога создается и активизируется с помощью команды SET СА ТALOG ТО. 92
Файл~ базы данных (.DBF) содержат данные в за­ писях и полях, соответственно в рядах и колонках. Под­ разумевается, что каждая запись содержит набор уни­ кальной информации. Структура записей файла базы данных создается командой CREAТЕ и изменяется коман­ дой MODIFY STRUCTURE. При каждом изменении пользователем структуры файла базы данных система создает страховую копию файла (.ВАК) и новый файл с новой структурой. Данные из страховой копии поме­ щаются в одноименные поля нового файла. Страховые копии с расширением .ВАК создаются также при измене­ нии файла, который был создан посредством MOD IFY COMMAND. Файлы примечаний (.DBT) - это текстовые файлы, содержащие данные полей примечаний. Все поля приме­ чаний файла базы данных хранятся в одном и том же файле примечаний, который создается в тот же момент, что и файл .DBF. В силу того что содержимое полей примечаний хранится в отдельном файле, поле примечаний в записи файла базы данных занимает всего 10 знаков. Страховые копии примечаний (.ТВК) - это также текстовые файлы, содержащие данные полей примеча­ ний. Если изменяется структура файла базы данных, имеющих примечания, то создается и сохраняется новый файл базы данных с новой структурой, а также страховая копия файла примечаний. Данные из страховой копии добавляются в новый файл в одноименные поля приме­ чаний. Индексные файлы (.NDX) обеспечивают средства использования базы данных в логическом, а не в физи­ ческом порядке. Физический порядок - это тот порядок, в котором записи были введены. Логический порядок представляет собой алфавитный, хронологический или числовой порядок в зависимости от типа поля. Индекс­ ные файлы связывают ключ - интересующий пользова­ теля элемент, такой, например, как фамилия, с соответ­ ствующим номером записи базы данных. Если использо­ вать базу данных с индексным файлом, то база данных выглядит как бы упорядоченной (отсортированной) по ключевому элементу. Ключ, который может состоять из одного или нескольких полей, также может быть исполь­ зован для получения прямого доступа к конкретной за­ писи. Индексные файлы создаются командой INDEX. 93
Командные файлы (.PRG) содержат наборы заданий системы, которые были сохранены как программы. Они являются файлами ASCII и могут быть созданы либо по­ средством MODIFY СОММАND, либо с помощью любого текстового редактора, который создает текстовые файлы ASCII. Файлы формата (.FMT) содержат подготовленные форматы экранов пользователя для ввода данных и вы­ вода их на печать. Эти файлы создаются из SСR-файлов с помощью команды CREATE SCREEN или вводятся не­ посредственно с использованием MOD IFY COMМAND. Кроме того, для их создания можно воспользоваться любым текстовым редактором, который создает текстовые файлы в коде ASCI 1. Файлы этикеток (.LBL) содержат информацию, которая нужна команде LABEL для печати этикеток. Этикетка - это информация пользователя для идентификации созда­ ваемых им документов. Данные файлы создаются и изменяются с помощью команды CREATE/MODIFY LABEL. Файлы временных переменных (.МЕМ) содержат до 256 временных переменных или 6000 байт (по умолча­ нию). Они используются с целью сохранения значений временных переменных для последующего испо.льзова­ ния. Эти файлы создаются командой SAVE и считываются обратно в память командой RESTORE. Файлы запросов (.QRY) содержат условия запросов для выборки отображаемых записей с помощью команд, работающих с открытыми текущими файлами. Они соз­ даются командой CREATE/MODIFY QUERY. Файлы описания экрана (.SCR) содержат информацию, которая используется командой CREATE/MODIFY SCREEN для создания или изменения файлов формата. При использовании этих команд создается соответствую­ щий файл формата - FMT. Файл выборки (.VUE) содержит перечень отдельных имен полей из одного или более файлов базы данных - DBF. Файл выборки при работе с файлами базы данных позволяет просматривать лишь отдельные поля. Файлы выборки могут также сохранять соответствующие файлы индекса и отношения между файлами базы данных. Можно создать файл формата и условия выборки со ссылкой на определенные имена полей. Для создания файла выборки 94
используется CREATE/MODIFY VIEW. Файл выборки также можно сохранить в каталоге. Файлы формы отчета (.FRM) содержат информацию, необходимую для подготовки отчетов с помощью REPORT. Они могут создаваться и изменяться командой CREAТЕ/ MODIFY REPORT. Текстовые файлы (.ТХТ) главным образом исполь­ зуются как средство осуществления интерфейса между системой и другими программными продуктами, которые считывают АSСII-файлы. Эти файлы являются АSСII­ файлами и содержат только печатаемые символы ASCII. Текстовые файлы считываются в файл базы данных си­ стемы специальной формой команды APPEND FROM. Они создаются с помощью специальной формы команды СОРУ. Текстовый файл создается также при использовании команды SET ALTERNATE для хранения выходных данных экрана, таких, как введенные команды по запросу с точкой, их результат или выходные данные программного файла. Формирование структуры базы данных. Структура или «каркас» файла базы данных формируется путем определения каждого поля в базе данных, что осуще­ ствляется посредством команд CREATE и MODIFY STRUCTURE. Определение поля состоит в задании сле­ дующих его элементов: ИМЯ ПОЛЯ, ТИП ПОЛЯ, ШИРИНА ПОЛЯ ИМЕНА ПОЛЕЙ в dBASE III PLUS должны со­ держать только латинские буквы (пробелы не разрешены). В этих именах допускается использование цифр и символа подчеркивание; длина имени поля - не более 10 симво­ пов. В некоторых русифицированных версиях допускается использование символов кириллицы в имени поля. Это кажущееся удобство сделает невозможным дальнейшую компиляцию программы с помощью, например, компиля- 1'ора Clipper. В системе предусмотрено пять типов полей: С - символьное, D - дата, L - логическое, М - при­ мечание, N - числовое. Символьные поля могут использоваться для хранения пюбоrо печатаемого символа, который можно ввести с клавиатуры (включая пробелы). Это-печатаемые сим­ волы ASCII; максимальная длина (размер) символьного поля - 254. Поля дат используются для хранения дат, которые могут вводиться и отображаться в различных форматах, 95
используя опцию PICTURE команды @ ... SA У ... GET. По умолчанию формат вводимой ИJIИ отображаемой даты ММ/ДД/ГГ (М - месяц, Д - день, Г - год). Длина поля даты-всегда восемь символов, даже если CENTUR У (век) установлен в ON. Дата может быть добавлена к числу; ее можно вычесть из даты; из даты можно вычесть и число. Логические поля - в них помещаются отде.'lьные сим­ волы, которые представляют значения «Истина» («Ложь»). Логическое «Истина» можно ввести как У, у, Т или t. Логическое «Ложь» вводится как N, n, F или f. Поля прuмРчаний созданы для размещения больших блоков текстовой информации. Они хранятся во вспомо­ гательном файле (.DBT) и помечаются в .DBF файле Memo. Поля примечаний могут содержать информацию (J'aкoro же типа, что и символьные поля, но они могут включать в себя 5000 символов и более, в зависимости от используемого текстового редактора. Каждое поле при­ мечаний, если введены какие-то данные, требует минимум 512 байт на запись. В записи файла базы данных каждое поле примечаний занимает 10 байт, так как текст хранится в отдельном файле на диске. Числовые поля - это поля двух типов: целые и деся­ тичные. Длина числового поля - это число цифр, кото­ рое оно может содержать. Десятичная точка и отрица­ тельный знак также считаются за одну цифру каждый. Точность числовых полей составляет 9-15 знаков без учета точки. Это означает, что, по крайней мере, 15 пер­ вых значащих цифр любого числа будут точными. Ширина поля - это максимальное количество сим­ волов или цифр, которое может содержаться в поле. В случае числовых полей десятичная точка и знак (если они нужны) учитываются при подсчете ширины поля. Поля дат, логические поля и поля примечаний имеют фиксированную длину. Для хранения данных вне структуры файлов базы данных используются временные переменные. Они обес­ печивают удобные средства временной памяти и создаются непосредственно с клавиатуры. Если поле и временная переменная имеют одно и то же имя, то имя поля имеет приоритет. Пользователь может обеспечить приоритет временной переменной, начав ее имя с m ->, например, т -> memvar. Другой способ - использование &- функции, которая применима только к временным пере­ менным, например, &memvar. 96
КАЧЕСГВЕI-П-IЬIЕ МИКРО-ЭВМ, ЛОКАЛЬНЬIЕ СЕТИ И ПЕРИФЕРИЙНЬIЕ УСГРОЙСГВА ПОКУПАТЬ У ЭКСПЕРГА Наши микро-ЭВМ имеют клавиатуру с кириллицей. Качественные микро­ ЭВМ (рабочие станции для персональных ком­ пьютеров, ХТ, АТ, 386), периферийные устрой­ ства; печатающие уст­ ройства, модемы, при­ надлежности, приклад- 4 Смирнов Н. Н. ное программное обеспе­ чение,, локальные сети, средства и принадлеж­ ности для передачи дан­ ных, факсимильные уст­ ройства. Обращаться: МИКРО-ЙОГ-СИСГЕМС Итякескуксен Маамерюm П/Я 44 00931 ХЕЛЬСИНКИ ФИНJIЯНДИЯ Телефон + 358 О 336011 Телефакс +358 О 3431017 IТAKESKUKSEN MAAMERKКI PL 44 00931 HELSINKI, FINLA ND Tel. +358 О 336011 Telefax. +358 О 3431017
КАЧЕСГВЕННЫЕ МИКРО-ЭВМ, ЛОКАЛЬНЫЕ СЕТИ И ПЕРИФЕРИЙНЫЕ УСТРОЙСГВА ПОКУПАТЬ У ЭКСПЕРТА Наши микро-ЭВМ имеют клавиатуру с кириллицей. КачествеIПiые микро­ ЭВМ (paбotrne станщш для персональных ком­ пьютеров, ХТ, АТ, 386), периферийные устрой­ ства; печатающие уст­ ройства, модемы, при­ надлежности, приклад- 4 Смирнов Н. Н. ное программное обеспе­ чение, локальные сети, средства и принадлеж­ ности для пepeдatrn дан­ ных, факсимильные уст­ ройства. Обращаться: МИКРО-ЙОГ-СИСГЕМС Итякескуксен Маамеркки П/Я 44 00931 ХЕЛЬСИНКИ ФИНJIЯНДИЯ Телефон + 358 О 336011 Телефакс + 358 О 3431017 ПAKESKUKSEN MAAMERKКI PL 44 00931 HELSINКI, FINLAND Tel. +358 О 336011 Telefax. + 358 О 3431017
Nol PCinEurope Distribution in Finland: TEKNCDPISТE ОУ Vattuniemenkatu 2 SF-00210 Helsinki Tel. 358-0-682 1299 Fax 358-0-679 881 Один из крупнейших представителей микрокомпьютеров IBM в Финлянди11, А/О Софистике предлаrает Вам комплексные системы под ключ, включая • микрокомпьютеры IBM • проrраммное обеспечение • принтеры • принадлежности • системную поддержку • обучение • техническое обслуживание Просим обращаться к следующим орrанизациям сотрудничества фирмы Софистике Ленинградская область ЛПО Вычислительной техники и информатики / А/O Софистике Пр. Шаумяна, 18 195272 Ленинград тел. 271-11 -10 Прибалтика НПО Вычислительной техники и информатики / А/O Софистике Кадака тээ, 165 200026 Таллин, Эстония тел . 537-303 Jt. SOPH ISТICS
1 ' i °о Выбрав это, Вычислите л ьные потре б н ости у каждого сuои . Поэтому разные люди выбирают разные решен ия . И поэтому в н аше время вычисления выполняются в таких раЗЛИ\fl/ЫХ УСЛОВИЯХ. Хотя многообразие решений облегчает удовлетворение потребностей пnльзователей. с ним связаны и некоторые проблемы . Тt1ки с как ссшместное исrюль:юво.ние ин формс1ции н есовмест имыми системами. П одобные проблемы встают перед все возрс1стающим числом фирм по мере как роста информационных систем, так и их нее боль шего разнообразия. " Новелл " - это значит исвобода " . К счастью эти проблемы мож но решить, © 1988 Novell lnc сделав один 11ростой выбор: '"Новелл·· . Программ ные средства для опера ционных с истем "Новелл NetWare~ " об ес пе чи в ают вычисления в самых разнообразных условиях. Это означает. что вы получаете свободу создавать вычислительные се ти из самых разнообразных средств: от п ерсо нальн ых компьютеrов до "Мак интоша"- . от VAX до PS/2. от 386 до универсалы,ых базисных систем. Так что все могут лоль:юuаться рабочими станциями по свпему выбору, не изменяя способа своей работы . Способност• выбир•т•. П осредством " NetWare" "Новелл" обеспечивает вам наиболее мощную из существующих комбинаций сетевых характеристик. защиты вы сможете выбрать и все это да нны х , функциональности и надежности . Плюс вы получаете возможность прозрачно соед иняться с любым и з двух миллионов пользователей во всем мире. уже выбравших " NetWare" . И по мере роста ваших высчислительных потребностей вместе с вами будет расти и сеть, увел ичив ая возможности организации сети и открывая перед вами возможности п одклю чения к н ов ым конфигурациям. Свобод• выбор• . Используйте вашу свободу. чтобы выбрать настоль ную конфигурацию , наиболее отвеча ющ ую вашим потребностям. Сетео рrаниз ующа я мощность "NetWare'' - вот ваш выбор. За допол ни тельной информанuией просьба обращаться по адре с у : Mikronet ОУ. Lakbisepiinkuja 2А. SF-02600 ESPOO . Телефон: +358 О 513800 . Фак с: + 358 О 513076. ~"! NOVEll Сетевые решения - ищите красное.
'Т -------- ----. -- - ---- -------- - Выбрав это, Вычислительные потребности у каждого сuои. Поэтому разные люди выбирают рс:1зные решения. И поэтому в наше время вычисления выполняются в таких различных условиях. Хотя многообразие решений облегчает . удо влетворение потребн о стей пользователей , с ним сuязаны и некоторые пrоблемы . Тс:1кис как соuместное исполь:ювание информации несовместимыми системами. Подобные проблемы встают перед все возрастающим числом фирм по мере как роста информационных систем, так и их все большего разнообразия. "Новелл" - это значит "свобода". К счастью эти проблемы можно решить, © 1988 Novell lnc сделав один простой • выбор : "Новелл··. Программные средства для операционных систем "Новелл NetWare®" обеспечивают вычисления в самых разнообразных условиях. Это означает, что вы получаете свободу создавать вычислительные сети из самых разнообразных средств: от персональных компьютеров до "Макинтоша''·, от VAX до PS/2, от 386 до универсальных ба:шсных систем. Так что все могут пользоваться рабочими станциями по своему выбору, не изменяя способа свое й работы. • Сilособность выбирать. Посредством "NetWare" "Новелл "· обеспечивает вам наиболее м ощную из с у ществующих комбинаций сетевых харак тер истик, защиты
i !1 ----- u~ ··:.,, вы сможете выбрать и все это данных , ф у н к циональности и надежности. Плюс вы пол у чаете возможность прозрачно соединяться с любы м и з двух миллионов пользователей во всем мире ; уже выбравших " NetWare ••. И по м ере роста ваших высчислительных потребносте й в ме сте с вами будет расти и • сеть , увел и чивая во. з м о жности организации ! сети и от к рывая перед вами возможности подключения к новы м к онфигурациям . Сво бода выбора. И спользуйте ваш у . свобод у, чтобы выбрать настольную конфигу раци ю , на иболее отвечающую вашим потребностям. Сетеорганизующая мощность "NetWare " - вот ваш выбор. За дополнительной информанцией просьба обращаться по адресу: Mikronet ОУ. Lakbisepankuja 2А. SF-02600 ESP00. Телефон: +358 О 513800. Ф а кс : +358 О 513076. Сетевые решен и я - и щите к расное.
The reliaЫe, Hyundai Personal Computers .,_ . . '.•,~•· :':: '' '5; . ReliaЫe, well known all over the world . Supplies, service, technical training Ьу Elka Microsystems. GLKЛ MICROSYSTEMS Lamm ittajankatu 2 А 008Ю He lsinki, Fin land Phone 358 О 755 73 88 Fax 358 О 785 534 Лотус раз-два-три ОБЩИЕ СВЕДЕНИЯ С марта 1983 года 1-2-3 пользуется лучшим сбытом в мире . Он удовлетворяет самым различным требованиям сотных тысяч людей самых различных профессиональностей и во в се х отрасл ях промышленности. Он является официаль­ ным стандартом для табличого вычисления . Поскольку в не м сочетаются табличное вычисление, графическое вос­ произведение и база данных, он позволяет быстро и удобно разрабатывать статистические данные, бюджеты, планы , графики, различные анализы и т.д. Ti etov!\ylй HeinAm!\entie 7 Р.О. Вох 334 SF-40 101 Jyv!\skyla , Finl and Тел. +35841 783 344 Телекс 28209 tva sf Телефакс + 358 41 783 зя s
5. 3 . Краткое описание команд dBASE 111 PLUS Команды системы могут быть разделены на группы в зависимости от выполняемых функций. Краткие ха­ рактеристики команд, входящих в каждую из групп, перечислены ниже. Символом « * » помечены операторы, работающие и в системах dBASE II и dBASE III PLUS. Команды помощи пользователю. Приведенные ниже 1юманды выводят на экран справочную информацию: ASSIST Обеспечивяет выполнение команд системы в режиме выбора из меню. DIR Выводит список файлов, размещенных на заданном диске или в зя.данном огля.влении. DISPLAY MEMORY * Выводит информацию о временных переменных. DISPLAY STATUS * Выводит информацию об а1<- тивных в данный момент фай­ лах и о параметрах системы. DISPLA У STRUCTURE * Выводит структуру актив­ ного файла базы данных. HELP * Указывает порядок исполь- зования команд системы и выдает в режиме выбора из меню другую справочную ин­ формацию. Команды создания файлов. Команды этой группы создают файлы базы данных и другие файлы системы. СОРУ * Копирует активный файл ба­ зы данных в новый файл. СОРУ FILE * Дублирует закрытый файл любого типа. CREAТЕ * Создает новый файл базы данных. IMPORT * Создает файл базы данных и файл формата экрана из фай­ лов формата PFS, а также создает файл выборки, в1<лю­ чающий файл базы данных и файл формата экрана. 5 Смирнов Н. Н, 97
INDEX JOIN CREATE LABEL CREATE QUERY CREATE REPORT CREATE SCREEN CREATE VIEW EXPORT MODIFY СОММАND MODIFY STRUCTURE SAVE SET САТALOG ТО SORT ТОТАЬ 98 • Создает индекс. • Объединяет заданные записи и поля из двух файлов базы данных в одном. Создает файл марок. Создает файл запроса. Создает файл формы отчета. Создает файл формата эк­ рана и дополнительно файл базы данных. Создает файл выборки. Создает из файла базы дан­ ных системы файл формата PFS; при этом используется открытый файл формата эк­ рана (если такой имеется). • Активизирует текстовый ре­ дактор системы, который ис­ пользуется для создания/мо­ дификации командных фай­ лов (программ), файлов фор­ мата экрана, текстовых фай­ лов и файлов проuедур. * Модифицирует структуру файла базы данных; создает копию первоначального фай­ ла. Сохраняет значения времен­ ных переменных в файле временных переменных. Создает новый каталог или выбирает один из существу­ ющих каталогов. • Создает отсортированную копию активного файла базы данных. • Выполняет подсчет итогов числовых полей активного файла базы данных и за­ носит полученные результа­ !fЫ в новый файл.
APPEND BROWSE INSERT BROWSE CHANGE EDIТ READ REPLACE UPDATE DELETE РАСК RECALL ZAP Команды добавJiения данных • Добавляет данные в конец файла базы данных. • Добавляет данные в конец файла базы данных. • Включает данные в файл базы данных. Команды редактирования данных * Обеспечивает полноэкран- ный режим редактирования данных с использованием «окон». * Обеспечивает редактирова­ ние значений заданных по­ лей и записей файлов базы данных. * Обеспечивает редактирова­ ние значений заданных по­ лей и записей файлов базы данных. * Обеспечивает ввод значений полей или переменных, ука­ занных в команде @ ...GET. * Замещает значения полей но­ выми данными. * Обеспечивает массовое об­ новление файла базы дан­ ных. Команды удаления данных * Устанавливает признак ис­ ключенной записи. • Выполняет физическое уда­ ление записей, помеченных как исключенные. * Сбрасывает признак исклю­ ченной записи. Выполняет физическое уда­ ление всех записей актив­ ного файла базы данных. 99
Команды вывода данных @ ... SAY ... GET ? AVERAGE BROWSE COUNT DISPLAY LABEI:. LIST REPORT SUM * Выводит данные R заданном пользователем q:юрмате на экран или принтер. * Выводит список выражений. Обеспечивает подсчет и вы­ вод среднего арифметическо­ го значения одного или более полей :заданных :записей ба­ зы данных. Если параметр SET TALK имеет :значение OFF, результат подсчета не выводится. * Обеспечивает поэкранный вывод 17 записей с соответ­ ствующим размеру экрана числом полей. • Обеспечивает подсчет и вы- вод количества :записей, удо­ влетворяющих заданному ус­ ловию. Если параметр SET TALK имеет значение OFF, резу льтат подсчета не вы- водится. * Обеспечивает поэкранный вывод записей и полей в табличной форме. Обеспечивает вывод данных в виде марки. * Обеспечивает вывод записей и полей в табличной форме. * Обеспечивает вывод данных в виде формы. * Обеспечивает подсчет и вы- вод суммы значений задан­ ных числовых полей. Если параметр SET ТALK имеет значение OFF, результат подсчета не выводится. Команды установки указателя записи. Приведенные ниже команды устанавливают указатель текущей записи файла базы данных. Указатель текущей записи - это номер по порядку данной записи в базе данных. 100
CONТINUE FIND GO/GOTO LOCATE SEEK SIOP • Устанавливает указатель на следующую запись, удовле­ творяющую заданному в команде LOCA ТЕ условию. * Устанавливает указатель на первую запись, ключ ин­ де1<са которой равен задан­ ной строке символов или числу. * Устанавливает указатель не­ посредственно на заданную запись, независимо от его текущей позиции. • Устанавливает указатель на запись, удовлетворяю­ щую заданному условию. Устанавливает указатель на запись, ключ индекса ко­ торой равен заданному вы­ ражению. * Пропускает заданное число записей вперед или назад от текущей позиции указа­ теля. Команды обработки файлов базы данных APPEND FROM * Добавляет запись из других, в том числе и внешних по отношению к системе фай­ лов. CLOSE Закрывает все файлы задан­ ного типа. СОРУ • Копирует текущий файл ба- зы данных в другой, в том числе и во внешний по от­ ношению к системе файл. ERASE/DELETE FILE * Удаляет файлы из оглавле­ ния. MODIFY STRUCTURE * Обновляет структуру файла базы данных. REINDEX * Перестраивает существую- щий индекс. RENAME * Переименовывает файл. 101
SELECT SORT USE • Выбирает одну из 10 рабо­ чих областей или один из 10 открытых файлов базы данных. • Создает отсортированную по одному или нескольким по­ лям копию файла базы дан­ ных. • Активизирует файл базы данных для обработки всех видов до появления следую­ щей команды USE. Команды обработки файлов других типов. Приведен­ ные ниже команды модифицируют программы и вспомога­ тельные файлы системы: MODIFY СОММАND MODIFY LABEL MODIFY QUERY MODIFY REPORT MODIFY SCREEN MODIFY VIEW • Вызывает встроенный тек­ стовый редактор для обнов­ ления программ, форматов экранов и других текстовых файлов формата ASCI 1. Редактирует файл марок. Редактирует файл запроса. Редактирует файл формы от­ чета. Редактирует файл системно­ го формата экрана и допол­ нительно структуру базы данных. Редактирует файл выборки. Команды обработки временных переменных АССЕРТ • Запоминает во временной пе- ременной строку символов, введенную с клавиатуры. AVERAGE Запоминает результат вы­ числения среднего ариф"1е­ тическоrо значения число­ вых выражений во времен­ ной переменной. CLEAR АLЬ • Удаляет все текущие вре- 102 менные переменные, закры­ вает все файлы базы данных и выбирает рабочую об­ ласть 1.
CLEAR MEMORY Исключает все текущие вре­ менные переменные. COUNT * Запоминает результат команды COUNT во времен­ ной переменной. DISPLAY MEMORY • Выводит текущие значения временных переменных. INPUT * Запоминает во временной пе- ременной любое введенное с клавиатуры выражение. PARAMETERS Определяет дополнительные параметры для использова­ ния в программе. PRIVA ТЕ З~прещает использование временных переменных про­ граммам более высокого уровня. PUBLIC Определяет временную пе­ ременную как глобальную. READ • Обеспечивает ввод данных в переменные, указанные в команде @ ... GET. RELEASE • Очищает заданные времен- ные переменные. RESTORE * Выбирает значения перемен- ных, хранящихся в файле на диске. SAVE • Сохраняет текущие значения временных переменных в файле на диске. STORE • Запоминает результат выра- жения во временной пере­ менной. SUM • Запоминает суммы числовых выражений во временных пе­ ременных. WАIТ * Запоминает введенный с кла- виатуры символ во времен­ ной переменной. Команды программирования. Приведенные ниже команды используются при создании командных файлов~ АССЕРТ • Обеспечивает запоминание символьных данных во вре­ менной переменной. 103
CANCEL D0 DO WHILE ЕХIТ LOOP ENDDO DO CASE CASE OTHERWISE ENDCASE IF ELSE ENDIF INPUT MODIFY СОММАND PROCEDURE QUIТ RETRY 104 • Прекращает выполнение программы системы. • Выполняет программу или файл процедур. * Организует в программе структурный цикл. * Выполняет выход из цикла DO WHILE. • Выполняет переход в начало цикла DO WHILE. * Завершает цикл DO WHILE. * Задает выполнение одной из нескольких возможных по• следовательностей команд. * Отмечает последователь- ность команд для выполне­ ния в структуре DO CASE. • Задает альтернативу всt·м остальным последователь­ ностям команд в структуре DO CASE. * Завершает команду DO CASE. * Обеспечивает выполнение I<ОМаНд ПО УСЛОВИЮ. * Задает выполнение альтер­ нативной группы команд в структуре I F. • Завершает команду IF. • Запоминает любое введенное с клавиатуры выражение во временной переменной. * Вызывает встроенный тек­ стовый редактор для обнов­ ления программ системы. Отмечает начало процедуры в файле процедур. * Обеспечивает закрытие всех файлов и выход из системы. Обеспечивает возврат в вы­ зывающую программу и по­ вторное выполнение коман­ ды, запустившей вызывае­ мую программу.
RETURN ТЕХТ ENDTEXT * Возвращает управление вы­ зывающей программе и вы­ полняет следующую коман­ ду. * Выводит блок текстовых дан- ных, содержащихся в командном файле. * Задает конеu блока тексто­ вых данных в командном файле. WAIТ * Приостанавливает выполне- ние программы до нажатия любого ключа клавиатуры. Для демонстрации возможностей СУБД сложились определенные традиции. Зарубежные авторы дают при­ мер, в котором необходимо отыскать из адресного списка Джона Смита из Оклахомы, служащего фирмы «Надеж­ ный поставщик». Советские авторы, как правило, приводят пример составления штатного расписания - видимо это самая важная проблема. Мы тоже не будем отступать от тради­ ций. Хотя смысла в этом не видно. П р и м е р 5.1 . Рассмотрим работу некоторых основ­ ных операторов на следующем примере. Предположим, нам необходимо создать базу PRIM кадрового состава какого-либо учреждения или его струк­ турного подразделения со следующими характеристиками. ТАБНОМ - табельный номер; ФАМ - фамилия и. о. сотрудника; ОТДЕЛ - отдел; ДОЛЖ - занимаемая должность; ОКЛАД- установленный оклад; СЕМ - се­ мейное положение; ДЕТИ - количество детей. Вызовем систему dBASE 111 PLUS с нужного устрой­ ства, введя команду DBASE. После загрузки системы в первой позиции на экране появится точка, что означает выход системы dBASE 111 PLUS в режим ввода команд. Введем команду создания новой базы create prim. Описав структуру файла PRIM согласно описанным выше характеристикам, введем информацию в базу так, как показано ниже! ТАБНОМ ФАМ 234 Сергеев А. П. 163 Иванов С. Л. 431 Басков Н. Н. ОТДЕЛ ДОЛЖ 24 зав. сектор 22 ст. инженер 23 вед. инженер ОКЛАД СЕМ ДЕТИ 285 да 2 185да2 210 да 105
ТАВНОМ ФАМ ОТДЕЛ ДОЛЖ ОКЛАД СЕМ ДЕТИ 265 343 562 413 Осипов А. П. 22 Веригин Н. О. 23 Сочнев Г. А. 22 Прокопенко Ж. В. 22 вед. инженер 220 да 1 зав. сектор 280 да 1 н. с. 250 да 1 инженер 165 нет нет Для того чтобы быстро просмотреть то, что мы ввели в базу, можно набрать оператор display all - на экране появляется следующая информация: ЗАПИСЬ#ТАБНОМ ФАМ ОТДЕЛ ДОЛЖ. ОКЛАД СЕМ ДЕТИ 1 234 Сергеев А. П. 24 зав. сектор 285 да 2 2 163 Иванов С. Л. 22 ст. инженер 185 да 2 3 431 Басков Н. Н. 23 вед. инженер 210 да 4 265 Осипов А. П. 22 вед. инженер 220 да 1 5 343 Вериrнн Н. О. 23 зав. сектор 280 да 1 6 562 Сочнев Г. А. 22 н.с. 250да1 7 413 Прокопенко Ж, В. 22 инженер 165 нет нет Предположим, мы хотим получить список сотрудников отдела 22. При этом нас будут интересовать только табель­ ный номер, фамилия и оклад сотрудника. Введем оператор display табном, фам, оклад for отдел=22. На экран будет выведено: ЗАПИСЬ# 2 4 6 7 ТАБНОМ ФАМ 163 Иванов С. Л. 265 Осипов А. П. 562 Сочнев Г. А. 413 Прокопенко Ж. В. ОКЛАД 185 220 250 165 Пусть нас теперь интересует фонд заработной платы сотрудников отдела 22. Введем оператор sum оклад to fond for отдел= 22, тогда на экране получим: 4 записи сумм оклад 820. Эту же информацию можно одновременно получать на экране и на принтере, если в начале сеанса работы с базой ввести оператор set print оп. Все, что мы сейчас делали, относится к интерактивному режиму работы оператора с базой данных, т. е., такому режиму, когда после ввода какого-либо оператора полу­ чаем результат его выполнения. Предположим, мы хотим получить подобную информа­ цию в виде определенного документа или формы. Сделать это можно следующим образом: вводим оператор create report Ыank. 108
С помощью меню данного оператора формируем тре­ буемую форму (со своими заголовком, графами, итогами и т. д.). Этим мы создадим файл формы отчета (Ыапk. frm). Затем введем оператор report form Ыank for отдел=22 plain to print. На принтере будет отпечатан следующий документ: Кадровый состав отдела 22 ТАБНОМ ФАМ И. О. ОКЛАД 163 265 562 413 Иванов С. Л. Осипов А. П. Сочнев Г. А. Прокопенко Ж. В. Итоrо: 185 220 250 165 820 Продолжим рассмотрение команд. CLEAR EJECT SET Команды управления устройствами Очищает экран. * Переводит страницу на принтере. * Обеспечивает установку параметров системы в режиме выбора из меню. Команды установки параметров системы. Приведенные ниже команды задают значения параметров системы (верхний регистр указывает значение, принятое по умол­ чанию): SET ALTERNAТЕ on/OFF SET ALTERNATE ТО SET BELL on/OFF SET CARRY on/OFF Задает (подавляет) запись команд и выходной ин­ формации системы в тек­ стовый файл. • Задает имя текстового файла для записи команд и выходной информации системы (или закрывает этот файл). * Задает (подавляет) вклю­ чение звукового сигнала при вводе данных, если достигнут конец поля или произошла ошибка. * Задает (подавляет) пере­ нос содержимого послед­ ней записи в запись, до­ бавленную командой APPEND. 107
SET CATALOG on/OFF SET CATALOG ТО SET CENTURY on/OFF SET COLOR on/OFF SET COLOR ТО SET CONFIRM on/OFF SET CONSOLE on/OFF SET DATE SET DEBUG on/OFF SET DECIMALS ТО SET DEFAULT ТО SET DELETED on/OFF 108 Задает (подавляет) добав­ ление новых файлов в от­ крытый каталог. Создает, открывает или закрывает каталог. Задает (подавляет) вывод первых двух цифр года. Задает тип монитора (чер­ но-белый или цветной). По умолчанию принято значение, которое исполь­ зовалось при запуске си­ стемы. Задает атрибуты экрана (цвет фона, символов, рамки и т. п.). * Задает автоматический или по нажатию клавиши «В ВОД» переход на следую­ щее поле при вводе данных. * Задает (подавляет) вывод на экран результатов вы­ полнения команд систе­ мы. * Задает формат для выра­ жения типа даты. * Задает (подавляет) вывод результатов выполнения команд сиотемы на прин­ тер, когда значение пара­ метра SET ЕСНО равно ON. Задает точность чисел при выводе резу льтатов вы­ числений. Задает активный по умол­ чанию диск для поиска файлов. Задает обработку (про­ пуск) соответствующими командами записей, по­ меченных для исключе­ ния.
SET DELIMIТERS on/OFF SET DELIMIТERS ТО SET DEVICE ТО SCREEN (ТО PRINT) SET DOHISTORY on/OFF SET ЕСНО on/OFF SET ESCAPE ON/off SET ЕХАСТ on/OFF SET FIELDS on/OFF SET FIELDS ТО SET FILTER ТО Задает использование системных (других) раз­ делителей для ограниче­ ния поля ввода данных. Задает символ для ис­ пользования в качестве разделителя, когда зна­ чение параметра SET DELIMIТERS равно ON. Задает устройство (экран или принтер) вывода ре­ зультатов команд @ ... SAY. Задает (подавляет) при выполнении программы занесение команд в буфер HISTORY. • Задает (подавляет) вывод на экран команд програм­ мы перед их выполне­ нием. * Задает (подавляет) при­ остановку выполнения команды при нажатии ключа (ESC}. * Задает необходимость точного соответствия при сравнении строк симво­ лов. Задает обработку ука­ занного списка полей (всех полей) записи. Задает список полей записи для обработки по­ следующими командами. Задает условие отбора за­ писей базы данных для обработки. Условие мо­ жет быть задано файлом запроса (.qry) или ука­ зано в виде выражения непосредственно в данной команде. 109
SET FIXED on/OFF SET FORMAT ТО SET FUNCТION ТО SET HEADING ON/off SET HELP ON/off SET HISTORY ON/off SET HISTORY ТО SET INDEX ТО SET INTENSIТY ON/off SET MARGIN ТО SET MEMOWIDTH ТО SET MENUS ON/off SET MESSAGE ТО 11& Задает вывод фиксиро­ ванного (произвольного) числа десятичных знаков. • Открывает заданный файл формата экрана для вывода данных. Задает значения функ­ циональных ключей клавиатуры. Задает (подавляет) вывод имен полей перед значе­ ниями полей в командах LIST или DISPLAY. Задает (подавляет) вывод сообщения о необходимо­ сти ПОМОЩИ при возник­ новении ошибки. Задает (подавляет) зане­ сение команд в буфер HISTORY. Задает число команд, со­ храняемых в буфере HISTORY. * Открывает заданные ин­ дексы. • Задает (подавляет) ис­ пользование дополни­ тельных атрибутов экра­ на при вводе полей в полноэкранных опера­ циях (APPEND, EDIТ). • Задает ширину левого по­ ля при выводе информа­ ции на принтер. Задает длину поля для вывода примечаний. Задает (подавляет) вывод на экран меню ключей управления при выпол­ нении полноэкранных операций. Задает вывод на экран определенного пользова­ rелем сообщения, когда
SET ODOMETER ТО SET ORDER ТО SET РАТН ТО SET PRINT on/OFF SET PRINTER ТО SET PROCEDURE ТО SET RELAТION ТО SET SAFETY ON/off SET SCOREBOARD ON/off SET STАTUS on/OFF SET STEP on/OFF SET TALK ON/off значение параметра SET STATUS равно ON. Задает интервал измене­ ния счетчика записей. Присваивает любому от­ крытому индексу статус главного или управJ1яю­ щего без закрытия и по­ вторного открытия ин­ дексов. Задает маршрут поиска файла. • Задает (подавляет) вывод на принтер. Направляет выходную информацию на заданный принтер. Открывает заданный файл процедур. Связывает две базы дан­ ных по общему значению ключа. Выдача (подавление вы­ дачи) на экран предупре­ ждающего сообщения при перезаписи существующе­ го файла. Выдача (подавление вы­ дачи) сообщений системы на нулевой строке экра­ на. Задает (подавляет) вывод информационной строки. • Задает (подавляет) пере­ ход в состояние ожида­ ния после выполнения каждой команды при об­ работке программ систе­ мы. Задает (подавляет) вывод на экран результатов вы­ полнения команд. 111
SET TIТLE ON/off Задает (подавляет) за­ прос ввода описания фай­ ла при добавлении ново­ го файла в каталог. SET TYPEAHEAD ТО Задает размер буфера для ввода данных с клавиа­ туры. SET UNIQUE on/OFF Задает включение в ин­ декс только первой (всех) записи с одинако­ вым значением ключа. SET VIEW ТО Открывает файл выбор­ ки, связывающий не­ сколько файлов базы дан­ ных. Команды связи с внешними программами. Приведен­ ные ниже команды обеспечивают интерфейс системы с про• граммами на других языках программирования: CALL Выполняет двоичный файл (модуль), загружен­ ный в память командой LOAD. LOAD Загружает в память дво­ ичный файл для после­ дующего выполнения о помощью команды CALL. RUN Запускает на выполнение любую программу или команду операционной системы без выхода из системы. Команды отладки программ. Приведенные ниже команды помогают контролировать выполнение команд в программах системы: DISPLAY HISTORY LIST HISTORY RESUME 112 Обеспечивает поэкранный вывод команд, сохранен­ ных в буфере HISTORY. Обеспечивает вывод спи­ ска команд, сохраненных в буфере HISTORY. Продолжает выполнение программы, прерванное командой SUSPEND.
SET DEBUG onfOFF • Задает (подавляет) вывод на принтер результатов выполнения команд си­ стемы, когда значение па­ раметра SET ЕСНО рав­ но ON. SET DOHISTORY on/OFF Задает (подавляет) при выполнении программы занесение команд в бу­ фер HISTORY. SET ЕСНО on/OFF * Задает (подавляет) вывод на экран команд програм­ мы перед их выполне­ нием. SET HISTORY ТО Задает число команд, со- храняемых в буфере HISTORY. SET STEP on/OFF * Задает (подавляет) пере- ход в состояние ожида­ ния после выполнения каждой команды при об­ работке программ систе­ мы. SUSPEND Приостанавливает вы­ полнение командного файла или процедуры и обеспечивает. переход в режим интерпретации команд. Команды обработки прерываний. Приведенные ниже команды обеспечивают выполнение заданных действий при возникновении прерываний независимо от других команд системы. ON ERROR Обеспечивает выполнение ON КЕУ ON ESCAPE заданной команды при возникновении ошибки. Обеспечивает выполнение заданной команды при нажатии любого ключа клавиатуры. Обеспечивает выполнение заданной команды при нажатии ключа {Esc~ . 113
5.4. Командные файлы Мощным средством работы с системой является воз­ можность создания с помощью команд программирования, рассмотренных в п. 5.3, прикладных программ пользова­ теля, называемых в среде системы dBASE III PLUS командными файлами. В командном файле можно исполь­ зовать любую команду или функцию, вводимую по за­ просу с точкой на ввод, и записываются они в том же виде. Кроме того, система имеет команды, применяемые только в командных файлах и позволяющие более эффек­ тивно управлять данными. Командный файл можно ис­ пользовать также для выполнения более сложной задачи, например разработки меню. Можно даже написать не­ сколько командных файлов, выполняющих все задачи пользователя (пользователь будет лишь вводить свои данные). Команды программирования. В системе есть команды, аналогичные командам многих языков программирова­ ния, обеспечивающие управление данными. Эти команды позволяют программировать в системе, выполняя с по­ мощью командных файлов более сложные операции, чем те, которые задаются простым набором команд по запросу с точкой на ввод. Это следующие команды: DO WHILE... ENDDO . IF ... {ELSE )... ENDIF . DO CASE... ENDCASE . ON В каждой из указанных команд имеется одно условие. Однако в конструкции DO WHILE система проверяет условие раз за разом до тех пор, пока оно не перестает выполняться. В конструкции IF ... ENDIF система про­ веряет условие один раз. Часто может потребоваться проверка нескольких воз­ можных условий. DO CASE ... ENDCASE позволяет за­ писать несколько различных условий. В более сложных случаях можно использовать любые математические, логические, строковые операторы и опе­ раторы отношения для объединения выражений в условии. Можно также вставить любую из этих трех команд внутрь другой, что называется вложением. При этом предложе­ ния должны целиком входить одно в другое. Обычно командный файл исполняется строка за стро­ кой. Однако, используя команду DO (имя командного 114
файла), можно также перейти в другой программный файл и выполнить его, не возвращаясь к запросу с точкой на ввод. Программный файл, из которого происходит переход, является вызывающей программой, а тот файл, куда происходит переход, - подпрограммой. Выполня­ ются команды подпрограммы, затем управление возвра­ щается в вызывающую программу и выполняются остав­ шиеся команды. Полезно в качестве последней команды подпрограммы использовать RETURN. Команда ON по­ зволяет перейти в подпрограмму при обнаружении систе­ мой ошибки. Командный файл системы dBASE 111 PLUS состоит из четырех основных частей: преамбулы, установочной области, тела программы, раздела закрытия. Преамбула содержит имя командного файла, опи­ сание того, что он выполняет, кто написал его и дату последнего исполнения или редактирования. Установочная область содержит команды, описываю­ щие операционную среду командного файла. Есть ряд параметров системы, которые, возможно, потребуется изменить для варианта среды командного файла. Они устанавливаются командой SET и ее опциями. Тело командного файла содержит команды, которые выполняют работу программы. В этой части следует открывать файлы, выбирать рабочие области, изменять или отображать информацию базы данных, производить вычисления, формировать отчеты и т. д. с помощью тех же команд, что и по запросу с точкой на ввод. Раздел закрытия содержит команды, которые при­ водят в порядок рабочее пространство, использовавшееся командным файлом. К примеру, можно возвратить среду в установочное состояние, принятое по умолчанию, уда­ лить временные переменные, закрыть все файлы и воз­ вратиться к запросу с точкой на ввод. В командном файле можно применять любой тип временных переменных (символьная, числовая, дата, ло­ гическая). Обычно они инициализируются посредством команды STORE {значение) ТО {имя временной пере­ менной) или {имя временной переменной) = (значение). Кроме того, для инициализации временных перемен­ ных можно использовать команды РARAМETERS, АССЕРТ, AVERAGE, COUNT, INPUT, SUM и WAIТ. Временные переменные используются для хранения в па­ мяти значения, которое вычисляется или обрабатывается 115
командным файлом. Содержимое временных переменных существует временно, пока его не изменят, или высвобо­ дят переменную, или выйдут по QUIT из системы. Между тем можно сохранить временные переменные в файле МЕМс помощьюSАVЕ, а позднее вызвать их по RESTORE. Временные переменные, инициализированные no за­ просу с точкой на ввод или вызванные по RESTORE, всегда имеют статус глобальных. Их значения доступны для любой операции по запросу с точкой на ввод, в том числе для исполнения командного файла. В то же время переменные, инициализированные в командном файле или вызванные в нем по RESTORE, имеют по умолчанию статус локальных. Их значения доступны лишь внутри командного файла и подпрограмм. С помощью команд PUBLIC и PRIVATE можно изменить или защитить статус переменной. Обычно временные переменные вы­ свобождаются в разделе закрытия командного файла. Функции в командных файлах используются так же, как и по запросу с точкой на ввод. Создание командных файлов. Создать командный файл можно, введя MODIFY СОММАND {имя файла} по запросу с точкой на ввод. Ввод данной команды приводит к автоматическому вызову текстового редактора системы. Если требуется изменить файл, нужно также ввести MOD IFY COMMAND {имя файла) по запросу с точкой на ввод, затем снова сохранить файл посредством Ctrl-W . По команде MOD IFY COMMAND работает текстовый редактор системы. В первую очередь он используется для создаания и редактирования командных файлов, но его можно применять и для создания (модификации) стандартного текстового файла ASCII. Например, этой командой можно создать файл формата (.FMT). Исполнение командных файлов. Для открытия и испол­ нения командного файла по запросу с точкой на ввод нужно ввести DO {имя файла). Командный файл можно исполнить и при загрузке системы. По запросу операци­ онной системы на ввод нужно ввести имя командного файла базы данных. Отладка командных файлов. При создании или написа­ нии командных файлов нередко возникают синтаксиче­ ские и семантические ошибки. В сивтеме евть ряд команд, позволяющих отладить командные файлы. Это: RESUME, SET DEBlIO, SET DOHISTORY, SET ЕСНО, SET HISTORY ТО, SET 116
STEP и SUSPEND. Выбор команды зависит от способа работы пользователя. Рассмотрим процесс создания командного файла COMPRIM для приведенного выше примера. Введем оператор modify command comprim. После загрузки редак­ тора и выхода в режим ввода операторов введем следу­ ющие команды: erase use prim report form Ыank for отдел-22 plain to print returnлw Наш первый командный файл создан. Теперь можно, не выходя из системы, вызвать его оператором do comprim либо, если вы только начинаете сеанс работы с системой, то задать команду dBASE comprim. После выполнения любого из указанных операторов на принтер будет выведен документ, рассмотренный выше. 5. 5. Использование функций Функции выполняют епециализованные операции, ко­ торые расширяют и усиливают команды системы. Они используются для анализа или преобразования данных и возвращают результат. Все функции имеют открыва­ ющие и закрывающие <шобки после имени функции (за исключением макрофункции & ). Данные внутри скобок могут указываться или не указываться. Классификация функций. Все функции системы dBASE 111 PLUS можно разбить на следующие группы: & Макроподстановка Функции, работающие с датами CDOW( ) День недели. CMONTH ( ) Календарный месяц. CTOD( ) Преобразование даты из символьно­ DATE( ) DAY() DOW( ) DTOC( ) MONTH ( ) TIME( ) YEAR() го формата в формат D. Системная дата. Число месяца. Номер дня недели. Преобразование даты из формата D в символьный формат. Месяц года. Системное время. Год. 117
Функции, работающие с символами АТ( ) LEFT( ) LOWER ( ) LTRIM ( ) REPLICATE ( RIGHT ( ) RTRIM ( ) SPACE ( ) STUFF ( ) SUBSTR ( ) TRANSFORM ( TRIM( ) UPPER ( ) ABS( ) ЕХР( ) INT( ) LOG( ) МАХ() MOD( ) ROUND ( J. SQRT( ) ASC( ) CHR( ) CTOD(J DTOC( ) LOWER ( J STR( ) UPPER ( ) VAL( ) 118 Поиск подстроки. Выбор подстроки слева направо. Переход с верхнего регистра на ниж­ ний. Удаление ведущих пробелов. ) Повторение символьного выражения. Выбор подстроки справа налево. Удаление хвостовых пробелов. Генерация пробелов. Замена части строки. Выбор подстроки. ) Представление символов (uифр) в формате PICTURE. Удаление хвостовых пробелов. Переход с нижнего на верхний ре­ гистр. Математические функции Абсолютная величина. Экспонента. Целое число. Логарифм. Определение большего из двух зна­ чений. Модуль. Округление числа. Квадратный корень. Функции преобразований Получение кода ASCII символа. Получение символа по коду ASCII. Преобразование даты из символьно­ го формата в формат D. Преобразование даты из формата D в символьный формат. Переход в верхнего регистра на ниж­ ний. Преобразование числа в символ. Переход с нижнего регистра на верх­ ний. Преобраsование символа в число.
Функции специальных проверок ВОР( ) COL( ) DELETED ( ) DISKSPACE ( ) EOF( ) ERROR ( ) FILE( ) FOUND ( ) IIF( ) ISALPHA ( ) JSCOLOR ( ) ISLOWER ( ) ISUPPER ( ' I~EN( ) LUPDATE ( ) MESSAGE ( ) PCOL( ) PI~OW ( ) RECCOUNT ( ) RECNO ( ) RECSIZE ( ) ROW( ) ТУРЕ( ) Начало файла. Номер текущей колонки. Запись удалена или нет. Свободное место на диске в байтах. Конец файла. Код ошибки по условию ON ERROR. Файл существует или нет. Результат поиска файла базы дан­ ных. Одно или другое выражение в зави­ симости от условия. Проверка на букву. Проверка на цветной режим. Проверка на нижний регистр. Проверка на верхний регистр. Длина строки символов. Последнее обновление файла базы данных. Сообщение об ошибке. Номер колонки на принтере. Номер строки на принтере. Количество записей в файле базы данных. Номер текущей записи. Размер записи. Номер текущей строки на экране. Проверка типа выражения. Функции идентификации DBF( ) FIELD ( ) FKLABEL ( FKMAX() GETENV ( NDX() os(} VERSION ( ) } ) Имя текущего файла. Имя поля в файле базы данных. Названия функциональных ключей. Максимальное количество програм­ мируемых функциональных ключей на терминале Переменная, содержащая информа­ цию об операционной среде. Им~на открытых индексных файлов. Название операционной системы. Версия системы. 119
Функции ввода INKEY ( ) Код нажатого во время работы про­ граммы ключа. READKEY ( ) Определение ключа для выхода из полноэкранной команды. Большая популярность dBASE 11, затем dBASE 111 и, наконец, dBASE 111 PLUS стимулирует разработку программных средств, облегчающих процесс отлад1ш и расширяющих возможности системы., Можно упомянуть утилиту D UTIL, оказывающую помощь при от,1адке. Эта утилита заметно увеличивает быстродействие про­ грамм dBASE. Пакет D GRAPH позволяет строить гра­ фики по информации, подготовленной средствами dBASE. 5.6 . КомпиJiятор Clipper Команды СУБД dBASE 111 PLUS составляют язык программирования высокого уровня, называемый языком программирования dBASE, а сама система dBASE 111 PLUS фактически является интерпретатором этого языка. При программировании на языке dBASE мы имеем при­ еущие любому интерпретатору как достоинства, связан­ ные с ускорением проuесса отладки программ, так и не­ достатки, связанные G низкой эффективностью исполне­ ния уже отлаженных программ. Кроме того, при испол­ нении программ в режиме интерпретации необходимо иметь сам интерпретатор, то есть полную версию dBASE 111 PLUS, при этом в отсутствие «винчестера» неизбежно встает проблема использования дисководов, так как не­ обходимо обеспечить одновременно доступ к оверлейным модулям dBASE 111 PLUS, к собственно текстам про­ грамм и к файлам базы данных. Частично указанные выше недостатки снимает семейство программ под общим име­ нем RUN ТIМЕ+, в состав которого входят: dBCODE - псевдокомпилятор, dBLINKER - псевдоредактор связей, dBRUN 111 PLUS - загрузчик откомпилированных про­ грамм. Аналогичные программы есть и в системе МИКРО-РС-2. Псевдокомпилятор dBCODE осуществляет предвари­ !fельную обработку и кодирование текста исходной про­ граммы (файла с расширением PR-G). В результате полу­ чается исполняемый РRG-файл. Преобразованный про­ граммный файл запускается на выполнение либо самой системой dBASE 111 PLUS, либо загрузчиком dBRUN. 120
Программа dBLINKER объединяет отдельные подпро­ граммы в один модуль, выполняемый также с помощью dBASE 111 PLUS или dBR.UN. Таким образом, ускоряя время исполнения dВАSЕ-программ и сокращая объем внешней памяти для хранения программ, тем не менее мы все равно обязаны иметь либо полную систему dBASE 111 PLUS, либо загрузчик dBRUN III PLUS (именно поэтому употребляется термин «псевдокомпиля ция»). Компилятор Clipper является удачной попыткой напи­ сания полного транслятора dВАSЕ-программ, т. е. после компиляции программ с помощью Clipper получается за­ грузочный ЕХЕ-файл, для исполнения которого необхо­ димо иметь лишь операционную систему MS-OOS . Компилятор Clipper является независимой от dBASE 111 PLUS системой, созданной фирмой «Нэнтакет» (Nan- tucket). В зависимости от времени создания имеютсн сле­ дующие версии компилятора Clipper: Clipper Winter'85; Clipper Autumn'86; Clipper Summer'87. Развитие системы Clipper идет по пути как достиже­ ния большей совместимости G dBASE III PLUS по вход­ ному языку, так и увеличения возможностей dBASE 111 PLUS. Так, в системе Clipper помимо существенного увеличения возможностей организации пользовательского интерфейса ускорены и многие операции обработки базы данных. Кроме того, существенным преимуществом си­ стемы Clipper является частичная открытость системы, т. е. возможность расширения языка Clipper специальным образом посредством Extend System системы Clippel', Extend System позволяет включать во входной язык Clipper новые процедуры, написанные на языках Ассем­ блер и Си. Мы опишем работу с последней, открытой для пользо­ вателей любой страны, версией Clipper Summer'87. Полная версия Clipper Summer'87 располагается на четырех дистрибутивных дискетах и содержит следующие основные файлы: CLIPPER.EXE - собственно компилятор Clipper: PLINK86.EXE - разработанный фирмой Phoenix Techno- logy Limited специально для системы Clipper редактор связей (линкер), который позволяет редактировать про­ граммы с оверлейной структурой; CLIPPER.LIВ - биб­ лиотека функций системы CJipper, подключаемая на этапе редактирования; EXTEND.LIВ - библиотека дополни­ ~rельных функций системы Clipper; OVERLAУ .LIB - 121
библиотека процедур для оверлей11ой поддержки редак­ тора PLINK86; NDX.OBJ - объектный модуль, который необходимо подключить на этапе редактирования для обеспечения совместимости индексных файлов, подготов­ ленных dBASE 111 PLUS, о Clipper. Помимо указанных выше файлов предлагается еще ряд программ: командный файл инсталяuии системы Clipper на жесткий диск (CLIPCOPY .ВАТ); отладчик программ (DEBUG.OBJ), подключаемый на этапе редактирования; специальные утилиты для создания и редактирования файлов базы данных, индексных файлов, форм отчетов, эти­ кеток (программы DBU, RL, INDEX); демонстрационные программы использования EXTEND SYSTEM, ERROR SYSTEM - появившейся в версии SUMMER'87 системы обработки ошибок в процессе исполнения программ, а также применения некоторых команд Clipper по орга­ низации пользовательского интерфейса и сетевых nрило­ :н-.ени й (программы MENU, LOCKS, NETWORK); файлы документации. Clipper постоянно развивается. Поэтому в файлах до­ кументации содержится самая последняя информация об изменениях и дополнениях в системе. Версия SUMMER'87 содержит следующие файлы документации: READ ME. lST - содержит перечень всех файлов дистрибутив­ ных дискет с их краткой характеристикой; ER RОR.DОС­ описывает ERROR SYSTEM; EXTEND.DOC - описы­ вает интерфейс с языками Си и Ассемблер через EXTEND SYSTEM: ADDENDUM.DOC - содержит описания но­ вых, по сравнению с предыдущей версией AUTUMN'86, команд и функций, изменения «старых» команд, а также изменения и дополнения к печатной документации. Компиляция программ в системе Clipper. Процесс подготовки исполняемого ЕХЕ-файла в системе Clipper, как и в других системах программирования, состоит из двух этапов - компиляции программ, 10 есть подготовки объектного модуля (файлы с расширением OBJ) и редак­ тирования одного или нескольких объектных модулей - создания файла с расширением ЕХЕ, исполняемого в DOS. Рассмотрим первый этап - преобразование исходного ко­ да программы, написанной на языке программирования dBASE, в объектный код. Clipper компилирует как программные и процедурные файлы, так и форматные файлы, т. е. файлы с расшире­ ниями PRG и FMT. Эти файлы могут создаваться а по- 122
мощью любого текстового редактора или текстоDого про­ цессора, в том числе созданные по команде MODIFY COMMAND системы dBASE 111 PLUS. Вызов компилятора Clipper: С>[О: 1 ["-маршрут"-) CLIPPER [О: 1 ["-маршрут"- 1 имя файла. Здесь [О: 1 - имя дисковода. Расширение имени компилируемого файла (PRG) ука­ зывать не обязательно. Например, при работе с гибкими дисками при компиJ1яции программного файла JOHN.PRG можно задать: A>CLIPPER B:JOHN (Clipper.EXE на­ ходится на дискете в дисководе А, JOHN.PRG - на дискете в дисководе В). При работе с жестким диском: С >JOHN >C:CLIPPER JOHN (Clipper.EXE находится на «винчестере» в корне­ вом каталоге, JOHN.PRG - в подкаталоге а именем JOHN). После компиляции в текущем каталоге создается объектный файл а тем же именем, что и указанный про­ граммный. Так, в приведенном примере создается объект­ ный файл а именем JOHN .OBJ в первом случае на ди­ ске А, а во втором - в каталоге с именем JOHN. В случае, когда компилируемый программный файл содержит обращения к другим программным, процедур­ ным или форматным файлам, все вызываемые программы 'Гакже компилируются и становятся частью объектного файла. Таким образом, при вызове Clipper необходимо указывать лишь имя файла с головной программой. Вызываемые программы или процедуры Clipper ищет в те­ кущем директории и, если не находит, то выдает сообще­ ние: «Cannot open, assumed external» («Нельзя открыть, предполагается внешним»). Поэтому рекомендуется перед компиляцией собрать все программные файлы в одном каталоге. В процессе компиляции на экран последовательно вы­ водятая сообщения и компиляции основного и вызывае­ мых программных файлов, а в случае обнаружения ошибок - соответствующие сообщения. Сообщения об ошибках компиляции приводятся в пе­ чатной документации Clipper, однако, поскольку кроме сообщения на английском языке выводятся и номер строки в программе, и сама строка, содержащая ошибку, то необходимость обращаться к документации возникает достаточно редко. Подавляющее число ошибок интерпре­ 'Гируется пользователем, как правило, без затруднений. 123
Сообщения компилятора можно средствами переназначе­ ния MS-DOS вывести в отдельный файл или на печать, например: C>CLIPPER JOHN >ERROR - сообщения об ошибках будут записаны в файл с именем ERROR; С >CLIPPER JOHN >PRN - сообщения об ошибках бу• дут выводиться на печать. Опции компилятора Clipper. При вызове компилятора Clipper можно в командной строке указывать до семи опций или параметров (используется и термин «пере­ ключатели»). Синтаксис: C>CLIPPER (имя файла) [-1) 1-m] 1-о] 1-р] 1-ql[-sJ(-tJ Задание переключателей (помещены в квадратные скобки) предписывает следующие действия: 1 - не включать номера строк в объектный файл; использование этой опции сокращает объектный файл (на 3 байта для каждой строки программы, содержащей команду); при использовании отладчика Clipper эту опцию применять не рекомендуется; m - не включать вызываемые программные и проце­ дурные файлы в результирующий файл, т. е. компили­ руется лишь один указанный в командной строке про­ граммный файл; о - создавать объектный файл не в текущем каталоге, а на устройстве и в каталоге, указываемом в командной строке непосредственно за параметром; р - сделать паузу после загрузки Clipper; эта опция полезна при работе с гибкими дисками, так как во время паузы можно сменить дискету с компилятором на дискету с исходными программными файлами; q - игнорировать номера строк исходных программ и отображение их на эI<ране в процессе компиляции; s - провести лишь синтаксический анализ исходных программ без создания объектного файла; t - создать временный рабочий файл (о расшире­ нием $$$), на устройстве, указываемом сразу за пара­ мет.ром; временный рабочий файл создается во время ком­ пиляции и удаляется после окончания; эта опция полезна при использовании виртуального дис1<а, так как ускоряет работу компилятора. Примеры использования переключателей. 1. A>CLIPPER A:TEST -Р -О В:. Такое задание переключателей позволит запустить компи.~1ятор Clipper, сделать паузу для смены дис1<еты, скомпилировать про- 124
rраммный файл TEST.PRG на устройство А и создать объектный файл TEST.OBJ на устройстве В. 2. C>CLIPPER TEST -L -О C:'- .OBJ -Т Е:. По этому заданию Clipper будет компилировать файл TEST.PRG в корневом каталоге, создаст объектный файл TEST .OBJ в подкаталоге о именем OBJ, не включая в объектный файл номера строк исходной программы, и использует устройство Е для создания временного рабочего файла. Редактирование программ в системе Clipper. Для редак­ тирования объектных файлов, созданных компилятором Clipper, можно исподьзовать как системный редактор (линкер), поставляемый вместе с MS-DOS фирмой Micro- soft, так и линкер PLINK86-Plus, поставляемый вместе о системой Clipper. Системный линкер - программа LINK.EXE - рабо­ тает быстрее PLINK86-Plus, одна-ко не позволяет созда­ вать оверлейную структуру. Рассмотрим создание файла с расширение ЕХ Е а помощью системного линкера. Полное описание работы можно найти в руководстве по MS-DOS. Мы опишем лишь действия по созданию исполняемых файлов из объектных, подготовленных ком- • пилятором Clipper. Запустить системный линкер можно как в интерактив­ ном режиме, так и вводом лишь одной командной строки. В интерактивном режиме после ввода C>LINK на экране последовательно запрашиваются: Object Modules [.OBJ ]:- имена объе1пных модулей (разделяются знаком «+»); Run File [имя файла.ЕХЕ ]: - (имя исполняемого файла с расширением ЕХ Е (по умолчанию - имя первого объектного модуля); List File [NUL.MAP l: (имя МАР-файла, то есть файла, содержащего карту распределения памяти ЕХЕ-файла; если МАР-файл создавать не нужно, то нажать клавишу (ВВОД}); Libraries [.LIВ ]: - имена подключаемых библиотек (разделяются знаком «+»; обязательно указывается биб­ лиотека Clipper, при необходимости - библиотека Extend,- a также дополнительные библиотеки при использовании Extend System). Отметим, что расширения имен файлов указывать не нужно. Указываемые файлы могут находиться в различ­ ных каталогах, при этом перед именем необходимо ука- 125
sывать маршрут. При вызове системного линкера с по­ мощью одной командной строки все вышеперечисленные файлы указываются (или пропускаются) через запятую в одной строке. Например: C>LINK TEST+TESТI+ +TEST2,,, CLIPPER Здесь: TEST, TESТI, TEST2 - объектные модули, соз­ дается исполняемый файл TEST .ЕХЕ, МАР-файл не создается, подключается библиотека CLIPPER.LIB . Приведем еще один пример: C>LINK TEST, "-.ЕХЕ 'JOHN., ,cLIPPER, CLIPPER+,cLIPPER " '--EXTEND Здесь редактируется файл TEST .OBJ, находящийся в кор­ невом каталоге, в каталоге с именем ЕХ Е создается исполняемый файл JOHN.EXE, используются библиотеки CLIPPER.LIВ и EXTEND.LIВ, находящиеся в каталоге с именем CLIPPER. При редактировании больших программ системный линкер может выдать сообщение ТОО MANY SEGMENTS (слишком много сегментов). Э10 связано с тем, что по умолчанию системный линкер обрабатывает не более 128 сегментов памяти редактирования любой программы. Опция /SEGMENTS USE) позволяет назначить требуемое количество сегментов памяти в диапазоне от I до 1024. Например: C>LINK TEST,,, CLIPPER/SE:256 Здесь при редактировании программы TEST будет выде­ лено 256 сегментов. Рассмотрим теперь редактирование программ с по­ мощью линкера PLINK86-PLUS. PLINK86-PLUS, как и системный линкер, можно запустить в интерактивном ре­ жиме либо вводом командной строки, либо с помощью ввода заранее подготовленного файла, содержащего коман­ ды PLINK86-PLUS (файла с расширением LNK). В ин• терактивном режиме после вызова C>PLINK86 на экране 11оявляется командная подсказка: = >, которая показы• вает, что PLINK86 готов принимать команды. После под• сказки можно вводить либо одну, либо несколько команд. Затем необходимо нажать клавишу «ВВОД». Командная подсказка появится на следующей строке. Можно снова вводить одну или несколько команд. Для окончания ввода команд необходимо после командной подсказки ввести «;» и нажать (ВВОД). Полное описание всех команд, а также сообщений об ошибках PLINK86-PLUS приводится в печатной доку­ ментации системы CLIPPER. Мы приведем лишь основ- 126
ные: FILE (FI) - определяет объектные файлы, имена объектных файJюв разделяются запятыми; OUTPUT (OUT) - определяет имя испо.1няемоrо ЕХ Е-файла; LIВRARY (LIВ) - определяет подключаемые библио­ теки; BEGINAREA (BEGIN) - определяет начало овер­ лейной области памяти; ENDAREA (END) - определяет конец оверлейной области памяти; SECТION - опреде­ ляет объектные модули, загружаемые в оверлейную об­ ласть, включаемые в основной ЕХ Е-файл (внутренние оверлеи); SECTION INTO - определяет объектные мо­ ду.1и, загружаемые в оверлейную область, включаемые в дополнительный оверлейный файл (с расширением OVL - внешние оверлеи). Ниже приводятся команды PL IN K86-PLUS, необхо- димые для создания файла TEST.EXE: = >Fl TEST,TESTI,TEST2 = >LIВ CLIPPER,EXTEND =>; Если не указана команда OUTPUT, то создается ЕХЕ-файл с именем первого объектного модуля. Для запуска PLINK86 о помощью одной командной строки необходимо просто перечислить через пробелы все требуемые команды. Например: C>PLINK86 FI TEST OUT JOHN LIВ CLIPPER Наконец, третий способ запуска PLINK86 - создание текстового (с расширением LNК) файла, содержащего команды редактора. Файлу с командами редактора можно присваивать любое расширение имени, но в этом случае при запуске PLINK86 имя файла надо указать полностью. Например, создав файл с именем TEST.LNK, содержащий: FI JOHN BEGIN SECТION FI JOHNI SECТION INTO TEST.OVL FI JOHN2 END LIВ EXTEND PLIN К86 запускается следующим образом: C>PLINK86 @TEST После редактирования создаются два файла JOHN .EXR и оверлейный TEST.OVL. 127
В заключение отметим, что PL IN К86 обращается к библиотекам CLIPPER.LIВ и OVERLAY.LIВ по умол­ чанию, поэтому указывать их нужно лишь в случае, когда редактор и библиотеки находятся в разных каталогах. Совместимость Clipper Summer' 87 с dBA SE 111 Plus. Сии• та1<сис и логика языка Clipper настоль1<0 близки языку dBASE, что во многих случаях программы, написанные на языке dBASE, так сказать, без проблем компили­ руIОТся компилятором Clipper. Однако отличия суще­ ствуют, и поэтому перед компиляцией dВАSЕ-программ необходимо просмотреть их и внести следующие изме­ нения. Во-первых, команды dBASE III PLUS, не поддержи­ ваемые Clipper, необходимо исключить из программы. Ниже приводится полный список функций и команд dBASE 111 PLUS, отсутствующих в Clipper: APPEND ASSIST BROWSE CHANGE CLEAR FIELDS CREATE LABEL CREATE QUERY CREATE SCREEN CREATE VIEW DISPLAY FILES DISPLAY MEMORY DISPLAY STATUS DISPLA У STRUCTURE DISPLAY USERS EDIТ ERROR ( ) EXPORT ТО HELP IMPORT FROM INSERT LIST FILES LIST HISTOR У LIST MEMORY LIST STATUS LIST STRUCTURE LOAD LOGOUT 128 MODIFY QUERY MODIFY REPORT MODIFY SCREEN MODIFY STRUCTURE MODIFY VIEW ON ERROR/ESCAPE/KEY RESUME RETRY RETURN ТО МASTER SET SET CARRY SET CATALOG SET COLOR ON/OFF SET DEBUG SET DOHISTORY SET ЕСНО SET ENCRIPTION SET FIELDS SET HEADING SET HELP SET HISTORY SET MEMOWIDTH SET MENUS SET SAFETY SET STATUS SET STEP SET TALK
MESSAGE MODIFY COMMAND MODIFY LABEL SET ТITLE SET \,~IEW Следует отметить, что большинство приведенных выше команд являются «чисто интерактивными» и практически не используются при написании прикладных dВАSЕ-про­ грамм. Многие из этих команд реализованы утилитами (DBU, RL) и отладчиком системы Clipper. Во-вторых, в отличие от dBASE 111 PLUS Clipper не поддерживает макроподстановки, содержащие команды или части команд (табл. 5.2). Допустимое применение в Clipper FILE='JOHN' USE &FILE COMP='J2>Jl' 1.IST NAME FOR &СОМР Таб.пица 5.2 Недопустимое применение в Clipper, допустимое в dBASE 111 PLUS FILE='USE JOHN' &FILE COMP='NAME FOR J2>J 1' LIST &СОМР В-третьих, при использовании индексных файлов не­ обходимо иметь в виду, что Clipper создает индексные файлы по своей схеме, отличающейся от принятой в dBASE 111 PLUS. По умолчанию расширения имен ин­ дексных файлов в Clipper - NTX, в dBASE 111 PLUS- ND Х. Для использования индексных файлов, подготов­ ленных в системе dBASE 111 PLUS, на этапе редактиро­ вания необходимо подключить объектный файл NDX.OBJ, поставляемый вместе с системой Clipper. Следует иметь в виду, что Clipper работает быстрее с NТХ-файлами, поэтому вместо использования файла NDX.OBJ целе­ сообразно на этапе редактирования создание вместо NDХ-файлов аналогичных NТХ-файлов. Для этого Clipper предоставляет специальную программу INDEX. Развитие языка dBA SE в системе Clipper. В системе Clipperr язык dBASE получил дальнейшее развитие. По­ мимо значительного ускорения выполнения dВАSЕ-про­ rрамм, связанного как собственно с компиляuией, так и с использованием новых схем обработки базы данных и полной закрытостью исходных текстов программ, Clipper существенно развивает как технические характеристики, 6 Смирнов Н. Н, 129
Характеристики .Максимальное количество запи­ сей в файле БД Максимальное число ПОJJей в записи .Максимальный размер: символьных полей пОJJей памяти (memo) .Максимальное количество одно­ временно открытых файлов Максимальное число одновре­ менно используемых временных пе­ ременных .Максимальное количество проце­ дур в одном программном файле Clipper 1 биллион 1024 32 Кбайт 64 Кбайт Эаnисит от версии MS-DOS; для версии 3.30 -255 2048 Не ограничено Та&lица 5.3 1dBASE Ш PLUS 1 млрд 128 254 байт 4096 байт 15 256 32 (в процедур• ных файлах) так и командный язык dBASE 111 PLUS. В табл. 5.3 приведены основные характеристики системы Clippeli Summer'87 в сравнении с dBASE 111 PLUS. Как видно, возможности Clipper ограничиваются прак­ тически лишь техническими характеристиками ПЭВМ и используемой версии MS-DOS. • Наиболее важные усовершенствования языка програм• мирования Clipper следующие. l. Процедуры и функции можно размещать в одном файле с вызываемой программой. 2. Возможность определения собственных функций (UDF-user-defined functions) как с помощью языка Clipper, так и средствами языков Ассемблер и Си. 3. Предоставление функций, обеспечивающих доступ к файлам и устройствам на нижнем уровне (FCLOSE ( ), PWRIТE ( ), FERROR ( ), FREAD ( ), FSEEK ( ), FREADSTR ( ), FCREATE ( )). 4. Предоставление команд и функций, значите.льна расширяющих возможности построения пользовательского интерфейса: две возможности построения пользовательско­ го меню с помощью команд@ ...РRОМТ, SET MESSAGE, MENU ТО, или функции ACHOICE ( ); сохранение, вос­ становление как всего экрана с помощью команд SAVE 130
SCREEN и RESTORE SCREEN, так и части экрана функциями SAVESCREEN ( ) и RESTSCREEN ( ); управление клавиатурой с помощью команд KEYBOARD, SET КЕУ ТО и функций LASTKEY { ), NEXTKEY ( ); резервирование нажатия клавиши F l для помощи поль­ зователю, то есть при нажатии F l исполняется процедура или программа с именем HELP (естественно, она должна быть написана); введение опции VALID в kоманде @ ...GET, позволяющей осуществлять проверку ввода по R.EAD; предоставление в дополнение к @ ...ТО команды @ ... ВОХ, позволяющей использовать при изо­ бражении рамок любые символы. 5. Введение массивов переменных. Каждый массив рассматривается Clipper как временная переменная, то есть максимальное число используемых массивов - 2048, при­ чем каждый из них может содержать до 2048 переменных. Clipper предоставляет несколько функций для работы с массивами {АСОРУ ( ), ADEL { ), ADIR ( ), AFIELDS( ), AFILL( ), AINS( ), ASCAN( ), ASORT ( )). 6. Расширение возможностей манипулирования с по­ лями памяти (memo): поля памяти могут рассматриваться как символьные переменные, что позволяет выполнять операции поиска, объединения, замены полей памяти; возможность форматирования полей памяти с помощью функций MLCOUNT ( ), MEMOLINE ( ); предоставле­ ние развитой функции MEMOEDIТ ( ) - фактически мини-текстового редактора полей памяти и длинных сим­ вольных строк. 7. Расширение возможностей передачи параметров: число передаваемых в программы, процедуры и функции, определяемые пользователем, параметров не обязательно должно совпадать с числом параметров, указанных в команде PARAMETERS; для контроля числа действи­ 'Сельно передаваемых параметров предоставляется функ­ ция PCOUNT ( }; параметры могут передаваться и из командной строки MS-DOS, однако при этом они пере­ даются только как символьные переменные. 8. Введение специальной общедоступной переменной (PUBLIC) с именем CLIPPER для обеспечения возмож· ности выполнения программ, усовершенствованных сред­ ствами Clipper, в системе dBASE III PLUS. При объявле­ нии имен переменных PUBLIC dBASE 111 PLUS до присвоения им значения создает логические переменные б• 131
со значением «ложь» ( .F .). Механизм объявления РUВLIС-переменных в Clipper аналогичен, за исключе­ нием лишь одного имени - CLIPPER. При объявJ1ении РUВLIС-переменной с именем CLIPPER создается логи­ ческая переменная со значением «истина» (.Т.), поэтому, используя конструкцию IF .. ENDIF, можно выделять блоки программ Сliрреr-командами, что обеспечит выпол­ нение программ в интерактивном режиме dBASE 111 PLUS. В заключение приведем новые по отношению к dBASE 111 PLUS команды и функции языка Clipper. Следует при этом отметить, что и мноrие «старые» команды и функции dBASE в системе Clipper расширены дополни• тельными возможностями. Новые команды Clipper @ ... ВОХ - рисует рамку на экране указанными сим­ волами (для каждой стороны и угла рамки) и заполняет внутренность рамки определенным символом; @ ... PROMPT ... [MESSAGE] - определяет располо­ жение и содержание пунктов меню на экране, а также соответствующие вспомогательные сообщения; @ ...SA У ... GET ... VALID - позволяет задавать вы­ ражения или процедуры для проверки ввода по READ, не выходя из команды; DECLARE - создает один или несколько одномерных массивов переменных, при этом допускается использова­ ние в одном массиве переменных различных типов; EXTERNAL - объявляет символы для редактора; используется для определения процедур, функций, вызы­ ваемых с помощью макроподстановки или находящихся в оверлейных модулях программ; FOR ... NEXT - организует цикл (аналогично коман­ де языка Бейсик); полезна при работе с массивами; FUNCТION - объявляет определенную пользовате• лем функцию, написанную на языке Clipper; KEYBOARD - заносит в буфер ввода с клавиатуры указываемую цепочку символов, т. е. по этой команде выполняются последовательно все указанные нажатия клавиш; MENU ТО - активизирует пользовательское меню, определяемое текущим набором PROMPT; RESTORE SCREEN [ТО] - восстанавливает экран, сохраненный по команде SAVE SCR.EEN; 132
SAVE SCREEN [ТО] - записывает теr<ущий экран в буфер или переменную; SET CURSOR ON/off - позволяет скрывать (восста­ навливать) изображение курсора на экране; SET КЕУ ... ТО - назначает выполнение процедуры по нажатию указанной клавиши в любом состоянии ожи­ дания (при выполнении команд READ, MENU ТО, АССЕРТ, INPUT, WAIТ); SET SOFTSEEK on/OFF - переключатель, позволя­ ющий при поиске по команде SEEK просматривать сле­ дующее значение ключа в случае, когда запись с ука­ занным значением не найдена (относительныii поиск по ключу); SET WRAP on/OFF - переключатель, позволяющий циклически передвигаться по пользовательскому меню. Новые функции Clipper ACHOICE ( ) - строит пользовательское меню в ука­ занном окне экрана, используя массив символьных выра­ жений в качестве пунктов выбора; АСОРУ ( ) - копирует элементы одного массива в другой; ADEL ( ) - стирает элемент массива; ADIR ( ) - заполняет набор массивов информацией нз каталога диска; AFIELDS ( ) - заполняет набор массивов информа­ цией из текущего файла базы данных; AFILL ( ) - заполняет массив указанным выраже• нием; AINS ( ) - вставляет новый элемент в массив; ALIAS ( ) - возвращает алиасное имя указанной ра­ бочей области; ASCAN ( ) - сканирует массив или часть массива по указанному выражению и возвращает номер элемента в массиве; ASORT ( ) - сортирует массив или часть массива в восходящем порядке; DBEDIТ ( ) - редактирует записи в полноэкранном режиме в указанном окне экрана; DTOS ( ) - преобразует дату в формат 'ГГГГММДД~ для использования в к.ачестве ключа при индексации; ЕМРТУ ( ) - возвращает .Т., если указанное выра­ жение пусто; PCLOSE ( ) - закрывает DОS-файл; 133
FCOUNT ( ) - возвращает число полей в текущем файле базы данных; FCREATE ( ) -· создает DОS-файл; PERROR ( ) - возвращает номер ошибки DOS; POPEN ( ) - открывает DОS-файл; FREAD ( ) - чтение символов из DОS-файла во вре­ менную переменную; FREADSTR ( ) - чтение строки символов из DОS­ файла; FSEEK ( ) - передвигает указатель в DОS-файле; FWRIТE ( ) - запись временной переменной в DОS­ файл; HARDCR ( ) - замена символов CHR (141) на CHR (13) (возврат каретки) в полях памяти; INDEXEXT ( ) - возвращает расширение имени те• кущего индексного файла (NTX или NDX); INDEX КЕУ ( ) - возвращает выражение указанного ключа текущего индексного файла; INDEXORD ( ) - возвращает порядковый номер ключа, установленного по команде SET ORDER ТО; LASTKEY ( ) - возвращает число, соответствующее ASCII-кoдy последней нажатой клавиши при выходе из состояния ожидания; MEMOEDIT ( ) - позволяет редактировать поля па• мяти, длинные символьные поля и выражения; MEMOLINE ( ) - формирует текстовую строку в указанном формате из поля памяти или символьного выражения; MEMOR EAD ( ) - чтение содержимого текстового файла с диска; MEMOR У ( ) - определяет величину свободной па• мяти; MEMOTRAN ( ) - замена символов CHR (13) («воз• врат каретки») и CHR (10) («перевод строки») в полях памяти; MEMOWRITE ( ) - запись символьного выражения или поля памяти в файл на диск; MLCOUNT ( ) - возвращает количество строк сим­ вольного выражения или поля памяти в соответствии с указанным числом символов в строке; NEXTKEY ( ) - чтение следующего кода из буфера клавиатуры; PCOUNT ( ) - возвращает количество переданных параметров; 134
PROCLINE ( ) - возвращает номер текущей испол­ няемой строки исходного кода программы или процедуры; PROCNAME ( ) - возвращает имя текущей испол­ няемой программы или процедуры; READVAR ( ) - возвращает имя текущей GET- или МЕNU-переменной; · SCROLL ( ) - скроллирование выделяемого окна экрана вверх, вниз или очистка; SECONDS ( ) - число секунд, прошедших с 12 часов; SELECT ( ) - возвращает номер текущей рабочей области; SETPRC ( ) - устанавливает строку и колонку на­ чала печати текущей страницы; UPDATED ( ) - определяет, изменилось ли значе­ ние GЕТ-переменной при вводе по последней или текущей команде R EAD.
Глава 6. ТАБЛИЧНЫЕ ПРОЦЕССОРЫ И ИНТЕГРИРОВАННЫЕ ПРОГРАММНЫЕ СРЕДСТВА 6.1. Возможные области применения табличных процессоров и интегрированных программных средств Как известно, в математике, впрочем и в других науках, использующих язык математики, где существуе'l' мера, для анализа зависи~юстей используются в основном три формы представленFtя информации: табличная, гра­ фическая и аналитиче~кая. В области вычислительной техники первым словом было число, затем таблица чисел, графика. Первоначально таблица чисел служила простым вместилищем данных, используемых программой, затем возникла идея помещать в таблицы одновременно с дан­ ными также формулы, позволяющие автоматически вы­ полнять расчеты при изменении введенных данных. По­ степенно набор формул расширялся, вводились правила формирования и обработки данных, т. е. появились так называемые среда-ориентированные языки программиро­ вания, развитие которых продолжается и в настоящее время. Проще всего работу с таблицами (на ЭВМ называе­ мыми электронными таблицами) можно показать с по­ мощью примеров. Интересно, что для иллюстрации воз­ можностей электронных таблиц (Spreadsheet) в зарубеж­ ной литературе используются примеры из области биз­ неса - считают доходы, а в немногочисленной пока оте­ чественной литературе, с учетом, по-видимому, дефицит­ ного состояния экономики, составляют калькуляции. Не хочется быть белой вороной, однако следует сразу сказать, что такая узко утилитарная подача невольно сократила область возможных применений и не привдекла внимание к этим средствам целой армии инженеров, кон• структоров, научных работников, да практически любых специалистов, которым необходимо что-то быстро сосчи­ тать и оформить. К счастью, положение меняется - начали появляться публикации, в которых даны рекомен- 136
дации по применению табличных процессоров для науч­ ных и инженерных расчетов. Любое программное средство, ведущее обработку элек­ тронных таблиц, после вызова помещает на экран пустую таблицу, колонки которой идентифицируются буквами, строки - цифрами, таким образом, что каждая ячейка таблицы получает уникальное имя. В активную ячейку, отмеченную или скобками, или инверсным свечением, можно помещать числа, текст, формулы, функции или команды. Перемещение по телу таблицы осуществляется клавишами управления движением курсора или коман­ дами, задаваемыми функциональными клавишами или комбинациями клавиш. Собственно этих формальных зна­ ний достаточно, чтобы начать работать с электронной таблицей. Составим таблицу-заготовку для вычисления прибыли какого-либо предприятия. Для этого в ячейку Al, как в известной игре «Морской бой», помещаем слово (текст) «Показатель», в ячейку В1 - текст «1988» и т. д. Закончив ввод текста, вводим данные точно так же, как они выгля­ дят ниже: А в с D l Показатель 1988 1989 Отклонение 2 Доход С2-В2 3 Расход СЗ-В3 4 Прибыль В2-В3 С2-СЗ С4-В4 Таблица-заготовка сформирована и готова для приема чисел. Теперь, как только в ячейки В2, ВЗ, С2, СЗ, на­ зываемые блоком В2.СЗ, будут помещаться данные, в строке «4» и колонке «D» на месте введенных формул будут отображаться результаты расчетов. Так работают программы обработки таблиц первого поколения. Про­ граммы обработки таблиц второго поколения, получившие широчайшее распространение на ПЭВМ, располагают средствами для быстрого создания таблиц путем копи­ рования готовых блоков. Возьмем предЫдущую таблицу и используем ее для подготовки таблицы, в которой будут подводиться нтоrи работы двух предприятий, входящих в объединение. Поступаем следующим образом. В первые две строчки таблицы помещаем заголовки. Затем в свободную ячейку ЕЗ копируем командой типа СОРУ блок А l .D4, а в ячей• ку 13 - блок FЗ.Нб. Осталось заполнить колонку L, и таблица готова к работе. Особенность заключается 137
в 'l'OM , что при выполнении команд типа копирования все формулы автоматически настраиваются на новые коорди• паты клеток. На экране дисплея попученная таблица будет выглядеть следующим образом: Е F о н J Q L Реэуnьтаты работы объединения 2 Предприятие 1 Предприятие 2 з Показате.пь 1988 1989 Отк.11. 1988 1989 Отк.11. итого 4 Доход F4-G4 14-J4 H4+Q4 5 Расход FS-05 15-JS Н5 QS 6 Прибыnь F4-F5 04-05 Fб-06 14 -15 J4-J5 16-Jб Нб+Qб Современные таблицы имеют достаточно широкий на­ бор общих математических функций. Обработка таблиц (расчет по формулам) производится слева-направо и сверху-вниз. Поэтому естественно прежде всего приме­ нять таблицы для задач, решаемых методом прямого счета, или для построения математических моделей, ра• ботающих по схеме «источник-сток». Эrнм требованиям удовлетворяют многие задачи механики, ~мектро- и ра­ диотехники, rидроаэродинамики, теплотехники и т. п. Для численного решения более сложных задач математи­ ческой физики, использующих рекурсивные процедуры, q-аблицы не предназначены. При известной настойчивости можно найти частичный выход, воспользовавшись искус• ственным приемом, основанным на принципе зеркального отражения, однако многие достоинства таблицы при этом q-еряются. Теперь, чтобы перейти к интегрированным: программ­ ным средствам, изложим свой «краткий курс» истории их поямения. Программы обработки таблиц второго поколения (их основные возможности мы рассмотрели) будем называть крупноформатными электронными таблицами. При созда­ нии программ третьего поколения разработчики обратили внимание, что данные, помещенные в таблицы, можно рассматривать как простейшую реляционную базу дан­ ных. В пакеты были включены режимы сортировки и выборки. Для более наглядного представления информа­ ции бЫJI предусмотрен режим деловой графики, также получил развитие и режим «макро», позволяющий созда­ вать текстовыми редакторами файлы, содержащие команды формирования и обработки таблиц. Пакеты обработки сrаблиц, имеющие перечисленные средства, можно назвать q-абличными процессорами. Последние - четвертые вер· 138
сии табJ1Ичных процессоров - имеют ·более удобный ин• терфейс с пользователем и ориентированы на ра&ту в сети ПЭВМ. Так развивались и продолжают развиваться «чистые» табличные процессоры. Одновременно шло совершенство• ванне текстовых процессоров и программных средств под• держки баз данных - систем управления базами данных (СУБД), что сразу обнаружило сравнительно слабые сто,.1. роны табличных процессоров: несовершенный текстовыi:i редактор и ограниченные возможности СУБД. Так как работа с несколькими программными средствами сопря~ жена со значительными трудностями, прежде всего при организации интерфейса между ними, возникла совер· шенно естественная мысль создать программное средство, объединяющее лучшие достижения в области табличных процессоров, текстовых процессоров и СУБД. Важней· шими требованиями к новому классу программных средств явились объем используемой памяти ПЭВМ и доступ­ ность для конечного пользователя. К реализации этой идеи приступили фирмы, имевшие опыт в разработке различных компонентов базовых про· граммных средств. Это определило три подхода в идеоло­ гии построения нового класса программных средств, ко­ торые у нас получили абстрактное наименование интегри­ рованных, а за рубежом более точное - Integrated Busi- ness ProdJ,Icts. Первое направление, характеризующееся совершенным табличным процессором как ядром интегрированного про­ граммного средства, возглавила известная фирма «Лотус девелопмент» (Lotus Developnrent) - автор классического табличного процессора Lotus 1-2-3 и текстового процес­ сора Lotus Manuscript. Ее разработки - интегрирован­ ные пакеты Symphony и Jazz - отличаются ясностью построения, основанного на максимальном использовании всех достоинств табличного процессора. Это же направ­ ление поддержала фирма Computer Associates - разработ­ чик табличного процессора Supercalc и текстового про­ цессора Easy Writer, выпустив интегрированный пакет Executive, а также известная фирма Microsoft- автор популярного табличного процессора Multiplan и доста­ точно популярной СУБД RBASE 5000, которая предло­ жила интегрированный пакет Excel. Второе направление возглавила мощная фирма «Аштон q-ейт» (Ashton Tate) - разработчик СУБД dBASE и тек- 139
стового процессора Multi Mate Plus. Результат ее ра­ боты - интегрированные пакеты Framework, версии I, 11, 111. Пакеты отличаются развитыми средствами вве­ дения базы данных, что в какой-то степени усложнило процессы освоения и работы. И, наконец, третье направление организовали фирмы, не имевшие собственных табличных процессоров или СУБД. Можно назвать фирмы «Самна корпорейшн» (Samna Corporation) - разработчика текстового процес­ сора Samna Word, которая выпустила интегрированное программное средство Samna Plus 111. В отечественной литературе пакеты Knowlegmen I и II фирмы «Микро дейта бейс систем» (Micro Data Base Sy- stem) - автора текстового процессора K-Report - отно­ сят к интегрированным программным средствам, однако по широте предоставляемых возможностей эти пакеты правильнее отнести к СУБД. Для сравнительной оценки интегрированных пакетов используются десятки параме­ 'Гров, но судьбу пакетов часто, как уже говорилось, опре­ деляют не количество набранных баллов - все имеют достаточно близкие и высокие оценки, - а трудно фор­ мализуемые, однако умело формируемые, симпатии поль­ зователей. Рассмотрим табличный процессор Supercalc-3 - про­ стой и удобный инструмент для• работы с таблицей, Lo- tus 1-2 -3 - почти интегрированный пакет, ставший эта­ .лоном для организации дружественного интерфейса, и мощный интегрированный пакет Symphony, сохранивший достоинства табличного процессора 1-2 -3 . Такой выбор обосновывается тем, что пакет Super- calc-3 может работать на машинах с оперативной памятью 256 Кбайт, например на Нейроне И9.66 первого испол­ нения, Lotus 1-2-3 будет хорош для ПЭВМ с памятью 512-640 Кбайт (ЕС-1840, Искра-1030), Symphony целе­ сообразно использовать на ПЭВМ с памятью более 640 Кбайт, жестким диском и цветным дисплеем (в на­ стоящее время это ПЭВМ пока только зарубежного произ­ водства). Таким образом, по мере роста технической оснащенности переход с пакета на пакет будет проходить совершенно естественно. Названные программные сред­ ства станут своего рода ключом к использованию спепиа­ .лизированных метода-ориентированных программных средств, поскольку в последних, как правило, предусмо­ сrрен интерфейс с рассмотренными пакетами. 140
Рассмотренные программные средства предназначены, прежде всего, для индивидуального использования. Одна­ ко с их помощью можно проектировать и небольшие коммерческие системы. Именно на эту область примене­ ния, учитывая, что ПЭВМ у нас используются пока как профессиональные ЭВМ, и будем обращать внимание чи­ тателя. Сразу следует сказать, что фирмы - разработчики программных средств этого класса почему-то не приводят в пользовательской документации сведений о важнейших командах обработки баз данных и программирования, которые необходимы при разработке программных средств, ориентированных на тиражирование. В свою очередь, разработчики прикладных систем, работающих на базе этих пакетов, тоже почему-то ста­ раются «спрятать» первоисточник. На наш взгляд, этого делать не следует - нужно уважать пользователя: если вы разобрались, например, в Lotus, то и многие другие поймут. Поэтому, если ПС какого-либо АРМ выполнено средствами табличного процессора или интегрированного программного средства, следует предоставить возмож­ ность и пользователю работать с этими базовыми сред­ ствами самостоятельно. На взгляд автора, лучшая защита программного продукта от нерегламентированного тира­ жирования - это своевременная разработка новой, более интересной версии. 6.2. Supercalc-3 Табличные процессоры строятся, как правило, на общих принципах, поэтому работа с пакетами различных фирм внешне похожа. Отличия могут состоять в коли­ честве используемых команд и особенностей диалога. Для освоения основных приемов работы с табличными процес­ сорами мы рассмотрим один из самых популярных таблич­ ных процессоров - Supercalc-3, последние версии (стар­ ше 3) которого, как содержащие большой набор функций, можно отнести к интегрированным программным сред­ ствам. Supercalc-3 - это программа с большими возможно­ стями. Она является достаточно мощной, оставаясь про­ стой в освоении и использовании. Supercalc-3 позволяет решать многие виды экономических, финансовых, инже­ нерных и научных задач. Пакет имеет контекстуально­ зависимую помощь (функция HELP). Кроме того, пере­ ведена на русский язык книга одного из авторов пакета 141
У. Дойла [4], где очень подробно описывается работа с этим пакетом. Таблица Supercalc-3 может иметь 9999 строк и 127 ко­ лонок (1 269 873 клетки). Строки идентифицируются чис­ лами от 1 до 9999, а колонки - буквами латинского алфавита: от А до Z (первые 26 колонок); от АА до AZ (вторые 26 колонок); от ВА до BZ (третьи 26 колонок); от СА до CZ (четвертые 26 колонок); от DA до DW (по­ следние 23 колонки). Размер таблицы может быть переопределен и ограни­ чен только объемом памяти ПЭВМ. Границы таблицы устанавливаются автоматически в соответствии с объемом доступной памяти, которая предварительно очищается от «мусора». По умолчанию принимается размер таб­ пицы 2000 строк на 127 колонок при объеме памяти не менее 192 Кбайт или 254 строки на 63 колонки при объеме памяти менее 192 Кбайт. Следует помнить, что число клеток, которые могут содержать данные, не равно числу доступных клеток. Это связано с тем, что максимальное число заполненных клеток зависит от физически доступ­ ной памяти ПЭВМ и суммарного объема данных в этих клетках. Тем не менее, фирмы-разработчики стараются в каждой следующей версии пакета расширить размер 1rаблицы, следуя за постоянно возрастающими размерами памяти новых моделей ПЭВМ. Во всех случаях мы дОJ1жны понимать, что речь идет не о физически доступных объемах памяти, а скорее о возможном адресуемом пространстве. Вызов функции HELP осуществляется нажатием кла­ виш «?» или «Fl». При этом система даст пояснения или покажет допустимые варианты команды. Нажатие любой другой клавиши возвращает к программе в то место, откуда было обращение к помощи. Порядок вызова Supercalc-3 следующий: ввести SСЗ в ответ на приглашение ОС и нажать клавишу «ВВОД». П~вторное нажатие на «ВВОД» загружает рабочую 1rаблицу. Помощь вызывается клавишами «?» или «FJ», возвращение из режима помощи - по любой клавише. Первый кадр таблицы Supercalc-3 приведен на с. 143. При работе с обычным дисплеем (25 строк на 80 сим­ волов) на экране помещаются 20 строк таблицы. При этом активная клетка Al выделяется подсветкой, ее стан­ дартная ширина - 9 символов. Командами форматирова­ ния она может быть изменена в диапазоне от 1 до 20 сим­ волов. 142
20 Al А в с D ЕF G Width: 9 Memory : 257 Last Col/Row : А1 ? for HELP 1> Fl=He\p; F2=Cance\: F9=Plot; FlO=View За строкой 20 следуют еще четыре специальные строки. Самая нижняя строка содержит информацию о назначе• ниях функциональных клавиш. Остальные три строки служат для организации диалога пользователя с пакетом. Строка состояния (STATUS LINE) - четвертая снизу. В ней отображается следующая информация: направление движения курсора; имя активной клетки; содержимое текущей клетки и ее атрибутов (латинская буква «Р» указывает на защиту данных клетки); строка символов после Text= показывает текст текущей клетки; числовое значение или выражение после Form= показывает фор­ мулу или результат вычислений в клетке; строка симво­ лов после R txt= 'показывает повторяющийся теI{СТ (ис­ пользуется для оформления таблиц). Строка подсказки (PROMPT LINE) - третья снизу. В ней приводятся сведения о ширине текущей клетки, о занятом текущей таблицей объеме памяти и о последней клетке (в правом нижнем углу) таблицы. В этой строке Supercalc подсказывает синтаксис текущей команды и выдает сообщение об ошибках. Строка ввода (ENTRY LINE) - предпоследняя стро­ ка экрана. В этой строке происходят ввод и редактиро• вание данных. Справа от символа«>» начинается область ввода данных, слева помещено число, указывающее по­ зицию курсора в строке. Существует три способа движения по таблице: про• крутка (scrolling); постраничный просмотр; прямой пе­ реход. Прокрутка - движение по связному набору клеток, которое осуществляется при непрерывно нажатой кла­ више со стрелкой в направлении, указываемом этой стрелкой (клавиша NUMLOCK -«ЦИФ»- отжата). Ана­ погичный результат получается при нажатии клавиши 143
CTRL («УПР») в комбинации с одной из сим­ вольных клавиш: Е (вверх), Х (вниз), S (влево), D (вправо). . _ Постраничный (покадровый) просмотр таблицы осуще­ ствляется с помощью клавиш PgUp (страница вверх), PgDn (страница вниз) и комбинаций клавиши CTRL с к.11авишами-стрелками «влево» и «вправо». Движение пр вертикали происходит порциями по 20 строк, а по горизонтали - в зависимости от ширины колонки. Для прямого перехода существует несколько возможностей, описанных в табл. 6.1 . l(лавиша 1 НОМЕ (~ \.) END (КОН) » = == l(лавиша 2 НОМЕ «вверх» («вниз») «влево» RETURN («ВВОД») С5 (координата клетки) Таблица 6.1 ДеАствие Возвращение к клетке AI Переход к последней за­ полненной клетке Перемещение в начало (в конец) колонки Перемещение в начало (в конец) строки Сдвиг таблицы~ текущая клетка станет левой верхней С5 становится текущей клеткой Большинство команд SC-3 начинаются с символа «/» (слэш) и называются слэш-командами. Основные слэш-команды следующие: /А - сортирует клетки таблицы в порядке возрастания или убывания; rв - удаляет или очищает содержимое клетки или диа­ граммы; /С - дублирует диаграммы или содержимое и форматы отображаемых клеток; /D - удаляет ряды, ко­ лонки из памяти или таблицу с диска; /Е - предостав­ ляет для редактирования содержимое клеток; /F - уста­ навливает форматы отображения; VG - меняет режимы отображения и пересчета таблицы; 71 - добавляет пустые строки и колонки; /L - загружает всю таблицу или ее часть с диска в рабочую область; /М - передвигает ряд или колонку в новое место; /0 - выводит отображе- 144
ние или содержимое клетки на АЦПУ, экран пли диск; УР - защищает содержимое клеток от изменения; /Q - завершает исполнение программы Supercalc; /R - раз­ множает содержимое части колонок или рядов; /S - со­ храняет текущую таблицу на диске; /Т - фиксирует верхние ряды и (или) левые колонки на экране; /U - снимает защиту клеток; /V - отображает данные в виде круговых, линейных, столбиковых и других диаграмм; VW - разделяет экран на окна; /Х - принимает данные из файла .XQT; /Z - удаляет таблицу из памяти. Все начальные буквы команд выводятся на экран как подсказка после ввода «/», что упрощает выбор нужной команды. После задания начальной буквы требуемой команды пользователь получает на экране последова­ тельно ряд вопросов, уточняющих режим работы (пара­ метры} выполняемой команды. Если программа «удов­ летворена» ответами, команда выполняется, в противном случае следует сообщение о допущенной ошибке. Примеры задания команд: lSave,B:PAYROLL,ALL (сохраняет файл РА YRALL.CAL на В); /Move,Column,C:F, Т (размещает колонки C-F с ко­ .ловки Т); /Global,Graphics,Layout (обновляет параметры в меню форм чертежа); /Format,Ro\v,5:18,User-defined 3 (устанавливает фор• мат пользователя :j:j:3 на ряды 5-18); /View, (показывает текущую диаграмму). Таблицы, созданные SC-3, получают расширение CAL. Так как команды пакета обрабатываются в интерпрети­ рующем режиме, нетрудно организовать с помощью лю­ бого текстового редактора командный файл, отражающий все этапы создания таблицы. Это позволяет существенно экономить внешнюю память, поскольку вместо целой таб­ пицы можно хранить небольшой по объему командный (текстовый) файл. Кроме того, с помощью командного файла можно упростить работу о системой, избавляя пользователя от многократного ввода последовательно­ стей одних и тех же символов или команд. Рассмотрим работу некоторых операторов и создание командного файла на традиционном примере. Составим 145
средствами табличного процессора следующее шrатное расписание: А в с D Е 1 ТАБНОМ ФАМ. и.о. ОТДЕЛ должность ОКЛАД 2 з 163 Иванов С. Л. 22 Ст. инженер 190 4 265 Грищенко В. И. 22 Вед. инженер 250 5 562 Залыгин А. Е. 22 Техник 120 6 343 Вериrин Н. О. 23 Зав. секторои 280 7 413 Аземша В. А. 23 Художник 185 8 234 Сергеев А. П. 23 Зав. сектором 285 Пусть требуется периодически получать справку о фонде заработной платы (например, отдела 22). Прежде всего подготовим нужную справку (разумеется тоже как таблицу), разместив ее по адресу АЗО. Все дей­ ствия, которые были выполнены при подготовке справки. зафиксируем на листе бумаги. Затем выйдем из SC и вызовем любой имеющийся текстовый редактор. Сред­ ствами текстового редактора сформируем командный файл COMF.XQT, в котором в столбик помещены все действия и команды, выполненные ранее при подготовке справкиz /ZY /Lb:KADRA =АЗО !'Справка о сумме заработной платы отдела 22 = =ЕЗО sum (е3.е5) /Q Теперь, когда необходимо получить справку о зара­ ботной плате по отделу 22, можно в сеансе работы с SC-3 набрать всего один оператор /XCOMF. Командные файлы SC-3 имеют расширение XQT. В Supercalc-3 имеется группа очень полезных команд управления базой данных. Почему-то, как уже говори­ лось, в технической документации и популярной лите• ратуре по этому пакету из них делают «тайну Полиши• неля». Постараемся снять завесу таинственности. Команды управления базой данных. Для задания этих команд необходимо два раза нажать клавишу с сим­ волом слэш, а затем D - //D. В пакете предусмотрены следующие команды управления базой данных (доста• точно набрать лишь первую букву имени). 146
Input - определяет блок данных таблицы как базу данных. Таблица может содержать более чем одну базу данных. Указанный входной блок задает текущую базу данных. Верхний ряд должен быть зарезервирован для имен полей данных каждой колонки. Criterion - задает критерии поиска и извлечения дан­ ных из входного блока базы данных. Верхний ряд блока критериев должен резервироваться для имен полей дан­ ных, при этом клетки верхнего ряда могут быть пустыми. Остальные клетки содержат условия выборки во входном блоке базы данных, при этом можно задавать как точное, q-ак и селективное совпадение просматриваемых или из­ влекаемых данных (полей). Output - определяет место для размещения выбран­ ных по заданным критериям данных. Верхний ряд ре­ зервируется для имен полей. Find - последовательно инверсно выделяет все записи (ряды входного блока данных), удовлетворяющие задан­ ным критериям. Переход от найденной записи к следу­ ющей осущестмяется клавишами «вверх» или «вниз». Просмотр полей найденных записей осуществляется кла­ вишами «влево» или «вправо». Нажатие клавиши «ВВОД» сбрасывает действие команды Find и возвращает к под­ сказке команды //D. Если при просмотре необходИМО отредактировать текущую клетку, то следует применить команду Remain, которая оставляет на месте указатель клетки. Если записей, удовлетворяющих заданным кри- 1rериям, нет, то появляется соответствующее сообщение. Extract - копирует отвечающие критериям поиска данные в заданный командой Output выходной блок. Select - выполняет ту же функцию, что и команда Extract, однако позволяет выбрать среди найденных за­ писей те, которые Вы хотите скопировать в выходной блок. Сначала выделяется первая подходящая запись и следует подсказка - Yes, No, т. е. копировать или нет. Yes - извлекает данные из выделенной записи в блок результатов, размещая их в соответствии с именами полей, после чего выделяется следующая подходящая запись. No - выделяет следующую подходящую запись, если таковая существует, в противном случае - переход к подсказке команды //D. Нажатие клавиши «ВВОД» прекращает действие команды Select и возвращает к под­ сказке //D. 147
Remain - удерживает указатель в текущей клетке и очищает строку ввода. Рассмотрим действие команд управления базой дан­ ных. Для этого слегка преобразуем использованную выше таблицу со штатным расписанием и внесем в нее условия выборки. А В С D Е 2 ТАБНОМ 3 163 4 265 5 562 6 343 7 413 8 234 9 ФАМ. И. О. Иванов С. Л. Грищенко В. И. Залыгин А. Е. Вериrин Н. О. Аземша В. А. Сергеев А. П. 10 Фамилия И. О. 11 Иванов С. Л. 12 с* 13 Залыгин ?. ? . ОТДЕЛ 22 22 22 23 23 23 должность ОКЛАД Ст. инженер 190 Вед. инженер 250 Техник 120 Зав. сектором 280 Художник 185 Зав. сектором 285 ОТДЕЛ ОКЛАД 23 еЗ>=200 Зададим следующие команды: //D - входим в режим обработки базы данных; Ia2.e8 - определяем входной блок нашей базы данных; Са10.а13 - определяем блок критериев поиска по фамилии, удовлетворяющей любому из трех условий. Теперь, используя команду Find, мы можем последо­ вательно просмотреть все записи с фамилией Иванов С. Л., с фамилиями, начинающимися на букву С, а также с фа­ милиями Залыгин и любыми инициалами (в нашей базе данных таких записей 3). Если мы возьмем в качестве блока критериев блок dlO.el l (команда Cdl0.el 1), то по команде поиска найдем все записи по сотрудникам от­ дела 23 с окладом более 200 рублей. Определив в таблице выходной блок результагов (по команде Output), мы можем либо все, либо часть выбран­ ных данных записать в отдельную часть таблицы. Как видно, работа с табличной базой данных не должна вызывать какие-то колоссальные трудности. Для завер­ шения сеанса работы с SC-3 вводится команда /Q (Quit). В строке подсказки появится запрос: ЕХIТ Supercalc 3? У,N,orТо. В строке ввода SC-3 будет ожидать ответа и выдас1' на экран: 1>/Quit. Можно выбрать одну нз следующих функций: Fl - вызов функции HELP; У - немедленное завершение 148
сеанса работы с SC-3 (в этом случае, если не сохранили !fаблицу на диске, она будет потеряна); N - возврат к таблиuе; Т - завершение сеанса работы с указанием программного файла типа СОМ, который запускается сразу после прекращения работы SC-3. Файлы типа CAL указывать нельзя. В настоящее время разработана следующая версия этого табличного процессора - четвертая. В ней по сравнению с первыми версиями увеличен максимальный объем электронной таблицы, добавлена поддержка новых !fИпов мониторов и принтеров, расширен интерфейс поль­ зователя, основанный на меню команд, включен механизм использования имен клеток и их групп, предусмотрен сетевой режим работы. Все это существенно увеличило объем пакета. Институтом «Интерпрограмма» разработан табличный процессор ВАРИТАБ-86. По своим возможностям ВАРИТ АБ-86 очень мало отличается от SC-3, более того, можно сказать, что эти табличные процессоры совместимы между собой. Таблица, подготовленная с помощью SC-3, может быть обработана ВАРИТАБ-86, и наоборот. Сле­ дует однако учитывать, что таблицы, созданные ВАРИТАБ-86, получают расширения TBL, а командные файлы - расширения ISP. Наборы команд этих табличных процессоров по смыслу полностью совпадают. Различие лишь в том, что имена команд ВАРИТ АБ-86 русифицированы. Таблицы, под­ готовленные с помощью ВАРИТАБ-86, могут быть вклю­ чены в файлы, созданные текстовым редактором «ДОКУ­ МЕНТ». 6.3 . Lotus 1-2-3 Lotus 1-2 -3 - наиболее яркий представитель таблич­ ных процессоров, давший толчок к появлению интегри­ рованных программных средств и оказавший большое влияние на формирование современного стиля организа­ ции диалога с конечным пользователем [11 ]. Уместно сказать, что Митч Кэйнор - руководитель работ по созданию программных срrдств фирмы Lotus Develop- ment - очень точно, хотя и несколько преувеличенно, отражает в названии суть накетов (он также является автором пакета Simphony). Действительно, в классиче­ ской мифологии (это описано в «Одиссее» Гомера) поеда­ ~rели лотоса - народ, который жил в блаженном доволь- 149
стве и безразличии к окружающему, питаясь то.лько пло­ дами лотоса. Современные же «nоедатели~ - пользователи Lotus 1-2 -3 - по замыслу автора могут весь рабочий день оставаться в среде этого пакета, не испытывая по­ требности в каком-либо ином программном средстве. В отличие от Supercalc-3 в Lotus дополнительно реали­ зовано следующее: используется не только командный язык, но и меню команд; расширенный состав команд обработки таблиц; предусмотрено использование имен диапазонов (блоков) ячеек; включены дополнительные возможности для работы с табличными файлами; приме­ нены команды программирования (/Х-команды); допу• скается работа с таблицей возможных значений выра­ жений. Система Lotus занимает 192 Кбайт оперативной памяти и располагается на следующих дисках: 1-2 -3 SYSTEM - системный диск (с основным модулем системы - 1 -2-3); UTILITY - диск с утилитами; PRINTGRAPH - диск с программой печати графиков; TUTORIAL - самоучи­ lfель по системе. Фактически работа системы обеспечивается первым (SYSTEM) диском, который должен быть установлен на дисковод А. Остальные диски устанавливаются на смену основному диску также на дисковод А по мере отработки запросов пользователя. Установка производится по ука• заниям в соответствии с запрошенной функцией из глав­ ного меню. Такой подход к расположению системы на внешних носителях позволяет без особых трудностей использовать систему Lotus на ПЭВМ, не оснащенных «винчестером», в частности на ПЭВМ ЕС-1840. Главным элементом системы Lotus является таблица, состоящая из 2048 строк и 256 столбцов. Координаты клеток задаются аналогично Supercalc. В каждую клетку таблиU'Ы могут быть записаны числовая, символьная ин­ формация или выражение. В выражениях допускается использование ссылок на координаты других клеток, арифметические знаки, логические операторы и специаль­ ные функции. Функции, реализуемые табличным npouec• сором пакета Lotus, во многом идентичны системе Super- calc-3 . Таким образом, электронная таблица предназна­ чена для накопления информации, установки взаимных ссылок, вычисления указанных ~ыражений. Информация из таблицы может быть выведена на принтер, сохранена в файле и т. д., то есть обработана в соответствии с тре• 150
бованиями nОJ1ъзователя. В системе имеются графические средства отображения информации из таблицы в виде линейных графиков, гистограмм и круговых диаграмм. Система Lotus позволяет рассматривать таблицу как некоторую базу данных (таблично-ориентированнJю). В такой базе каждая строка является записью, а каждый столбец - по.,ем в этой записи. Таким образом, Lotus допускает базу данных объемом 2048 записей, в каждой из которых до 256 полей. Поддерживаемая Lotus база данных допускает возможность использования критериев при поиске информации. Для программирования процес­ сов обработки данных и создания собственных АРМ используются макросредства. Инсталяция (установка) системы на конкретный тип ПЭВМ и устройств заключается в выборе из предлагае­ мого перечня требуемых драйверов внешних устройств и записи их на все диски с системой Lotus. В табл. 6.2 приведен·ы поддерживаемые Lotus типы устройств и назва­ ния драйверов, имеющихся в системе. УстроАство COMPAQ Text Display IВМ Hercules Text Display IBM Monochrome Display IBM Color/Graphics Display IBM Color Screen Text Display IBM Graphics Display (Hercules) IBM Graphics Display IВМ Keyboard IВМ Printer Тамица 6.2 ДраАвер CPQOTD.DRV IВMOHERC.DRV IBMOMONO.DRV IВМОВ &W.DRV IBMOCOLO.DRV IВMIНERC.DRV IВMIGI.DRV, IВMIG2.DRV IВM2KB.DRV IВM3PR.DRV В процессе инсталяции выбранные драйверы получают следующие имена: PR.DRV - драйвер для принтера; TD.DRV - драйвер видеотерминала; KB.DRV - драйвер клавиатуры; GD.DRV - драйвер для графического адап­ тера. В Lotus предусмотрены командные файлы, организу­ ющие перенос необходимых драйверов. С их помощью процесс инсталяции можно автоматизировать. Так, при инсталяции пакета Lotus на ЕС-1840 необходимо просто установить диск UТILIТY в дисковод А и набрать коман­ ду: A}MONO В: 151
После этого, устанавливая в дисковод В по очереди диски с системой Lotus, все нужные для данной конфи­ гурации ПЭВМ драйверы (IВMOMONO.DRV, IBM2KB.DRV и IBM3PR.DRV) будут переписаны авто­ матически под именами TD.DRV, KB.DRV и PR.DRV соответственно. Инсталяция Lotus на ПЭВМ, оснащенных жестким диском, производится простым вызовом из директория с системой соответствующего конкретной конфигурации командного (ВАТ) файла. Для запуска системы Lotus с выходом на главное меню необходимо установить си­ стемный диск на дисковод А и набрать команду: A}LOTUS Допускается прямой запуск табличного процессо­ ра 1-2-3, а также режима печати подготовленных графи­ ков и системы обеспечения •информационной совмести­ мости. После считывания системы в оперативную память на экране появляется главное меню, содержащее перечень основных функций. Их выбор выполняется с помощью функций, из которых одна (выбранная) помечается голу­ бым для цветного адаптера (CGA) фоном или инверсным свечением для монохромных терминалов. Выбор нужной функции производится клавишами управления движением I{ypcopa. Состав функций главного меню: 1-2 -3 - работа в табличном процессоре 1-2-3, отобра­ жение информации графическими средствами, работа с базой данных; File-Manager - выход в систему управления файлами (требуется диск UТILIТY); Disk-Manager - выход в систему обслуживания ди­ сков; PrintGraph - выход в систему печати графиков, под­ готовленных в процессоре 1-2-3; Translate - выход в систему обеспечения информа­ ционной совместимости файлов, образованных различными программными средствами; Exit - выход из системы Lotus (для нормального вы­ хода системный диск должен иметь файл СОММАND .СОМ). Работа системы Lotus в режиме 1-2 -3. Этот режим является основным в системе Lotus. По этому режиму пользователь получает доступ к табличному процессору и электронной таблице, которую он может заполнять, обрабатывать и т. д. как в интерактивном (диалоговом) режиме, так и с помощью макрокоманд или макросов. 152
Режим характеризуется наличием мощной помощи, кото­ рая вызывается нажатием клавиши Fl. Следует ск~ззть, что помощь в Lotus организована более продуманно, чем в Supercalc; оставаясь контекстно-зависимой она, кроме того, снабжена собственным меню, позволяющим быстро находить любые требуемые разделы. Информация в по­ мощи распределена по следующим разделам: как поль­ зоваться помощью; как начать работу; ошибки и сообще­ ния; как закончить работу; специальные ключи; пере­ движение указателя ячейки; контрольная панель; ввод в ячейку; режимы и индикаторы; очистка ячеек; фор­ мулы; операторы; @-функции; форматы ячеек; ширина столбцов; команды 1-2 -3; макросы; функциональные кла­ виши; командное меню; диапазоны; меню для имен фай­ лов, диапазонов и графиков; указание диапазонов; имена файлов; ключи редактирования. Выбор раздела помощи производится с помощью кла­ виш управления движением курсора. Выход из помощи выполняется нажатием клавиши ESC. После вызова режима 1-2 -3 на экране появляется таблица, в левом верхнем углу экрана находится коорди­ ната текущей ячейки и ее содержимое, в правом верхнем углу - индикатор установленного режима (READY, WAIТ, ERROR, EDIТ, POINТ и т. д.). Верхние три строки на экране образуют контрольную панель, на ко­ торой отображается текущее состояние табличного процессора, меню команд, подсказки и задаются не­ обходимые опции. Занесение информации в таблицу выполняется непосредственно с клавиатуры, а обработка данных в таблице ведется с помощью специальных команд. В отличие от Supercalc-3 команды 1-2-3 формируются и выполняются с помощью развитого командного меню (Highlighted menu), вызываемого нажатием клавиши /. Команды можно задавать с ·помощью первой буквы имени или выбирая из меню, пользуясь клавишами управления движением курсора. Командное меню многоуровневое, оно раскрывается подобно лепесткам лотоса. Многие из команд Lotus функ­ ционально соответствуют командам Supercalc-3, поэтому мы остановимся только на оригинальных и неописанных в руководствах командах. Команды 1-2 -3 разбиты на де­ вять групп: Worksheet - управления таблицей; 153
Range - управления ячейками и блоками (прямо- угольниками, вырезанными из таблицы); Сору - копирования ячеек и блоков; Move - переноса ячеек и блоков; File - управления файлами; Print - вывода; Data - работы с базой данных; Graph - создания графиков; Quit - выхода в главное меню. ПoCJie выбора, например, первой группы команд (Worksheet) предлагается меню, позволяющее выбрать конкретную команду из следующих: Global - установка параметров всей таблицы; Insert - вставка строки или столбца; Delete - удаление строки, столбца; Column-Width - установка ширины текущего столбца; Erase - удаление таблицы (очистка); Titles - установка (фиксация) горизонтальной или вертикальной шапки; . Window - установка окон и синхронного перемеще­ ния; Status - выдача на экран основных параметров таб­ .тrицы. Задание нужной команды заканчивается вводом в диалоге уточняющих параметров или опций. После завершения диалога команда выполняется. Команды второй группы Range включают: Format - установка формата в общем CJiyчae блока; Label-Prefix - установка признака выравнивания ме- ток (символьной информации) в ячейках блока; Erase - очистка блока; Name - создание, удаление, корректировка имен бло- ков; J ustify - выравнивание области текста внутри блока; Protect - запрет на ввод в ячейки блока; Unprotect - снятие запрета; Input - ограничение движения указателя ячейки только по незащищенным ячейкам. Отметим в этой группе команду Range Name, которая позволяет присваивать блокам ячеек (и просто любой ячейке) таблицы любые, не обязательно символьные. имена. Имена блоков можно использовать в любых коман­ дах 1-2 -3 в режиме POINT, т. е. когда система требует указания адреса ячейки или блока. В этом режиме вместо явного указания адресов ,цостаточно набрать имя ячейки 154
или блоRа. Кроме того, в режиме POINT, если нажать клавишу FЗ, то появится меню, содержащее все создан­ ные имена блоков таблицы, из которого можно выбрать требуемое имя, пользуясь лишь клавишами управления движением курсора. Команды группы File включают в себя: Retrive - удаление таблицы из памяти и чтение заданной таблицы из табличного файла на диске; Save - сохранение таблицы в табличном файле на диске; Comblne - объединение рабочей таблицы с таблицей из заданного табличного файла; Xtract - сохранение части таблицы (блока) в таблич­ ном файле; Erase - удаление табличного, печатного или графиче­ ского файла (1-2,3-файла); List - вывод списка всех 1-2-3-файлов; I mport - чтение текста или чисел из текстового файла в табличный; Directory - печать и (или) установка текущего ди­ ректория; используются расширения: WKS - табличные файлы; PIC - графические файлы; PRN - печатные (рас­ печатки таблиц) файлы. Отметим команды File Comblne и File Xtract. Команда Fi]e Comblпe либо перекрывает рабочую таблицу таблицей из заданного табличного файла (опция Сору), либо складывает данные из таблицы с данными из табличного файла (опция Add), либо вычитает данные из табличного файла из данных текущей таблицы (опция Sublract). Объединение данных начинается с ячейки, в которой находится указатель ячейки. Отметим, что объединяются только числовые данные. Команда File Х tract записывает в табличный файл на диске данные из указанного блока ячеек. Допускается запись либо формул (опция Formulas), либо только зна­ чений (опция Va]ues). Отметим также, что при выполнении команд группы File система Lotus обращается к текущему директорию и выдает меню всех табличных файлов, позволяя клави­ шами управления движением курсора быстро выбрать необходимый. Команды обработки базы данных (Data) включают~ Fill - заполнение строки или столбца последователь­ ностью чисел; 155
Sort - сортировка БД по ключам; Query - поиск всех записей по критерию; ТаЫе - создание таблиц возможных значений; Distribution - подсчет частоты распределения значе-· ний в некотором диапазоне. Все команды выполняются в режиме диалога. При выборе команды, объединяющей несколько команд, на­ пример Worksheet, выводится меню-перечень команд, входящих в выбранную группу. При выборе кон- кретной команды выводится меню, содержащее опции, конкретизирующие выполнение выбранной команды. Программирование в режиме 1-2 -3 заключается, как уже говорилось, в создании макросов, обеспечивающих выполнение задач. Макросы - это определенным образом записанные в ячейку или непрерывный столбец ячеек 1-2 -3 (l'аблицы любые допустимые в системе последовательности нажатий клавиш, определяющие команды, метки, функ­ циональные клавиши, числа, текст, формулы и т. п. Для того чтобы создать макрос, необходимо запомнить выполненную последовательность действий при проекти­ ровании задачи и перенести ее в рабочую таблицу. После создания макроса записанная последовательность авто­ матически выполняется при нажатии клавиш AL Т и .любой из 26 буквенных клавиш. Идентификация мак­ роса, вообще говоря, является частным случаем иден­ !fификации имени диапазона ячеек и заключается в сле­ дующем. 1. Необходимо записать в одну ячейку имя несколь­ ких подряд идущих ячеек столбца в поле метки (текста) последовательностью нажатий клавиш. Например: IFRplan~ является записью последовательности нажатий клавиш, которая вызывает табличный файл p\an.wks (знак~ - тильда - означает нажатие клавиши «ВВОД», !fак принято в системе Lotus). Действительно, клавишами /, а затем F вызывается функция File, после чего нажимается клавиша R (команда Retrieve - запрос имени файла), ответ plan и нужный файл загружается. Отметим, что при записи последова­ q-ельности нажатий клавиш функциональные клавиши, а также клавиши управления движением курсора и ре­ дактирования необходимо записывать специальным обра­ зом, указывая их уникальные имена, имеющиеся в системе 156
Lotus, и заключая их в фигурные скобки. Ниже дится запись нажатий этих клавиш: Fl - Help\; - - \Left\ F2 - Editl; _. - jRightl FЗ - Name\; t-\Up} F4 - Abs\; + - jDowп} F5 - Goto}; Ноте - \Ноте} Fб - jWindf; Епd - jEпdf F7 -1Query\; PgUp - jPgUp} FB - ТаЫе}; PgDn - \PgDn} F9- Calc\; FlO - JGraph}; --1вs1 Ins - {Ins\ Del - \Del} приво- Знак тильда - используется для записи нажатия клавиши «ВВОД». Последовательность клавиш j?} буде:JJ означать паузу во время исполнения макроса. 2. Используя команду Range Name Create или Range Name Labels, необходимо присвоить одно из следующих имен первой ячейке, содержащей макрос, то есть "'-.А, '\,.В, и т. д. По этому имени и будет вызываться макрос на выполнение. Например, если предыдущему макросу при­ своено имя"'-.А, то нажатием клавиш ALT и А будет·за­ гружена таблица plan. wks. Необходимо отметить, что макрос с именем '\,.О назы­ вается автоматически выполняемым. Он вызывается только после выполнения в интерактивном режиме команды загрузки таблицы, разумеется в том случае, если он в этой таблице определен. Помимо автоматического вы­ полнения макросов предусмотрен режим пошагового вы­ полнения, который вызывается клавишами ALT и Fl. В этом режиме необходимо после выполнения очередной команды «подталкивать» макрос нажатием клавиши (ВВОД}. Как видно, макросы Lotus сильно напоминают команд­ ные файлы Supercalc-3, однако они обладают замечатель­ ным свойством. Оно заключается в том, что в макросы можно включать дополнительные, не видимые в интерак­ тивном режиме команды, называемые икс-командами (/Х-команды). Икс-команды являются, по существу, специальными командами программирования, т. е. можно говорить, что составление макросов превращается в написание программ на собственном языке программирования системы Lotus. ЭrО'Ю язык1 хотя и очень простой (всего предусмотрено 157
восемь /Х-хомаид), достаточно своеобразен и может быть отнесен к средо-ориентированным языкам, поскольку он жестко привязан к таблице и оперирует только табличным понятием - место. Место - это или адрес ячейки, или имя блока. Ре­ комендуется пользоваться именами блоков, так как ррограмма 1-2 -3 автоматически преобразует адреса ячеек ~ имена, если они заданы, при выполнении команд Move 1 lnsert и Delete. Приведем все /Х-команды: /ХG(место}~ - переход в указанное {место) и про­ должение выполнения макроса (безусловный переход); /ХС(место)~ - продолжить выполнение макроса в ука- Енном {месте), однако отметить выход и, когда встре­ ится команда /XR, вернуться в отмеченную точку после оманды /ХС (переход в «подпрограмму»); /XR - возврат из организованного предыдущей коман­ дой перехода в «подпрограмму» и продОJiжение макроса с указанной точки; /Хl(формула)~ - если {формула) истинна (ненуле­ вое значение), продолжить выполнение макроса в этой же ячейке, в противном случае переход в нижнюю ячейку; /ХL(сообщенне)~ {место)~ - вывести {сообщение) на второй строке, сделать паузу для ввода метки и поме­ стить введенную метку в указанное (место); /ХN(сообщение)~, (место)~ - вывести (сообщение) на второй строке" сделать паузу для ввода числа и поме­ стить введенное число в указанное (место); /ХМ{место)~ - построить пользовательское меню. сделать паузу для выбора требуемой функции и продол­ жить выполнение макроса с выбранной ветви (место указывает на координаты левого верхнего угла кадра меню); /XQ - конец макроса и возвращение к упрамению с клавиатуры. С помощью даже этого небольшого набора команд возможна организация достаточно современного диалога с конечным пользователем. Работа в системе Lotus выполняется в несколько этапов. На первом этапе устанамиваюrся параметры \l'аблицы и ячеек. Затем таблица заполняется постоянной информацией, вносятся формулы и т. д. Постоянную информацию целесообразно защищать от случайного уни- 158
чтожения. На ПОСJlеднем этапе проектируются макросы. обеспечивающие решение конкретной задачи. Режим File-Manager. Эrот режим выбирается для выхода в систему управления файлами, которая, по существу, является аналоrичной системе, имеющейся в операционной системе. Отличительная черта этой си• стемы в Lotus - управление файлами происходит по­ средством командного меню. Выбор этого режима при1ю­ дит к появлению сообщения о смене диска А на диск UТILIТY в том же дисководе. После установки требуе­ мого диска и нажатия клавиши «ВВОД» Lotus предлагае-r выбрать исходный дисковод: А В С D Е (и т. д., ее.ли операционная система определяет большее число логиче­ ских устройств). Выбор осуществляется с помощью клавиш -+-, -+ -, после чего на экране появляется список всех файлов на выбранном диске и система предлагает выбрать команду из следующего перечня: Сору - копирование выбранных файлов; Erase - удаление выбранных файлов с текущего диска; Rename - переименование файла в текущем ди­ ректории; Archive - архивная копия файла под новым именем на текущем диске; Disk-drive - изменение теку­ щего дисковода; Sort - сортировка файлов в директории; Quit - возврат в главное меню. После выбора команд Сору, Erase, Rename, Archive необходимо отметить файлы для обработки. При нажатии клавиши «Пробел» (Space) выполняется отметка файла знаком :j:\:, как выбранного для обработки. При нажатии клавиши «ВВОД» команда выполняется, при нажатии ESC осуществляется выход в режим выбора команд (функция Fite-Manager). Функция Disk-drive состоит в смене текущего диско­ вода: АВСDЕ... Функция Sort позволяет выбрать ключи для сорти­ ровки списка файлов в директории по двум ключам, восстановить стандартное расположение, запустить сор­ тировку и вернуться в меню выбора команд. При этом в качестве ключа предлагается выбрать: имя файла; расширение; дату создания и время; размер файла, а затем указать признак сортировки - возрастание или убывание. Режим Disk-Manager. Режим предназначен для обслу­ живания дисков посредством командного меню. Следует 159
отметить, что для работы в этом режиме необходимо иметь на жестком диске или на диске UTILITY системные утилиты DISKCOPY, DISKCOMP и FORMAT. Командное меню предлагает следующие функции: Disk-Copy - копирование диска; Compare - сравнение дисков; Prepare - подготовка нового диска (в диско­ воде В); Status - информация по диску; Quit - возврат в r лавное меню. Режим Print Graph. Предназначен для печати графи­ ков, подготовленных в режиме 1-2 -3 и записанных на диск. Следует отметить, что на ПЭВМ, не оснащенных графическим адаптером, подготовить и распечатать гра­ фики, можно так сказать, «вслепую», поскольку при по­ пытке вывести их на экран будет дано сообщение, что ПЭВМ не оснащена графическим дисплеем. Напротив, в Supercalc-3, использующем режим псевдографики, воз­ можно получение изображений и на экране. Работа в этом режиме организуется также с помощью меню команд, предлагающего широкий набор средств для построения различных графиков, выбора гарнитуры шрифтов. Предусмотрена возможность . работы со всеми распространенными типами принтеров. Режим Translate. Этот режим предназначен для созда­ ния информационной совместимости файлов, созданных разными программными средствами. Предлагается вы­ брать один из режимов (работа ведется также с помощью меню): VC to WKS - VisiCalc в Lotus; DIF to WKS - с разделителями в Lotus; KSW to DIF - Lotus в файлы с разделителями; DBF to WKS - DBASE-11 в Lotus; WKS to DBF - Lotus в DBASE-11 . Допускается перевод в другой формат не только Lоtus-табличного файла целиком, но и поименованного диапазона ячеек. Режим Exit. По режиму Exit осуществляется выход из системы Lotus в операционную систему. При этом выход в ОС завершается нормально при наличии на диске файла СОММАND. СОМ. Мы рассмотрели работу с версией lA. В следующей версии 2.0 Lotus расширен состав интерактивных команд и команд программирования, предусмотрена возможность работы с расширенной памятью. 180
GWBAL il REPORT Developed Ьу CitiЬank, Global Repon integrates fmancial infoпnation from the world's most respected international infoпnation sources into а single, easy-to-use and seamless electronic infoпnation service. The sources that contribute to Global Repon are such as: * * * * * * * * * * Financial Times Business Infoпnation Кnight-Ridder Standard & Poor's Quotron Business International Money Market Services Extel Financial Comtex DAFSA Citibank The following equipment will Ье needed to access Global Repon: * * * * Personal Computer or Terminal Modem Telephone Line Communications Software For funher infonnation: Startel, lnc. Р.О. Вох 382 SF-00121 Helsinki Finland ? Смирное Н. н. Се STARTEL8J
SOFTWARE 11 11 11 11 11 11 Software for IВМ РС and compatiЫe computers character-based or graphical user interface software licenses ready-to-run packages Soviet or QWERTY keyboard standards cyrilic or latin character sets 5.25 or 3.5 inch disks Please contact SIMUL Phone: 684 9166 Telefax: 684 9039 Address: Wihurinaukio 2, SF-00570 НELSINКI, FINLAND SOFTWARE 11 11 11 11 11 Software for IB М РС and compatiЫe computers word processing spreadsheet relational databases graphic charting drawing Please contact SIMUL Phone: 684 9166 Telefax: 684 9039 Address: Wihurinaukio 2, SF-00570 HELSINKI, FINLAND
ATS SuperVisionS The most sophisticated CAD/CAM/FEM PC -s oftware Ani1I Vk• пf thr Wtнld I i1щt<"i111I C tnl('• М L11•cr M.nli.11111 ATS SuperVisionS 3000 ATS Supervis ion 3000 - одна из наиболее развитых пр о­ грамм автомати з ированн о г о проектирования , разработан ­ ных на базе современных персональных ЭВМ . Объем ­ ное проектир ово чное про ­ странство ATS Superv isio n 3000 оперативно преобразо­ вывается по командам по­ льзователя . Благ одаря эф ­ фективном у и л е гкому для освоения язык у программи­ рования , парам етр ическое проектирование са мы х с л ож­ ных тел возможно , нажав всего лишь н еско льк о кла­ виш . Возможность создания в изображении поверхностей и светотеневых отношений придает изображению прое к ­ тируемого тела четкость и визуальность . Результат рабо ­ ты по ATS Supervision 3000 мо ­ жет разрабатываться дал ее по другим программам той же серии, в том числе по программам для расчета прочности типа FEM . Откры ­ тая конструкция базы дан ­ ных позволяет оперативно передавать файлы в с исте ­ мы других существующих на рынке программ автоматизи­ рованного проектирования (CAD) и управления производ ­ ством (САМ). SuperVisionS создает условия для сосредоточенной работы конструктора . • • IXIOП оу РОВ 34 SF-000281 HELSINКI FINLAND С ПОМОЩЬЮ СЕТЕЙ БЛИЖНЕЙ СВЯЗИ lONET ОБЕСПЕЧИВАЕТСЯ УДОБНОЕ ОБЪЕДИНЕНИЕ ВСЕХ МИКРО-ЭВМ ПРЕДПРИЯТИЯ Из номенклатуры IONET фирмы ОСА Вы найдете решение для объединения как трех, так и трехсот микро­ ЭВМ в оперативную сеть ближней связи . Вам удобно получить в свое распоряжение общие информацию, тексты и памятные записки . Общие печатающие устройства используются гибко и резервные копии обеспечиваются автоматически. На заднем плане всего этого работает программное обеспечение IONET Plus. Оно не занимает большой емкости и работает гибко, как хорошему программному обеспечению и надо. Удобство эксплуатации обеспечи­ вается программным обеспечением меню на русском языке CoPilot. Семейство изделий IONET фирмы ОСА предлагает многосторонние возможности прокладки кабелей для рюных условий. Наиболее легкий и зкономичный спо­ соб прокладки кабелей - применение скрученной пары кабелей, при необходимости в большом быстродейс­ твии рекомендуем выполнение прокладки кабелей согласно стандарту Ethernet. Для промышленных условий мы поставляем системы прокладки кабелей с применением световода. Разные системы прокладки кабелей могут быть объединены дибо отдельными про­ межуточными усилителями либо мостиковыми прог­ раммными средствами. IONET расширяется по мере надобностей Вашего предприятия. Ваше будущее гарантируется умелыми перепродавцами и сильной разработкой продукции ОСА - ведущей фирмы в области передачи данных. IONET - надежный выбор. Импортер : А/О ТТ-Микротрейдинr, Синикаллионтие 5, 02630 Эспоо, Финляндия Телефон: 358-0-502 741, Телекс : 121150 bman sf, Телефакс : 358-0 -502 7499 .
MICRODATA Ltd Valimotie 1В SF-00380 HELSINKI FINLAND TELEPHONE TELEX TELEFAX TELEFAX HELSINKI 565 3811 FINLAND 125404. mdata sf HELSINКI 565 3358 USA office 415 653 4784 We are dlstrlbutor of followlng products: INTEL 386-computers MICRON DRAMs, SIMMs MITSUI АТ-computers TECHNOLOGIES and Memory cards SMS PC-computers US ROBOTICS Modems WESTERN Hard disks SMARTLINK Modems DIGITAL NOVELL LAN-systems CONTROL Hard disks D-LINK LAN-systems DATA CIPHER Streamers (also EPSON Printers for VAX) STAR Printers We offer good deliveries with fast and high quality support and service. For further information, please contact Мг. Kovanko. НИКОЛАЙ КОВАНЬКО - Мы говорим по-русски. ПРОГРАММНЫЕ СРЕДСТВА ОБРАБОТКИ ТЕКСТОВ WORDPERFECТ Для высококачествеmюй обработки WordPerfect - это многосторонняя обработка текстов даже для самых требовательных нужд. Элегантные доку­ менты, отчеты, перечни, контракты и пр. тексты легко составлять с помощью программных средств WordPerfect. Оперативность и элегантность Благодаря сочетанию многосторонних действий обработки текстов и графики, WordPerfect достигнет рав­ новесия между оперативной работой и элегантностью. Комбинация текста с графикой обеспечивает возмож­ ность на составление высококачественных уведомлений, отчетов и документов. И в новейшей версии прог­ раммные средства WordPerfect не пренебрегали теми свойствами, благодаря которыми они заняли ведущее место в области обработки текстов: колонки, сноски/ конечные ссылки, макроопределения, функция объеди­ нения, автоматическая расстановка дефисов, словарь и многочисленные другие свойства все еще имеются в распоряжении для всех тех, кто доверит программным средствам WordPerfect в первую очередь в качестве пер­ воклассной программы обработки текстов. Технические данные Программные средства WordPerfect поддерживают большинство печатающих устройств типа ромашки, матричных и лазерных печатающих устройств. Word- Perfect 5.0 поддерживает также вывод PostScript. Версия операционной системы MS/DOS про­ граммных средств WordPerfect 5.0 работают в машинах типа IВМ РС, ХТ, АТ и совместимых с ними, а также в устройствах PS/2. Программа требует 384-кбайтовой емкости свободной памяти, 512-кбайтовой емкости центральной памяти и двух накопителей на дисках (преимущество отдается наличию одного накопителя на дисках и жесткого диска). Адаптер графики и подхо­ дящий для него монитор необходимы при выполнении функций графики. Импортер: А/O ТТ-Микротрейдинг, Синикаллионтие 5, 02630 Эспоо, Финляндия Телефон: 358-0-502 741, Телекс: 121150 bman sf, Телефакс : 358-0-502 7499.
Win\ЬurOwn Personal Computer! Ву answering this questionary You will have а chance to win and I ВМ РС /ХТ compatiЬle Personal Computer 1 . Аге You going to purchase PC-hardware / software during 1990 О yes О no 2. Аге You going to рау this purchase with western currency О yes О no 3. Do You want western companies to contact You for more information О yes О no 4 . What is the value of Your western currency for Your PC-purchases 10.000USD 100.000USD 1.000 .000USD а) Hardware О О О Ь) Software О О О с) Add-on products О О О d) Other, what _ _ _______ _ _____ 5. Please, fill the formula and send it in а registered letter to the address below and You automatically take part in а drawing of lots with а Personal Computer as prize. Please fill the formula with а typewriter or Ьу hand in printletters. Name Occupation Com an How many people work in Your company Address / Postoffice / Cit / Telephone number 1 Telefax number i Telex number 1 Remember to send this formula in а registered letter по later than 30 .5.1990 . We will contact the winner personally. 1 Please return this questionary to the address below. 1 САТАСО ОУ 1 Temppelikatu 8, SF-{)()100 Helsinki, Finland 1 ------------------
6.4 . Symphony Интегрированный пакет Symphony занимает в зави­ симости от набора предоставляемых средств от 320 до 390 Кбайт оперативной памяти и располагается на сле­ дующих дискетах! SYSTEM- система Symphony; UТI­ LIТY - утилиты; PRINTGRAPH - программы печати графиков; TUTOR - самоучитель по системе; HELP - файлы помощи. Система Symphony может быть настроена для работы ва ПЭВМ, не оснащенных жестким диском. В этом случае при загрузке пользователь должен выполнять соответ­ ствующие указания системы о замене дисков. Установка дис1<0в производится только в дисковод А. Помимо возможностей, имеющихся в Lotus, Symphony предлагает пользователю средства телекоммуникации, тек­ стовый редактор, мощный макроязык для разработки командных файлов, многооконный интерфейс. Начиная с версии 1.1, предусмотрена работа с расширенной па­ мятью и арифметическим сопроцессором. Возможен выход в операционную систему для выполнения каких-либо действий, а затем возврат в Symphony без изменений, связанных с выходом в ОС. Ключевым понятием системы Symphony является среда - environment, которая отражает различный взгляд на форму представления информации. Имеется пять типов сред: DOC - текст; SHEET - таблица; GRAPH - гра­ фик; FORM - форма; СОМ.М - телекоммуникационное окно. Тем не менее, основным информационным объектом Symphony остается привычная электронная таблица в от­ личие, например, от системы Framework, где вводится новое понятие универсального носителя информации - фрейма. Объем таблицы возрос до 8192 строк при 256 столбцах. Все команды и операторы Symphony обрабатывают информацию, расположенную в таблице, табличных фай­ лах определенного формата, в табличных окнах и т. д. Необходимо отметить, что различные средства Symphony по-разному интерпретируют электронную таблицу в па­ мяти. Так, например, текстовый редактор воспринимает таблицу как текстовую среду, в которой производятся набор и редактирование текста. Координатная сетка в этом случае заменяется на шапку I в которой фпкси- 8 Смирнов Н. Н. 161
руется местоположение курсора по строкам и колонкам. Передвижение курсора выполняется с шагом один символ в строке. Средства работы с базой данных рассматриваЮР таблицу как совокупность записей (каждая строка - запись), в которых полями записи являклся колонки таблицы. При этом вводится понятие формы, через кото­ рую эти записи просматриваклся. Работа с Symphony начинается с инсталяции системы. В процессе инсталяции создается специальный файл, содержащий набор драйверов внешних устройств ПЭВМ - видеотерминала, клавиатуры, печати, модема и т. д. Инсталяция выполняется программой INSTALL.EXE, которая в диалоговом режиме предоставляет пользователю выбрать подходящие для данной конфигурации ПЭВМ драйверы из библиотеки драйверов MASTER.LBR. Оrме­ тим, что существует возможность включения собственных, специально созданных драйверов устройств, не описан- ных в библиотеке Symphony. . Выбранные драйверы записываются в файл с любым именем. По умолчанию создается файл LOTUS.SET. Если вы создали набор драйверов с другим именем, то его необходимо указывать как параметр командной строки каждый раз при запуске системы. В случае отсутствия «винчестера» созданный файл должен быть записан на каждый из дисков системы Symphony. Запуск системы. Вызов системы может быть выполнен двумя способами: A}ACCESS A)SYMPHONY Первый способ позволяет вызвать программу ACCESS (выбор) - главное меню Symphony, которое предложит для выбора следующие основные функции: Symphony (собственно система Symphony); Tutorial (самоучитель); PrintGraph (программа печати графиков); Install (про­ цедуры инсталяции); Translate (утилиты преобразования файлов); Exit (выход из программы). Второй способ позволяет непосредственно вызвать систему Symphony. Оrметим, что аналогично могут быть вызваны и остальные функциональные модули системы. Для выполнения команд системы в интерактивном ре­ жиме необходимо нажать клавиши F9 и/или FlO, а затем с помощью клавиш -+- , + - выбрать команду для выпол­ нения. В верхней строке появляется следующее меню, 162
процесс повторяется до тех пор, пока пользователь не определит все параметры выбранной команды. Команды системы Symphony. При нажатии клавиши F9 на верхней строке экрана появляется меню, которое содержит следующие общие для всех сред Symphony команды: Window - модификация текущего окна или использование другого; File - обмен данными между оперативной и дисковой памятью; Print - вывод данных; Configuration - конфигурация системы, т. е. установка значений основных параметров по умолчанию и общих процедур; Application - работа с дополнительными (add- in) программами Symphony; Settings - выбор и уста­ новка глобальных параметров таблицы; New - стирание содержимого и установка глобальных параметров таб­ лицы; Exit - выход из системы. Список команд, предлагаемых по нажатию клавиши FlO, зависит от того, в какой среде находится пользова­ тель, т. е. от тиnа текущего окна, задаваемого командой Window Settings Туре. Тип текущеrо окна инверсно ото­ бражается в правом верхнем углу экрана. Например, в режиме SHEET (таблица) при нажатии клавиши F9 предлагаются следующие команды для ра­ боты с таблицей: Сору - копирование диапазона ячеек; Move - перенос содержимого диапазона ячеек; Erase - очистка диапазона ячеек; lnsert - вставка столбцов или строк; Delete - удаление столбцов или строк; Width - установка текущей ширины столбца ячеек; Format - установка формата отображения содержимого диапазона ячеек; Raпge - дополнительные команды работы с диа­ пазонами ячеек; Graph - определение и построение гра­ фиков; Query - операторы таблично-ориентированной базы данных; Settings - установка параметров пересчета и отображения таблицы. Выбор команд из меню выполняется клавишами -, ,_ или указанием первой буквы команды. Большая часть команд является групповыми командами, объеди­ няющими несколько команд, предлагающих выполнение определенных действий в рамках групповой команды. Например, команда File фактически предлагает выпол­ нение следующих команд: Save - сохранение текущей таблицы в табличном файле на диске; Retrieve - загрузка таблицы из табличного файла на диске в память; Com- Ьine - включение части или целой таблицы из таблич­ ного файла на диске в текущую таблицу; Xtract - сохра• s~ 163
нение части текущей таблицы в табличном файле; Erase - удаление файлов; Bytes - определение объема свободной дисковой памяти; List - отображение списка файлов в текущем директории; ТаЫе - включение системной информации о файлах в текущую таблицу; Import - включение содержимого текстового файла в текущую таблицу; Directory - установка текущего директория. Некоторые групповые команды предлагают выбрать определенные команды в связи с предполагаемым исполь­ зованием системы Symphony. Так, выбор одной из пяти возможных форм представления информации осуществ­ ляется по команде Window Settings, а создание требуемых для отображения информации окон - по команде Window Create. Как видно, в этой части пакета, которую можно на­ звать средствами конечного пользователя, работа с Sym- phony не должна - и это подтверждает практика - вы­ зывать каких-либо затруднений. Если же Вы хотите использовать Symphony не индивидуально, а как инстру­ мент для создания самостоятельного коммерческого про­ граммного средства, потребуется знакm,iство с правилами организации макросов. Макросы в системе Symphony. В Symphony анало­ гично Lotus можно записывать последовательности нажа­ тий клавиш. Однако состав дополнительных команд (подобных Х-командам Lotus), а также ключевых слов существенно расширен. Введен и совершенно новый ре­ жим - Learn - обучение, с помощью которого можно последовательность нажатий клавиш автоматически поме­ щать в указанный диапазон таблицы. Для записей макро­ сов в отдельные файлы на диске и создания библиотеки макросов предусмотрена программа MacroManager. В макросах Symphony наименования клавиш имеm отличия по сравнению с Lotus, поэтому есть смысл при­ вести весь перечень используемых наименований. {ABSf {BACKSPACE} или {BS} {BIGl:EFTf \BIGRIGHT} !BREAK} {CЛLCf {CAPTURE} {CENТER} 164 -FЗ - BackSpace - Ctrl+Left - Ctrl+Right - Ctrl+Break -F8 -F4 - Alt+F4
{DELETЩ - Del {DOWNI - Down (стрелка вверх) DRAWI - Alt+FB EDIТI -F2 END} - End ERASЩ -F4 ESCAPEI или {ESC} - Esc (КЛЮЧ) GOTO} -F5 HELPI -Fl НОМЩ -Ноте INDENT} -FЗ INSERT\ - lns JUSТIFYI - F2 LEFT} - Left (стрелка влево) МЕNЩ или {MI - FI0 PGDNI или {BIGDOWNI PgDn {PGUP} или jBIGUPf - PgUp {RIGHTI - Right (стрелка вправо) {SERVICESI или {SI - F9 {SPLIТf - Alt+FЗ !SWIТCH} - Alt+F9 TABI -ТаЬ ТУРЕ} - Alt+Fl0 {UPf - Up (стрелка вниз) {USERI -F7 {WHERE} - Alt+F2 JWINDOW\ - Fб {ZOOMI - Alt+Fб ,., - Enter (ВВОД) Отметим также, что имена диапазонов ячеек, содержа­ щих макросы (имена макросов), не обязательно должны начинаться с обратного слэша («"- .. »), а могут быть любыми идентификаторами. В этом случае они вызываются пажа: !Гнем клавиши F7 ( [USER ]) с последующим набором имени. Кроме того, имена макросов могут иметь и такой вид: '\,.О, '\,.1, '\,.2 и т. д. Например, для вызова макроса с име­ нем '\,_9 необходимо нажать клавишу F7, а затем F9. Мнемонические имена макросов используются для вызова макроса из другого макроса, т. е. для написания макроподпрограмм. Например, если мы хотим вызвать макрос с именем JOHN из другого макроса, то мы должны заключить это имя в фигурные скобки, т. е. написать {JOHNf. 165
Командный язык Symphony содержит ключевые слова или дополнительные команды, с помощью которых можно строить предложения. Синтаксис: [ключевое слово] или [ключевое слово аргумент 1, аргумент 2, ... , аргумент n]. Разделителем между ключевым словом и первым аргументом служит пробел, аргументы разделяются за­ пятыми. Следует сказать, что разделители можно сред­ ствами Symphony переопределить. Допускаются три типа аргументов: NUMBER ({число)) - число или числовое выражение; STRING ({строка)) - любая строка симво­ лов, если в строку входит разделитель аргументов, то строка помещается в двойные кавычки; LOCA ТION ({место)) - адрес ячейки или имя диапазона, если имя содержит разделитель аргументов, то необходимо исполь­ зовать двойные кавычки (" "). Пример указания типа аргумента: {LET AI, 12+ 13 i STRING} - метка 12+ 13 поме­ щается в ячейку AI. Указывать тип необязательно, так как Symphony использует нужный тип по умолчанию. Так, при зада­ нии {LET AI, 12+13} число 25 помещается в ячейку AI. При записи ключевых слов регистр не имеет значения. Приведем описание ключевых слов. Квадратные скобки означают, что аргумент не обязателен: {BEEPI - звуковой сигнал; jBLANK {место)! - стирает содержимое указанной ячейки или диапазона ячеек; {BRANCH {место)! - продолжение выполнения ма­ кроса с указанного {места) - безусловный переход; jBREAKOFF f - отменяет использование ключа [BREAKJ (Ctrl+Break) для прерывания выполнения макроса; отмена сохраняется после окончания выполне­ ния макроса до тех пор, пока не будет выполнен {BREA- KONI; {BREAKONI - разрешает использование ключа [BREAKJ для прерывания макроса; {CLOSEf - закрывает файл, открытый {OPENf; {CONTENTS (место 1), {место 2), [значность], [фор­ мат] 1 - помещает содержимое {место2) в (место 1) с за­ данными (если указано) значностью и форматом (допу­ стимые форматы: О ... 15 - фиксированный; 16 ... 31 - научный; 32 ... 47 - денежный; 48 ... 63 - процентный; 64 ... 79 - формат с разделителем; 112 -+ /-; 113 - 166
общий; 114 - ДД-ММ-ГГ; 115 - ДД-ММ; 116 - ММ-ГГ; 117 - символьный; 118 - скрытый; 119 - ЧЧ: ММ I СС; 120 - ЧЧ: ММ; 121 - полная междуна­ родная дата; 122 - частичная международная дата; 123 - полное международное время; 124 - частичное между­ народное время; 125 - общий); {DEFINE ячейка 1: тип 1, ячейка 2: тип 2, ... ячейка п; тип п} - определяет ячейки для хранения аргументов, указываемых при вызове макроподпрограммы; должна быть первой командой в макроподпрограмме; тип - либо NUMBER, либо STRING; по умолчанию - STRING. {DISPATCH (место)} - переход в указанное место; {FOR {рабочее место), (число 1), (число 2), (число 3), (макрос-место)} - предложение, организующее цикл, вы­ полняет команды в указанном (макрос-месте) столько раз, сколько указано в (число 1) и (число 2) с шагом (число 3), счетчик цикла отображается в (рабочем месте}; {FORBREAKI - немедленный выход из цикла с вы­ полнением следующего предложения макроса; {GET (место)} - ожидает нажатия клавиши и поме­ щает введенный символ или имя ключа в указанное (место); {GETLABEL (строка-подсказка), (место}\ - отобра­ жает на контрольной панели (строку-подсказку} и ожи­ дает ввода метки, после нажатия клавиши ВВОД поме­ щает метку в (место); {GETNUMBER (строка-подсказка), (место}\ - вы­ полняет аналогичные предыдущему предложению функ­ ции, но ожидает ввода числа, которое помещает в ука­ занное (место}; {GETPOS (место}\ - записывает текущую позицию указателя в заданное (место); {HANDSHAKE (посылаемая строка}, (получаемая строка), (время ответа), [(место ответа) Н - автомати­ ческий диалог с удаленной ПЭВМ, компьютером: пере­ дается (посылаемая строка} и ожидается (получаемая строка) в течение (время ответа), если указано, то (по­ лучаемая строка} помещается в (место ответа); {IF (логическое выражение)\ - если (логическое вы­ ражение} истинно, то выполняется инструкция справа от данного предложения, в противном случае макрос продолжается в нижней ячейке; {INDICATE [(строка} ]1 - восстанавливает индика­ q-ор режима на контрольной панели или устанавливает 167
его равным указанной {строке}, максимальный размер (строки} - пять символов; {LET (место}, (значение}} - помещает (значение) в указанное (место}; jLET (место}, (строка)} - помещает (строку} в ука­ занное (место), при этом строка может быть строковым выражением; jLOOK (место}} - просматривает буфер нажатия кла­ виш, если буфер не пустой, то помещает в (место), в про­ тивном случае очищает (место}; jMENUBRANCH (место}} - строит пользовательское меню в указанном (месте}, меню строится в диапазоне, состоящем из двух строк и не более восьми колонок, первая строка содержит пункты меню, вторая - соот­ ветствующие им строки-подсказки; столбцы ячеек под каждой подсказкой содержат макроинструкции, которые будут выполняться в соответствии с выбором пользо­ вателя; {MENUCALL (место}} - аналогична {MENU- BRANCH}, однако после выполнения инструкций после подсказки продолжает выполнения макроса, после {MENUCALЦ - предложения; {ONERROR (место-переход), [{место-сообшение}] предписывает, в случае ошибки, переход в указанное (место-переход} с сохранением, если указано, сообщения об ошибке в (место-сообщение); {OPEN (имя-файла), (режим-доступа}} - открывает. файл для чтения, записи или чтения и записи; 1РANELOFF} - отменяет отображение контрольной панели при выполнении макроса; {PANELON} - отображает контрольную панель при выполнении макроса; {PHONE (строка-номер}} - вызов по указанному но­ меру через модем, (строка-номер) может бьпь выражением; {PUT (место}, (номер-столбца), {номер-строки), (зна­ чение)} или {PUT (место), (номер-столбца}, (номер­ строки}, (строка)} - помещает значение выражения или строку в указанное (место} по адресу, определяемому по (номеру-столбца} и (номеру-строки) (отсчет ведется от О); \READ (ЧИСJ1О-байтов}, (место}~ - копирует ука­ занное чпсло символов из открытого файла в (место} рабсчеti таблицы; )68
{READLN {место}} - копирует строку из открытого файла в указанное (место) таблицы; \RECALC {место)! - построчный пересчет. формул в указанном диапазоне; \RECALCCOL (место)} - постолбцовый пересчет фор• мул в указанном диапазоне; {RESTARTI - прерывает подпрограмму и очищае'D стек подпрограммы; {RETURNI - возврат из макроподпрограммы; jSETPOS (позиция в файле) 1 - устанавливает новую позицию указателя в текущем открытом файле; {WАIТ {число-время) 1-ожидает ответа в течение указанного времени; {WINDOWSOFFI - отменяет постоянный возврат к текущему окну при обработке данных в рабочей таблице; {WINDOWSONI - постоянно возвращает отображе­ ние текущего окна при обработке данных в рабочей таблице; {WRIТEI - копирует символы в открытый файл; {WRIТЕLN}-добавляет символ конца строки в ука­ занной строке символов и записывает строку в открытый файл; {?1 - временно приостанавливает выполнение ма­ кроса, позволяя пользователю набирать и двигаться вокруг. Макрос продолжает выполняться после нажатия пользователем клавиши «RETURN» («ВВОД»). Работу в системе Symphony рассмотрим на примере построения двухуровневого меню (рис. 6. I). После вызова программы на экране в двух строках контрольной панели появляются меню (третья строка), необходимые пояснения помещаются во вторую строку: 2 3 ЗАПОЛНЕНИЕ БАЗЫ ДАННЫХ ОТЧЕТЫ ВЫХОД «тело» таблицы При передвижении активной клетки по меню выбранный режим выделяется цветом (здесь «жирным» шрифтом): 2 Подготовка выходных форм 3 ЗАПОЛНЕНИЕ БАЗЫ ДАННЫХ ОТЧЕТЫ ВЫХОД или: 2 Выход из системы ДА/НЕТ 3 ЗАПОЛНЕНИЕ БАЗЫ ДАННЫХ ОТЧЕТЫ ВЫХОД 169
1 УРОВЕНЬ ЗАПОЛНЕНИЕ 5АЗЫ ДАННЫХ ОТЧЕТЫ Подгото6на Выходных форм выход Выход из системы ДА/НЕТ П УРОВЕНЬ доходы РАСХОДЫ выход Отчеты по DoxoiJaм Отчеты по расхоDам Выко{} 8 меню (/ уро6ень) Рис. 6.1 Да Запись ибыход8ОС Нет Выкоа tJ меню Возможный вариант организации программы этого уровня меню: {menubranch menul} - построение меню в месте, име­ ющем имя MENUl; {quit} - окончание макроса. В MENUl помещается следующий текст: ЗАПОЛНЕНИЕ БД ОТЧЕТЫ выход {menubranch menuf} Подготовка Выход из системы выходных форм {menubranch menue} {menubranch menuot} После выбора требуемого режима по нажатию клавиши «ВВОД» выполняется последовательность команд, начиная с 3-й строки диапазона MENUl. Рассмотрим еще программу организации меню, реа­ лизующую режим ВЫХОД. Этот уровень организован командой (,menubranch menue}. В MENUE помещается: ДА Запись и выход в ОС {s} \vumain~ {s} fs~y {s} еу {quit} На экране появляется: Запись и выход в ОС ДА НЕТ 170 или НЕТ Выход в меню {menubranch menul} Выход в меню ДА НЕТ
При выборе пункта (ДА} выполняется последователь­ ность макро-команд: {sl wumain~- SERVICE WINDOW USE MAIN (ВВОД), где {s} - вызов меню SERVICE; wumain~ - использо­ вание окна с именем main; js}fs~y - SERVICE FILE SAVE (ВВОД} YES - запись текущего состояния данных таблицы в файл; {sfey - SERVICE ЕХIТ YES - выход из SYM- PHONY. При выборе (НЕТ} - вызов меню первого уровня по команде 1menubranch menu 1f. Изучение возможностей и средств системы Symphony целесообразно проводить в следующей последователь­ ности: электронная таблица; текстовый редактор; дело­ вая графика; многооконный интерфейс; управление базой данных; разработка макросов с помощью командного языка; средства телекоммуникации. Счастливая судЬба рассмотренных пакетов (каждый из них имеет свыше миллиона продаж) привлекает к ним внимание и профессиональных программистов, которые в разрабатываемых программных средствах предусма­ тривают интерфейсы с этими пакетами. Можно сказать, что наличие интерфейса с каким-либо или даже несколь­ кими из рассмотренных пакетов является одним из важ­ нейших показателей качества программного продукта и всегда указывается в аннотации к нему,
Глава 7. ОРГАНИЗАЦИЯ ДИАЛОГА С КОНЕЧНЫМ ПОЛЬЗОВАТЕЛЕМ 7. 1. Требования к организации диалога с конечным пользователем Быстро расширяющиеся области применения персо­ нальных ЭВМ стимулируют прикладную информатику к созданию все более сложных информационных моделей и вычислительных систем. Традиционно к вычислительным системам предъяв­ ляются следующие основные требования [9 ]: надежность функционирования, тиражируемость, расширяемость, функциональная полнота, универсальность и адаптируе­ мость. Конечно, надежность программного продукта, на первый взгляд, является основным требованием. В самом деле, ненадежно_ работающая программа, т. е. программа с ошибками, едва ли найдет широкое применение. Хо­ чется, однако, выразиться сильнее: программа с ошиб­ ками - это не программа. Ее нужно отлаживать и отла­ живать, прежде чем можно будет назвать про­ граммой. Программисты еще с «эры» программирования в ма­ шинных кодах с физическими адресами команд придумали себе для облегчения жизни афоризм: каждая программа содержит пока не обнаруженную ошибку. Из этого сле­ довало за~<лючение, что программ без ошибок вообще не существует и не может никогда существовать. Эта широко бытующая, по крайней мере среди отечественных про­ граммистов, крылатая фраза высоко нас не вознесла: достаточно сопоставить объемы каталогов программных средств, выпускаемых, например, в США одной фирмой IBM, насчитывающей тысячи программных средств, с ка­ та.1югом програм:.шых средств Государственного фонда алгоритмов и программ, поддерживаемого объединением Центрпроrраммсистем (г. Калинин), в котором наберется десяток-второй ПС. А программистов у нас, если осто­ ро:ашо выразиться, не меньше. 172
Поверхностный взгляд на свой труд, нежелание пре­ дельно точно отрабатывать все детали и логику программ с последующим их тестированием на всех возможных и невозможных режимах создали целое поколение про­ граммистов, которые провели жизнь, так ничего закон­ ченного (в профессиональном смысле) и не сделав. Конечно, можно сослаться на то, как несколько лет назад происходила отладка программ: чаще всего пакет­ ный режим, ненадежные бумажные носители и устройства ввода-вывода, сроки, которые «уже прошли», порождали программы-полуфабрикаты. Уместно упомянуть и про отсутствие авторских прав, и про слабое стимулирование разработчиков программ. Хочется надеяться, что новый хозяйственный механизм и ПЭВМ изменят отношение к работе. Потребуется и но­ вый афоризм. Построить его не сложно. Первое утвер­ ждение: машина никогда не ошибается. С этим не следует спорить: ПЭВМ или работает, или не работает, третьего не дано, поскольку мощные средства самотестирования без труда определяют работоспособность всех ее устройств. Следующее утверждение, надеюсь интуитивно не вызы­ вающее сомнений, станет базой индукции. Оно формули­ руется так: можно безошибочно написать работающую программу, состоящую из одной команды. Используя эту базу, путем индукционного перехода мы убеждаемся в том, что можно безошибочно написать программу любого объема, работающую без ошибок. Принципиальное отличие сформулированного опти­ мистического афоризма от фатального взгляда на про­ граммы прошлых лет, казалось бы, перечеркивает саму возможность рассмотрения в философском смысле про­ грамм как произведений искусства, поскольку безоши­ бочно работающая программа, как абсолютная истина, не допускает дальнейшего совершенствования. Но это не так. Если провести простую аналогию в области техники, то нельзя назвать самолетом устройство, которое через раз взлетает и через раз приземляется. Нельзя также счи­ тать атомной электростанцией сооружение, которое може'D взорваться в любую минуту. Эта аналогия не столь да­ лека, поскольку вся сколько-нибудь сложная техника в настоящее время проектируется, создается и управ­ ляется с помощью ЭВМ, т. е. в конечном счете програм­ мами. Чтобы закончить это обсуждение и перейти к изло- 173
жению понятия диалога с конечным пользователем, можно предложить читателю следующий тест. Напишите блок-схему программы, которая если вве­ сти единицу, превращает ее в двойку, а если ввести О, то - в единицу. Написали? Давайте сверим ответы. начало ввод а а= a+l вывод а конец Программа работает? Работает, конечно, но до тех пор, пока на вход подаются нули или единицы. Если Вы предусмотрели проверку исходных данных - это очень хорошо. Вариант примерно такой: начало ввод а еслианеравноОианеравно1,то выдаТр сообщение~ «ошибка в исходных данных» перейти в начало; иначе a=a+l вывод а конец Стало немного лучше. И раньше этим можно было бы ограничиться. Кстати, фирма IBM использует этот тест при приеме на работу начинающих программистов. По­ следний ответ считается достаточным. Однако предполо­ жим, что эта программа или чужая, или давно Вами забытая. Много ли информации даст короткое сообщение об обнаруженной ошибке? Для систем, ориентированных на конечного пользователя, принципиальной является организация выдачи полной информации о процессе решения задачи, поэтому фраза об ошибке должна вы­ глядеть как действенная помощь, например так: «Вы работаете с программой, которая преобразовывает нули в единицы, а единицы - в двойки. Желаем удачи!» Этот вариант вроде бы не плох. Однако он также не страхует от, по крайней мере первой, ошибки. Не про­ граммы - тут стало все надежно, а от ошибки со стороны оператора. Избавим пользователя от первой ошибки. Для этого текст помощи поместим сразу после загрузки 174
программы, при этом проверку на возможную ошибку оператора, разумеется, все равно оставляем: начало М: [помощь] ввод а еслианеравноОианеравно1,тонаМ; иначе а= a+l вывод а конец Вариант кажется убедительным. Но клавиши «О» и «1» надо еще найти на клавиатуре, что требует повышен­ ного внимания, кроме того, если Вы давно работаете с программой, то помощь, которую Вам будет услужливо предлагать машина при любой вашей ошибке, покажется раздражающе назойливой. И наконец, Вы никак визу­ ально не контролируете, что ввели. Конечно, эта про­ граммка даст результат так быстро, что палец еще оста­ нется на клавише. Однако если программа управляет чем-то важным, хотелось бы до конца понимать, что происходит в системе. Постараемся до минимума снизить вероятность сбоя проектируемой чеповекомашинной системы, для чего из­ бавимся от выяВJiенных недостатков. Будем рассуждать так. Поскольку программа ничего кроме нупей и единиц не обрабатывает, оставим за поль­ зователем возможность нажимать только две клавиши, причем, так как кпавиmи сО» и cl» расположены неудобно, откажемся от них вообще. Далее, вызов необходимой помощи организуем лишь по желанию пользоватепя. И поспеднее - будем остаВJiять на экране введенную пользователем цифру. Описание такой блок-схемы удобнее выполнить, ис­ попьзуя эскиз помещаемого на дисплей поспе загрузки программы кадра (рис. 7.1). Используя знания о реальном процессе, проходящем вне рассматриваемой задачи, можно еще немного упуч­ шить модель. Пусть нам известно, что, например, сО» выбираm чаще, тогда после загрузки программы окно с нулем сразу сделаем активным - курсор помещается в это окно, что отображается более ярким цветом. Для по.u;rверждения выбора будем использовать клавишу «ВВОД», для пере­ ходов между «О» и «1» - клавишу пробел. Помощь - по клавише F 1. Нажатие всех остальНЬIХ клавиш или их 175
0 [iJ помощь 1 Отбет □ r1-помощь !выбор-пробел 1Решение-ввод !выход Рис. 7.J комбинаций может сопровождаться звуковым сиг­ налом. После выбора нужной цифры полученный результат решения помещается в отведенное окно, при этом выбран­ ная цифра остается на экране. Итак, мы избавились от всех отмеченных недостатков. На этом небольшом при­ мере удалось продемонстрировать современный стиль организации диалога с конечным пользователем. Как видно, собственно программа как блок вычислений заняла весьма незначительное место. Быть может некоторым нетерпеливым читателям по­ кажется, что проблема надумана и попросту «раздута» автором из ничего, точнее из ничего и единицы. Поста­ раемся показать, что это не так. Изменим начальные условия задачи. Пусть требуется написать программу, которая текст верхнего абзаца этой страницы (в условиях первой задачи это было нулем) преобразовывает в единицу, а текст нижнего абзаца (бывшая единица) - в двойку. Понятно, что если этой программой будут пользо­ ваться тысячи раз и если текст этой страниш,1 сам по себе меняться не будет, то ясно, что все вариан1ъ1 программ, кроме последнего, окажутся для конечного пользователя не очень удобными в работе, вернее сказать, это будет не работа, а мучение. В последнем же примере в окна, предусмотренные для нуля и единицы, мы вольны помещать, в общем-то, все, что угодно: имена файлов, числа, текст и даже гра­ фику. Эrо типичный пример многооконного интерфейса 176
с конечным пользователем, средства для организации которого сейчас активно разрабатываются. Такой широ­ кий взгляд «в окно», думается, скоро позволит рассма­ тривать окна как -равноправные с файлами основные информационные объекты ПЭВМ. Постоянно совершенствуясь, ПЭВМ дают сильный толчок в этом направлении. Еще одним мощным фактором является создание «интеллектуальных» внешних устройств, а также работы по созданию искусственного интеллекта, где вопросы диалога, накопления опыта и совершенство­ вания стоят на первом месте. В настоящее время отчетливо проявилась тенденция представлять работу программ, а иногда и целых систем в виде совокупности специфических, статически разме­ щаемых данных или данных специального вида. И многие проблемы, возникающие при создании сложных программ­ ных систем, действительно удалось решить или упро­ стить таким образом. Современные программные средства персональных ЭВМ ярко иллюстрируют эту тенденцию. В качестве другой иллюстрации можно привести пример развития языков программирования и операционных систем как средств общения с машиной. Некоторые разработчики пытаются представить весь вычислительный процесс, а также вмешательство чело­ века в ход работы, как действия с теми или иными дан­ ными специального вида. К сожалению, не все проблемы пока удалось решить таким образом, но все же этот под­ ход представляется интересным. Существуют различные взгляды на то, что следует включать в понятие диалога с конечным пользователем. Если в широком смысле рассматривать функции, реализуемые диалогом, то можно выделить две группы: управления данными, управления процессами. В соответствии с этим делением можно, условно ко­ нечно, поскольку границы между группами меняются по мере развития аппаратно-программных средств, пере­ числить функции, реализуемые в группах. Функции первой группы: описание способа предста­ вления данных и их взаимосвязи; защита от несанкциони­ рованного доступа; преобразование данных из различных форм представления; операции над данными. Функции второй группы! контроль состоянпя процес­ сов; контроль состояния всей вычислительной системы и правильности взаимодействия процессов; обеспечение 177
надежности функционирования как отдельных процессов, так и всей системы; адаптация, совершенствование, раз­ витие системы. Организовать диалог управления данными можно, используя ранее рассмотренные программные средства. Разработка диалога управления процессами осуществ­ ляется с помощью специальных средств: файловых систем для организации обмена данными с ВУ и преобразования данных в ОЗУ; утилит для работы с программными дан­ ными (системными и проблемными); языковых средств, предоставляющих возможность, например, работать с эк­ раном дисплея как с двух- или трехмерным массивом, обмениваться событиями так же, как и данными, рабо­ тать с системой прерывания как с таблицей; ОС, дающих возможность отобразить состояние вычислительного про­ цесса как набор специальных данных. На основе этих средств строятся системы, специально ориентированные на реализацию диалога управления дан­ ными, т. е. СУБД, табличные процессоры, интегрирован­ ные программные средства и ir. п. Разработка таких систем основывается на том, что первоначально строится информационная модель, ото­ бражающая состояние статических данных, ВУ, процес­ сов взаимодействия программ, состояние вычислитель­ ного процесса, состояние обмена событиями между про­ цессами или человеком, состояние потоков данных. Эrа модель имеет свое отображение в памяти ЭВМ. Для кон­ ~rроля со стороны пользователя и управления состоянием достаточно иметь возможность доступа к этим специаль­ ного вида данным. Такие диалоги приходилось строить ранее в системах реального времени и иногда в интерактивных системах. Наиболее удачными оказались системы, построенные по принципу распределенного управления. В частности, диалог рассматривался в них как равноправный с осталь­ ными процесс со своими средствами внутреннего упра­ вления и общими для всех процессов средствами взаимо­ действия. Эrа простая идея равноправия процессов и позволяет диалогу адекватно отражать состояние всего процесса. Если точнее, в этих системах всем подсистемам дается равный доступ к ресурсам системы и средствам управления. Наиболее сложными в этих разработках оказались вопросы организации интерфейса между процессами, 178
а также создания системных средств поддержки устойчи­ вости процессов обмена информацией. Примером «про­ зрачного» и достаточно полного решения этой проблемы является разработанная известной фирмой АТ & Т опе­ рационная система UNIX [16), в которой учитываются рекомендации Международного консультативного коми­ тета телеграфии и телефонии (lnternational Telegraph and Telephone Consultative Committee - ССIТТ). Эrи рекомендации,. являющиеся международным стандартом, содержат также и стандарты на диалоговые системы и диалоговую оболочку. Сравнивая возможности ПЭВМ разных поколений, можно легко обнаружить тенденцию постепенной пере­ дачи функций отображения состояния вычислительного процесса аппаратным средствам. Одновременно с этим новые версии операционных систем предоставляют про­ блемным разработчикам все более широкий набор про­ граммных средств для работы с внешними устройствами (стандартные драйверы и наборы подпрограмм обработки прерываний ввода-вывода, средства управления ходом вычислительного процесса, в том числе для работы с си­ стемой или векторами прерываний, обмена событиями и т. д.). При этом разработчики имеют возможность присоединять или заменять драйверы на свои, задавать и по-своему отрабатывать некоторые события в ходе вычислительного процесса. Все это характеризует стрем­ ление к децентрализации функций управления вычисли­ тельными процессами. То, что пользователь воспринимает, находясь за пуль­ том ПЭВМ, это не весь диалог, а лишь визуальное (ино­ гда и звуковое) его отображение, поскольку средства для непосредственной поддержки внешнеrо диалога с конечным пользователем составляют, как правило, лишь незначи­ тельную часть программного обеспечения пакета. Осталь­ ная, и большая, часть средств управления скрыта от поль­ зователя. Только за счет этого удается сделать диалог простым, наглядным, ориентированным на профессио­ нальные привычки и, конечно, надежным. Будем пони­ мать под термином диалоговая оболочка средства упра­ вления процессом диалога, отнесенные к пользователю. Можно отметить ряд признаков, характеризующих со­ временные требования к диалоговым оболочкам. Аппаратные средства ПЭВМ позволяют отображать на экране дисплея и управлять графическим и цветным 179
изображением движущихся объектов различной природы, сложными структурами данных, создавать картину ди­ намики происходящих процессов и простым нажатием клавиш управлять разворачивающимися на экране собы­ тиями. Это делает процесс диалога, таким образом, на­ глядным и естественным. Однако разработчики современ­ ных программных средств идут дальше. Сейчас во многие пакеты программ, предназначенные для серьезной ра­ боты, зачастую вносятся игровые моменты с целью предо­ ставления пользователю отдыха, если обнаруживается, что участились ошибки, т. е. наступило утомление и ос­ лабло внимание. Важное для всех пользователей качество программ­ ного средства, особенно проявляющееся при выполнении сложной или требующей внимания работы, - система помощи и средств обучения, которыми снабжаются прак­ тически все современные прикладные пакеты. Эти средства существенно ускоряют как процесс освоения, так и про­ цесс работы. Еще одно свойство современного диалога - простота работы с конкретным пакетом. Это трудно фор­ мализуемое понятие включает в себя целый комплекс приемов, делающих работу с новым пакетом узнаваемой и привычной. Для создания пакета, удовлетворяющего этому требованию, разработчику необходимо r лубоко изучить выбранную предметную или функциональную область. Проявлением этого свойства является форма организации диалога, используемая в современных про­ граммных средствах, отражающая не только специфику данных, с которыми производится работа, но и в ряде случаев учитывающая профессиональную привычку поль­ зователя видеть эти данные в том или ином виде. Поэтому освоение основных функций практически любого пакета программ не должно предполагать специальных знаний, в частности, языков программирования, и должно быть доступно любому пользователю. У каждого современного пакета прикладных программ имеются свои средства для организации диалога с конеч­ ным пользователем, при этом единообразие аппаратных средств и определенные сложившиеся традиции позво­ ляют строить диалоги с пользователем формально похо­ жими друг на друга. Это - использование функциональ­ ных клавиш для вызова той или иной функции, приме­ нение управляющих клавиш или их комбинаций для управления состоянием процесса вычислений, использо- 180
вание переназначения клавиш управления клавиатурой для организации эффективного движения по экрану дисплея, многоэкранный режим работы и целый ряд других приемов, включая использование и специальных устройств типа «мышь» или «джойстик». В настоящее время на отечественных ПЭВМ основным и, можно ска­ зать, единственным средством ведения диалога со стороны пользователя является клавиатура. Приятным исключе­ нием является «мышь>> по имени «колобок», поставляемая с ПЭВМ с~рии ЕС, начиная с модели ЕС-1842. В персональных ЭВМ ч::~ще всего используется древо­ видная модель представлекия процессов. Точно так же строится и диалог с пользователем. А именно: в начале работы пакета высвечиваются основные возможные вет­ вления процесса - на экран выводится r лавное или стар­ товое меню. Клавишами движения по экрану можно передвинуть курсор к нужной функции и запустить эту ветвь процесса. В ходе выrюлнения ветки возможны дальнейшие ветвления процесса, которые отображаются определенными кадрами меню. После завершения выбора пользователь получает возможность ввода данных, тре­ буемых для дальнейшего выполнения процесса. Обычно предусматривается возможность движения по дереву не только вниз, но и вверх. Принято отводить кла­ више «ВВОД» функцию движения вниз по дереву, кла­ више «КЛЮЧ» - вверх, а клавише «ПРОБЕЛ» - пере­ мещение с ветки на ветку; эти клавиши расположены на одном уровне. Необходимо помнить, что наши аб­ страктные деревья растут кроной вниз. Можно ·сказать, что состояние процесса в общем случае представлнется точкой на графе и кап.ром на дисплее. Подсказка­ помощь строится так же. В любой момент выполнения программы на экране высвечивается окно с информацией, относящейся именно к этому состоянию работы программы. Если дерево (очень густое и ветвистое), то для быстрого выхода на нужный режим используются и стандартные клавиши управления движением курсора на экране. Таким образом можно получить полную информацию не только о текущем процессе решения задачи, но и об условиях дальнейшего хода работы, вернуться к исходному пункту, затребовать нужную помощь и т. д. без опасения потерять введенные данные и полученные результаты. Практически все процессы можно представить в виде q-аких деревьев. Существуют и более сложные с виду про- 181
nессы, но и их зачастую удается представить так же, вводя избыточность в описывающий их граф. Не будем останавливаться на этом подробно, так как вопросы ис­ следования графов, деревьев и их преобразований при­ менительно к этой области знаний рассмотрены в теории трансляторов с искусственных языков. Постоянно возрастающие требования к организапии диалога с конечным пользователем как основному спо­ собу организаnии работы на ПЭВМ обусловливают, для системного решения этой проблемы, на наш взгляд, использование достижений эргономики и современного дизайна. Если эргономика применительно к конкретному использованию при создании программ находится в на­ чале пути, то для дизайнового оформления диалога и программ как продуктов, поставляемых на рыно1<, раз­ работаны и широко используются целый ряд пакетов организации машинной графики. Можно назвать хотя бы Story Board. С помощью этих средств можно достаточно быстро подготовить рекламу пакета и демонстрационный макет. Конечно, создание хорошего рабочего сценария и проработка экранов требуют привлечения к их раз­ работкам специалистов-профессионалов. Опыт проектирования систем, ориентированных на зарубежный рынок, показывает, что такая совместная работа легко организуется. Достаточно лишь продемон­ стрировать художнику возможности, предоставляемые ПЭВМ. После чего прорабатывается сценарий, отража­ ющий основное содержание пакета, и готовятся эскизы экранов. Перевод на машину может выполнить или сам художник, или, если он очень занятый человек, любой программист, наделенный художественными способно­ стями. В этой связи следует, наверное, изменить взгляд на профессиональную подготовку самих программистов­ разработчиков, предусмотрев, по крайней мере для инте­ ресующихся, занятия, развивающие элементарный худо­ жественный вкус. Внешне привлекательное оформление диалога, эф­ фектная реклама не кажутся лишними. В условиях жест­ кой конкуренции на рынке программных средств очень часто именно выигрышное оформление решает судьбу пакета. Пословица «встречают по одежке ... » будет жить вечно. Убедившись, что проблема организации диалога до­ статочно сложна, ограничимся рассмотрением только поль- 182
зовательского аспекта, реализация которого потребуе~, конкретного программирования. Полезные рекомендации по организации работ, связанных с созданием крупных программных продуктов, можно найти в (19 ]. 7.2 . Примеры организации диалога Эволюцию диалога с конечным пользователем можно легко проследить, последовательно рассматривая версии известных пакетов, например, Supercalk II для В-разряд­ ных ПЭВМ, можно сказать, первого поколения. Легко обнаружить несовершенства этих диалогов, так как здесь используется только командный язык. Второе замечание касается организации работы с экра­ ном. Ограниченные возможности первых версий пакетов не позволяют организовать наблюдение за ходом процесса решения задачи - каждый следующий кадр занимает весь экран, стирая информацию о предыдущем этапе работы. Пользователь лишен возможности проследить, каким путем он вышел на данный этап решения. Это неудобство тем более существенно, если по условиям работы пользователь должен часто отвлекаться от реше­ ния задачи - отвечать на телефонные звонки, принимать посетителей и т. п. Рассмотрим некоторые приемы, используемые дЛя организации диалога с конечным пользователем. В пер­ вых двух примерах показано, как можно эффективно организовать движение курсора по экрану, содержащему некоторое меню, и осуществить выбор необходимых функций. В последнем - третьем - примере показан прием организации работы с окнами - мноrоэкранный режим работы. Примеры, выполненные на Бейсике, демонстрируют не только удобство диалога, но и относи­ :rельную простоту программной реализации. Можно было бы сделать, казалось бы, напрашива­ ющийся шаг и объединить эти примеры в одну программу, оснастив ее, в свою очередь, удобным диалогом, то есть оформить эти примеры как один универсальный пакет дЛЯ организации диалога с конечным пользователем. Кстати, за рубежом некоторые фирмы выпускают такие средства. Можно назвать пакет Panel, обслуживающий С-программы, и в частности СУБД db Vista или пакет Flash up Windows, специально предназначенный для dBASE 111 Plus. Однако желаемая универсальность не достигается, поскольку 183
появляются не только новые версии программ, для кото­ рых готовились эти надстройки, но и новые версии транс­ ляторов - в данном случае с языка С, что заставляе11 писать очередную «универсальную» программу. Автор не считает себя пессимистом, но за все время работы на ЭВМ, начиная с первых и самых любимых машин «Проминь» и «Мир» (спасибо их создателям) до современных моделей ПЭВМ: IВМ РС, ХТ, АТ, PS/2 все многочисленные наблюдаемые попытки создать нечто универсальное оказывались тщетными. Любопытно, что интервал времени, требуемый для доказательства не­ удачи очередной попытки обнаружения «философского камня» в области программирования, сокращается все быстрее и быстрее. Естественно, что появление каждой очередной более производительной ЭВМ просто пере­ черкивает все предыдущие достижения в области конкрет­ ного программирования. Можно сформулировать закон жизни программ: программа жива, пока суще­ ствует машина, на которой эта программа эксплуати­ руется. Несмотря на то что следующая модель ЭВМ чаще всего поддерживает программное обеспечение предыдущей моделп (можно упомянуть такие известные пары, как «Минск-22, -32», «Нева-501» и «Искра-1030»), не удалось, к счастью, обнаружить ни одного равнодушного програм­ миста, который бы тупо этим воспользовался. В самом деле, кто будет переносить даже очень хорошую про­ грамму, выполненную средствами dBASE II для Robo- tron-1715, на, скажем, ЕС-1842, предварительно не пере­ писав ее - не «усилив» для того, чтобы полностью ис­ пользовать и возможности машины, и, разумеется, новой версии СУБД? Однако, как всегда, обнаруживаются исключения. Это, как ни странно, программы-игры. Большинство из них написаны на Бейсике, что делает их легко перено­ симыми и достаточно надежно защищенными от попыток улучшения. Но причина их неизменности и живучести, конечно, не только в этом. Представляется, что данное природой человеку стремление к совершенствованию так надежно приковывает его к какой-то давно выбранной игре, что всякая новая игра, в которой он неминуемо надолго оказывается дилетантом, является для него весьма нежелательной. Вернемся к примерам. 184
В первых двух на экран выводятся меню. Один из кадров меню подсвечивается. Пользователь может кла­ вишами движения по экрану подвести курсор с подсвет­ кой к нужной команде, клавишей «ВВОД» подтвердить свой выбор и перейти к выполнению данной команды. Сами программы отработки команд не приводятся. В ка­ честве имен команд используются «заглушки» - названия нветов: «черный», «синий», ... , «ярко-белый» и т. д. Для организании реального диалога пользователь должен вместо «заглушки» поместить требуемые имена и органи­ зовать переход на соответствующие программы обработки эгих команд. Прежде чем рассматривать примеры, напомним, что: для организации подсветки выводимой информации ис­ пользуется оператор color О, 15, а для восстановления обычного режима цветности букв - оператор color 15,0; для подачи звукового сигнала в случае некорре1<пюго нажатия той или иной клавиши - оператор Ьеер; для перемещения курсора в нужную позицию экрана дис­ плея - оператор locate row%, column %. П р и м е р 1. Организация работы с табличным меню (формирование таблицы функций, управление движением курсора и выбор функций). Этот прием целесообразно использовать в случаях, если количество предлагаемых функций не превышае1J 15-20. Как частный случай табличного меню можно использовать (для выбора песколышх функций) строко• вые или столбцовые меню, реализуемые этой же про­ граммой. Пусть поставлена задача организации выбора требуе- мого цвета из предлагаемого набора: Черный Красный Синий Светло-фиолетовый Зеленый Золотистый Голубой Серый Розовый Желтый Ярко-белый Темно-серый Светло-синий Ярко-зеленый Светло-голубой Светло-пурпурный Для управления движением курсора будем исполь­ зооать стандартные клавиши. Количество строк и столбцов таблицы меню задается в строке 20 параметрами М % и N % соответственно. Для таблицы команд зарезервирован в строке 30 массив S$, а описание имен команд происходит в строках 40-190, 185
параметр t % задает величину поля в таблице меню. Строка 450 содержит команду end, в реальной программе здесь должен быть организован переход на программу отработки внутренней функции-команды. Ниже приво­ дится текст этой программы: 5 rem 'Выберите цвет из приведенной таблицы 10 cls: option base 1 20 М%=4: N%=4: t%=18: 1%=4 30 dim а%(М%, N%), Ь%(М%, N%), s$(M%, N%) 31 CRL%(M%, N%) 40 s$(1,l)=«Черный»: CRL%(1,l)=l 50 s$(2,l)=«Синий»: CRL%(2,1)=2 60 s$(3,l)=«Зеленый»: CRL%(3,1)=3 70 s$(4,l)=«Голубой»: CRL%(4,1)=4 80 s$(1,2)=«Красный»: CRL %(5,1)=5 90 s$(2,2)=«Светло-фиол~т.»: CRL%(6,l)=6 100 s$(3,2)=«3олотистый»: CRL%(7,1)=7 110 s$(4,2)=«Серый»: CRL%(8,l)=8 120 s$(1,3)=«Темно-серый»: CRL%(9,1)=9 130 s$(2,3)=«Светло-синий»: CRL %(10, 1)= 10 140 s$(3,3)=«Ярко-зеленый»: CRL %(11, l)= 11 150 s$(4,3)=«Светло-голубой»: CRL %(12, l)= 12 160 s$(1,4)=«Розовый»: CRL %(13,1)= 13 170 s,ъ(2,4)=«Светло-пурпур.»: CRL %(14, 1)= 14 180 s$(3,4)=«Желтый»: CRL%(15,1)=15 190 s$(4,4)=«Ярко-белый»: CRL%(16,1)=16 200fori%=1to4:forj%=1to4 210 b%(i%, j %)=t% * (j %-1)+1 220 next j%: next i% 230 print «выбери·1е цвет курсора» 231 print : print : print 240 ii%=1: jj%=1: gosub 460 250 K$=inkey$ 251 if len(k$)=0 then 250 else k%=asc(k$) 260 if k%= 13 or k%=3 then 450 270 if len(k$)( 12 then Ьеер 271 goto 250 else k % =asc (right$(k$, 1)) 280 if k % =77 then goto 420 'вправо 290 if k % =75 then goto 390 'влево 300 if k % =72 then goto 360 'вверх 310 if k % =80 then goto 330 'вниз 320 Ьеер: goto 250 330 if ii%<M% then ii%=ii%+1 186
331 goto 350 else ii%=1 340 if jj%<N% then jj%=jj%+1 etse jj%=1 350 gosub 460 : goto 250 360 if ii%>1 then ii%=ii%-l 361 goto 350 else ii%=М% 370 if jj%;::. 1 then jj%=jj%-I else jj%=N% 380 goto 350 390 if jj %;:::. l theп jj %=jj%-1 391 goto 350 else jj %=N % 400 if ii%> l then ii%=ii%-1 401 goto 350 else ii % =1\1 % 410 goto 350 420 if jj%<N% then jj%=jj%+l 421 goto 350 else jj %= 1 430 if ii%<М% then ii%=ii%+l 431 goto 350 e\se ii%=1 440 goto 350 450 end 460 \ocate 1%, l: CL%=CLR%(i%, j%) 470 for i%=l to М%: for j%=l to N% 480 if i%=ii% and j%=jj% then color О, CL% else color CL%, О 490 locate I%+i%, b%(i%, j%) 500 print s$(i %, j %); 51О пехt j%, i% 520 color 15,0 530 return П р и м е р 2. Если необходимо организовать выбор в большом количестве функций (15-20 и более), то ра­ ционально, чтобы не загромождать экран и упростить поиск, использовать ниспадающее меню. Для большего удобства пользователя на этапе постановки задачи необ­ ходимо, как принято говорить, декомпозировать систему, разбив ее на группы однотипных по некоторому признаку функций - подсистем. Имена подсистем образуют эле­ менты строкового меню, после выбора нужной подсистемы из нее «выпадает» входящий в нее набор функций, и поль­ зователь продолжает дальнейший выбор функций и ввод требуемых данных в рамках «нижнего» набора функций. После запуска программы на экране высвечивается r лавное меню, которое предлагает пользователю выбрать четыре функции (в нашем случае четыре палитры цветов, скомпонованные как строковое меню). Перемещение по 187
строковому меню осуществляется а помощью клавиш управления горизонтальным движением курсора. Выбрав нужную палитру нажатием клавиши (ВВОД), под этим кадром главного меню появляется меню uветности кур­ сора. Пользуясь стрелками управления движением «вверх» или «вниз», можно выбрать нужный uвет. Нажа­ чие клавиши «ВВОД» обеспечит дальнейшее выполнение программы. Приводим текст этой программы: 10 rem 'Пример ниспадающего меню 20 option base 1 30 М%=4: N%=4: t%=18: 1%=5 40 dim Ь%(М%, N%), s$(M%, N%), с$(М%), CLR% (М%, N%) 50jc%=1 60 cls 70 с$( 1) =«Темные»: 71 CRL%(1,1)=1 : 80 CRL%(2,1)=2 : 90 CRL%(3,1)=3 : 101 CRL%(4,1)=4 s$( 1, 1) =«черный» S$(2, !)=«СИНИЙ» s$(3, !)=«зеленый» s$(4, !)=«голубой» 110 s$(2)=«Светло-темные»: s$(1,2)=«красный» 111 CRL%(5,1)=5 120 121 CRL %(6, 1)=6 130 131 CRL%(7,1)=7 141 CRL%(8,1)=8 s$(2,2)=«светло-фиолетовый» s$(3,2)=«золотистый» s$(4,2)=«серый» 150 s$(3) =«Темно-светлые»: s$(1,3) =«темно-серый» 151 CRL%(9,1)=9 160 161 CRL %(10, 1)= 10 s$(2,3) =«светло-синий» 170 s$(3,3) =«яр1{0-зеленый» 171 CRL%(11,1)=11 180 181 CRL%(12,1)=12 s$(4,3) =«светло-голубой» 190 с$(4)=«Светлые»: s$(1,4)=«розовый» 191 CRL%(13,1)=13 200 201 CRL%(14,1)=14 210 211 CRL%(15,1)=15 220 221 CRL%(16,1)=16 188 s$(2,4) =«светло-пур пур11ый» s$(3,4) =«желтый» s$(4,4) =«ярко-белый»
230fori%=1to4: forj%=1to4 240 b%(i%, j%)=t% * (j%-1)+1 250 next j%: next i% 260 print ~ 261 print «Выберите режим работы с курсором» 262 print : print 270 1% =3: gosub 440 280 1%=5: jj%=jc% : ii%=1: gosub 610 290 k$=inkey$ 291 if len(k$)=0 then 290 else k% =asc(k$) 300 if k%=13 then 430 301 if k%=27 then goto 60 310 if len(k$H ~2 then Ьеер 311 goto 290 else K%=asc(right$(k$,l)) 320 if k%=72 then goto 370 'вверх 330 if k %=80 then goto 380 'вниз 340 Ьеер: goto 290 350 if ii%<М% then ii%=ii%+1еlse ii%=1 360 gosub 610: goto 290 370 if ii%>1 then ii%=ii%-l else ii%=M% 380 goto 360 390 if jj%>1 then jj%=jj%-l else jj%=N% 400 if jc%>1 then jc%=jc%-I else jc%=M%: goto 60 410 if jj%<:SN% then jj%=jj%+1 else jj%=1 420 if jc%<M% then jc%=jc%+1 else jc%=1: goto 60 430 end 440 for j%=1 to N%: CLR=CLR%(i%, j%) 450 if j%=jc% then color О, CL% else color CL%, О 460 locate 1%, b%(1,j%): print c$(j%); 470 next j% 480 print 490 k$=inkey$: if len(k$)=0 then goto 290 else k % =asc(k$) 500 if k%= 13 then return 510 if k%=27 then goto 430 520 if len(k$) ( }2 then Ьеер: goto 490 else k%=asc(right$(k$,1)) 530 if k %=75 then goto 560 540 if k%=77 then goto 580 550 Ьеер: goto 490 560 if jc%>1 then jc%=jc%-l else jc%=M% 570 goto 440 580 if jc%<M% then jc%=jc%+1 else jc%=1 590 goto 440 189
600 return 610 locate 1%, 1 620 for i%=1 to М%: CLR=CLR%(i%, j%) 630 if i%=ii% then color О, CLR% еlse color CLR %, О 640 locate 1%+i%, b%(i%, jj%) 650 print s$(i%, jj%) 660 next i% 670 color 15,0 680 return Отметим еще три важных качества этих программ: 1) возможность исправить допущенную ошибку, так как клавиша «КЛЮЧ» позволяет выйти к предыдущему этапу работы программы (предыдущему меню); 2) возмож­ ность защиты от некорректного нажатия клавиш, то есть если пользователь нажмет «не ту» клавишу, ему подается звуковой сигнал; 3) возможность настройки диалога на необходимый пользователю режим работы, поскольку, если какие-либо команды меню не вызываются, они остаются невидимыми на экране. П р и м ер 3. Подпрограмма работы с окнами - организация многооконного интерфейса - представлена ниже: 10 def fnpl %(ac%)=ac%+(fix(ac%/128)-fix(ac%/16)) * 16 20 def fnph%(ac%)=fix(ac%/16)-fix(ac%/128) * 8 25 dim in$(25, 80), in% (25, 80), ou$(25, 80), ou% (25, 80) 26 c\s 30 print «Задайте координаты окна» 40 input «левый верхний угол -», х1%, у1% 41 input «~:~равый нижний угол----~», х2%, у2%: r%=x2%-xl%: с%=у2%-у1% 45 restore 1000 50 for 1%=0 to r%: for j%=0 to с% 60 read ou$ (i%, j%) 61 next j%: next i%: restore 2000 62 for i%=0 to r%: for j%=0 to с% 63 read ou% (i%, j%) 64 next j%: next i% 70 input st$: if st$ {} «window» then goto 70 80 for r%=xl% to х2% : i%=r%-xl%: locate r%, у1% 90 for с%=у1% to у2х : j%=с%-к1% 1100 in$ (i%, j%)=chr$ (screen (r%, с3⁄4, О)) НО in %(i%, j%) = screen (r%, с%, -1) : o%=ou% (i%, j%) : о$ =ou$ (i%, j%) 120 color fnpl % (0%), fnph (о%) 130 if с%>у1% and с%<у2% then print о$; 135 if r%=yl% or с%=у2% tl1en print «:»: j%=j%-l 140 next с% 150 next r% 100
160 k$=inkey$: if 1en(k$)=0 then goto 160 e1se k%=asc (k$) 170 if k%= 13 then goto 30 175 if k%=33 then stop 180ifk% ()27then Ьеер :goto 160 190 for r%=xl% to х2% : i%=r%-xl%: locate r%, у1% 200 for c%=yl% to _12% : j%=c%-yl% 210 о%= in% (i%, j(}o) : о$= in$ (i%, j%) 220 color fnpl % (01/о ), fnph% (о%) : print о$; 230 next с% 240 next r% 250 goto 160 1000data.,.,.,э,т,о,.,.,.,.,.,.,о,к,н,о,.,.,., 1001data.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,., 1010data.,.,.,с,л,у,ж,и,т,.,.,.,д,л,я,.,.,.,., 1011data.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,., 1020data.,.,.,и,л,л,ю,с,т,р,а,ц,и,и,.,.,.,,,., ]021 data . , . ,., . ,., . ,., . ,., .. ,., . ,., . ,., . ,., . ,., 1030 data . , . ,., . ,., . ,., . ,., . ,., . ,., . ,., . ,., . ,., 1031 data 1040 data 1041 data .'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.' . ,р,а,б,о;т,ы,.,.,с,.,~,.,.,.,.,.,.,., . ,. ,. ,. , ,о,к,н,а,м,и, ,.,.,.,.,.,.,., 1050 data . , . ,., . ,., . ,., . ,., . ,., . ,., . ,., . ,.1• , • , 1051data.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,., 1060 data . , . ,., . ,., . ,., . ,., . ,., . ,., . ,., . ,., . ,., 1061 data . , . ,., . ,., . ,., . ,., . ,., . ,., . ,., . ,., . ,., 1070 data . , . ,., . ,., . ,., . ,., . ,., . ,., . ,., . ,., . ,., 1080data,,. , . ,., . ,., . ,., . ,., . ,., . ,., . ,., . ,., . , 1090 data . , . ,., . ,., . ,., . ,., . ,., . ,., . ,.,., . ,., . , 1100data.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,., 2000datal,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 2001 data 19, 20 2010 data 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35 2011 data 36, 37, 38, 39, 40 2020 data 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55 2021 data 56, 57, 58, 59, 60 2030 data 61, 65, 70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120 2031 data 125, 130, 135, 140 2040 data 145, 150, 155, 160, 170, 175, 180, 185, 190, 195, 200 2041 data 205, 210, 215, 220 2050 data 225, 230, 240, 245, 250, 255, 62, 63, 64, 65, 66, 67, 68 2051 data 69, 70, 71, 72, 75, 67 2060 data 34, 3, 45, 56, 67, 134, 78, 6, 56, 7, 122, 254, 123, 245, 234 2061 data 201, 202, 203 2070 data 204, 205, 206, 207, 208, 209, 210, 21 l, 212, 213, l, 214 2071 data 215, 217, 216, 218 2080 data 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 229 2081 data 230, 231, 232, 233 2090 data 234, 235, 236, 237, 239, 240, 241, 242, 243, 244, 245, 246 2091 data 247, 248, 249, 250 2100data251,252,253,254,255,1,2,3,4,5,6,7,8,9,12,12,13 2101 data 124, 15, 23, 14, 23, 3 2110 data 34, 3, 45, 78, 56, 6, 67, 67, 56, 133, 134, 34, 45, 5, 5, 34, 56 2111 data 7, 7, 2, 78, 89 2120data23,45,12,45,56,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8 191
2121data9,1,2,3,45,34,3 2130 data 3, 34, 234, 34, 123, 234, 235, 254, 255, 255, 255, 255, 255 2131 data 255, 255, 255 2140data23,34,6,54,45,56,5,5,45,56,56,56,56,5,3,56,56,3 2141 data 56, 7, 7, 86, 56, 45 2150 data 56, 56, 56, 56, 56, 56, 56, 56, 5, 56, 56, 56, 56, 56, 56, 65 2151 data 56, 56, 56, 56, 56, 56, 56 2160data5,5,54,56,56,34,3,5,45,65,67,78,78,89,98,89,78 2161 data 78, 78, 78, 89, 89, 56 Эта программа позводяет выводить окна любого раз­ мера в любом месте экрана. Содержимое окна задается строками с 1000 по 1100. Цветность каждого символа в окне может быть произвольной и задается строками с 2000 по 2100. Так же, как и в предыдущих примерах, нажатие клавиши «ВВОД» позволяет перейти к выпол­ нению выбранной команды - в нашем случае программа запрашивает место расположения следующего окна. Та­ ким образом, на экране дисплея можно. разместить не­ сколько требуемых 01юн в нужных местах и в нужном порядке. Причем окна на экране могут заслонять друг друга подобно раскиданным на столе картам. Вернуться " предыдущему режиму работы (убрать карту со стола) позволяет клавиша «КЛЮЧ», при этом окно стирается, а содержимое заслоненной окном части экрана восста­ JJ а РЛИ IJается. Отметим, что окна, созданные этой про­ граммой, могут быть использованы и для ввода данных и для организации помощи. Рассмотренные программы, такие как «каркас», можно использовать для создания систем, в которые введены подпрограммы, реализованные кроме Бейсика также на Ассемблере и Си. В целом же организация работы много­ программных комплексов, компоненты которых реализо­ ваны с помощью различных инструментальных и языко­ вых средств, является самостоятельной, достаточно слож­ ной проблемой. Заканчивая обсуждение проблемы организации диа­ лога с конечным пользователем, хочется предостеречь от другой крайности - чрезмерной детализации диалога, увлечения «игрой в вопросы и ответы». Что имеется в виду? Разработчики программных средств нередко выносят логику обработки различных элементарных оши­ бок на экран, вовлекая в бессодержательный диалог пользователя. Этот недостаток не всегда заметен на этапе обучения работе с системой, однако с получением опре­ деJiенного навыка пользователь начинает раздражаться 192
бесконечными очевидными вопросами и ожидавшееся повышение производительности труда не достигается. Можно, конечно, призвать проектировщиков создавать самообучающиеся системы. Но как? Известно, что каж­ дая область автоматизации имеет свои, именно ей прису­ щие, особенности, что каждый раз 1ребует индивидуаль­ ного подхода к проектированию систем управления или обработки данных. Общим же для большинства систем (АРМ, САПР) является процесс ввода данных. И чаще всего организация этого процесса является самым уязви­ ·мым местом в построении удачного диалога. Представля­ ется, что для рациональной организации диалога управле­ ния данными полезно использовать накопленный опыт работы систем, созданных на базе больших ЭВМ, поддер­ живающих чаще всего пакетный режим обработки. При всех известных недостатках систем централизованной обработки данных они имеют одно неоспоримое досто­ инство - очень высокую скорость подготовки данных, которая обеспечивалась профессионалом-оператором с по­ мощью простейших устройств ввода. Это достигалось за счет использования жесткого формата и работы в ко­ дах, чаще всего только с цифровой клавиатурой. Данные на любом носителе (перфокарта, перфоJ1ента, магнитная лента) группировались в блоки и снабжались контроль­ ными суммами, что позволяло без труда найти блок, содержащий ошибку, а использование, в случае громозд­ ких записей, контрольных сумм по строке или кода с контролем, например, по модулю некоторого простого числа, давало возможность идентифицировать ошибочную запись в блоке. Другое дело, что на этапах корректи­ ровки, выполненных в пакетном режиме в отрыве от непосредственного места ввода данных (возникновения информации), все достигнутые преимущества терялись. Использованне ПЭВМ 1,ак комплексного средства ввода, контроля и обработки данных может дать эффект только в случс1е учета всех факторов человеко-машинной системы. Применительно к проблеме построения диалога упра­ вления данными удобно представить будущего пользова­ теля не как равнодушного дилетанта, но как разумного человека, искренне заинтересованного в хороших резуль­ татах своего труда. Учитывая, что навьши работы при­ обретаются постепенно, нелесообразно предусмотреть в си­ стеме несколько (не менее двух) процедур ввода данных, обеспечивающих разный объем помощи и контроля. 9 lм11р11ов Н. Н. 193
1. Для начинающего пользователя следует обеспечить контроль каждого введенного реквизита с немедленной выдачей сообщений о выявленных ошибках и способах их устранения. 2. Для специалнста процедура обработки данных кон­ тролирует только правильный ввод всей запнси. 3. Для профессионала контро,1ь правнльности ввода данных может осуществляться на блоках запнсей (доку­ ментов или даже пачек документов - :-.1асс11вов данных). Запись данных в пю1ять должна производиться то.1ько поале полного завершения этапа контро,1я. Вызов той или иной процедуры ввода выполняет пользовате.1ь из ыеню, предложенного непосредственно пос,1е загрузки систе:--1ы.
Глава 8. СОЗДАНИЕ СОБСТВЕННОЙ ИНСТРУМЕНТАЛЬНОЙ СРЕДЫ 8.1. Что такое собственная инструментальная среда Говорить о создании собственной инструментальной среды вполне логично исходя из самого назначения персо­ нальной ЭВМ. Ознако:-vшвшись с содержанием предыду­ щих глав, нетрудно заметить, что одним из направлений совершенствования программных средств является соз­ дание все более удобного для пользователя окружения, понимая под этим функциональную поJiноту и организа­ цию диалога. Это характерно как для программных средств общего назначения (удобные ОС, языковые средства, rгекстовые редакторы, табличные процессоры, СУБД), так и для пакетов, ориентированных на конкретный вид дея­ rгельности (деловые, интегрированные ПС, пакеты обра­ ботки статистики, решения оптимизационных задач, бух­ галтерского учета, финансирования и т. п.), т. е. методо­ и проблемно-ориентированных программных средств. Естественное развитие этого процесса направлено в ко­ нечном счете на создание индивидуальных программных средств - автоматизированных рабочих мест (АРМ). Крупные предприятия, получающие ПЭВМ, размещают в специализированных организациях заказы на создание компJiексов АРМ для своих работников. Это дело, конечно, нужное, но и весьма дорогостоящее. Чтобы остальная группа, а их большинство, не чувствовала себя обделен­ ной, покажем, как можно самому сделать, а лучше ска­ зать - собрать необходимое для работы программное средство. Для описания предполагаемой технологии уме­ стна, вероятно, следующая аналогия. Собственная инструментальная среда ПЭВМ - это ваша среда обитания в общечеловеческом смысле: жилье, 111агазн11ы, инфраструктура, зона отдыха, но отнесенная н вашей производственной деятельности. Ее можно соз­ ДdТЬ «по кирпичику» - на это уйдет очень много времени. 9~ 195
Под «кирпичиками» понимаются исполиуемые языки программирования. Можно воспользоваться крупными блоками, например, средствами табличных процессоров или СУБД. Это тоже достаточно долго. Чтобы построить город своей мечты и успеть в нем пожить, лучше брать готовые дома, магазины, дороги, машины и т. п. Ваша роль, как главного архитектора, сводится к выбору из каталогов нужных компонентов и рациональному их раз­ мещению - привязке к местности. Причем можно не знать все особенности организации каждого компонента - Вас интересует лишь то, как бу­ дет обеспечен ограниченный, в смысле счетный, набор требуемых мя Вас свойств. Итак, это главное - для создания собственной инстру­ ментальной среды используются готовые программные средства. Как они работают, Вас абсолютно не интересует, главное - чтобы они выполняли те функции, которые Вам нужны. Это звучит, быть может, несколько цинично, но ведь сказано же: «Нельзя объять необъятное». Для наиболее эффективной работы создаваемая программная среда должна, разумеется, общаться с Вами на том языке, который Вам наиболее близок и понятен. Таким образом, собственная инструментальная среда - это совокупность программных средств, работающих под общим управлением на родном языке пользователя и реализующих требуемые функции. Для создания собст­ венной инструментальной среды после выбора компонен­ тов необходимо решить три проблемы: выполнить при необходимости адаптацию выбранных программных ком­ понентов на Ваш родной язык; организовать интерфейс между программными компонентами; разработат1, управ­ ляющую программу, содержащую общее меню функций полученной системы и, при необходимости, передачи про­ грамм другим пользователям, средства помощи и обу­ чения. Сразу скажем, что разработка управляющей про­ граммы может быть выполнена в перво:v~ приближении, например, с помощью командных файлов. Более удобный интерфейс с конечным пользователем можно организо­ вать, используя инструментальные средства, но это от­ дельная, достаточно сложная проблема. За рубежом раз­ работаны программы (многооконные 1111терфейсы), поз­ воляющие в приннипе решить проблему вз;:~имодействия нескольких программ, однако, учитывая, что они сами 196
занимают значительную память, область их возможного использования ограничена. Решение первых двух проблем мы проследим на при­ мере создания собственной инструментальной среды, объ­ единяющей уже знакомый интегрированный пакет Lotus 1-2 -3 и пакет решения задач линейного и целочисленного программирования. Какие цели в результате этой сверхинтеrрации дости­ гаются? Во-первых, собственная инструментальная среда в такой конфигурации может стать удобным средством для разработки в интерактивном режиме математических мо­ делей, описывающих весьма широкий круг объектов и процессов (например, в экономике, планировании и уп­ равлении производством, управле1ши запасами, планиро­ вании экспериментов и т. п.). Во-вторых, построенные с помощью данной инструментальной среды модели мо• гут стать средством конечного пользователя для решения конкретных задач в составе, например, автоматизирован­ ных рабочих мест различного назначения. -и наконец, в-третьих, выбранный состав компонентов, учитывая то, что структура Lоtus-файлов является неофициальным стандартом уровня представления данных при организа­ ции обмена информацией между различными локальными вычислительными сетями, обеспечит будущие расширяю­ щиеся информационные потребности. Рассмотрим пер­ вую и, пожалуй, самую сложную проблему - адапта­ цию программных средств. 8.2. Адаптация программных средств Использование программных средств ПЭВМ оказы­ вается наиболее эффективным в том случае, если конеч­ ный пользователь работает на своем родном языке. Обес­ печение возможности работы программы на языке, отлич­ ном от оригинала, принято относить к проблеме адапта­ ции. Вообще понятие адаптации значительно шире. В ко­ нечном счете работа по адаптации программных средств сводится к внесению изменений в программу. Многие опытные программисты, имеющие наработанный задел программ и обширные библиотеки, очень часто очередную программу разрабатывают в режиме внесения изменений в ранее созданную. Таким образом, грань между поня­ тиями «адаптация» и «разработка» весьма условна. 197
Правовую сторону акта адаптации изучает юридиче­ ская наука. Здесь же мы будем руководствоваться здра­ вы:-.~ смысло;-.1 и общечеловеческой моралью, которые в дан­ нт1 конкретно:-.1 случае выражаются в том, что ес.11и про­ грю1:-.1а приобретена законно, то она является личной, кооперативной и.тн, государственной собственностью поку­ пзте.11я, который вправе делать с ней все, что угодно, кроме повторной продажи, если это не бьто дополнительно ого­ ворено. Сложившаяся международная практика (это выясни­ лось в беседах, поэто:-.1у я не могу сослаться на какой­ либо документ) при решении пробле:мы авторства про­ гра:',\много продукта исходит из того, что нельзя при­ сваивать авторство на программу, содержащую более двух третей от своего объема заимствований какого­ либо одного продукта. Адаптация подразумевает как замену сообщений, вы­ даваемых программой, с языка оригинала на требуемый национальный язык, так и обеспечение ввода-вывода наборов букв национального алфавита во время рабочего сеанса. Мы не будем подробно останавливаться на замене со­ общений, выводимых на экран дисплея или принтер про­ граммой-оригиналом. Это относительно простая задача, которая сводится к просмотру файлов с программой, на­ хождению сообщений и их замене с помощью, например, утилит (NORTON, PC-TOOLS и др.). Отметим также программное средство Message Edi tor, специально создан­ ное для редактирования сообщений. Используя Message Editor, после загрузки ЕХЕ- или СОМ-файла с програм­ мой достаточно лишь указать минимальную длину сооб­ щения, после чего на экран дисплея будут последовательно выводиться для редактирования все сообщения длиной не менее указанной минимальной. Таким образом, замена сообщений с языка оригинала на национальный язык - довольно утомительная, но в большинстве случаев стандартно решаемая задача. Исключение составляют скрытые сообщения, т. е. сообщения, которые «не видны» при просмотре файла с програмыой. Для вывода таких сообщений могу, ис­ пользоваться достаточно сложные методы криптоrрафни. Сднако при:-.1енение скрытых сообщениii снижает эф,р~к­ т;шность програм:-.1 (увет1ч!!ваются R:)е,1я nтклика, а также просто ф:1зичсскнй объем проrраш1ы). По.это.'.tу 198
разработчики программ используют методы криптогра• фии лишь как средство зашиты торговой марки и реже НЕLР-файлов тех разделов программы, которые не влняют на функциональную работоспособность продукта. Для адапташrи на арабский язык, в которо~1 запись с.rюв ве­ дется справа налево, чисел - слева направо, отсутствуют гласные, а с:11ысл согласных зависит от их положения в слове, необходюю 1шеть ПЭВ.\\, операционную систе:-.rу и средства редактирования, ориентированные на работу ТОЛЬКО С ЭТИ:\! ЯЗЫКО~!. Расоютри:-.1 теперь пробле~rы, которые ~юrут возни­ кать при обеспече111ш ввода-вывода наборов букв на­ ционального алфавита во вре:мя рабочего сеанса. 1'\ы не с,1учайно сказаJш, что такие пробле:-.1ы могут возникать, ибо далеко не всегда они ю1еют место. С чем это связано? С;:елае:-.1 небольшое «отступление» в кодировку сюшолов для пэвм. Как известно, ввод-вывод в ,1юбой ЭВ1v\ организуется на основе определенной системы кодирования. В каче­ стве кода ПЭВМ широко распространен американский стандартный код для обмена информацией (ASCI 1). По системе кода ASCII первые 32 кода (шестнадцатеричные числа от 00 до lF) являются управляющими, с помощью I<оторых системные или прикладные программы, как пра­ вило, реализуют свои рабочие функщrи, а остальные 96 (от 20 до 7F) используются для кодирования знаков пун• ктуации, знаков арифметических операций, некоторых специальных символов (%, & , $, и др.), цифр, а также букв латинского алфавита. Система кодов ASCI I обычно представляется в виде таблицы, называемой основной таблицей ASCII. Для кодирования символов ASCI I используется семь битов, что позволяет закодировать 128 символов (коды от 00 до 7F). Этого оказывается недостаточно, поэтому задей­ ствуют еще один - восьмой - бит, что позволяет р асши­ рить таблицу в два раза. Символы, пш,1ещаеыые в расшп• рение основной таблицы ASCII, имеют коды от 80 до FF. Конкретное же представление этих символов зависит 01' знакогенератора ПЭВ,iv\. Отметим, что знакогенератор ЕС-1840 использует .1ишь основную таблицу ASCII. Поэтому в отечественных операционных системах для ЕС-1840 предусматривается спеu11альная системная про· гра:-.1ма загрузки кодовой таблицы, состоящей из основной таблицы ASCII и ее расширения. Именно в расширение 199
таблиuы ASCII и помещают набор букв русского алфа­ шпа отечественные версии операuионной системы MS-[)OS. Чтобы «посмотреть», какая таблиuа загружена в ПЭВМ, достаточно вывести на экран дисплея (напр,шер, с помощью кт1анды ТУРЕ) заранее подготовленный тек­ стовый файл, содержащий коды от 20 до FF. Такой файл обычно уже находится на системной дискете (CODETAB.DOC). Отметим, что данный способ не под­ ходит для просмотра символов, соответствующих управ­ ляющим кодам, так как некоторые из управляющих кодов используются системными программами при реализаuии CBOIIX рабочих функuий. Зарубежные программные средства, работающие, как правило, с латинским алфавитом, используют в основ­ ном расширение таблиuы ASCII, соответствующее стан­ дартному знакогенератору I ВМ РС, в котором нет букв русского, да и любого другого наuионального алфавита. При этом из расширения таблицы ASCII привлекаются rлавны~, образом сю,шолы псевдографики для достиже­ ния бол~,шей внешней привлека~ельности программ (изо­ бражение рамок, штриховок и т. п.) или формирования на экране дисплея изображений графических объектов (ги­ стограмм, графических схем). Разработчики зарубежных программ далеко не всегда заботятся об обеспечении воз­ можности ввода с клавиатуры символов из расширения таблицы ASCI 1, в том числе помещаемых в таблице букв национальных алфавитов. Конечно, особенно ви­ нить их в каком-то злом умысле не следует, поскольку многие нз них скорее всего и не догадываются о том, ка­ кие пробле:-.1ы возникают перед пользователями осталь­ ного М!!ра. Следует зш,1е1ить, что проблема адаптации особенно харак1ерна д.ля крупных интегрироnанных программных продуктов, оснащенных мощными средствами визуализа­ ции. Для таких программ обеспечение ввода-вывода, например бу,ш русского алфавита, в отличие от зю1е11ы сообщений - задача значительно более сJюжная, тре­ бующая нетр11в11а.1ьного изменения 1екстов программ. Но поскоm,ку зарубежные фирмы-разработчики програм­ много обеспечен в я не пос1 авляют исходные тексты про­ грамм (мы 1t\Iee:1,I лишь исполняемые ЕХ Е- шш СОJ\\­ файлы), Т•) задача еще более усJiожняется и требует nрив.1ече11ия спепнат,11ых проrрамюIых сред~тв, так наз1>1- ваеl\Iых отладчнков (dcbuggcr), позволяющих реассемб:ш- 200
ровать ЕХЕ- или СОМ-файлы, т. е. восстанавливать ас­ семблерный код программ. Трудно дать какие-либо общие рекомендаuии по обес­ печению ввода-вывода букв 11ациональных а.r1фавитов - организация каждой программы индивидуальна, и это дело вкуса ее разработчиков. Однако достаточно типич­ ные задачи, возникающие при решении этой проблемы, мы рассмотрим на примере адаптаuии на русский язык пакета Lotus 1-2-3 для ЕС-1840. Табличный проuессор 1-2-3 имеет собственный драй­ вер клавиатуры - KB.DRV, который загружается в па­ мять вместе с основной программой 1-2 -3 . В ожидании ввода с клавиатуры или после нажатия ка1юй-либо кла­ виши табличный проuессор обращается к KB.DRV, на который, таким образом, налагаются две обязанности - проверка буфера клавиатуры с целью выяснения, нажата клавиша или нет, а также некоторая специальная обра­ ботка системных кодов нажатых клавиш. Для того чтобы понять, как драйвrр KB.DRV обраба­ тывает системные коды нажатых клавиш, рассмотрим генерацию этих кодов в ПЭВМ типа IBM РС. При нажа­ rrии любой клавиши в системный блок ПЭВМ поступает rraк называемый скэн-код (scan-code) нажатой клавиши, rro есть шестнадuатеричное число (от О I до 53), соответст­ вующее поряДiювому номеру (от 1 до 83) этой клавиши на клавиатуре. Например, при нажатии клавиши Esc вво­ дится скэн-код 01, клавише Fl соответствует скэн-код 3В. Базовая система ввода-вывода (BIOS) анализирует поступивший скэн-код и либо генерирует специальный двухбайтовый системный код, либо фиксирует нажатие служебных клавиш фиксации регистров (CapsLoc1<, ScrollLock, NurпLock), смены регистров (Shift) и модифи­ кации кодов других клавиш (Alt, Ctrl) в отдельных би­ тах спеuиальной ячейки системной памнти. При этом ге­ нерируемый системный код зависит от состояния этой ячейки памя1и, то есть от того, нажаты указанные выше служебные клавиши или нет. BIOS генерирует системные коды двух видов. При нажатин буквенных, uнфровых, знаковых клавиш 11 их комби11ац11й с клавишами Shift или CapsLock, клавиш Esc, ТаЬ, Enter, Backspace, а также комбинаций клавиши Ctrl с буквенными клавишами н не1<оторыми другими кла­ вишами (рис. 8.1) младший из л.nух байтов (главный байт) содержит соот~е1с1вующ11й 11зображе1111ю сн:.шол на кла- 201
Специальные клавиши Backspace 08 ТаЬ 09 Enler 0D Esc 1В Ко\lбинации клавиши Ctrl с буквенными к.11ав11ша\Ш Ctrl/A 01 Crtl/H 08 C!rl/0 0F Ctrl/V 16 Ctr!/B 02 '::trl/I 09 Ctrl,P 10 Ctrl/\V 17 Ctr!/C 03 Ctrl/J ОА Ctrl/Q 11 Ctrl/X 18 Ctrl/D 04 Ctrl/K ОВ Ctrl/R 12 Ctrl1Y 19 Ctrl/E 05 Ctrl/L ОС Ctrl/S 13 Ctr!;Z lA Ctr!/F 06 Ctrl/,\\ 0D Сlг!/Т 14 Ctrl/G 07 Ctrl/:'\ ОЕ Ctrl1 U 15 Ко,1б11нашш к.1ав11ш11 Ctrl с дру,11,ш клавнша~ш Ctrl.'Enter ОА Ctrl/ [ 1В Ctrl/'\_ !С Ctrl/] 1D Ctrl/6 IE Ctrl/- IF Рис. 8.1 виатуре или управляющий код из основной таблицы ASCII. Старший байт (второй или вспомогаrельный байт) содержит скэн-код нажатой клавиши. Например, при на­ жатии клавиши Esc генерируется системный код 01 IB, клавише S соответствует код IF73, а комбинации клавиш Ctrl/S - системный код IFIЗ. Системный код такого вида мы назовем стандартным АSСil-кодом нажатой клавиши в отличие от расширенного ASCII-кoдa, который гене­ рируется при нажатии функциональных клавиш F 1, ... ; FI0 (и их комбинаций с Shift, Ctrl или Alt), клавиш управления курсором Up, Down, Left, Right, Ноте, End, PgUp, PgDn (и их комбинаuий с Ctrl), клавиш уда­ ления Del и вставки Ins, комбинаций клавиши Alt с бук• венными или цифровыми клавишами и некоторых дру• гих комбинаций (Ctrl/Break, Ctrl/2, Shfti/Tab, Ctrl/PrtSc). Главный байт расширенного ASCll-кoдa равен 00, и это показывает, что системная или прикладная программа должна анализировать второй или вспомогательный байт, значение которого, как правило (однако не всегда), совпадает со скэн-кодом нажатой клавиши. Например, при нажатии клавиши Fl генерируется расширенный ASCll-кoд ЗВОО, комбинации клавиш Alt/S соответствvет код IF00, а комбинации Alt/Fl - расширенный ASCII-кoд 6800. Вторые байты расширенных АSСII-кодов приведены в работе [21. Однако следует обратить внимание, что в таб­ лице на стр. 120 ошибочно находятся КО:\1б11наци11 кла­ виши Ctrl с буквенJJыыи клавишащ1, при нажат1111 ко­ торых генерируются стандартные, а не расширенные 202
АSСII-коды. Поэтому считаем необходимым привести исправленный вариант таблицы, получаемой на дис­ плее (рис. 8.2), о~новываясь на Technical Reference IBM Personal Computer Х Т. Клавиатура ЕС-1840 имеет 92 клавиши. По сравнению с IВЛ\ РС введены дополнительные служебные клавиши фиксации и смены латинского и русского регистров, а также увеличено количество знаковых клавиш, исполь­ зуемых также и для ввода некоторых русских букв (так как для раз~~ещения 33 букв русского алфавита недоста• Fl 3В F2 3С F3 3D F4 3Е F5 3F F6 40 F7 41 F8 42 F9 43 FlO 44 Функциональные клавиши Shift/Fl 54 Ctrl/Fl 5Е Shift/F2 55 Ctrl/F2 5F Shift/F3 56 Ctrl/FЗ 60 Shift/F4 57 Ctrl/F4 61 Shift/F5 58 Ctrl/F5 62 Shift/F6 59 Ctrl/F6 63 Shift/F7 5А Ctrl/F7 64 Shift/F8 5В Ctrl/F8 65 Shift/F9 5С Ctrl/F9 66 Shift/FIO 5D Ctrl/FlO 67 Alt/FI 68 Alt/F2 69 Alt/F3 6А Alt/F4 6В Alt/F5 • 6С Alt/F6 6D Alt/F7 6Е Alt/F8 6F Alt/F9 70 Alt/FIO 71 Клавиши управления курсором, вставки и удаления Ноте 47 Left 4В End 4F Ins 52 Up 48 Right 4D Down 50 De\ 53 PgUр 49 PgDn 51 .Модифицированные клавиши управления курсором Ctrl/Left 73 Ctrl/Right 74 Ctrl/End 75 Ctrl/PgDn 76 Ctrl/Нome 77 Ctrl/PgUp 84 Комбинации клавиши Alt с буквенно-цифровыми клавишами Alt/Q 1О Alt/A lE Alt/Z 2С Alt/1 78 Alt/\V 11 Alt/S IF Alt/X 2D Alt/2 79 Alt/E 12 Alt/D 20 Alt/C 2Е Alt/3 7А Alt/R 13 Alt/F 21 Alt/V 2F Alt/4 7В All/Т 14 Alt/G 22 Alt/B 30 Alt/5 7С Alt/Y 15 Alr/Н 23 Alt/N .ЗI Alt/6 7D Alt/U !fi Alt/J 24 Alt/M 32 Alt/7 7Е Alt/1 17 AI t/K 25 А! t/8 7F Alt/0 18 А! t/L 26 Alt/9 80 Alt/P 19 Alt/0 81 Clrl/Break 00 All/- 82 Alt/= 83 Прочне коыбинации 1,лавиш Ctrl/2 03 Ctrl/PrlSc 72 Рис. 8.2 Shift/Тab OF 203
точно 26 буквенных клавиш). Однако BIOS ЕС-1840 при нажатии большинства клавиш генерирует те же самые системные коды, что и BIOS IВМ РС (в частности, для ЕС-1840 верны вышеприведенные таблицы). Исключение составляют лишь дополнительно введенные знаковые кла­ виши (j'}' -). Следует также отметить, что BIOS ЕС-1840 при вводе букв русского алфавита (то есть при нажатии буквенных клавиш на русском регистре) генерирует стандартные АSСil-коды клавиш, главные байты которых содержат коды из расширения основной таблицы ASCI 1. При этом соответствие изображенных на клавишах букв русского алфавита их отображению на экране дисплея имеет место лишь в том случае, когда в знакогенератор дисплея за­ гружена специальная кодовая таблица - она называется основной кодовой таблицей ЕС-1840 (поставляемая вместе с ЕС-1840 операционная система М86 использует именно эту таблицу). Буквы русского алфавита размещены в основной ко­ довой таблице ЕС-1840 довольно неудобно - прописные буквы находятся в начале расширения таблицы ASCII (коды от 81 до AI), а строчные - в конце (коды от Dl до FI), к тому же занимаемые строчными буквами коды многие зарубежные программы используют, как уже го­ ворилось, для изображения символов псевдографики. Поэтому отечественные версии MS-DOS загружают, как правило, более удобные таблицы, а необходимое соответ­ ствие стандартных АSСll-кодов, генерируемых при вводе букв русского алфавита, загружаемой кодовой таблице обеспечивает специальная резидентная программа - си­ стемный драйвер клавиатуры. Вернемся к драйверу KB.DRV интегрированного па­ кета Lotus 1-2 -3 . После нажатия любой клавиши и гене­ рации операционной системой ее системного кода KB.DRV анализирует полученный системный код (точнее, главный байт системного кода). Если этот код - стандартный ASCII-кoд (главный байт - ненулевой), то KB.DRV передает управление основной программе 1-2 -3 . В случае расширенного ASCII-кoдa (главный байт равен 00) KB.DRV обращается к своей спеш1альной таблице, ко­ торая сопоставляет со вторыми байтами расширенных АSСII-кодов ппределенноrо набора клавиш и их комби­ наций коды из расширения таблипы ASCII. Таб.rвща драйвера KB.DRV представляет собой просто последова- 204
008А0F"88 1О82118812Аб Ctrl/Break Sh,ft/Tab Alt/Q Рис. 8.3 Alt/W .. ' АItIЕ тельность байтов, на нечетных местах которой находятся вторые байты системных кодов, а на четны'< - сопостав­ ляемые коды из расширения ASCI 1. Нача.10 эг01·1 последо­ вательности приведено на рис. 8.3 . Используя свою таблицу, KB.DRV возвращает в ос­ новную программу новый код нажатой клав:1ши, главный байт которого содержит найденный в таблиu~ по второму байту системного кода соответствующий код из расшнре­ ния таблицы ASCII. В том случае, когда KB.DRV не находит в своей таблиuе второго байта кода нажатой кла­ виши, выдается звуковой сигнал (так блокируются нажа• тия тех клавишей и комбинаций клавиш, которые не ис• пользуются пакетом Lotus 1-2 -3). Таким образом, драйвер KB.DRV осуществляет пер· вый этап программного переопределения клавиш, псполь­ зуемых пакетом Lotus 1-2 -3, в результате когороrо ос­ новной программе 1-2-3 достаточно вместо системных ко­ дов нажатых клавиш рассматривать лишь один байт - код из основной таблицы ASCII при нажатпи буквенных, цифровых и знаковых клавиш или код из pi1cшиpeIIIIЯ таблицы ASCII при нажатии функциональных к.павпш, клавиш управления курсором, удаления и вставки. а также определенных комбинаuий клавиш (указанных в таблиuе KB.DRV). Основная программа 1-2-3 осуществляет второй этап переопределения клавиш. Остаr3J!ЯЯ без изменения коды от 21 до 7F, программа 1-2-3 при получении всех осталь­ ных кодов (управляющих и из расширения таблицы ASCII) обращается к своей таблице сопоставления кодов, согласно которой происходит формирование окончатель­ ных рабочих кодов. Таблиuа сопоставления кодов про­ граммы 1-2-3 аналогична таблице KB.DRV и представляет собой последователыюсть байтов, на нечетных ,1естах ко­ торой находятся управляющие коды и коды из расшире· 205
080D87IЗ09IЗ0DОВ1ВОС ЭасКsрасе : Ctrt;R,gnt (код 87 находится в таблице KB.DRV) ТаЬ Enter Esc Рис. 8.4 ния ASCII, а на чет11ых - сопоставляемые рабочие коды (начало этой последовательности приведено на рис. 8.4). Именно этим μабочим кода:v~ 1-2-3 в дальнейшем сопостав­ JIЯет все свои функции табличного процессора. Коды же от 21 до 7F используются для ввода соответствующих сим­ волов в Lоtus-таблицу и вывода их на экран дисплея. Отметим, что организация ввода с клавиатуры в дру­ гих функциональных модулях пакета Lotus 1-2 -3 анало­ гична рассмотренной. Отличаются лишь таблицы сопо­ ставления кодов каждого модуля. Поэтому в результате двухэтапного переопределения клавиш в каждом модуле оказываются задействованными только те клавиши, на­ жатия которых реализуют функции данного функциональ­ ного модуля (при этом нажатия одних и тех же клавиш могут вызывать в разных модулях различные действия). При нажатии всех остальных клавиш выдается звуковой сигнал. Разобравшись с организацией ввода с клавиатуры таб­ личного процессора 1-2-3 (подчеркнем, что для этого мы не использовали ничего, кроме исполняемого файла 123.ЕХЕ и отладчика Advanced Fullscreen Debug, с по­ мощью которого мы проследили за действиями программы в ожидании ввода и после нажатия клавиш), становится понятным, почему возникает проблема ввода букв рус­ ского алфавита. Действительно, при нажатии буквенных клавиш на русском регистре генерируется стандартный ASCII-кoд, главный байт которого - код из расшире­ н11я таблицы ASCII - передается драйвером KB.DRV без изменения в основную программу 1-2-3 . Так I<ак l -2 -3 получает код из расширения таблицы ASCII, то она об­ ращается к таблице сопоставления кодов. В результате при вводе букв русского алфавита реализуются фунюши чабл11чного процессора или выдается зву1<овой сигна.'1. Понятно также, что для ()'Jеспеченин ввода бу,ш рус­ ского алфавита недостагочно из:-.1е11tш1я л11шь условия 206
обращения к таблице сопоставления кодов проrрат.,1;,,1ы 1-2-3, так как тогда не будут реализованы функц11и таб­ лнчного процессора. Какой же выход нз создавшегося положения? ,\\ожно ли так из:--лешrть пporpa:-.1\ly, чтобы русские буквы вво.:~.11л11сь в Lоtus-таб:шцу, а все функцнп табличного процессора сохран11,111сь. Оказывается, выход существует. Де.10 в ТО:\1, что таб.11ща .:~.ра(шера KB.DRV сопостав­ ляеr вторыч ба1па,1 систе:-.шых кодов нажатых к.1авпш коды из первых четырех сто.1бцов расш11рен11я таб.11щы ASCII (от 80 .:i.o BF). Необхо.:~.юю, сле.:~.овате,1ьно, нспра­ вить таблипу KB.DRV таюш образо:-.1, чтобы тevr же сю1ым байтю1 сопоставлялнсь коды из последних четырех столб­ цов расширен11я табл11цы ASCII (от СО до FF). После этого из:-.1енить условие обращения к таблице сопостав• ления кодов программы 1-2 -3 (сохраняя коды от 21 до BF) и исправить ca:-vry таблицу сопоста~з.1ения кодов в соответ­ ствш1 с из;1,1енению111 в таблице KB.DRV (сопоставляя рабочне коды не кода;1,1 из начаJ1а расширения таблицы ASCII, а кодам из ее конца). Итак, мы не только сохра• нили все функции табличного процессора (так как при нажатии клавиш, реализующ11х эти функции, генери­ руются те же са!\!Ые рабочие коды), но и расширили диа­ пазон кодов, используемых для ввода в Lоtus-таблицу. Таким образом, мы получили воз~южность вводить в Lоtus-таблицу дополнительно символы с кодами от 80 до BF. И, следовательно, для обеспечения ввода букв русского алфавита мы должны использовать кодовую таблицу ЕС-1840, в которой набору букв русского алфа­ вита соответствуют коды от 80 до BF (такую таблицу ис­ пользует, например, версия MS-DOS, распространяемая советско-болгарским институто:-.1 «Интерпроrрамма». На рис. 8.5 и 8.6 приведены исправ.1енные таблица KB.DRV и таблица сопостав.1ения кодов программы 1-2-3 (их на• 00САOFсв10F21, F8 12 Еб ...... :.:trl/Break : Sh,ft/1ab д1 t/Q Alt/W дIt/Е .... Рис. 8.5 207
,08 0DС71309130DОВ18ОС еаскsрасе : ctrl/R,ght (коц С7 нахоцится в таблице КВ DRV) тао Enter Esc Рис. 8.6 чала), используя которые, можно вводить в Lоtus-таб­ лицу руссюIе буквы. Отметим в заключение, что все ис­ правления в проrра~Iмы вносятся средствами стандартных утилит. Сделаем некоторые вьшоды. 1. Рассмотрена организация ввоп.а с клавиатуры во время рабочего сеанса программ пакета Lotus 1-2-3, 11с­ поJIьзующего следующие п1 пичные для многих програм­ мных продуктов приемы повышения эффективное, и и на­ дежности программ - сведение системных кодов нажа­ тых клавиш к однобайтовому рабочему коду и «защита от дурака» (блокировка нажатий клавиш, не испо.1ьзуе­ мых программой). 2. Показана возможность обеспечения ввода в Lоtus­ таблицу русских букв, что, учитывая тип11чность исполь­ зованных приемов организации ввода с клавиапры в па­ кете Lott1s 1-2 -3, позвОJ1 яет рассч111 ывать на успешную адаптацию многих других зарубежных программ. 8.3. Система LP88 для решения оптимизационных задач Мы договорились, что компонентами проектируемой здесь собственной инструментальной среды с1 а11ут адап­ тированный пакет Lotus 1-2 -3 со ЕСсми его богатыми воз­ r,южностями и пакет решения опт11шIзаш101111ых задач LP83, разработанный в 1986 r. фирмой «Сансет Софтuэа;> (Sunset Sof tware, Califorпia, USA). Адаптированной ы:р­ си11 пакета LP83 присвоим номер 88. Надо заметить, ч·I0 приrзе.:~.енное оrшсание LP88 впо.1не дос1а1оч1ю Jtля на­ чала самостоят('льной раб01ы с ним. Некспорые перr:о­ начальные сведения о наке1е. 1. Для решення задач большой размерносп1 нспо.rн,­ зуются методы виртуа.тiЫJ()Й ш1мя111. При этом LP88 нс­ по.1ьзует до од1ю1 о меr абайта внt:шнеи пю.1я1 и. 208
2. LP88 использует числа с плавающей точкой с двой­ ной точностью no всех вычислениях. Используются пят­ надцать значащих цифр. Это существенно при решении больших задач линейного проrра:.1мирования. Использо­ вание сопроцессора 8087/80287 сокращает время итера­ ций в десять раз. 3. LP88 может обрабатывать любой класс задач ли­ нейного проrрам:\шрования. Определение задачи - об­ щее, не требующее привлечения какой-нибудь специаль­ ной техники. Однако сложные модели задач требуют ин­ терактиnного режима работы. 4. Кроме собственного формата ввода LP88 допускает формат системы математического программирования (МРS-формат), который является промышленным стандар­ том США и принят в отечественных пакетах прикладных программ линейного программирования («Линейное про· rраммирование-2» и «Линейное программирование в АСУ» [20 ]), реализованных на ЭВМ ЕС, что обеспечи­ nает совместимость с подобными системами для больших эnм. 5. LP88 позволяет также формулировать задачи не­ посредственно в Lotus- или Sуmрhопу-таблицах. 6. Вывод может быть сделан на диск для дальнейшей обработки другими программами, например Lotus 1-2-3 (это полезное сnойство и будет использовано для органи­ зацJ,tИ совместной работы LP88 и Lotus 1-2 -3). 7. LP88 снабжена набором средств для послеоптими­ заuионного анализа. 8. LP88 предоставляет возможности форматной пе­ чати результатов решения задач. 9. Задачи :могут быть прерваны в процессе выполне­ ния и продолжены в дальнейшем. Оригинальный диск системы LP88 состоит из 1.Р88.ЕХЕ - полная система, занимает приблизительно 150 Кбайт на диске; README.DOC- файл документа­ ции. Д.11я генерации LP88 можно использовать команду DOS «СОРУ». Например: А;;>СОРУ LP88.EXE В: Здесь система LP88 будет скопирована на пользователь­ сю, й диск, установленный в дисководе В. Отметим, что для правильного функционирования скопированная версия должна иметь имя LP88.EXE . 10 Смирнов Н. Н. 209
Система LP88 в процессе выполнения создает два рабо­ чих файла, обращаясь к дисководу по умолчанию. По­ этому необходимо иметь рабочий диск в этом дисководе, Имена дисководов для рабочих файлов можно изменить. Для этого можно ввести, например, следующие дирек­ тивы: А> LP88. WORКIFILE А WORK2FILE А CONFIGURE YES В данном случае выбран дисковод А. Системе LP88 также необходимо знать, сколько сво­ бодной памяти имеется в ЭВМ. Эта возможность реали­ зуется автоматически в системах PC-DOS и других до­ статочно близких системах. В противном случае величину свободной пемяти необходимо задавать. Для задания, например, 384 Кбайт свободной памяти необходимо ввести: А> LP88. MEMORY 384 CONFIGURE YES Если величина свободной памяти неизвестна, то можно сначала указать минимальную величину пара­ метра MEMOR У-256. Системы, в которых должен использоваться параметр MEMORY, это MS-DOS, WANG РС, DEC Rainbo\\', Zenith, Т1 и др. Формулировка задачи и решение задачи. Каждая задача линейного программирования имеет набор огра­ ничений, которые накладываются на ресурсы, или не1<0- торые условия минимакса, которые должны быть выпо.1- нены. Сформулированная задача должна также иметь це­ левую функцию, которая описывает или полную «прибыль», получаемую в результате определенных действий, илн полную «стоимость» определенного ряда действий. Слпва «прибыль» и «стоимость» используются здесь в общем смысле. Целевая функция является экономическим по­ нятием, но не обязательно выражается в денежных еди­ ницах. Она может выражаться и в единицах времени 11ли производительности. Цель задачи линейного программи­ рования - максимизировать или минимизировать зна­ чение целевой функции, подверженной определенным ог­ раничениям. Любая задача линейного программирования для ре­ шения ее системой LP88 может быть сформулирована и записана в файл либо в собственном формате LP88, ,шбо в МРS-формате, либо, как уже указывалось в Lotus- или Sуmрhоnу-таблицах. 210
Для формулировки задачи в собственном формате LP88 может использоваться любой текстовый редактор, совместимый со стандартным системным текстовым редак­ чором EDLIN, например TEXIP, BRIEF и др. Чтобы описать основные требования ввода в системе LP88, мы будем использовать пример задачи размещения заказов. Сначала опишем задачу: «Объединение имеет три завода, каждый из которы~ производит один и тот же продукт. Этот продукт произ­ водится по договорам. Задача состоит в определении того, на каких заводах заказы должны быть размещены. В про­ изводственный план должны включаться следующие до­ говоры: Заказчик Размер заказа, Расходы за доставку ед. продукта, шт. руб. Завод А Завод В Завод С w 700 8.00 4.00 6.00 х 1500 11.00 10.00 8.00 у 400 6.00 12.00 7.00 z 500 9.00 5.00 14.00 Производственные издержки и производительность за­ водов различны и приведены в следующей таблице: Завод А в с Стоимость ед. продукта, руб. 45 40 50 Максимальный выпуск, шт. 1000 800 1500 Таким образом, задача состоит в нахождении миними­ зирующего издержки производственного плана размещения заказов по заводам - производителям «данного продукта». Выберем следующие обозначения для переменных за­ дачи. «хРу» будет означать часть заказа заказчика х, производимого на заводе у. Например, WPA - производи­ мая на заводе А часть заказа заказчика W. Система LP88 использует четыре раздела для описа­ ния любой задачи (модели). Разделы начинаются с одного из следующих слов и должны располагаться в следующем порядке: l) ТITLE [заглавие] 2) OBJ ECТIVE [цель] 3) BOUNDS (необязательный) [границы] 4) COI\STRAINTS [ограничения J 10* 211
Первый раздел обязательный. Он начинается о . .T IT L E, за которым должно следовать название задачи. Для примера размещения заказов: . .ТITLE Задача размещения заказов Второй раздел - OBJECТIVE - также обязательный, он следует за ТIТLЕ-разде.r:юм и определяет: 1) является ли целевая функция минимизируемой или максимизируемой; 2) линейные коэффициенты каждой переменной (в том числе и О); 3) имена всех переменных, используемых в следую­ щих разделах (имя ограничено 8 символами). Второй раздел примера размещения заказов будет со­ держать: . .OBJEC ТIVE MINIMIZE * транспортные издержки 8.00 WPA + 4.00 WPB + 6.00 WPC 11.00 ХРА + 10.00 ХРВ + 8.00 ХРС 6.00 УРА + 12.00 УРВ + 7.00 УРС 9.00 ZPA + 5.00 ZPB + 14.00 ZPC * производственные издержки (себестоимость) 45.00 (WPA + ХРА +УРА+ ZPA) 40.00 (WPB + ХРВ + УРВ + ZPB) 50.00 (WPC + ХРС +УРС+ ZPC) В LP88 строка, начинающаяся с символа *, является строкой комментария и может находиться в любом месте. Все переменные должны быть определены в ОВJЕСТIVЕ-разделе, даже если соответствующий коэф­ фициент равен О. Следующий раздел-ВОUNDS-используется для опи­ сания ограничений, определяющих границы изм~нения переменной. Этот раздел вызывает для использования высокоэфффективный граничный алгоритм. Этот раздел не является обязательным, но если 011 су- ществует, то должен следовать за OBJ ЕСТIVЕ-раздеJiом. Примеры: . .BOUNDS А>= 10 В~= 5 С>=10~= 20 В нашем примере BOUNDS-paздeл не используется. 212
Последний раздел - CONSTR.AINTS - используется для того, чтобы: 1) пометить ограничение; 2) определить коэффициенты при переменных; 3) определить тип ограничения <=, >=, =; 4) определить значение правой части. Этот раздел является обязательным. Для примера раз• мещения заказов: . .C ONSTR.AINTS * требования заказчиков OR.DERW:WPA+WPB+WPC=700 OR.DER Х: ХРА + Х/РВ + ХРС = 1500 ORDERУ:УРА+УРВ+УРС=400 OR.DER.Z:ZPA+ZPB+ZPC=500 * возможности заводов САР А: WPA + ХРА +УРА+ ZPA <= 1000 САРВ:WPB+ХРВ+УРВ+ZPB<= 800 САРС:WPC+ХРС+УРС+ZPC<=1500 Теперь, объединяя все разделы, получаем формули• ровку задачи: ..ТITLE Задача размещения заказов ..OBJEC ТIVE MINIMIZE * транспортные издержки 8.00 WPA + 4.00 WPB + 6.00 WPC 11.00 ХРА + 10.00 ХРВ + 8.00 ХРС 6.00 УРА + 12.00 УРВ + 7.00 УРС 9.00 ZPA + 5.00 ZPB + 14.00 ZPC * производственные издержки 45.00 (WPA + ХРА + УРА + ZPA) 40.00 (WPB + ХРВ + УРВ + ZPB) 50.00 (WPC + ХРС + УРС + ZPC) .. C ONSTRAINTS * требования заказчиков ORDERW:WPA+WPB+WPC=700 ORDERХ:ХРА+ХРВ+ХРС=1500 ORDER J: УРА+ УРВ +УРС= 400 ORDERZ:ZPA+ZPB+ZPC=500 * возможности заводов САРА:WPA+ХРА+УРА+ZPA<=1000 САРВ:WPB+ХРВ+УРВ+ZPB<=800 САР С: WPC + ХРС +УРС+ ZPC <= 1500 213
Предположим, что пример размещения заказов запи­ сан в файле с именем PRODUCT.LP. Для решения за­ дачи в командной строке введите LP88 с именем файла и любыми параметрами командной строки системы LP88. Сначала LP88 ответит авторским сообщением, а затем последует ,1истинг, решение и отчет по задаче. Например, в ответ на вызов системы с А>: А >LP88 PRODUCT LP88 PRODUCT <· • • эхо командной строки Отметим, что если фай.1, содержащий описание задачи, имеет расширение имени, отличное от LP, то имя файла необходимо указывать полностью. Отчет по задаче. Отчет по задаче может содержать до четырех сообщений, а именно: сообщение о решении, сообщение об ограничениях, сообщение о стоимостном анализе и сообщение о маргинальном анализе, распечатка которых управляется параметрами командной строки LP88, соответственно SOLUТION, CONSTRAINTS, COSTANALYSIS и MARGINANALYSIS. Первые два со­ общения распечатываются по умолчанию. Последние два сообщения являются сообщениями послеоптимизацион­ ноrо анализа. Вернемся к примеру размещения заказов, отчет по задаче будет начинаться следующим сообщением: 214 А >LP88 PRODUCT начало выполнения . . Статистика- LР88 Версия 1.00 <--- [а1 Машин. память: 512 Кбайт <--- [б 1 Вспом. память: 407 Кбайт <--- [в 1 Переменных: 12 <--- [r 1 Ограничений: 7 <--- [д] З LE, 4 EQ, О GE. Ненулевых ЛП э,1е,1ентов: 24 <--- [е1 Диск. простр.: О Кбайт <--- [ж 1 Исп. простр.: 1 Кбайт <--- lз 1 Возможн.: 3.4% исп. <--- [и 1 Оценочное время: 00 : 00: 00 <--- [к 1 Итер 9 In УРА Out ZPC <--- lл] Время решения: 00 : 00 : 02 <--- [м 1 АЛЬТЕРНАТИВНЫЕ РЕШЕНИЯ <-- [н)
где: [а] ... номер текущей версии системы LP88; [б 1... объем свободной памяти ЭВJ\,\; [в]... объем доступной памяти для обслуживания матрицы; [r ]... число 1Jеременных (столбцов) задачи; [д] ... число ограничений (строк) задачи и число ог­ раничений <=, = и >=; [е] ... число нену.1евых элементов в матрице, не счи­ ffая слабых (избыточных) переменных; [ж ] ... объем необходимого для решения задачи про­ странства на диске; [з]... объем используемого обслуживающего про­ странства; [ и 1... возможности LP88 применительно к данной задаче; [к) ... оценочное время решения задачи, чч: мм: се; [л ] ... число итераций для решения задачи; [м ] ... точное время решения задачи, чч: мм: се; [ н 1... тип решения. Сообщение о решении показывает оптимальные значе­ ния переменных и значение целевой функции. Для рас­ сматриваемого примера получим следующий протокол: Файл: Product - [а) [б]-+ 03/03/89 10:20:30 Стр. 1--1 РЕШЕНИЕ (Минимум): 163, 900.00 - [в] Переменная Значение Цена Переменная Значение Цена WPA +-[r) \VPC 0.00 +-[д] ХРВ 0.00 50 .00 -[е] Б УРА 400.00 51.00 -[ж] УРС 0.00 57.00 и т. д. rпе: 1а 1... имя файла, содержащего описание задачи; lб ] ... штамп даты. В Page 1-1 первое число - «но­ мер решения», второе число - номер страницы; lн ]... минимальное значение целевой функции - 163, 900.00; [r 1... имя переменной - WPA; !д ]... оптимаJiьное значение переменной WPC - 0.00; [~ ) .. . стоимостный коэффициент при переменной ХРВ - 50.00; 1ж] ... символ Б, предшествующий имени пере- менной, означает, что переменная базисная. 215
Сообщение об ограничениях показывает значения ле­ вых частей ограничений при подстановке оптимальных значений переменных. Для рассматриваемого примера получим: Файл: Product 03/03/89 10 : 20 : 30 Стр. 1-2 CONSTRAINTS: Задача размещения заказов <--- [а J Ограничен. Значение п. ч. Ограничен. Значение п. ч. ORDER W 700.00 +-(6) ORDER У 400.00 = +-[в] САР А 1,000.00 < J ,000.00 +-[r] Б САР с 1,300.00 < ],500.00 +-[д] Сумма ошибок: 0.000000 - [е] где: [а] ... название задачи; [б ]... значение ограничения ORDER W в решении: [в] ... ORDER У - ограничение типа равенства; [г ]... указанное в описании задачи значение пра- вой части ограничения САР А; [д] ... символ Б означает, что слабая (избыточная) пере11енная - базисная; [е ]... оптимальные значения переменных подстав­ ляются в левые части ограничений, полученные резуль­ таты сравниваются с правыми частями и абсолютные зна­ чения разностей суммируются в «Сум~1а ошибок». Откло­ нение от нуля означает ошибку округления или неустой­ чивость. Запись решения на диск. Оптимальные значения пере­ менных и ограничений могут быть занесены в файл для дальнейшей обработки пользова·1ельской программой или любым другим пакетом. 216 Формат файла следующий: «название задачи» число ограничений, число пере11-1енных, значение це­ .певой фушщии «имя переменной 1», оптимальное значение 1, коэффи­ циент! «имя переменной 2», оптимальное значение 2, коэффи­ uиент2 «имя ограничения 1», вычисленное знач., значение левой части l правой части 1 «и:v1я ограничения 2>J, вычислt:1шое знач., значение левой части 2 правой части 2
Для записи решения в файл используется параметр командной строки ACТIVIТY. Например: А >LP88 PRODUCT ACТIVIТY В : SAVETHEM.DA Т + COSTANAL YSIS NO + MARGINANAL YSIS NO+ SOLUTION NO CONSTRAINT NO В этом примере решение сохраняется в файле В: SAVETHEM.DAT, а четыре стандартных сообшения опускаются. Отметим, что система LP88 может записать оптималь­ ные значения переменных и ограничений непосредственно в Lоtus-табличный файл (см. ниже). Выбор параметров командной строки. Приведем все параметры командной строки LP88 и дадим краткую ха­ рактеристю<у основных из них. Отметим, что в командно[~ строке можно указывать любое число параметров, хотя обычно используются тоJ1ько некоторые. Параметры и зна­ чения при вводе разделяются пробелами. Формат командной строки следующий (параметры рас­ положены в столбик вместе со своими возможными зна• чениями; напомним, что 9 означает число, Х - символ}~ LP88 х : fileпame.ext OUTPUT CON: \ LPТl: COMI: х: fileпame PAGESIZE LINESIZE LISТINPUT TMARGINS BMARGINS LMARGINS WAIТ FIELDSIZE DECIMALS EUROPEAN ALTERNATE SOLUTION CONSTRAINTS COST ANAL YSIS MARGINANAL YSIS DEFAULTS COPIES CONFIGURE ТIMEADJUST l\\ETHOD COMMENTS 999 999 NOIYES 99 99 99 NOIYES 99 99 NOIYES 99 NOIYES NOIYES NOIYES NOIYES NOIYES 999 NOIYES 999 112 х 217
WORIOFILE WORK2FILE WARNINGS PASSWORD NEWPASSWORD SORTS SYMBOLICS х х NOIYES хххххххх хххххххх NOIYES 999 NOIYES CYCLE ACТIVIТY MEMORY VARMASKS CONMASKS х : filename.ext 999 ххххххххххххх хххххххххххххх используются только для Следующие параметры МРS-формата: MAXIMIZE OBJECТIVE RHS RANGES BOUNDS NOIYES хххххххх хххххххх хххххххх хххххххх Здесь х : filename.ext - имя файла, содержащего опи­ сание задачи (модели). Значение расширения имени файла по умолчанию - LP . OUTPUT - задает устройство, на которое выводится отчет по задаче. Предусмотрены следующие значения: CON: - вывод на терминал; LPTl: - вывод па печатаю­ щее устройство# l; СОМ 1: - вывод на I<оммуникацион­ ный адаптер# 1. Любое другое знацение считается име­ нем файла с расширением по умолчанию PRN. Значение по умолчанию - вывод на терминал. PAGESIZE - задает число выводимых строк на стра­ нице. Минимальный размер страницы - 20 стро1<. Зна­ чение по умолчанию зависит от OUTPUT. Значение OUTPUT Значение PAGESIZE Filenarne ...... . CON: ....... . I~PTl:........ COMl: ....... . .25 .. 25 .66 .66 LINESIZE - задачет число символов в строке. Ми­ нимальный и максимальный размеры строки - соответ­ ственно 40 и 256 символов. По умолчанию число симвоJюв зависит от значения OUTPUT. 218
Значение OUTPUT Значение LINESIZE Filename ......... 80 CON: .......... 79 LPTl: .......... 80 COMl: ......... 132 LISТINPUT - значение YES вызывает вывод файла задачи. Значение NO - отменяет вывод. Значение по умолчанию - YES. TMARGINS - задает чис.10 пустых строк вверху каждой страницы. По умолчанию оно ~ависит от значе­ ния OUTPUT. Значение OUTPUT Значение TMARGINS Filename ..О CON:.. .О LPТI: . . .2 CO.Ml: . . .2 BMARGINS - задает число пустых строк внизу каж­ дой страницы. По умолчанию оно зависит от значения OUTPUT. Значение OUTPUT Значение BMARGINS Filename .О CON . .О LPTI: . 1 COMl: . . 1 LMARGINS - задает число пустых символов слева на странице. Чтобы получить стандартное поле, требуемое для отчета (2,5 см), необходимо ввести LMARGINS 12. Значение по умолчанию равно О. WAIT - значение YES вызывает подсказку *** после вывода каждой страницы. Для продолжения работы не­ обходимо нажать (ВВОД}. Значение по умолчанию - NO, т. е. непрерывный постраничный вывод. FIELDSIZE - задает количество позиций, требуемых для печати чисел в сообщениях. Минимальное значение - 9. Значение по умолчанию - 11 . DECIMALS - задает число значащих цифр справа от десятичной точки. Минимальное значение - О. Зна­ чение по умолчанию - 4 . AL TERNA ТЕ - задает «номер» аJ1ьтернативпого ре­ шения для вывода отчета. Значение по умолчанию - О, q-_ е. выводится отчет обо всех альтернативных решениях. 219
SOLUТION - значение YES задает вывод сообще­ ния о решении, значение NO отменяет его. Значение no умолчанию - YES. CONSTRAINTS - значение YES задает вывод сооб­ щения об ограничениях, значение NO отменяет его. Зна­ чение по умолчанию - YES. COSTANAL YSIS - значение YES задает вывод со­ общения о стоимостном анализе, значенпе NO отменяет его Значение no умолчанию - NO. MARGINANAL YSIS - значение YES задает вывод сообщения о маргинальном анализе, значение NO отме­ няет его. Значение по умолчанию - NO. DEFAUL TS - значение YES вызывает печать уста­ новленных по умолчанию значений всех параметров. Зна­ чение по умо,,чанию - 1':О, т. е. нечать умолчаний не производится. COPIES - задает количество распечаток каждого со­ общения. Значение по умолчанию - 1 . CONFIGURE - значение YES вызывает при прогоне LP88 изменение значения по умолчанию каждого вве­ денного параметра командной строки в соответствии с ука­ занным в командной строке значением. Значение по умол­ чанию - NO, т. е. все значения по умолчанию сохра­ няются. METHOD - задает стратегию выбора переменных, вводимых в базис. 8.4 . Пример построения собственной инструментальной среды. Система Эрмитаж После того как пакет Lotus адаптпрован, а LP88 изучен, можно приступить к окончательной сборке си­ стемы - организации интерфейса между программнымп КОУ11юневтами. Учитывая большие функшюнальные воз­ можности системы и место ее со3данш1, дадим ей скром­ ное имя Эрмитаж. Но прежде позволим себе небольшое отступление. Если вернуться к весьма недалекой истории, то можно вспомнить, с каким увлечением была подхвачена идея нспользования методов исследования опер1ший для ре­ шення задач планирования и управления производством. Множество публикаций в научной литературе и прессе Рсел яли уверенность, что вот еще одно маленькое усилие- 22()
и все проблемы экономики будут решены. Строились изящ­ ные модели, сулившие многомиллиардный экономический эффект буквально во всех сферах деятельности. Слово «оптимальный» стало одним из самых модных. Однако время шло, а проблемы не только не решались, но на­ каплива.11ись. Стали появ.~яться высказывания в том плане, что эко­ номико-математические модели несовершенны, что они, в принципе, никогда не смогут учесть все многообразие факторов, отражающи1⁄4 реальную действительность, или, выражаясь научно, разрабатываемые и предлагаемые мо­ дели оказывались всегда неадекватны реальным объекта м управления. Слово «оптимальный» стало почти непри­ личным, вместо него вводи.11ось сухое с.11ово - «рацио­ нальный». Термин АСУ стал все чаще заl\,l_еняться па такие наборы слов, как «система обработки данных» или «ком­ плекс средств автоматизации». Показатель «Процент оп­ тимизационных задач в системе», который существенно влиял на оценку научно-технического уровня разрабаты­ ваемых АСУ, исчез из отчетности вместе с задачами. Пожалуй, два фактора в основном решили судьбу прак­ тического применения экономико-математических мето­ дов: это объективно низкий уровень развития вычисли­ тельной техники, плохо соответствующий сложности ставившихся перед ней задач, и, разумеется, прес.10ву­ тый затратный механизм экономики, не оставлявший места для постановки оптимизационных задач, делавший их просто бессмысленными. Сейчас можно наблюдать, что положение меняется. Первый фактор, и мы постараемся это показать, стано­ вится малозначимым, второй, будем надеяться, прекра­ тит свое существование в самое ближайшее время. А учи­ тывая, что экономю<а страны делается все более дефицит­ ной, актуальность моделей, использующих ограничения, будет только возрастать. Возникает вопрос, готовы ли современные экономисты и руководители управлять, в хорошем смысле этого слова, предприятием в условиях «четырех С»: самоокупаемости, самофинансирования, самостоятельности и самоуправле­ ния? Такой уверенности ни у кого нет. Не будем перечис­ лять те требования, которые предъявляются к руководи­ телям современного предприятия - менеджерам, но то, что они должны находить оптимальные, не побоимся 221
этого слова, решения, не вызывает никакого сомнения. Управление по интуиции из общих, так сказать, сообра­ же11ий к успеху не приведет. Необходимо ввести в повсе­ дневную практиr<у умение найти, поставить и решить за­ дачу. Для этого требуется не только знание методов и ме­ чодологии их решения, нужно еще и овладеть современ­ ными инструментальными средствами, делающими про­ цесс поиска решения увлекательным и результативным. В качестве «своей» лепты в это важное деJ10 и предла­ гается идея создания собственной инструментальной среды. Объединив два мощных средства в единую программную среду, мы получим качественно новое средство, сущест­ венно превосходящее по своим возможностям простую сумму использованных средств (известное явление синер­ гизма). Процесс (в основном скрытый для пользователя) ре­ шения задачи можно проиллюстрировать следующей схе- мой: Эрмитаж собственная инструмента,1ьш1я сред а. Описание и формулировка Решение задачи, задачи, подготовка получение результатов данных и их анализ Lotus 1-2 -3 LP88 1:1 --------~ '--------- ----'- Отображение и обработка результатов решения К достоинствам такой технологии следует отнестп простоту ввода, наглядность формулировки задачи и ре­ зультатов решения, а также возможность обработки и отображения результа1ов любой процедурой Lotus 1-2 -3. С помощью этой технологии удобно организовать много­ вариантные расчеты, связанные с анализом влилния пере­ менных на целевую функцию задачи. Учитывая, что многие метода-ориентированные про­ rрюfмные средства, как уже было отмечено, поддерживают Lot us-таблицы, таким образом организованная инстру­ ментальная среда является открытой для да.r1ьнейшего расширения. Ра1:смотрим работу системы Эрмитаж на примере 3а­ дач11 производственного пла1шрсвания. 222
Описание задачи. Предприятие производит продукцию одного наименования по договорам поставок. Поыи~ю производства в основное время предприятие имеет I:юз­ можность производить продукцию и в сверхурочное вре~Iя. Готовая продукция может храниться до отправки потре­ бителям на складе. Для различных периодов времени производственная мощность предприятия, объемы поста­ вок и емкость склада различны (табл. 8.1). Таli.1ица 8.1 Периоды Наименование показателя 1 1 1 1 1 11 lll IV V Производственная мощность 120 l00 90 140 90 в основное время (количество из- делий), шт. Производственная мощность 3040204060 в сверхурочное время (количество изделий), шт. Объем поставок продукции (ко- ЛИ'IСС~ВО нзделий), шт. IIO 160 l00 100 150 Себе~тонмость выпуска изделия 12 12161011 в основное время, тыс. р)'б. Себестоимость выпуска изде.r.ия 15 16 18 14 14 в сверхурочное вре'-!я, тыс. руб. 40 Емкость склада, допустимое ко• 20 40 40 40 личество изделий на храиенни, шт. Кроме того, условимся, что стоимость хранения еди­ ницы продукции (изделия) в течение одного периода - 0,1 тыс. руб., а начальный запас продукции - 20 шт. Задача состоит в определении того, сколько единиц про­ дукции должно производиться в течение каждого периода с целью минимизировать сумму производственных за­ трат и затрат на хранение готовой продукции при условии вь11юлне11ия договоров поставок. Формулировка задачи. Сформулируем задачу в терми­ нах ,,инейноrо программирования, то есть путем задания целевой функции и ограничений. Как известно, ~адача линейного программирования в канонической форме для случая мшшмизации имеет следующий вид: F (Х) = sum (CiXi) - шin (целевая функция} при ограничениях: АХ>=В, 223
Xi>=О для всех i, где: Х - вектор переменных задачи Xi: Ci - стоимостные коэффициенты; А - матрица технологических коэффициентов; В - вектор-столбец правых частей. Введем переменные задачи: Bi - количество продук­ ции, произведенной в основное время в течение i-ro пе­ риода; Дi - ко.rшчество продукции, произведенной в сверх­ урочное время за i-й период; 3i - количество готовой продукции, хранящейся на ск.паде в течение i-ro периода. Целевая функция имеет с,1едующий вид: F=Fl+F2+FЗ,rдeFl=12В1+12В2+16В3+ + 10В4 + 11 В5 - сумма производственных затрат в ос­ новное время; F2 = 15Дl + 16Д2 + 18ДЗ + 14Д4 + + 14Д5 - сумма производственных затрат в сверхуроч­ ноевремя;FЗ=31+32+33+34+35- суммаза­ чрат на хранение готовой продукции. Цель решения - найти такие Bi, Дi, 3i, при которых доставляется минимум выбранной целевой функции F при следующих ограничениях: 1) на производственную мощность в основное время: В2 <= 100; вз <= 90; В4 <= 140; В5 <= 90; 2) на производственную мощность в сверхурочное время: 224 Д2 <= 40; ДЗ <= 20; Д4 <= 40; Д5 <= 60; 3) на объемы хранения готовой продукции: 31- 20; 32 <= 40; 33 <= 40; 34 <= 40; 35 <= 40;
4) на обязательное выполнение договоров поставки: 31+В2+Д1- 32=110 для Iпериода; 32+В2+Д2- 33 = 160 для 11периода; 33+В3+ДЗ- 34=100 для111периода; 34+В4+Д4- 35=100 для IVпериода; 35+В5+Д5 = 150 для V периода. Предполагается, что в конце последнего периода го- q-овой продукции на сr,ладе не должно оставаться. Формулировка задачи в системе Эрмитаж. После вы­ зова системы: А > AGE на экране появится стартовое меню, позволяющее выбрать любой из следующих ре­ жимов работы: с табличным процессором; вывод на пе­ чать графиков; решение оптимизационных задач; работа с файлами; выход из системы. Выбор q-ребуемого режима осуществляется подводом курсора и нажатием клавиши «ВВОД». Рассмотрим особенности работы с табличным процес­ сором применительно к условиям поставленной задачи. Для подготовки исходных данных к решению оптимиза­ ционной задачи необходимо выбрать, в какие места таб­ лицы следует помещать исходные данные задачи, и, если предполагается вывод результатов в таблицу, зарезерви­ ровать места для записи. Напомним, что Lоtus-табличный процессор позволяет присвоить имя любому диапазону ячеек таблицы, Под диапазоном понимается либо часть строки, либо часть столбца, либо блок ячеек. Система LP88 обращается только к тем диапазонам Lоtus-таблицы, которые имеют следующие имена: 88ТITLE (необязательный) 88VARIABLE; 88COST; 88LOWER 88UPPER 88CONSTRAINT; (необязательный); (необязательный)i 88VA (необязательный); 88СА (необязательный); 88VR (необязательный); 88CR (необязательный). 88TIТLE - имя диапазона ячеек, содержащих наз­ вание задачи. Этот диапазон необязательный. Название задачи отображается вверху каждой стрю-1ицы сообще­ ний системы LP88. Максимальный размер названия - 225
128 символов. В случае, когда ширина страницы меньше размера названия, последнее сокращается. 88VARIABLE - имя диапазона ячеек, содержащих все переменные задачи, независимо от того, входят ли какие-то переменные в выражение для целевой функции или нет. Ячейки, содержащие переменные задачи, должны иметь диапазон либо части строки, либо части столбца. В каждой ячейке должно быть записано только одно имя переменной длиной от 1 до 8 символов, причем имена пере­ менных не должны повторяться. В диапазон нельзя вклю­ чать пустые ячейки. Отметим, что число ячеек с перемен­ ными задачами используется для проверки других диапа­ зонов - ячеек со стоимостными коэффициентами, огра­ ничениями, оптимальными значениями. Максима.1ьное число переменных - 253. 88COST - имя диапазона ячеек, содержащих стоимост­ ные коэффициенты или коэффициенты целевой функции. Ячейки, содержащие стоимостные коэффициенты, должны иметь диапазон либо части строки, либо части столбца. В таблицу вводятся только ненулевые коэффипиенты. Однако число ячеек диапазона стоимостных коэффиuиен­ тов должно совпадать с числом переменных. 88LOWER и 88UPPER - имена диапазонов ячеек, содержащих прямые ограничения задачи, то есть такие, которые непосредственно ограничивают область значений переменных. Например: 31=20или20<=31<=20; 32 <= 40. Эти диапазоны необязательны, так как пряl\l!ые ограничения могут быть установлены в диапазоне 88CONSTRAINT. Однако использование диапазонов 88LOWER и 88UPPER предписывает системе LP88 при­ менить при решении задачи специальный высокоэффек­ тивный алгоритм. 88LOWER - диапазон ячеек, содержащих нижнпе границы переменных. 88UPPER - диапазон ячеек, содержащих верхние границы переменных. Ячейки, содержащие нижние 11ли верхние границы переменных, должны иметь диапазон либо части строки, либо части столбца. В таблицу вво­ дятся только ненулевые значения нижних граниu и ко­ нечные значения верхних границ. Однако число ячеек 226
диапазона верхних шш нижних границ должно совпадать с числом переменных. 88CONSTRAINT - диапазон ячеек, содержащих ог­ раничения задачи. Этот диапазон является обязательным. Первая ячейка каждой строки диапазона должна содер­ жать метку ограничения. Длина метки ограничена 8 сим­ волами. Следующие ячейки строки должны содержать rгехнолоrические коэффициенты-ограничения, затем вво­ дятся тип ограничения ( <=, =, >=) и значение правой части. В каждую строку вводятся только ненулевые тех­ нологические коэффициенты. При этом число ячеек в каж­ дой строке диапазона должно быть равным три плюс число переменных. Следующие диапазоны являются необязательными. Они могут использоваться для записи результатов решения за,:щчи непосредственно в таблицу. В диапазон 88VA помещаются оптимальные значения переменных; в диапазон 88СА - значения ограничений на оптимальном решении. Для переменных, не влияющих на оптимальное решение, в диапазоне 88VR помещаются значения минимальных возможных отклонений соответ­ ствующих коэффициентов целевой функции, которые обес­ печивают влияние этих переменных на оптимальное ре­ шение. В диапазон 88CR помещаются значения избыточ­ ности ограничений на оптимальном решении. Число ячеек диапазонов 88VA и 88VR должно совпа­ дать с числом переменных, а диапазонов 88СА и 88CR - с числом ограничений задачи. Ниже приводится рекомендуемое расположение ис­ ходных данных задачи и диапазонов ячеек для записи оптимальных значений переменных в Lоtus-таблице (по­ Rазан фрагмент таблицы, видимый на экране, рис. 8.7). Диапазонам ячеек присвоены следующие имена: Имя диапазона 88ТITLE .. 88VARIABLE .. 88COST 88LOWER 88UPPER .. 88CONSTRAINT 88VA •.... Диапазон ячеек Al ... El D3 ... RЗ D5 ... R5 D7 ... R7 D8 ... R8 CI0 ... Т15 D17 ... Rl7 227
1\:) 1>:) А в с D Е F G н 1 J 1( 00 , Задача производственного пnанирования 2 з Переменные в, В2 вз В4 В5 Д1 Д2 ДЗ 4 5 Коэффициенты ,2 ,2 16 10 11 15 16 18 б 7 Нижние границы 8 Верхние границы 1201009014090304020 ') 10 Ограничения: ,, период 1: 1 1 12 ПЕ'РИОд2: 1 1 1з периодЗ: 1 1 14 период4: 15 период5: 16 17 Оптимум: Рис. 8,7
Отметим, что комментарии к исходным данным задачи могут находиться в любых ячейках таблицы, кроме ука­ занных в 88-диапазонах. Это позволяет не только красиво и удобно для чтения разместить исходные данные конкрет­ ной задачи, по и использовать все адресуемое простран­ ство таблицы для решения других задач и проведения промежуточных расчетов. После окончания формирования таблицы исходные данные записываются в виде файла под любым допусти­ мым именем, например PLAN. Решение оптимизационной задачи в системе Эрмитаж. После знвершения подготовки исходных дан­ ных, д.11я последующего решения оптимизационной за­ дачи следует перевести ЭРМИТАЖ в соответствующий режим. На экране появляется меню, с помощью котороrq n режиме диалога будут осуществляться выбор и настройка параыетроn, регламентирующих процесс решения и за­ дающих условия отображения результатов (имя файла с исходными данными, метод решения, следует ли печа­ 'Гать отчет о решении, куда поместить результаты реше­ ппя, формат печати и т. д.). Для решения рассматривае­ мой задачи производственного планирования система ЭРМИТАЖ обратится к системе LP88, которая начнет считывать исходные данные задачи из файла исходных дюшых (в нашем случае PLAN), интерпретируя их в соб­ ственный формат. ПосJ1е этого система LP88 решает за­ дачу, выводит отчет о решении и, если было задано, запи­ сывает оптимальные значения переменных в зарезервпро­ вюшые ячейки таблнцы. Если теперь требуется проил­ люстрировать результаты решения, необходимо выйти D режим де.лавой граф1ши Lotus. Вывод полного отчета требуется только на этапе со­ здания экономико-математической модели. Если модель nронма апробацию, результаты решения в виде оптималь­ ного плана целесообразно помещпть непосредственно в таб­ лит,. Ниже приводится полный отчет о решении задачи. Раздел 1. Контроль начальных условий ..ТITLE (8RТITLE) Имя: Задача производственного планирования ..OBJECТIVE (88V AR IABLE) 220
(88COST) Цель: МИНИМУМ Переменные: 15 12.0000 В1 12.0000 В2 16.0000 В3 10.0000 В4 11.0000 В5 15.0000 Дl 16.0000 Д2 18.0000 Д3 14.0000 Д4 14.0000 Д5 0.1000 31 0.1000 32 о. 1000 33 0.1000 34 0.1000 35 • .BOUNDS (88LOWER} (88UPPER) Нижние и верхние границы 0.0000 <= Bl <= 120.0000 0.0000 <= В2 <= 100.0000 0.0000 <= В3 <= 90.0000 0.0000 <= В4 <= 140.0000 0.0000 <= В5 < = 90.0000 0.0000 <= Дl <= 30.0000 0.0000 <= Д2 <= 40.0000 0.0000 <= Д3 <= 20.0000 0.0000 <= Д4 <= 40.0000 0.0000 <= Д5 <= 60.0000 20.0000 <= 31 <= 20.0000 0.0000 <= 32 < = 40.0000 0.0000 <= 33 <= 40.0000 0.0000 <= 34 <= 40.0000 0.0000 <= 35 <= 40.0000 . .C ONSTRAINTS (88CON STRA INT) Строка: периодl Элементов: 4 1.0000 В1 1.0000 ДI 1.0000 31 - 1.0000 32 = 110.0000 230
Строка: период2 Элементов: 4 1.0000 В2 1.0000 Д2 1.0000 32 - 1.0000 33 = 160.0000 Строка: период3 Элементов: 4 1.0000 В3 1.0000 Д3 1.0000 33 - 1.0000 34 = 100.0000 Строка: период4 Элементов: 4 1.0000 В4 1.0000 Д4 1.0000 34 - 1.0000 35 = 100.0000 Строка: период5 Элементов: 3 1.0000 В5 1.0000 Д5 1.0000 35 = 150.0000 •.АСПVIТУ (88VA) (88СА) •.REDUCEDCOST (88VR) (88CR) С1 атистика- LР88 Версия 1.00 Машин. память: 512 Кбайт Вспом. память: 279 Кбайт Переменных: 15 Ограничений: 5 О <=, 5=, О >=. Ненулевых ЛП элементов 19 Диск. nростр: О Кбайт l lcn. nростр: 1 Кбайт Возможп.: 3.4% исп. Оценочное время: 00 : 00 : 00 Итер 16 Время решения: 00 : 00 : 03 ЕДИНСТВЕННОЕ РЕШЕНИЕ 231
Раздел 2. Сообщение о решении Фай.'!: plan 31/03/89 12 : 34 : 55 Стр. 1-1 РЕШЕНИЕ (Минимум) : 7, 391. 0000 Задача произ­ водственного планирования Переменная Значение В! 120.0000 В2 100.0000 В3 90.0000 В4 140.0000 В5 90.0000 БД1 10.0000 БД2 30.0000 дз 0.0000 Д4 0.0000 БД5 20.0000 31 20.0000 32 40.0000 Б33 10.0000 34 0.0000 Б35 40.0000 Цена 12.0000 12.0000 16.0000 10.0000 11.0000 15.0000 16.0000 18.0000 14.0000 14.0000 0.1000 0.1000 0.1000 0.1000 0.1000 Раздел 3. Сообщения об ограничениях Файл: plan 31/03/89 12 : 34 : 55 Стр. 1-2 ОГРАНИЧЕНИЯ: Задача производственного рования плани- Ограничен. Значение Пр. часть период! 110.0000 = 110.0000 период2 160.0000 = 160.0000 периодЗ 100.0000 = 100.0000 период4 100.0000 = 100.0000 период5 150.0000 = 150.0000 Сумма ошибок: 0.000000 Наш комментарий можно снабдить девизом: новое - хорошо забытое старое. Мы не только получили решение задачи, но и построили экономико-математическую мо­ дель, которая может быть передана даже пользоватеJ1ю, не знающему ничего про линейное программирование. При необходимости рассчитать оптимальную производ­ ственную программу теперь достаточно откорректировать исходные данные в таблице. Спектр использования Jlll· нейного программирования достаточно широк, кроме 1ого, многие задачи могут быть сведены к задаче линейного программирования. По этой проблеме имеется обширная литература. Для первого знакомства рекомендуем ра­ боту [б ]. 232
Глава 9. ЛОКАЛЬНЫЕ СЕТИ ЭВМ 9.1. Принципы построения локальных вычислительных сетей По мере широкого внедрения средств вычислительной техники во все области человеческой деятельности проб­ лемы организации взаимодействия между различными ЭВМ в учреждениях, организациях и на предприятиях (обмен информацией, сов:v1естное использование ресурсов, созда­ ние совместно используемых архивов, баз данных, баз знаний, коллективное принятие решений, планирование, проектирование, производство, управление и многое дру­ гое) становятся крайне актуальными. Решение этих проблем, объективно отражающих потребность научно­ технической революции, связывается с созданием сетей эвм. Несмотря на, казалось бы, идеальные условия в нашей стране (имеется в виду сохраняющийся принцип макси­ мальной централизации управления) для организации общегосударственной системы сбора и передачи даIIных, длительная попытка создать достаточно разветвленную национальную сеть, открывающую доступ многих поль­ зователей к огромным совокупным запасам знаний II ин­ формации, оказалась до сих пор нереализованной. Для многих сейчас стало ясно, что это является едва лп не главным тормозом в развитии научно-технического про­ гресса. Числом не малая армия научных работников и специалистов 11редставJ1яет собой группы и группки «средневековых кустарей», обреченных на вечное затвор­ ничество в своих лабораториях и отделах. Если к этому добавить и трудно распространяемое печатное с.1ово, сравнение окажется не слиш1<0м сильным. Наиболее подготовленные и прогрессивно мыслящие руководители предприятий пытаются частично решнть проблему обмена информацией, по крайней мере, в ра:,1- ках своих организаций. Для этого закупаются или нзrо- 233
q-авливаются сетевое оборудование и программное обеспе­ чение. Свои услуги в создании сетей ЭВМ активно пред­ лагают зарубежные фирмы. Учитывая, что к настоящему времени разработано свыше ста различных сетей только ПЭВМ, сделать правильный выбор оказывается не всегда просто, тем более, что для многих, в том числе и для специалистов, вопросы практического освоения сетей ПЭВМ являются новыми. Поэтому здесь мы постараемся сообщить тот необходимый минимум сведений о сетях ЭВМ и, главным образом, ПЭВМ, который для большин­ ства пользователей будет вполне достаточным. Локальная вычислительная сеть (ЛВС) - это система для взаимосвязи двух или более коммуникационных устройств, обладающая следующими характеристиками: физическая полносвязность, то есть устройства свя­ заны друг с другом непрерывной физической средой, например коаксиальным кабелем; каждое пользовательское устройство в сети может уста­ новить связь с другим пользовательским устройством; простота реконфигурации системы; ограниченность размещения ЛВС пределами одного­ двух зданий ( <=3 км); высокая скорость передачи данных (1-10 Мбит и выше). При необходимости реализуется выход ЛВС на гло­ бальные вычислительные сети, зона действия которых может простираться сколь угодно широко, достигая меж­ национальных масштабов. Использование ЛВС определяет новую стратегию в об­ работке данных, которая заключается в создании распре­ деленных систем, обладающих высокими скоростью, на­ дежностью, модульностью, расширяемостью, живучестью и готовностью при относительно низкой стоимости. ЛВС позволяет большому количеству пользователей разделять такие ресурсы, как диски, печать, загружаемые программы 11 файлы данных. Среди наиболее важных хараитеристик ЛВС обычно выделяют следующие: физическая среда передачи; метод доступа к среде; топология се1И; макси~1альное чис.10 подключаемых узлов; максимальная скорость 1Jередачи дашrых. На сегодня чаще всего используются следующие типы физической среды передачи: витая пара (RП); узкоnолос- 234
вый коаксиальный (УК) кабель; широкополосный коак­ сиальный (ШК) кабель; оптоволоконный (ОВ) кабель. Витая пара характеризуется относительно низкой стои­ мостью и возможностью легкого наращивания. К недостат­ кам следует отнести относительно низкую скорость пере­ дачи данных (1 Мбит/с) и малую по:'>1ехозащищенность. Витая пара обычно используется для подключения теле­ фонных аппаратов к АТС учреждений, поэтому появляется возможность построения ЛВС на существующих абонент­ ских каналах. Коаксиа.ТJЬный кабель характеризуется более высокой по сравнению с ВП скоростью передачи данных (до 10 Мбит/с). Недостатком кабеля является то, что конфи• гурация сети должна быть известна уже в момент про­ кладки кабеля. Дальнейшее развитие сети возможно лишь путем установки повторителей. Широкополосный коаксиальный кабель позволяет одно­ временно с передачей цифровых данных в нескольких частотных диапазонах передавать телевизионные (ТВ).' сигналы и речь. Использование оптоволоконного кабеля обеспечивает передачу данных со скоростью до 150 Мбит/с практически без помех. Обычно выделяют 4 типа топологий: звезда; шина (моноканал); кольцо; произвольная. Существующие ме­ тоды доступа к физической среде весьма разнообразны и зависят от топологии сети. Для шинной топологии чаще всего применяется метод CSMA/CD (множественный до­ ступ с контролем несущей и обнаружением конфликтов). В табл. 9.1 приведена классификация методов доступа [3 ]. Таблица 9.1 Топология Случа/lны/1 Детерминироваиныil метод доступа сети метод доступа централизованныil 1 децентра- лизованны/1 Шина CSMA/CD Селективный опрос Передача Кольцо маркера Вставка Групповой опрос Неявная регистра передача Звезда CSMA/CD Ко\1мутация права физического - (Х.21) или логического (Х.25) соединения Произ- CSMA/CD Коммутация частотных Передача волы1ая полос маркера 235
В настоящее время в мире существует несколько сетевых архитектур: DNA (фирмы DEC), SNA (фирмы IВМ), XNS (фирмы Х EROX), DCNA (японской националь­ ной сети), ЕСМА) европейской ассоциации промышлен­ ников), и, наконец, IS 7498 эталонной модели взаимо­ соединения открытых систем OSI, принятой международ­ ной организацией стандартов). Впрочем, сеть может проектироваться и как закрытая система, которая под­ держивается только специфическим (<mестандартным») обо­ рудованием и программным обеспечением. Если же в пер­ спективе ставится задача выхода создаваемой лакал ь­ ной сети на некоторую глобальную сеть, рационально следовать эталонной модели OSI. Эта модель состоит из 7 уровней: физический (управление оборудованием); канальный (интерфейс с оборудованием и управле- ние логическим канаJ1ом); сетевой (межсетевые соединения); транспортный (сетевая адресация); сессий (отправка и прием сообщений); представления данных (обработка данных); прикладной (сервисные службы). Большинство разработчиков сетевых средств рабо­ \Гают в рамках архитектуры эталонной модели открытых систем. В табл. 9.2 приведено соответствие эталонной модели другим архитектурам. Сетевое программно-аппаратное обеспечение строится для каждого узла в соответствии с сетевой архитектурой. Пользователь не видит всех уровней архитектуры. Он взаимодействует лишь с верхним (прикладным) уровнем. Для каждого уровня определены протокол уровня и ин­ u-ерфейсы. Протокол - набор соглашений, от1исываrощих поря­ док взаимодействия между одинаковыми уровнями раз­ ных узлов. Интерфейсы уровня описывают порядок взаимодействия с уровнем, лежащим выше, и с нижележа­ щим уровнем. Се1евое оnеснечение строится таким обра­ зом, что каждый нижележащий уровень является серве­ ром (т. е. прелоставляет услуги) по отношению к выше­ лежащему уровню. Ввиду большого разнообразия архитектур и протоко­ лов возникает проблема соединения разных сетей. Эта проблема решается с помощью шлюзов и мостов (мост, 236
Номер 1 :Уровень 7 1 Прикладн.ой 6 1 Представления данных 5 1 Управления сеансами 4 1 Транспортный з 1 Сетевой 2 Канальный Физ11qеский Стандарт 1 ЕСМА-85 1 ЕСМА-84, -86, -87 -88 1 ЕСМА-75 1 ЕС.МА-72 1 ЕСМА-92 1 ЕСМА-82, -89, 1 -90 1 ЕСМА-80, -81 1 Таблица 9.2 Архитектура IВМ DEC XEROX SNA DNA XNS IEEE-802.3, -802.4, -8 02.5, -802.6 II III шлюз - это специальные узлы сети, обеспечивающие: первый - связь сетей одной архитектуры; второй - связь сетей с разной архитектурой). Ввиду огромного разнообразия существующих в об­ ласти локальных сетей стандартов разработчики и поль­ зователи ЛВС стотшулись с серьезными проблемами сов­ местимости сетей. НаибоJJее серьезной работой в мире по стандартизации ЛВС является разработка фирмы General Motors, которая представила проект по созданию универсального протокола МАР, обеспечивающего авто­ матизацию процессов производства от проектирования до изготовления. Ценность проекта заключается еще и в том, что он обеспечит совместимость устройств управления, поставляемых различными фирмами-изготовителями элек­ тронного оборудования для различных ти1юв производств. К проекту МАР присоедннит~сь такие гиганты западной индустрии, как ALLEN BRADLY, CONCORD DATA SYSTEMS, DEC, HEWLETT PACKARD, MOTOROLLA, АТ &Т, IBM и др. Уже появилась первые изделия, рабо­ тающие по протоколу МАР (производитель - FANUC). По оценкам специалистов, к 1990 r. сети на основе .i \1AP займут свыше 75 % западного рынка производственных JlВC. 237
МАР базируется на архитектуре семиуровневой эта­ лонной модели OSI. Для каждого уровня специфици­ руются конкретные варианты протоколов. На нижних уровнях протокол ориентирован на детерминированный метод доступа с передачей маркера - TOKEN PASSING BUS (IEEE 802.4). В качестве физической среды рассма­ тривается высокоскоростной широкополосный коаксиаль­ ный кабель с возможностями передачи данных, телеви­ зионного изображения, речи и т. д. Протокол предусма­ ~гривает создание «мостов» и «шлюзов» для обеспечения межсетевого обмена локальных сетей со сходными или различными архитектурами и для возможности выхода на глобальные сети коммутации пакетов. Топология сети является шинной (логическое кольцо) со скоростью обмена информации 10 Мбод. Можно сказать, что МАР является, по крайней мере на ближайшее время, универсальным протоколом и, в частности, может быть использован при создании сетей для персональных ЭВМ. 9.2 . Локальные сети персональных ЭВМ Особенности ЛВС для ПЭВМ. Большинство локальных сетей ПЭВМ строятся в соответствии с архитектурой семи­ уровневой эталонной модели для открытых систем. ЛВС персональных ЭВМ состоит, по крайней мере, из трех основных элементов. 1. Рабочие станции - ПЭВМ, на которых работают пользователи сети. 2. Сетевой сервер, который может использоваться 11 как рабочая станция, и как рабочее место администра­ ~гора сети (базы данных). Такая система на базе ПЭВМ позволяет распределять ресурсы между пользователями. Система может поддерживать как распределенную, так и интегрированную базы данных. 3. Кабель и оборудование подключения к сети. Это оборудование, используемое для подключения рабочпх станций к серверу прямо или косвенно. ЛВС может иметь дополнитех~ьные периферийные принтеры (например, до­ рогостоящий лазерный принтер) или диски большой емкости, которые могут подключаться прямо к серверу. Под термином «узел» обычно понимают компьютерную систему, подключенную к сети (это может быть рабочая станция или серпер). 2ЗS
Помимо кабеля и платы сетевого адаптера исполь• зуются следующие компоненты: HUB (концентратор про• водов) - обычно поддерживает от 8 до 32 станций (при звездной или распределенной звездной топологии); ре" питор (повторите.1ь) - устройство, которое принимает сигнал и ретранс,1IИрует его в другой участок провода: мост - устройство, которое соединяет две локальные сети одного типа; шлюз - устройство, которое соединяет две локальные сети разного типа; терминаторы (используются на концах кабеля для приема сигнала данных и предотвра• щения его отражения). Существующие методы доступа весьма разнообразны и зависят от топологии сети. Наибо.1ее часто применяютс.Я случайный метод доступа CSMA/CD (множественный до• ступ с контролем несущей и обнаружением конфлиr{тов, его обычно используют сети ETHERNET) и детермини• рованный метод доступа с передачей маркера TOKEN..... PASSING (сеть TOKEN RING для промышленных усло­ вий). Работа в ,1юкальной сети протекает на индивидуальных рабочих станциях. Однако функции администратора сети (централизованные или распределенные по всем станциям)' реализуются на специальных, более мощных ПЭВМ - сетевых или ресурсных серверах. Серверами в широком смысле могут быть: файл-сервер, т. е. диск-сервер; прин" тер-сервер; сервер коммуникации и прочие специальные серверы. Пользователю, как правило, предоставляются следу• ющие функции: разделение файлов; разделение дисков (разделение псевдоустройств); защита данных (пароли); обмен сообщениями; интерфейс с прикладным уровнем; спулинr (подкачка) на удаленной печати; межсетевое соединение. ЛВС состоит из многих рабочих станций, соединенных между собой, на которых работают обычные пользователи. Сеть управляется и координируется суперпользователем­ администратором сети. Он обладает следующими воз­ можностями: изменить конфигурацию сети; добавить или удалить пользователя (речь идет, разумеется, то.1ько о конкретной ПЭВМ); передать широковещательное сооб­ щение по всей сети; изменить атрибуты разделения ресур­ сов; координировать доступ к файлам. Укажем следующие параметры, участвующие в выборе ЛВС: физическая среда; топология; метод доступа; службы 239
верхних уровней. Кроме этого, существенным критерием является цена, поскольку 70 % информации обрабаты­ вается, как правило, в месте, где она возникает. Особенностью сетей для IВМ РС и ПЭВМ, совместп­ мых с ними, является использование на нижних уровнях сетевого обеспечения специальной программно-аппаратной компоненты NETBIOS. Программное обеспечение сети ПЭВМ обычно состоит из NETBIOS, сетевой операционной системы и сетевых утилит. NETBIOS реализует нижние (физический и ка­ нальный) уровни архитектуры. Сетевая операционная система реализует верхние уровни (уровни 4-7); сетевые утилиты выполняют наибо.ТJее часто встречающиеся сете­ вые операции. Программное обеспечение сети обычно работает в рам­ ках операционной системы PC-DOS или MS-DOS. К числу наиболее популярных сетей ПЭВМ можно отнести сле­ дующие: PC-NET; TOKEN RING NETWORK; ARCNET; STARLAN; 3 PLUS. В табл. 9.3 приведен более полный список сетей ПЭВМ с кратким указанием их характеристик. Помимо сетевого программного обеспечения, которое предоставляет пользователю ЛВС относительно широкий выбор сетевых услуг, существуют достаточно простые и дешевые средства, обеспечивающие телекоммуникацион­ ную связь. Для аппаратного обеспечения ре.боты таких пакетов требуется лишь связать ПЭВМ через интерфейс RS-232C (стык С2) витой парой. Пакеты телесвязи обеспе­ чивают передачу в асинхронном режиме символьных п двоичных (иногда только симво,1ы1ых) файлов между персональными ЭВМ. К числу наибо.ТJее нзnестных пакетов q-елесвязи относятся с.ТJедующие: CROSSTALK; SMART- TERM; SMARTCOM 11, KERMIТ. Одна из современных тенденций развитпя средств базового программного обеспечения для ПЭВМ заклю­ чается в том, что в деловые интегрированные пакеты, а также последние версии табличных процессоров, СУБД и даже текстовые процессоры наряду с традиционными функциями включаются средстnа телекоммуникации и сетевые процессоры. К числу пакетов, обладающих сред­ ствами для телекоммуникации, можно отнестп следующие: ЕnаЫе, Frame\\·ot"k 11, Symphoпy, Open Systeшs; R : BASE 5000, Clipper, Revelation и др. 243
Таблица 9. 3 - о :; "' "'f-, .,; " = u ~ '- Сеть Ф11р'1а с., '~ ,; о "' :,- "' о ,; "( :::о Q.U "' о <, ~,; о,:- "' с:; а. Ом 6~ ,; о u ~>, ~ f--, TOPS Net\\ ork СЕNТRЛЛ\ шк 32230К1ш SУSТЕЛ\ \\!EST CLASТER/ONE NESTAR SYSTEJ\\S ВП 65 250К 0,3 п ETHERNEТ XEROX УК 1024 !ОМ 0,5 ш 1553~ЕТ VLSI SYSТEMS УК 256зм0,3ш lM OMNJNET CORVUS SYSTEMS ВП 64IM0,5ш Z-NET ZILOG УК 255 8001( 2 ш PLAN4000 NESTAR SYSТEMS УК 255 2,5М 6,5 STARLAN АТ&Т вп 32IM033 10-NET FOX RESEЛRCH вп 50IM0,6ш G/NET GATEWAY СО.ММ. вп 15 1,43М 2,1 ш TOKEN RING IВМ ВП, 2604М2К, NEТ\VORK шк 3 IВМ РС NET\VORK IВМ твк 722.М0,6ш PLANSERJES NESTAR SYSTEMS УК, 1004М63 08 HYPER- NEТ\\'ORK вп, 10ООО 10- 9 ш CHANNEL SYSTEMS шк 50М ов, IВМ ARCNEТ NO\1ELL INC. шк 252,5М6ш S-NEТ Та же 8П, 24 О,5М 2,4 3 08 PC-NET ORCHID шк 16 IM2,1ш TECHNOLOGY PRO-NET PROTEON INC. 8П, 30!ОМ23, шк к J8M NET/ONE UNGERM ANN УК, 1000+ !ОМ 44 ш 8AS 08 !ВМ 3 PLUS зсом шк,INF!ОМ3ш ов VIST А LAN/PC ALLEN- УК2552,5М10ш BRADLEY 11 Смнрнов Н. Н. 241
Существующие ЛВС для персональных компьютеров достаточно схожи по выполняемым функциям. Чтобы ближе познакомиться с их возУiожностями, рассмотрим две сети: STARLAN и 3 PLUS. Сеть STARLAN. Эта сеть является ннзкоскоростной сетью, выполненной по стандарту ETHERNET. Ее ocJJrn- ныe характеристики: физическая среда - витая r1"r::i; число узлов - до 16 на концентратор проводов; скорссrь передачи данных - 1 Мбит/с; расстояние до концент;)а­ тора - 300 м; топо.1оrпя - звезда; метод доступа - по IEEE 802.3 . (CS,I\\A/CD). Требования I< аппаратуре и среде: MS-DOS 3.1 11 ,11 3.2; 512 Кбайт основной пю,1яти (шши:,,1ально); л.1я РСХТ BIOS должен бLПь версии 3.31 11 выше; д.1я РС/А Т В 10S до.1жен быть версии 2.07В и выше. Сеть состоит из следующих l\юдулей: сетевого адапнrа (PNA); кою,ептратора проводов (HUB); сетевоii опеrа­ ционной системы (NOS), сосгоящей из резидент1101·, и нерезидентной частей. Для расчета требуемого объема оперативной пс1:11flтн следует исход11п, из того, что в ней должны размеща1 ьсн следующие программы: резидентная часть MS-DOS; резидентная часть NOS; программы MS-DOS; нерезидентная часть NOS; пользовательские проrраю1ы. Нерезидентная часть NOS включает модули NSHARE, NUSE, МЕ1\Ю. Администратор этой сети может выполнять все функ­ ции обыкновенного пользователя и допотштельно: до­ бавлять в сеть и исключать пользователей из сети; менять все пароли; менять условия доступа к конкретному поль­ зователю; задавать логические имена и физичес!{ие адреса ПЭВМ в сети. Сетевые функции обыкновенного пользователя огра- ничиваются работой с файла~ш и каталога.ми и позво;1яюп 242 изменять атрибуты файла; копировать файл; удалять файл; выводить каталог диска на эr<ран дисп.1еяJ редактировать удаленный файл; получать экран удаленной ПЭВМ~
создавать каталог; 11осылать все:1-1 сообщение (широковещапиеJ; :~-·станавJ11шать параметры; назначать логическое устройство удаленному ката- JI01 '!; СJсуществл я1 ь поиск файл а по сети; блокировать или разблокировать файл; 11ечатать файл на удале11но:-.1 11р1111тере; объявлять каталог разде.1яе:-.1ым; объявлять используемый nаталоr <1до:,..~ашню,1» (монопо- .чнзн_ровать); выводить с11псо1< ПЭВ/11, рабстающнх в сети; удалять каталог; переиыеновывать файл; выоод1пь содержимое файла на стандартное устройство DЫ!Юда STARLAN поддерживает следующие сетевые функции: ра3J.?-:1ение файлов, дисков II ус1ройств печати; передача сообще1шii (широковещание); эJJектронная почта; защита даш-!ых; интерфейс с проrра:-.1мами на COBOL-e, AS1v\-86; воз~южность доступа к уда.~енным файлам при работе с пакетами WORDSTAR, dBASE III и LOTUS 1-2-3. Удаленные файлы будут обрабатываться точно так же, I{ак если бы они находились на собственной ПЭВМ (свой­ ство прозрачности сети). Необходимо лишь блокировать файл перед обработкой и разбло1шровать его пос.т1е завер­ шения обработки. Сеть 3 PL U S. Эта сеть является среднескоростной, выполненной в стандарте ETHERNET. Ее характери­ стики: топология - шина; метод доступа - CSMA/CD1 скорость передачи данных до 10 Мбит/с; среда передачи - коаксиальный кабель и ОВ; длина без повторителя до 300 м, с повторителем до 2,8 км; число узлов - не огра­ ничено. Сеть объединяет два типа рабочих мест - серверы и рабочие станции. Серверы - это ПЭВМ, которые содержат общую па­ мять сети, прикладные программы, пользовательские файлы и другие разделяемые пользовательские ресурсы, 1rакие, как электронная почта; сервер требует хотя бы один ЖеСТl{ИЙ ДИСК. Рабочие станции - это ПЭВМ в сети, на которых работают пользователи. 11* 243
Часто на сервер возлагают выполнение функuий рабо­ чей станции. Ес,'1И В ПЭВ.\,\ уста1юв.11ено Il проrраымное обеспече­ ние как сервера, так и пользователя, то э1и ПЭВМ функ­ ционируют как сервер и как рабочая станция кош<урентно (ко1шурентный сервер). Функuия программного обесп~че­ ния сервера заключается в тш.т, чтобы получать запросы от пользователей и их обрабатывать. Пользовательское программное обеспечение имеется на всех рабочих стан­ циях и состоит из прикладных программ, утилит сетн и программ, конвертирующих команды DOS в сетевые за­ просы. 3 PLUS - это компьютерная сеть, оборудование кото­ рой (hardware) соединено ЕТНЕRNЕТ-кабелем и в п:~Вl\\ загружено сетевое программное обеспечение 3 + SHARE. 3 + SHARE является основой для других служб семейства 3 PLUS, таких, как 3 + MAIL (электронная почта). 3 + SHAR Е состоит из: NАМЕ-службы (это база данных, в которой имеется информация о пользователях и серверах); файловой службы и с.11ужбы печати, которые позволяют пользователям разделять каталоги (файлы и прикладное програr.1мное обеспечение (software) и пе­ чатающие устройства. Документания, поставляемая с сетью 3 PLUS, состонт из трех разделов. 1. Документация пользователя: 3 + SHARE USER'S GUIDE (руководство пользователя по службе разделе­ ния данных и устройств); 3 + MAIL USER'S GUIDE (руководство пользователя по службе электронной почты); 3 + REMOTE USER'S GUIDE (руководство пользова­ теля по использованию удаленной станции); 3 + BACKUP USER'S GUIDE (руководство пользователя по службе архивирования). 2. Документация администратора: 3 + SHARE ADMINISTRATOR'S GUIDE (руководство администра­ тора по службе разделения данных и устройств); 3 + MALE ADMINISTRATOR'S GUIDE (руководство администратора по службе электронной почты); З+RЕМОТЕ ADMINISTRATOR'S GUIDE (руководство администратора по использованию удаленной станции); ЗСОМ NETWORK GUIDE (руководство по использованию сети ЗСОМ). 3. Документация по инсталяции и функционированию аппаратного обеспечения: 3 SERVER GUIDE (ру~ювод- 244
ство по работе сервера); 3 SERVER ТАРЕ BACKUP (1U I[) Е (руководспю по использованию .rrенточноrо стри- 111ер,1 сервера); 3 SERVER EXPANSION DISK GUIDE (руко13одстnо по использованию виртуа:1ьноrо диска сер­ вера); 3 SERVER J\\EJ\IORY I3XPANSION GUIDE (ру­ r:оводство но испсльзоI1ю1Ию расширенной па:мяти сер­ вер.1). Расширенная па:v~ять сервеrа - па:.1ять со стра­ ничной организацией, распо.1оженная выше первых 640 J(б,1йт в адресноч пространстве 1 l\\байт; ETHERLINK BOARD INSTALl.ATION GUIDE (1эу1<оводство по инста­ ляrши сетевой п,1аты ETHERLINIO. 11 сети 3 PLUS существует деление пользователей на локальные и удаленные. Локальный пользователь З+J\\AIL (пользователь, компьютер 1штороrо непосред­ ственно подсоединен к сети через плату ETHERLINK) должен иметь для работы следующее: свободную опера­ тивную память размером 320 Кбайт и, по крайней мере, олив дИСl{ОВод; плату ETHERLINK, установленную в ПЭВМ и подсоединенную к сети; поJ1ьзовательское имя, зарегистрированное у сетевого сервера, и, возможно, пароль (необяз,:гельный параметр); З+SНАRЕ-днскету с инсталятором рабочей станции (WORKSTA TION ST ARTUP DISKETT); программное обеспечение З+MAIL, установленное в каталог APPS на сервере. Удаленный пользователь з+MAIL (пользователь, ком­ пьютер которого подключен к сети через модем и теле­ фонную линию) до.1жен иметь для работы следующее: свободную оперативную память размером 384 Кбайт и, по крайней мере, один дисковод; НА YES илп J\'lICROCOM- мoдeм (300, 1200 или 2400 бод); програм;1.шое обеспечение з+ ROUTE, установленное в сетевом сервере, который укомплектован модемом или непосредственно выходит на телефонную .тншию; пользовательское имя, зарегистри­ рованное у сетевого сервера, и, возможно, пароль (не­ обязательный параметр); дискету с пользовательским програм:vшым обеспечением З+MAIL; дискету с инсталя­ чоро:\1 (STARTUP З+RЕМОТЕ) рабочей станции, конфи­ гурация которой сделана в соответс'Iвии с инструкциями З+RЕМОТЕ USER'S GUID. 9.3. Э.лектронная почта сети 3 PL US Одной из интересных и полезных функций, предостав­ ляемой пользователям практически любой коммерчес1юй сети передачи данных, является возможность организа- 245
ции электронной почты. Рассмотрим поэтому работу, можно сказать, классической службы элеюронноii почты з+,ЧАIL в сети 3 PLUS. С помощью .З+MAIL можно передавать сообщения кош<ретны:\f адресатам или гру11пе пользователей путе~1 введения 1ше11 в список рассытш. З+.v\AIL внзуа.111зируетсн с ПО\1ОЩ1.ю шперакп1rных пане.1ей дисп:1ея, 1<оторые позrю.1яют пыбрать требуе,;ую операцию: GET i\"E\V 1\\,\IL (rю ;учить сr:ежую почгу); CO.\\POSE А 1\Е\\/ ;\\ESSг\GE (cфOP\illrc~:пь !I013Ce со­ общение); REPL У ТО А ,\\ESSЛGE !orr.eт111 ь на с,о:-:­ щенне); FILE А ,\\[SS.- \GE (з,шест11 сооrщение в q·a1:,1); SAVE А ,\\Г::S<;ЛGЕ IN PROGI<F·:SS (сохратпь пост:1 1 1,1- ющие сс0Gщеш1я); R[AD А .\\ESSAGE (проч!!тать со~1б­ щение); SE:-- . JD А ,\\ESSAGE (rюса1ать сообще1те); FOR\V ARD А СОРУ Of' А MESSAGЬ.: (передать 1<сr;рю сооС!щетrя); Prn;-,.;т А i\\ESSAGE (печать сообщения); DELETE А MESSAGE (уда.11пь сооащение). На всех Па!!С,15iХ ДЕСПJI('Я назначе111rе фуНКШ!ОII3;1Ьl!ЫХ 1<лавиш помещается шшзу. Выаоr нужной фунrщни 11ро­ изводнтся нажапrе~1 соответствующей к,1авиш11. Д.1л нсех панелей клавиша Fl - помощь. Встроенный экра11110-ор11е11тированный редаюор со­ общений, называемый J\\ED, позволяет ввести и отредак­ тировать сообщение. MED можно испо.1ьзовать независш.ю от З+MAIL. Допускается присоединять файлы MS-DOS (тексты программ, данные) к З+МАIL-сообщениям. Такие файлы, называемые присоединенными, доставляются ко всем адресатам вместе с сообщениями. Программное обеспечение з+ MAIL состоит из двух программ: одна запускается на ПЭВМ пользователя, другая - на сетевом сервере. Пользовательская часть З+MAIL обеспечивает следующие функции: получение сообщений от пользователей сети; чтение сообщений; печать и запись в файл полученных сообщений; создание новых сообщений с помощью редактора MED; сохранение начатых, но незавершенных сообщений; отправка новых сообщений, ответы на сообщения и перемещение их к дру• гим пользователям сети; уда.'lение сообщений. Часть ПО з+МАIL, размещенная на сетевом сервере, выполняет следующие функции: приемку сообщений (если существует несколько серверов в сети, то кажды~", из них автоматически обеспечивает своих собственных поль­ зователей и можно не заботиться о том, 1<то какой сервер 246
пrРользует); получение сообщений, адресованных поль­ ЗО!!ате:1ю, и сохранение их до тех пор, пока не будет полу­ Чt.'tЮ указание передать их в директорий, используемый 11 ~;ячестве персонального почтового ящика nользовате.1я. Работа сетеnого сервера при выполненпи функuий э:~е:пронноii почты l\Южет быть проши1юстрирована с IIO· r.101:.ж.1,ю рис. 9.1 . Ана.1огш1 з.1.есь с.1едующая: 1:0 1поnое отдеJ1еш1е - сен~вой сервер; до,, - ПЭI3,\\ по:1ьзовате.1я; ящнl\ - персона.'1Ьный ката:юг пользователя; 11нсы-1а - э.1ектронные сооuщения. Гара3 N МсжiJугороfJня я почта Rщик 1 Лщик 2 Дом No1 Почта Рис. 9.1 Город NN Межаугородняя почта Ящик 1 flщик 2 На это:111 рисунI<е показаны два почтовых сервера, каждый из 1юторых используется в кr1честве почтового отдеJ1ення. Письма перемещаются между серверами с по мощью ПО серверов. Локальные пользователи посылают и получают письма по кабелю, который соединяет их ПЭВМ с rючтовым сервером. ~'даленные пользователи по­ сылают II получают письма с помощью модемов через телеqюнные линии, I<оторые связывают нх ПЭВМ с поч­ товым сервероУI. Прежде чем пос.1ать и по.1учнть сообще­ ние, пользовате.1ь должен зарегистрироваться у своего сетевого сервера, задав собственное по.1ьзовательское 11;1,ш по ко;1.1а11де Logging Iп (функция з+SHARE). Иш1 состоит из трех частей: собственное ,шя пользовате:1я; отдел плн отде.пение; организация. Части ш.1е11и оце­ ляются двоеточием (:). Прю1ер: Рудановскиii: 22 : ЦНИИ «ЦЕНТР». Пос.1е по:1уче1шя сообщения от сетевого сервера, который работает в качестве почтового отде.'lен1J11, 2-17
З+J\,1AIL запо:vншает сообщение в почтовом яшике поль­ зователя. Почтовым ящ11ко:v1 по.'1ьзова1еJ1я служит 1,ата­ лог INBOX. Любое сообщение хранится как DОS-фай.rт. Номер сообще1111я, переданного З+MAIL, - имя файла. Любое сообщение имеет расширение MSG. Любой OOS- файл, как уже rоrзорилось, можно присоединить к З+J\\AIL сообщению и послать их вместе. Д.1я этого надо ввести ш.1я присоединяемого файла rюсле подсказки в заго­ лош<е сообщення. К сообщению можно присоедини·1ь до 26 файлов. Редактор сообщншй J\\ED испо.1ьзуется при создании новых сообщений, ответах на сообщения, пере­ дачах копий сообщений. Д.1я организации передачи сообщений сразу несколь­ ким поJ1ьзователям предусмотрено создание дистрибутив­ ных списков (групповых имен). Список состоит из трех пользовате,'Jьскнх имен, например, номер отдела или отделения. Дистрибутивный список обычно создается и поддерживается администратором сети. После создания дистрибутивного спис1<а достаточно ввести только его заголовок без набора всех индивидуаJ1ьных имен. При этом З+MAIL разошлет сообщение всем лицам, входящим в дистрибутивный список. Заголовок дистрибутивного списка можно ввести в качестве адреса в любое поле поль­ зовательского имени. При запуске З+MAIL для локального по.r~ьзователя первый раз необходимо последовательно выполнить ряд действий. 1. Запустить ПЭВМ с дискеты з+Share Work5tation Startup. Если у ПЭВМ два дисковода, то подсказка будет А>. Если есть винчестер, то стартовать можно с него, а подсказка будет С:>. 2. Зарегистрироваться у сетевого сервера, задав поль­ зовательское имя и, ec.riи требуется, пароль. Если пользо­ вательского имени пока нет, то необходимо, чтобы оно было создано администратором. Зарегистрироваться у се­ тевого сервера следует до того, как потребуе1ся послать или принять сообщение, используя З+MAIL. Пример: А: >LOGGIN Руда1ювс1<ий: 22: ЦEHTP/PASS=CEKPET (ВВОД) Можно опустить отдел и/или организацию, если они совпадают со значениями по умолчанию. 248
3. Присоединить каталог, который содержит З+MAIL программу, к устройству D. Приыер: А: >ЗF LINK D: "-. "-. SERVER l "-.APPS «ВВОД», где SERVER 1 - имя Вашего сервера. 4. СдеJ1ап, устройство с ПО З+MAIL (устройство D :J 'lекущим устройство:--1. Пример: D : «ВВОД». 5. Присоединить распределенный принтер к сетевому серверу. Пример: D: >ЗР LINK PRINT l «ВВОД», где PRINТl - имя принтера. 6. Присоединить пользовательский hоmе-каталог к уст• ройству Е: Пример: D: >ЗF LINK Е : «ВВОД». 7. Проверить, не создан ли каталог INBOX админи- стратором? Пример: D: >DIR Е: "'-INBOX «ВВОД». 8. Если каталога нет, создать его: D >MKDIR Е : INBOX «ВВОД». 9. Запустить з+MAIL и у1{азать, где находится INBOX: D >MAIL Е : "-. INBOX «ВВОД». 10. При первом запуске З+MAIL на экране появ­ ляется сообщение: * * * Drive Е: does not contain а mail directory. (* * * Устройство Е: не содержит каталога для почты). Create one (У/N)? (Создать каталог (Д/Н)?) Набрать: У «ВВОД». З+MAIL создает в пользовательском каталоге файл, называемый MAIL. DIR, который используется для сохранения трассы сообщений из почтового ящика поль­ зователя. После загрузки на экране дисплея будет поме­ щена главная панель З+MAIL. Для запуска З+MAIL можно создать и использовать командный файл. Первый запуск З+MAIL для удаленного пользователя состоит в выполнении следующих шагов. 1. Загрузить ПЭВМ с дискеты З+Remote Workstation Startup. 249
2. Набрать команду инициализации модема: А: >REMOTE SET «ВВОД» . .'3. Если этот процесс выполняется не пёреый раз, вставить дискету с INВОХ-ката.1огом в В: и выrю.1шпь п 4. Если в первый, то с 110:\ющью утилиты FORMA Т. СО,\\ онjюр:-.1атировать д11с1,ету: А: >FOR1\\AT В: «ВВОД». 4. Вставить дискету 3-1-1\\ЛIL User Soft\\·are (рабочая копия) в устройство А:. ЗапуоЕ1ъ З+MAIL, указав В: в к.ачес1ве rюч1ового ящнка: А: >MAIL В: «ВВОД}), 5. Если пользовательское шля нахощпся в фай.rте PROFILE. SYS, то з+MAIL запустит проuесс регистра­ uин. Выполнить п, 6. Если нет файла PROFILE. SY...S, з+,I\\AIL попроснт ввес1и пользов:~тельсI(Ое имя. Удален- 1ю,1у 11ользовате.1ю требуется набрать все три части пользовательского имени. Пример: А: >LOGIJ'J ~АМЕ? Рудановскиii: : 22 : ЦЕНТР «ВВОД». з+MAIL будет спрашивать пароль как при получении, rraк и прн посылке почты. 6. При первом запуске З+l\\AIL на ЭI{ране появится сообщение: ***Drive В: does not contain а mail directory. Create one (У /N)? Введите У «ВВОД». з+MAIL создает файл MAIL.DIR. После правильной загрузки службы электронной почты З+ MAIL на экран дисплея будет выдана главная панель, содержащая следующую информацию: номер сообщення (3+ MAIL назначает номер каждому сообщению для иден­ тификации); дату посылки сообщения (« * » перед датой означает, чго сообщение не прочитано); отправитель (имя nо.1ьзователя, пославшего сообщение); содержание (пре­ фн кс R Е: перед именем сообщения указывает на то, что оно является ответом на соответствующее сообщение; J;y l: говорит о том, что копия сообщения была послана ранее); «iп progress» (указывает, что прежде, чем сообщение послано, оно скоrшровано в почтовый ящик); присоеди­ нение (но:'-1ер сообщения и следующая за ним буква «А» 250
(напрюлер, 8А) указывает на присоединение файла к со• общению). Строка сос1оя11ий главной панели содержит информа­ цию, команды и сообщения об ошибках. Нажатие Fl (HELP) позво,1яет в любое время на любой панели полу­ чить спрапку об испо.1ьзованю1 функциональных ключей. Пос.1е получения помощи возврат в З+MAIL происходит ш~жатием .1юбой к.1авиши. Д.1я возврата к гшш1юй пане.ш 11з любой друго~"1 надо нажать 1с1авншу FIO. Для выхода нз З+1\\А Н, следует пере~"пи в главную панель и снсва нажать FIO. Д,1я прос~ютра новых сообщений надо переслать по•:,у от сетевого серпера (который пыrю:1няет pojJb почтов( 1·0 отде,1ен11н) в почтовый ящик rю.1ьзовате.1я. Для эт<,го нажать клавишу F8. Когда вся почта получена, в стрс ;;е состояния появ,1яется такст: «Message (s) retrie\,·edi> («Со­ общения переданы»). Ест, почты нет, то в стро1,;е состr,п­ ния будет помещено сообщен не: « * * * No new rr.;,il to get». Выбор номера сообщения осуществляется с помошыо клавиш управления курсором. Строка инфорыашш о гы­ бранпоы сообщении будет выделена подсветкой. Пос.пе того как курсор позиционирован на требуемое сообщенIIе, его можно, используя функциональные клавиши, про­ читать, удалить, распечатать, записать в файл, передать или ответить на поступившее сообщение. -Для просмотра текста сообщения на экране необхо­ димо: подогнать курсор к требуемому сообщению; нажать клавишу F2. После того как сообщ<>ние прочитано, символ « * », который был расположен на главном экране перед датой и являлся признаком непрочитанного сообщения, исчезает. Когда сообщение прочитано, его можно удалить, распеча­ тать, записать в файл, ответить на него или передать его копию. Чтение следующего сообщения из почтового ящика производится по клавише F2. Если ящик пуст, в строке состояния будет выдан текст: «* * * по next message». В з+ MAIL предусмотрены три процедуры запусЕа сообщений: создание сообщения, передача копии сообще­ ния, ответ на сообщение. Процедуры одинаковы во всех трех случаях, но заголовок и текст сообщений варьи• руются. Для создания нового сообщения следует, нахо­ дясь в rлавнои экране, нажать клавишу F9. Курсор ука- 251
жет поле, ,,ула можно 1шоднтъ 1ш,j:оr•,ншню д"1я з;~го­ лоака сообщения. После фор"шроuаш:н заrолош,а ыож.110 вr.о:щть те1<ст сообщен11я, используя ()(:'дRктор J\·\ED. Нт~<атие клавиши Fб позnоляет отБетить на любое посла11- 11ое сообщение. Можно нажать KJ1armшy Fб во время отображения сообщения на экране ,1ибо 1юдогн11ть курt:ор r< сообщению на главно~1 экране II зате:-.1 нажгть F6 Для 110,11 верждения сообщения можно передать ко1шю nо"1у­ ченного сообщения. Это обеснечиваетсн нажатием кла­ ш111111 F7 на главном экране. 1\\ы достаточно подробно останов11л11сь здесь на орга­ пизщии работы службы электронной почты J1BC а PLUS. Ка1< видно, освоение работы в сети не должно вызвать затруднений. Д,1я большего удобства конечных гюльзова­ телей можно создать более дружественный диалог, ис­ пользуя командные файлы и выполнив частичную адап­ r,rащ1ю сообщений на родной язЫI< пользоватеJiя. 9.4. Clipper в локальной сети Компилятор Clipper, работа с которым была рассмо­ ч-рена в гл. 5, позволяет создавать прикладные СНСТ{'МЫ, работающие в локальных сетях. Для этого он обJJадает с,1едующими возможностями: 1) открытие файлов для совместного испоJJьзоРания пользователями (разделение файлов) ИJJИ для монополь­ ного использования (команды SET EXCLUSIVE ... и USE ... EXCLUSIVE); 2) блокирование файJrа для предотвращения операuий записи разными пользовате"тями в один и тот же файл в одно и то же время (фунrщия FLOCK ()) ; 3) блокирование записи для предотвращения ее изме­ нения одновременно нескоJJькими пользователями (функ­ ция RLOCK ()) ; 4) режим разделения записи, позволяющий двум или более пользователям получать доступ к одной и той же записи одновременно (команда SET EXCLUSIVE OFF); 5) переназначение выводного потока принтера (1юман­ да SET PRINTER ТО); 6) проверка блокировки файла или записи (функ­ ции FLOCK () и RLOCK {)) ; 7) отмена предыдущего блокиrования фай.1а или за­ писи (команда UNLOCK [ALL ]); 252
8) проверка успешности завершения операций USE, USE ... EXCLUSIVE, APPEND BLAN К (функция NETERR ()). Краткое описание фушщий и сетевых команд при­ ведено ниже. Сетевые команды. SET EXCLUSIVE ON/off. Эта ко­ манда задает совместное (off) или монопольное (ON) 11с­ по.1ьзование файлов базы данных и индексных фaii rюв. SET PRINTER ТО (адрес). По этой ко:v~анде пrоиз­ водится переназначенпе принтера на новый адрес. UNLOCK [ALL ]. Команда отмены блокировки фт'iла и записи в акrивной рабочей области (во всех облас, т1х }. lJSE ((имя файла) 1 (INDEX (список индекL1Iых файлов) 1 [RXCLUSIVE I IALIAS (псевдоимя) 1. С по­ мощью этой команды можно открыть файлы базы данных и соответствующие индексные файлы для использования в монопольном режиме. Для открытия в режиме разде­ ления файла следует опустить INDEX и EXCLUSIVE, а затем выполнить команду SET INDEX ТО ..., если есть соответствующие индексные файлы. Сетевые функции. RLOCK ( )/LOCK ( ). Попытка блокировки записи. Если она завершилась успешно, логической переменной присваивается значение «истинно». Повторное использование RLOCK О отменяет блокировку файла и записи, сделанную ранее. : FLOCK (). Попытка блокировки файла. В случае ее успешного завершения логической переменной при­ сваивается значение «истинно». Повторное использова­ ние FLOCK О отменяет предшествующую блокировку этого файла и его отдельных записей. NETERR (). Эта функция в случае ошибки при вы­ полнении команд USE, USE ... EXCLUSIVE и APPEND BLAN К присваивает логической переменной значение «истинно». В табл. 9.4 приведены ситуации, когда резуль­ татом выполнения функции NETERR () является значе­ ние «истинно». Прикладные программы, созданные с помощью ком­ пилятора Clipper, совместимы с программным обеспече­ нием локальных сетей, работающих под управлением MS-DOS версии 3.1 и выше, так как программа, созданная Clipper, выполняет операцию в сети посредством MS-DOS. По умолчанию устанавливается режим монопольного использования файлов баз данных и индексных фай.'lов, но для эффекrивной работы в .локальной сети прикла»,ные 253
К0',!JНД3 USE USE ... EXCLUSl\1E APPEND 81,А~К Таблица 9.4 Причина ошиб\\И Другой пользователь ранее nыполнил ко~1анду USE ... EXCLUSI\IE и эахв:лил фаiiл n монопо,1ьное использова1111е Другой пользовдт~ль ранее выпоюшл команду USE ... EXC.:LUSl\1E или USE 11 открыл файл для монопо.%ного или сопмест­ ного использован11я Другой пользован•ль ранее вwпы:ннл функ­ цию блокировки файла FLOCK ( ) 11т1 про• 11зошш1 попыrка одновре,1tнного nыпо:111ения неско.1ышх ко\tа11д APPEND BLЛJ\'K програ\1,1ы должны использовать файлы баз данных сов­ местно. Вопрос о то:-.1, какие файлы баз данных выдеJ1яютсн для сош,1естного использования, а I(акие - д.11я мо1101юль­ ного, решается на этапе 11роектирован11я прикладной системы. Можно предусмотреть динаjУ!пческое изменен11е режима использования файлов, однако это значительно более сложная задача, требующая организации взаимо­ действия между программой, выполняющей ро"1ь админи­ стратора базы данных, и другими пользовательскими про­ граммами, работающими в сети. Следует отметить, что операция установления моно­ полыюго режима использования файла целесообразна при операциях добавления, корректирования и удаления группы записей. В случае, когда требуется обработать лишь одну запись, лучше блокировать только э!у кон­ кретную запись с помощью функции RLOCK (). В табл. 9.15 привелены требования к командам в том случае, если используется сетевое оборудование. При проектировании прикладных систем, работающих в условиях локальной сети, необходимо разработать эффективную концепцию обработки данных для обеспече­ ния целостности данных и сокращения потерь времени на доступ к ним. На пути создания такой концепции должны быть продуманы и решены следующие проблемы: определена дисциплина открытия файлов для совместного или моно­ nольного пспользованпя; разработаны алгоритмы бло­ кировки записей и файлов, а также алгоритмы повторных 254
Команда @, ... S,\Y ... GЕТ APPEI\'D FROM DELETE (одна запись) DELETE (нескслько зa- nиcefi) РАСК RECALL (одна запнсь) RECALL (несколько за- nисе1'i) REI:--:DEX R EPI.ACE (одна запись) REPLACE (нtсколLко .:::а- пнсей) UPDATE ON ZЛР Таблица 9.5 Требования RLOCK ( ) USE ... EXCLUSIVE либо FLOCK ( ) RLOCK ( ) USE ... EXCLUSIVE либо FLOCK ( ) USE ... EXCLUSI\,:E RLOCK ( ) USE ... EXCLUSIVE либо FLOCK ( ) USE ... EXCLUSIVE RLOCK ( ) USE ... EXCLUSIVE либо FLOCK ( OSI\ ... EXCLUSl\'E либо FLOCK ( ) USё ... EXCLUSIVE попыток бJJокировки; выбра11ы методы анализа ошибоч­ ных ситуаuий, возникающих 11ри обработке данных в сетщ предусмотрены возможные действия системы (программы) в случае невозможности вьшолнения какой-либо файло­ вой операции. Необходимо следовать простому правилу при созда• нии с помощью компилятора Clipper программ, работа­ ющих в сети: блокировка СТРОГО ОБЯЗАТЕЛЬНА при записи в разделяемые файлы баз данных; во всех же других случаях бJ1окировка ВОЗМОЖНА. Запись в фай.1ы может производиться по командам REPLACE, DELETE, RECALL и @ ... GET (имя файла}. Перед записью необходимо выполнить блокировку, если работа о файлом будет производиться в режиме совмест­ ного использования. Попытка записи без предваритель­ ной блокировки (в режиме совместного использования} приведет к выдаче сообщения об ошибке: «System errol' not locked» («Системная ошибка - нет блокировки»). При выполнении команд APPEND FROM, DELETE и UPDA ТЕ ON также необходима предваритеJJьная бло­ кировка или монопольное использование файла. Реко­ мендуется блокировать файл и в том случае, когда он обрабатывается командами COUNT, SUM и TOTAL. Некоторые операции (РАСК, REINDEX и ZAP) выпол­ няются только в монопольном режиме. В отличие от дру• 255
гих СУБД реJJяuионного типа Clipper позволяет вы11ол­ нять команду APPEND BLANK для общих фaiiJJoв, однако обработку ко11ф:11штных ситу1ший, возникающих ври одновременной выдаче этой команды двумя и более rю r.ьзователями, необходимо делать самому програм­ м1:'-1 у. Существует несколько способов отмены б.1окировки: отмена блокировки в одной области с 110:vющью команды UNLOCK (); 01мена блокировки во всех областях коман­ дой UNLOCK [ALL ]; закрытие файла командой {JSE; нормальное завершение выполнения программы; повтор­ ная блокировка для ранее заблокированного файла. В каждый момент времени разрешается 1олько одна блокировка в одной рабочей области. Некоторые команды способны самостоятельно откры­ вать и закрывать файл во время своего выполнения. В табл. 9.6 показано, какой статус приобретают файлы на время выnолнення соответствующей команды. При вы­ полнении программы должно быть предусмотр~но слеже­ ние за изменениями ста1уса файлов. Совместный статус APPEND FROM (имя фай.~а) CREATE ... FROM (имя файла) LABEL FROM (имя файла) REPORT FIIOM (имя файла) RESTORE FROM (нмя файла) ТУРЕ (имя файла) UPDATE FROM (имя файла) Таблица 9.6 Монопольный стнтус СОРУ STRUCTURE ТО (имя файла) СОРУ ТО (и"'я файла) CREATE (имя файла) INDEX ON ... ТО (имя файла) SA\1E ТО (имя файла) SЕТ ALTERNATE ТО (имя фай• ла) SORT ТО (имя файла) TOTAL ТО (имя файла) В комплект поставки CJipper входят программы NETWORK.PRG и LOCKS.PRG. Программа NETWORК. PRG является тестовой программой, демонстрирующей работу сетевых функций Clipper. Она может быть запущена на двух и более ПЭВМ, подключенных к сети. Программа LOCKS.PRG содержит следующие функции для исполь­ зования при работе в сети: NET USE () (открыть файл для монопольного или совместного использования); 256
FIL LOCK {) (заблокировать текущий разделяемый файл); REC LOCK () (заблокировать текущую запись); ADD R.EC () (добавить новую завись I( 1екущему разлеляемому файлу с передачей ей логического значе­ ния, то есть в случае, если запись добавлена, новая запись становится текущей). Каждая из указанных функций пытается блокировать завись или файл в течение указанного при ее вызове интер­ вала времени. Для использования этих функций в про­ rрю.1ме следует дать ко~~анду SET PR.OCEDUR.E ТО LOCKS, при этом предполагается, что установлен режим сов'v!естного использования фай.r1а (SET EXCLUSIVE OFF). Рассмотрим подробнее функцию NET USE. Она осу­ ществляет попытку открытия файла при совместном или монопольном режиме и имеет следующие параметры: имя открьшаемого файла (символьный тип); монополь­ ный/совместный режи:-.1 доступа (логический тип); вре­ менной интервал в секундах (числовой тип). Ниже приводится программный текст функции NET USE. FUNCТION NET USE PARAMETERS Ше, ЕХ USE, wait PRIVATE forever forever=(wait=0) 00 WHILE (forever . or . \Vait >0) IF ЕХ USE USE & file EXCLUSIVE & & Монопольный ELSE USE & file & & Совместный ENDIF IF. NOT. NETERR ()& & USE завершилась успешно RETURN (. Т .) ENDIF INKEY (1) & & Ожидание 1 а wait=v:ait-1 ENDDO R.ETURN (. F .) & & USE завершилась неудачно * END NET USE В вызывающей программе обращение к этой функции могло бы выглядеть в случае индексированного файла чак: IF NET USE («RSTAT»,. Т., 12), 257
SET INDEX ТО RSTAТl ELSE ? «Файл RST АТ недоступен» ENDIF Функции, находящиеся в файле LOCKS. PRG, реко­ мендуется 11спо.1ьзовать творчески. Их :-.южно не толы,о использовать в готово:-.~ виде, но улучшить и перергбо­ тать, расс:-vIатривая их просто каr( прю1еры написа11нн проrрю1:-.I. Ниже приводится прюIер трпвпалыюй проrраl\!МЫ д.1я Clipper, демонстрирующей некоторые приемы работы в условиях локальной сети. *Проrра:-.1:-.1а TESTi',.;ET. PRG *За:v1еняет в файле FNA,\\E со.::~ержимое nо.1я *Паmе первой встреченной записи на значе1111е * 'Петров' , если значение 1юлн бы::о ·*'Иванов' SET PROCEDURE ТО locks -х-Ссылка на проuедурный файл locks SET EXCLUSIVE OFF *Задание режи:-.1а разделенпн данных USE FNAME *Открытие для работы файла FNAME LOCA FOR nаmе='Иванов' *Поиск требуемой записи IF REC LOCK (5) *Попытка блокировать текущую запись REPLACE пате W IТН 'Петров' *Замена содержимого поля паше ELSE WАIТ t Запись заблокирована другим~ ENDIF UNLOCK *Разблокирование записи RETURN * Конец программы 9.5 . Отечественные ЛВС В настоящее время в нашей стране в основном произ­ водится выпуск технических средств, предназначенных для подключения к ЭВМ терминалов или для обеспечения телекоммуникационной связи. С помощью этих средств возможно создание ЛВС со скоростью передачи информа- 258
uии не более 9,6 Кбод. Однако для решения многих задач этого явно недостаточно. Уже сейчас существует несколько отечественных сетей, обеспечивающих большую скорость передачи данных. Среди имеюших наибольшее распространение в стране ЛВС следует назвать сеть СМ (на базе пакета СТО РВ) для мини-ЭВl\\, «СИБИРЬ-1» (на базе СПО «АЛИСА» 2.1 .) и «ЭСТАФЕТА». В своей основе они ю1еют стандарты, принятые еще в конце 1~70-х - начале 1980-х годов. Стандартизованы физиче­ с1,;зя среда передачи, электричес,ше интерфейсы, а пpo­ rpav1:vшoe обеспечение является оригш-1альны~1. Характе­ рн~тики этих и других наиболее известных отечественных .ТJВС приведены в табл. 9.7. Предназначены эти сетп в ос1ювноы для авто:.~атизации учреждений, за исключе­ нно1 сети «СИБИРЬ-J», которая может применяться в зазодских условиях. f !а фоне уже существующих разработок выгодно вы­ щ,1яется проект «)КЕЗЛ». Эта разработка тюзвол1п соз­ да1 ь высокопроизводите.1ьные ЛВС различной ко11ф11rу­ раuн11 протяженностью до 2,5 км и со скоростью пере,1ач11 данных до lO l\\бод. В качестве метода доступа испоJ1ь­ зоРа11 TOKEN PASSIJ\:G BUS. Физический и 1<ана.1ьный уровни строятся на стандартах IEEE 802.4, IEEE 802.2 (в соответствии с протоколом МАР). Локальная сеть «ЭСТАФЕТА» представляет собой несколько сетевых станций, соединенных в кольцо. Стан­ nия сети, с точки зрения пользователя, может рас­ сматриваться как «черный ящик» с четырьмя внеш­ ними соединениями: питание, вход в колыю, выход из кольца, интерфейс к подключенному терминаJ1у типа стык С2. В станции зашито программное обеспечение, реали­ зующее четыре нижних уровня (включая транспортный) семиуровневой молели открытых систем OSI. Сетевое программное обеспечение ЛОКАЛ и ЛОКАЛ-СЕРВИС рассчитано на подключение к станциям следующих вычислительных машин: СМ-1420, СМ-1800, IВМ РС, (PRAVEC-16C, PRAVEC-lбMN, ИСКРА-1030, ЕС-1840), Robotron-1715. Программы поддержки сети шшисаны на языке С, а также на языках ассемблера соответствующих машин. Для функционирования пакетов требуется ОС RSX-1 lM для Cl\\-1420, MS-DOS для IBM РС, СР/М для СМ-1800 1:1 Robotron-1715. 259
g Таблица 9.7 Коли• Скорость длина Среда 1 Тип без по• Топало• Тип Сеть передачи интерфейса чество переда• вторите• rия сети Прототип узлов чи, Кбод лей, км 1 «ЭСТАФЕТА» вп с 125 125 0,5 Кольцо гт MULТI-LINK слк см вп С2 125 500 1,0 » гт MULТI-LINK см вп С2, ИРПС не огр. 9,6 1,0 Произ- гм DECnct вольная «СИБИРЬ-1» (СПО ВП, РК С2, ИРПС, 50 480 1,0 То же Г1'·\ DECnet <<АЛИСА» 2.1 .) ош,мпи «СИБИРЬ-3» (СПО ВП, РК И-41, ОШ, 256 480 1,0 Шина гт Нет «АЛИСАПЛЮС») (1989- С2, МПИ, 1990 г.) системная магистраль «МОНОЛАН» вп С2 32 115,2 0,3 » гм Нет «ЖЕЗЛ» (1989- шк. И-41, ОШ, С2, 1000 10 ООО 2,5 » гт МАР-протока., 1990 г.) ОБ системная магистраль Пр им е • а ни е, РК - рациочастотныil кабель; ГМ - гомогенная сеть; rт - гетерогенная сеть; ОШ - общая шина; МПИ - микропроцессорныil интерфейс.
Сетевой пакет .ПОКЛЛ пrелоставляет следующие сете­ ВЫL' услуги пользова1~лю: э1.1у •1рш1я терминала, обмен с11:-.шо11ьны1.1и файлами, обмен сообщениюш между уда­ ,rн~шн,ши проuессора•.ш. Сетевое програ,1:-.111ое обеспеченпе ЛОКАЛ-С[РВИС nре,1nставляет по ср;:;нRе1111ю с ЛОКАЛ доr:0J1111пелы1ые сетРвые услуги: р::1·1ш1тьн,· се1евые средстпа по транспорти­ ропке файлов (1paricrюpт ч11с1 и d;яйла II файлов в дпоич- 1ю1.1 представленн11); о(;раГiот1,у файлов до и после пере­ дачи (уровень предс1 ав.1е11ия данных); манипу.:шрование уда.1енными фаiiлюш; служебную ипфор:v~аш1ю о теку­ шем состоянии сети; сервис печати (раз,i.J,еление печати между пользователями сети). Сеть СЛК СМ представляет собой ко1ьцо сетевых станш1й, подобных с1 nншн1м «ЭСТ АФ[Т А-2». По сравне­ нию с ЛВС «ЭСТАФЕТ А» увеличена скорость передачи данных в коJiьпе. В 1<ачестве сетРrю1·0 программного обе­ спечения может быть использовано то же обеспечение, что и длн «ЭСТАФЕТЫ>) . .ПВС «СИGИРh- J» - гомогенная сеть дrевояидной структуры. Она п:):!ПQЛЯет с помощью сетевых адаптеров 0()1,елипить rюд у11равлРн11ем СПО «АЛИСА» мини- и 11,· 1 1 "роЭВМ (Cl\\-1420, Эле~прошша-60, ДВ К-2М). Поль­ snнатель этой сетн ~южет: орга1111зовать доступ н удален­ ным устройств;~~, (.:шсн-11, магнитные JJенты, печатающие устройства); создать Риртуальные терминалы, обеспечива­ ющ11е доступ к операц11онной системе (ОС) любого узла сети; орr,шизовагь межпрограммный обмен с фиксиро­ ванной мяршрутизаuией и удаленную загруз1<у ОС. JIBC «СИБИРЬ-3» - гетерогенная сеть шинной топ<>­ логии с передачей маркера (метод доступа - TOKEN PASSING BUS). В настоящее время разработка сети не закончена. Предполагяется, что ЛВС будет работать под управлением СПО «АЛИСА ПЛЮС» с операuионными системами ОСРВ, .МИОС, РАФОС, СР/М-86, PC-DOS, VM<;, UNIX. Из числа пеr,вых моделей ПЭВМ, освоенных промыш­ ленностью стран - членов СЭВ, uеJ1есообразно выделить два основных класса моделей. В первый 1,ласс входят модели, имеющие архитектуру, соместимую с IBM РС. Это ПЭВМ: ЕС-1840/-1841, ИСКРА-1030, НF.ЙРОН И9.66 (СССР); PRAVEC 16C/IШ\,\N, ES 1832 INTELEXT (НРБ); MEVAX-6600, ELWRO-800 (ПНР); SMEP РР 06 (ЧССР); 261
CM-1 'f20 ИСl<РА-1030 С2 С2 С.1С СГ:С EC-15'f1 ЛО,{QЛЬнаR СеГТ' :J ,.3 C~7Gr:Je,7i!l" СЛr<. 1 ЕС- ic<,Q еле С/7С С2 /2 НЕЙРС.Ч И9 бб Р.ГU,\ЕС 1бС Рис. !),2 VARIТER ХТ (ВНР). Ко второ\1у классу относится мо­ дели с архитектурой DEC - Электроника .МС.85 (СССР). Все перечисленные модели ю-1еют в своем coc·r аве интерфейG RS-232C (стык С2), G по~ющью которого может быть обеспечен выход практически на любую сеть через соответствующий сетевой контроллер. ПЭВМ, совмести• мые с IBM РС, могут быть объединены в кольцевую ло­ ка.1ьную сеть с помощью сетевой станции «ЭСТАФЕТА-2». Обычно «ЭСТАФЕТА-2» выпускается промышленностью в виде автоно:-.шоrо модуля, и тогда интерфейс со станцией автономного модуля обеспечивается через С2. Помимо этого существует вариант сетевой станции «ЭСТАФЕТ А-2», встраиваемый в основной блок ПЭВМ ЕС-1840/-1841. На рис. 9.2 показан возможный вариаптЛВС«ЭСТАФЕТ А», работающей под управлением СПО ЛОКАЛ. В результате завершения разработки ЛВС «СИБИРЬ-3» появится возможность вкJ1ючения ПЭВМ ЭЛЕКТРОНИКА МС-05.85 в гетерогенную сеть с шинной топологией, работающей под управлением СПО «АЛИСА ПЛЮС». ПЭВМ будет подключаться к ЛВС через специально раз­ рабатываемый сетевой адаптер DL-NET-1 . На рис. 9.3 приведен возможный вариант построения ЛВС «СИБИРЬ-3» на базе моноканала с передачей маркера. 262
nольшой интерес для создания небольших учрежден­ чес1,их сетей представляет орипшальный комплекс про­ гращшых и а1шаратных средств Л\ОНОЛАН, пред11азна­ r..ен11ш"i для орган11за11ии JIВC ПЭВМ тапа 181\\ РС/А Т/ХТ Ii 11х оrечестпенных аналогов ИСКРА-1030.11, «Нейрон 1;t1.б6)), <,Не~"1рон И9.69)), ЕС-1840, ЕС-184 J, ЕС-1845. 1\\ОНОЛАН r..южно с неr,01орьши оговор~,а~ш отнести 1" сетю.1 тнпа ETHERl\'ET. Сеть ис110,1ьз:;ет с.1уча~"!ный r.'с'УОд досту11а с обнаррм'ш1е:-.1 11 разрешеш1с:1,i 1,онф.1:1к- 1ов (СSЛ\А/СА) Одной из осоf3еннос1ей Ео:-.1пле1,са J\ЮНОЛАН P.B - J11ч'ro1 отсутств11е аппаратных кон~ро.~леров д.1я nод­ со~·~ннешJя к сети. Все се1евые уровнil реалвзую1ся про­ П)а'1,ню, а роль сетер,оrо ада1пера вы1юJшя1:т простейшая C\l:'\Ja соr.1асопа!шя, 1юдк,1ючаб1ая к сть!!<У С2. С точки зр,',111я сет~rюй архтектуры J\\OIJOЛAH предстаIJ.1яет cc6::11J .'lBC с шишюi'J 1опо.1оп1ей. Ро.1ь шины выголняет в,1т,1н 11ара, 01 которой сдеJJаны отводы к 1,аж;юii ПЭВМ. ()_, 1 11 1 1rз !!роводов явт,ется общш1 (с11пн1J1ы1ая земля), ,1 :rpyгoii - IJнформашюш-rLш. Возможность в ПЭВМ типа I i3,\\ РС програшшо устанавт:вать скорость передачи через RS-232C, рапную 115 Кбод, обеспечила приемлемую скорость пересылки данных в канале. Ошибки, которые воз11икают в RS-232C при такой скорости, вылавливаются п 11справляются на ~-:анальном уровне. Другой особевнос1Ью, выгодно отличающей данную сеть от коммерческих зарубежных сетей, является неболь­ шой (11 Кбайт) объем резидентпо загружаемого сетевого Ее звм_ ЭЛ-КА 85 EC-18'r0 ИСКРА-1030 DL-NEТ-EC DL-NEТ-1 DL-NEТ-M IJL-NEТ DL-NEТ-M DL-NEТ-V DL-NEТ-V ИСКРА-1030 СМ-1700 СМ-14-20 ЭЛ-КА 85 lJL-NEТ-V DL-NET===т=============lJ=L-=N=E==T=-==V DL-NEТ-M DL-NET -Q ~-__.,-- ЕС- 184-О JЛ-КА 60-1 шлюз Рис. 9,3 1----~ Академ11- ~ескую сеть х.25 263
программного обеспечения. Зарубежные ЛВС требуют, как правило, от 100 до 300 Кбайr оперативной памнти в згвиснмости от поmюты набора п;:~едлагаеыых сетевых услуг. Такая ко;-.шшпнооь се·rи сGуслов.1ена тем, что ее а;Jхитектура не реат1зу~т по:1!1Ос1ыо се:vшуров1:евую мо­ де:1ь оп,рытьп систе\1, а включает 10J1ько физнчеекий, к;шалышй, транспортный и прнк.1адной уровни. На 11ри­ к.1аднт1 уровне реализован нтерфейс G пользоватеJ1е:-.1 через выделенные прерывания и находится файл-сервер. Програ;\вшзя часть .МОНОЛАН реализована на языке ассемблера II состоит из резидентного сетевого драйвера CHTWS.EXE и сетевой утилиты VIZ.EX Е. Пользова­ теJJю предоставляются следуюш.ие сетевые услуги: транс­ порт файJJов; совместное испо.1ьзоваш1е принтеров; сов­ местное ис1юJ1ьзование дисков; совместное использование стрю,1еров. При выполнении любой из указанных услуг драйверы сети работают в «скрытом» режиме, не мешая работе поль­ зователя за той ПЭВ,1\1, файлы к01орой транспортируются. При транспортировке файлов осуществляется двухступен­ чатый контроль качества передачи, при необходимости - с повторными пересылками. Предусмотрена воз\южность введения уровней защиты от достуна из сети. Для работы с сетью нспо.'Jьзуется интерфейс пользователя типа Norton Comman(ler с двумя панелями, индицирующими содержа­ ние выбранных каталогов и подкаталогов. Программное обеспечение МОНОЛАН работает под управлением опе­ рационной системы MS-DOS версии 3.2 и выше. Следует отметить, что сетевой дрейвер изменяет систему прерываний DOS весьма деликатно. Поэтому работа се­ тевых средств оказывается «прозрачной» для любой стан­ дартной программы, разработанной в рамках системы. 9.6 . Сетевые возможности 8-разрядных ПЭВМ В настоящее время у нас в стране находится в экснлуа­ тации большое количество 8-разрядных ПЭВМ класса Robotron-1715 (RоЬоtгоп-1810, -А5120 и Alfatronik-P2U производства ГДР), которые можно назвать профессио­ нальными ПЭВМ. С началом производства ПЭВМ сле­ дующего поколения появилась возможность решения более сложных задач, связанных с обработкой значительных объемов информации. При этом дJIЯ многих пользователей стало крайне же.1ательным оставпть за дешевыми 8-раз• 264
рядньши ПЭВМ функuии первичного сбора и обработки данных, а обрабо1 ку больших объемов инфор:маuии осу­ ществлять па более производительных 16-разрядных ПЭВМ, при это~, транспорт файлов осуществлять с 110- мощью ка1шх-:1ибо сетевых средств. Оказывается, что эта проблема, по краiiней l\tepe для ПЭВМ 1<ласса Robotron-1715 и IВ1\\ РС-совместш1ых машин, может быть решена самостоятельно - без 11ри­ в.1счения ~лектронщпvов. Опыт «самоде,1ьщика» до1<азы­ вает, что это по силам лю60~1у пользоватеюо. Перечисленные мопели 8-разрядных ПЭВМ очень бт~зки по своим возможностям. Единственным отличием, имеющим дJJЯ нас значение, является количество портов для подключеш,я других ус1ройств. В состав базового комплеюа Robotron-1715 входят два интерфейса V.24 . (для I~obotron-1810 шесть интер­ фейсов). Они размещены на нлате центрального пронес­ сора. Соответствующие Иl\t разъtмы на задней стороне системного ус1ройства обозначены как «Printer» и «V.24». Интерфейс, обозначенный как «Printer», содrржит только сигнальные провода, требуемые для управления внешнш, (например, ПУ) устройством, следовательно, не может быть использован для дуплексной работы. Интерфейс, обозначенный как «V. 24 .», может быть использован для связи с любым интеллектуальным устрой­ ством, снабженным стыком С2 (RS-232-C / V. 24 .). На11ри­ мер, можно связать две ПЭВМ Robotron-1715. Адантер согласует параллельно работающую системную магистраль с последовательным интерфейсом V.24. Он представляет собой, с точки зрения интерфейса, терминал, который по устройствам передачи данных можно пряl\lо соединять с установленными на расстоянии или вблизи терминалами. Адаптер имеет следующие характеристики: режим ра­ боты - дуплексный, полудуплексный; r,pouE>дypa пере­ дачи - синхронная, асинхронная; формат сюшолов - 5 ... 8 бит/символ; длина бита останова - 1, 1,5; 2 бита контроль - по четности по нечетности; скорость передачи данных - 200, 300, 600, 1200, 2400, 4800, 9600 бод; расстояние передачи с максю,1альной скоростью до 15 м (без модема). На расстояния до 500 м передача без модема (моду.r1я­ тор-демодулятор) возможна, но скорость передачи быстро падает с увеличением расстояния. Чтобы обеспечить теоретически достижимую скорость передачи при расстоя- 265
нии передачи свыше 15 м, следует 11спо.1ьзоIJа1ь мо,r:ем. В качестве сое,1ш1ите.т1ыюrо кабеля можно ис11от,зовать обычный телефонный кабель .либо r11тую пару. Чтобы работу по орrаннзашш ,еп1 не выr,с.1нять «вс,1епую», в т2б.с1. 9.8 приведены соотв~·1овш1 номеров цепей сиrна.1ю1 д.1я интерфейса \ 1 .24 . l !o,1ep цеn11 101 102 103 104 105 106 107 108 109 111 113 111 115 в А 1 о о 2 Защитное зазечление Рi!бочее » Перещшаемые данные При ни~1асмые » Включать передатчик Г()ТОВНОСТЬ к передаче Таб,1и11а 9.8 Готовность к работе устройства П.JI!U,юпередачн Дi!IIIIЫX (1'ППд) 3 о Готовность адаптера к р~боте Уроrзснь приемного свгн:;;1а Выбор скорости передачи Такт шага передачи на УППД » » )> от УППД )> )> прrrсма от УППД оооо о 45б7891О1112 ооо о Рис. 9.4 13 о На рис. 9.4 приведен внешний вид разъема интерфейса V.24 ., расположенного на задней крышке системного блока. Символо:\1 «о» обозначены штифты разъема. Штифты пронумерованы числами от 1 до 13. На рис. 9.5 приведено соответствие номеров цепей V .24. номерам штифтов. Для обеспечения связи Robotron-1715 с другими выч11слите.1ьными средствами следует собрать гнездовую Ео.10,:щу, марю~рубrую но:\rером 223-13, которая имеется в комп:1екте поставки, и выпо.1нить распайку по схеме, nоказанной на рис. 9.6. Если оснащения базового ко~тлекта ПЭВМ не;1оста­ 'Гочно д,1я организации требуемой топологии, то !{ Ro- 266
в А 101 104 106 108 111 114 12345678910111213 102 103 105 107 !09 113 115 Рис. !1.5 Номер цептr Номер штифта Номер цепи \' .?4. 1 Контш;т Контаю 1 V.24 . 102 А !----рабоче<' зn:<е\1,1O111е ------А 1 10.! JQ1 В2----защ111 нее зюе,,.1ен11е-----В2 101 iО:З А 3----передn чэ ДШIНЫХ----------В4 10! Ю! В 1----прис\1 Дfl ННЫХ· ------------АЗ 101 IOfi В6----rоrовнос rь к оС~~ену-----В'3 108 1()7 Л7-------I I 108 88-------1 Рис. r.6 botron-1715 можно rюдключrпь п.1ату с двумя ннтерфсfi­ с.:1,ш V. 24 . В это:-.1 с,1учае ПЭВ,\\ можно подключить r10 тре~I каналам к другю,t вычислите.'!ьны;,,1 устройствам. Физичесю1 Robotron-1715 может быть подключен к .rно­ бо:-.1у сетевому контроллеру, имеющему стык С2 или интерфейс RS-232-C. Однако, существуюшее програм:-.шое сетевое обеспечение для этих машин подперживает л11шь следующие типы соединений: точка-точка; радиальная звезда; кольцевая. Ниже даны примеры схемотехнических решений, со­ ответствующие первым двум топологиям; рис. 9.7 - топология точка-точка; рис. 9.8 - вариант радиальной топологии с Ноst-машиной IВМ РС; рис. 9.9 - то же, но с Ноst-машиной СМ-1420. R 1715 Н 1810 V. 2~. v.2ч" MoiJeм Модем Рис. 9,7 267
IBM РС Модем R1715 Модйм 1--------:\ Mc'fJ ем \ ,___~ ~ Модем R 1810 R 1810 Мупьтиплеf(СОР переоачи данных Рис. 9.9 R 1715 СМ-14-20 Для программного решения задачи связи двух Robo- troп-1715 могут быть с равным успехом использованы сетевые пакеты KERMIТ-80 и TLC (TELECOMMUNI- CATION}. Оба па1{ета работают под управлением ОС SCP (СР/М) и поддерживают тольl\о две сетевые функции: режпм эму.ТJяцип терминала; передачу файлов (в символь­ ном и двончном :коде). Для обеспечения телекоммуника­ nионной связи Robotron-1715 и IВМ РС (либо ПЭВМ, совместимой с ней, например, ЕС-1840) можно ис1юль­ вовать уже упомянутый пакет KER1v\lТ. На Robotron-1715 он фушшиопирует под управлением SCP, а на IBM РС - в среде MS-DOS. С помощью пакета KERMIТ можно построить гомогенную радиальную сеть на базе Robo- tron-171 Б при условии, что ПЭВМ, входящие в сеть, оснащены лополнитеJ1ьным11 платами с интерфейсами V.24 . В этом с.r1учае KERMIТ, загруженный в Robotron-1715, способен обслужить два порта связи. Пр II этом необходимо 268
учитывать, что в -rакой сети обеспечивается лишь транс­ порт файлов ~1сжду двумя соседними узлами, а средства адресаuии узлоr~ и маршрутизации отсутствуют. Пакет KERMIТ может быть полезен и для реш~ния задачи создания гетерогенной сети на базе Robotron-1715, 1В1\\ РС (и:111 ПЭВМ, совместимой с ней) и СМ-1420. СМ-1420 выступаtт в ро_,и Ноst-машины и располагается в центре «звезды». Robotron-1715 и IВМ РС выступают в роли сателлптных машин и располагаются на концах «звезды)> (всего до 16 штук). На СМ-1420 KERMIТ работает под управление~1 ОС RSX- 1IM версии 4.1 . и в этом случае KERMIТ выпол­ няет лишь две сетевые функции - эмуляции терминала и передачи фай.110в. При использовании KERMIТ на ПЭВМ ИСКРА-1030 и ЕС-1840 следует учитывать, что на них установлены оригинальные адаптеры асинхронной связи, которые требуют изменения стандартного драйвера, используемого в KER.MIТ дJlЯ IВМ РС. Порядоr< работы с пакетом KERMIТ-80 следующий: 1) загрузить ОС SCP; 2) загрузить КЕR.МIТ (команда - Команда БУЕ CONNECT ЕRЛ ЕХIТ FINISH HELP DIR HELP LOG LOGOUT SEND RECEIVE SЕТ SHO\V STAТUS TRЛNSMIТ Таблица 9,9 Выполняемые деnствия Прекращается работа с удаленным пользовате• лем, выход в СР/М Устанавливается терминальное соединение с уда• ленной Ноst-системой через указанный порт Удаление файJ1а Выход в СР/М Прекращается работа удаленного пользователя Выдача hеlр-информации Печать каталога текущего диска Выдача hе]р-информаци11 Запись удаленного терминального сеанса в ука­ занный файл или на устройс1во Разрыв соединения с удаленным пользователем, выхода из KERMIТ нет Передача файла (ов) удаленному пользователю Ожидание приема файлов от удаленного по.1Ьзо- вателя Устанавливает указанный параметр Печатается список установленных параметров Дает то же действие, что SHOW Передача файла на Ноst-машину в CONNECT состоянии 269
KERMIТ), пос.пе загрузки на экран будет выведена подсказка: KERMIТ-80 А : >; 3) получи1ь НЕLР-1111фор­ мацию, ес.1и необходимо, по 1юманде Н - при этом на экран будет выведен списо1< коман,1 па1<ета KERMIТ (табл. 9.9); 4) да1ь 1юманду CONNECT, tсли необходш,ю установить соед1111ение с Ноst-машшю11 (д.1я свнзи с Robotron-1715 эта команда не требуется); даль11е1'iшая работа с использованием ко~1а11д 5) SEJ'\D 1:3 : NAME.EXT (передать файл); 6) RECEIVE (ждать приема фай.1а); 7) ЕХП (завершение работы и выход в СР/М). Этот порядок работы обеспечивает передачу текстовых фаiiлов. Для того чтобы передавать фaiiJJЫ с д1:ю11<1.ноii информацией, необходю.ю пос.пе загруз1ш КЕR.1\1П вы­ полнить установку режима двоичных фай;юв: SET FILE=MODE BIN. Необходимо отметить, что Robotorn-1715 не обладает систе:.юй прерываний, которая позволяла бы реаrнровать на поступление данных в порт связи. Это означает, что для обеспечения сеанса связи требуется, чтобы КЕRМП бы:1 загружен на обоих концах капала связи и один по.1ьзователь был готов передавать файл, а дpyroii - его пршшыать. Список литературы 1, Берешанский Д. Г. Практическое программирование на dBASE. - М.: Финансы и статистика, 1989. - 192 с. 2. Брябрин В. М. Программное обеспечение персональных ЭВМ. - М.: Наука, 1988. - 272 с. З. Дженнингс Ф. Практическая передача данных: Модемы, сети и про­ токОJiы: Пер. с англ. - М.: Мир, 1989. - 272 с. 4. Дойл У. Табличный процессор Суперкалк для персонального ком­ пьютера: Пер. с англ. - М.: Финансы и статистика, 1987. - 320 с, 5, Дубников Е. Е., Калачев В. Н. Локальные сети микроЭВМ. - М.: МЦНТИ и МНИИПУ, 1986. - 109 с. 6.КорнГ., Корн Т. Справочник по математике. - М.: Наука, 1968. - 720 с. rz. Крамм Р. Системы управления базами данных dBASE II и dBASE III для персональных компьютеров: Пер. с англ, - М,: Финансы 11 статистика, 1988. - 283 с, 8, ,ТJзнгсам й., Оrенстайн М" Тененбаум М. Структуры данных для персональных ЭВМ: Пер, с англ. - М.: Мир, 1989. - 568 с. 9, Майере Г. Надежность программного обеспечения: Пер. с англ. - М.: Мир, 1980. - 360 с. 10. Моррил Г. Бейсик ддя ПК ИБ,1\1: Пер. с англ, - М,: Фннансы 11 статпстшш, 1987, - 260 с, 270
11. Оши К., Хьюrз П. Бvхrалтерский учет на микроЭВМ: использова• нне прикладного п;~кета LOTUS-1 -2 -3: Пер. с ;~нгл. - 1'·1.: Финансы 11 стат11ст11ю1, 1987. - 264 с. 12. Погорелый С. Д. Персональн;~я ЭШ\\ «Нейрон И9.66». // ,\\11кро• проuессорные средства II снсте\1ы, 1986, .No 4, с. 16-19. 13. Прайс Д. Програ\1м11рован11е на языке Паска.1ь: Пер. с аш.1. - М.: ,\\нр, 1987. - 232 с. 14. Пу.1 Л. Расот:1 1ш персон:ыьно~1 ко~шьютере:: Пер. с анг.1. - 1'1.! Мнр, 1986. - 383 с. 15. Пыхтин В. Я. ЕС-1840 - бсзовая персона.,ьная ЭВЧ ед~;ной с11сл\1Ы. -1'\11крспроuессорные средства II снсте~1ы, 1986, J\"o 4, с. l:S-16. 16. To"iac Р., Иейтс Дж. Операщюншш система U;',;!X: Пер. с англ. - ,\\.: Рп.1110 н связь, 1986. -352с. 17. Трейстер Р. ПсрсонJ,1ьны11 ко,шьютер (f 11р,1ы ! !Б.\\: Пер. с а11,.1. - . \\ .: ,\\11р, 1986. - 208 с. 18. Уэйт М., Aнre:iмeiiep Дж. Операuноншш система CPiM: Пер, С RIIГ.1. - . \ \.: Р:1,11ю II СВЯЗЬ, !986. - 309 С. 19. Хыоз Дж., "1нмо11 Дж. Сгrуктурны11 подход I( прогрnщ,шров<1ш110: Пеr. с 3НГ.'1. - ,\\.: ,Ч11р, 1!)79, - 278 с. 20. Хэт,ок Л. Вп~дс1111е в прогрс1щшроваш1е на языке Сн: Пер, С ;JJJГ,1. - ;\\.: ,\\11[), 1986. - 3J:2 С. 21. Язык ФОРТРЛI! ·п: Пер. с англ. - 1'\,: 1'\нр, 1982. - 212 с. 22. Янг С. А.1горнтмнческае язык11 реального вреыешr, - ,Ч.: 1'\ир, 1985. - 399 с. 23. Ярошевская 1\1. Б. Персональная ЭВ,\\ «Искра- l030 .11». // Микро• процессорные средства II системы, 1986, No 4, с, 23-24, Оглавление Пред11слов1:е Глава 1. Операционная система 1. 1 . Операuионная система - главный компонент базового 3 9 программного обеспечения . . . . . . . , , . . • 9 1.2 . Основные сведения о структуре MS-DOS . . . . , 13 1.3 . Файлы и команды операurюнной системы . . . . . . 18 1.4 . Недостатки MS-DOS и пупr развития операционных систем ПЭВМ . 25 Глава 2. Утилиты 2.1, Утилиты базового состава DOS 2.2 . Общесистемные утнлнты DOS . 2.3 . Архиваторы ,., .. , ... 2.4 . Знакогенератор дисплея . 2,5, Программы для работы с ленточным стримером. 30 30 36 43 46 51 271
Глава 3. Языки высокого уровня и системы п11оrраммиров:шия 56 3.1 . Обзор языков nысо1,01·0 уровня . . . . . . . . . . EG 3.2 . Системы програ~iмврования .. . . . . . . . . . . 59 3.3.РаботавTurbo-Basic............... Ш 3.4. Пример рnботы в системе Turbo-Basic. Унпверса,1ь- ная проrрnм~ш перекодировки . . . . . . . . (38 Гт1ва 4. Пакеты обработки текстов. Управление режимами nс- •1ати............ 72 4.1 . Обработка текстов . . . . . 72 4.2. Управление режимами nечnти 78 4.3 . Загрузка шрифтов для печати 84 Глава 5. Системы упрамения базами данных 89 5.1. Назначение и область применения СУБД . . . 89 5.2. Общие характеристики н ограничения dBASE III PLUS.................. 90 5.3. Краткое описание команд dBASE III PI.US 97 5.4. Командные файлы. . . . 114 5.5. Использование функций 117 5.6. Комштятор Clipper 120 Глава 6. Табличные процессоры II интегрированные программ- ныесредства................... 6.1. Возможные области применения табличных процес- соров и интегрированных программных средств . . 6.2. Supercalc-3 . . . . . . . . . . . . . . . . . . . . 6.3 . Lotus 1-2 -3 6.4 . Symphony • Глава 7. Организация диалога с коне•1ным пользователем . . 7.1 . Требования к организации диалога с конечным поль• зователем ......... . 7.2 . Примеры организации диалога . . . . . . . Глава 8. Создание собственной инструментальной среды 8. 1 . Что такое собственная инструментальная среда . 8.2. Адаптация программных средств ....... . 8.3 . Система LP88 для решения оптимизационных задач 8.4. Пример построения собственной инструментальной сре- ды. Система Эрмитаж .• ... .... ... ... Глава 9. Локальные сети ЭВМ . . . . . . . . . . . . . . . 9,1, Принципы построения локальных вычпсл11телы1ых сетей ............. . 9.2. Локальные сети персональных ЭВМ , • , 9.3 . Электронная почта сети 3 PLUS , , , 9.4 . Clipper в локальной сети . . . •• , 9.5. Оrечественные ЛВС . . . . . . . . . 9.6. Сетевые возможности 8-разрядных ПЭВМ Списоклитературы.•,•,••••••••••• 136 136 141 149 161 172 172 183 195 195 197 208 220 233 233 238 245 252 258 264 270