Пакет ИРИС 2,0 выбран для очередного урока «Школы» по нескольким причинам

Во-первых, спектр наших публикаций, как нас упрекают читатели, явно однобокий. Описанные в них программные продукты почти все иностранного происхождения. Из отечественных разработок мы уделили внимание только текстовому редактору Лексикон («Наука и жизнь» № 5, 1990 г.). Пора бы рассказать о чем-то созданном в нашей стране

Во-вторых, стоимость пакета ИРИС мала по сравнению не только с ценой самого компьютера (40-60 тысяч рублей), но и со стоимостью западных СУБД (которые, кстати, теперь можно купить за рубли). Мы никогда не говорили о коммерческой и правовой стороне использования программных пакетов, хотя, наверное, стоило бы – ведь, в конечном счете, все наши публикации должны помочь возникновению у нас нормального, цивилизованного рынка программных продуктов. Так вот, одним из основных принципов распространения программных продуктов на западе является принцип лицензирования, когда конечный пользователь, не получая всех прав на продукт, получает право на его использование. В любой дистрибутивной коробке одним из самых важных «вложений» (помимо собственно дискет и документации) является лицензионное соглашение (license agreement), где оговариваются права и обязательства пользователя, условия использования продукта. Как правило, в лицензионном соглашении указывается, на каком количестве компьютеров пользователь имеет право устанавливать программу, при этом сама программа может быть защищена или не защищена от несанкционированного копирования. Большинство массово распространяемых пакетов не защищены от копирования, но лицензия юридически ограничивает количество используемых компьютеров (как правило, одна дистрибуционная коробка – один компьютер, хотите больше – покупайте дополнительное количество коробок или платите дополнительные деньги за расширенную лицензию, дающую право увеличить количество компьютеров с этой программой). Если сравнить цену ИРИС и западных СУБД (dBASE , Paradox, Clipper), то в пересчете на один компьютер, стоимость западных пакетов колеблется от 5 до 15 тысяч рублей, ИРИС от 1 до 2 тысяч. Закономерен вопрос может быть, цена ИРИС соответствует его качеству («мы не настолько богаты, чтобы покупать дешевые вещи»), тем более, что западные пакеты давно известны и хорошо себя зарекомендовали. Ответить на это можно тоже поговоркой: «лучше один раз увидеть, чем сто раз услышать» – посмотрите, что может ИРИС и сравните. (Правда не забудьте, что для того, чтобы действительно глубоко понять, что могут западные программы, Вам нужно неплохо владеть английским языком)

В-третьих, говоря об ИРИС, отметим, что фирма «Инфорг» (125047, а/я 81, Москва, ул. 1-я Тверская -Ямская (Горького), 46а-1, тел. 250-50-82), распространяющая и поддерживающая ИРИС, по примеру западных разработчиков программного обеспечения всячески способствует внедрению этой СУБД в учебный процесс ВУЗов, техникумов, школ и других учебных центров

Итак, что же такое ИРИС?

Многие из читателей наших компьютерных рубрик, судя по анкете («Наука и жизнь» № 12, 1986 г.) и по переписке, зарабатывают хлеб свой насущный, «перелопачивая» горы информации

Разработка информационно-поисковой системы (ИПС) с помощью любой СУБД требует известной подготовки в области программирования. Тем более, если желательно подать информацию в привычном для пользователя (бухгалтера, плановика, кадровика, работника регистратуры поликлиники, библиотекаря и т.д.) виде – то есть в виде платежной ведомости, сметы, личного дела, истории болезни, библиографической карточки и т.д. С другой стороны эффективную работоспособную, и, главное, удобную ИПС может создать только специалист в данной предметной сфере деятельности. Складывается ситуация, когда для решения проблемы пытаются вместе «запрячь коня и трепетную лань». Создать, например, систему учета кадров предприятия можно двумя путями:

Путь первый (лань коренная, конь пристяжной). Кадровик обучает программиста всем хитростям и премудростям  своей работы, показывает ему огромное количество учетных форм, объясняет алгоритмы их обработки. Программист с переполненной совершенно ненужными ему сведениями головой, пишет программу на dBASE или на Clipper’е 5,0, поминутно дергая кадровика и ругая себя за то, что согласился на такую адскую работу

Путь второй (конь коренной, лань пристяжная). Кадровик, отложив все свои прямые дела и обложившись книгами и ксерокопиями, изучает программирование или хотя бы основы этого синтеза науки и искусства и сам создает ИПС под названием «Кадры». Можете представить себе, какое время требует для такой работы начинающему

Оба варианта очень неудобны, а второй у нас, к сожалению, просто нереален. Этим, в частности, объясняется слабое использование персональных компьютеров для автоматизации учрежденческой деятельности

Проблему «коня и лани» изящно решает СУБД ИРИС. Любопытно, что эта система ведет к успеху по второму пути создания ИПС, который мы только что убедительно отвергли. Дело в том, что в ИРИС использована принципиально новая концепция организации данных. Удобные диалоговые средства разработки и обслуживания делают возможной успешную работу с ним даже для пользователя –непрофессионала в программировании. Специалисту для успешной работы с ИРИС нужно знание специфики своей повседневной деятельности и понимание смысла самых основных положений ИРИС. А они достаточно просты

ИРИС это документно–ориентированная система, работающая с базами документов. Электронные документы, используемые в ИРИС, это заменители обычных бумажных документов, с которым многие из нас имеют дело на работе (копаясь в библиографических карточках, например) или в быту (придя в поликлинику и толкаясь в регистратуре)

Конечно, разнообразные бумажные документы отличаются друг от друга и внешне, и содержащимися в них данными. Документы могут быть разных типов – например, «Анкета», «Накладная» и т.п. Заполненные бланки одного типа удобнее называть экземплярами документа этого типа. Так, лежащие в папке анкеты сотрудников предприятия – это экземпляры документа типа «Анкета; анкета Иванова является экземпляром документа типа «Анкета»; данные этого экземпляра состоят из информации об Иванове

ИРИС, как отмечено выше, освобождает кадровика от необходимости изучать программирования. Но без элементарной компьютерной грамотности ему не обойтись. Электронные документы в среде ИРИС характеризуются рядом «компьютерных» понятий, связанных со спецификой хранения и отображения информации в ЭВМ. Схематично электронный документ ИРИС может быть представлен состоящим из двух частей: Данных Документа (ДД) и Описание Документа (ОД)

Данные Документа составляют содержание соответствующего документа, отличающего его от других экземпляров однотипного документа. Данные представляют собой совокупность значений полей, из которых состоит Документ. Каждое поле имеет тип, имя и другие атрибуты, которые в совокупности определяют описание поля. Тип поля определяет вид информации, которая может содержаться в этом поле (число, строка, дата и т. п.)

Описание Документа это служебная информация, необходимая ИРИС для работы с документом. Все документы, имеющие одно описание, называются однотипными. Описание Документа включает описание его структуры, внешней формы и связи с Базой Документов (БД)

База Документов в ИРИС служит для хранения Данных электронных документов. Она состоит из логических файлов, каждый из которых может содержать данные документа одного типа. Каждый логический файл состоит из двух файлов DOS: файла данных и файла индексов. Эти файлы имеют одинаковые имена, но разные «фамилии» – расширения DT2 и IX2 соответственно

Теперь, после того как Вы узнали, что такое документ ИРИС и из чего он состоит, можно попробовать приступить к конструированию какого-нибудь документа. Для этого в составе пакета ИРИС 2,0 имеется специальная утилита (программа) Конструктор Документов. Процесс конструирования (создания описания) документа заключается в заполнении специальных таблиц Конструктора, задающих структуру документа, и «рисовании» внешней формы документа, т.е. того, как он выглядит на экране. При этом управлять работой Конструктора (переходить из окна в окно, выполнять те или иные действия) Вы можете через систему меню – для этого нужно нажать F1 и в появившемся внизу «окошке» команд выбрать требуемую. Запустив Конструктор с указанием имени файла, где будет храниться описание данного документа, пользователь окажется в базовом окне 1 Конструктора. В нем задаются параметры документа, которые характеризуют его в целом: роль документа, имя файла БД и некоторые другие

Поясним, что такое роль документа. Если бы пользователь занимался только тем, что последовательно заполнял бланки документа и помещал их на хранение базу документов – нам не потребовалось бы говорить о каких-то ролях. Но ведь заполнить новый документ и «ввести» его в машину – это только половина дела. Его еще нужно будет потом найти. Для этого удобно заполнить некий бланк «запроса» на поиск (он по своей форме немного отличается от формы искомого документа), просмотреть список найденных документов и выбрать нужный. Для выполнения этих действий в ИРИС существуют служебные документы, или, как говорят в ИРИС, документы могут играть роли. Всего их четыре:

Хранимый документ используется для ввода новых документов в БД, для просмотра и корректировки документов, имеющихся в БД. Это «главная» по значимости роль документа – ведь именно по описанию хранимого документа определяется структура базы. Остальные документы всегда зависят от описания хранимого

Документ – Запрос служит для сообщения машине условий поиска документов в БД

Список. Такую роль имеет документ, предназначенный для просмотра списка найденных в Б документов

Меню. Документ в рол меню используется для организации выбора возможных работ. Вообще говоря, меню, в нашем понимании, вряд ли можно отнести к какому либо документу, в ИРИС это сделано потому, что меню, как и описания всех других документов создаются с помощью Конструктора

После описания общих характеристик можно переходить к описанию структуры документа. Для этого достаточно нажать на клавиатуре Alt1 или пройтись по «меню» F1 Окна Структура и на экране появится таблица Конструктора

Что же такое структура документа ИРИС? Данные в традиционных реляционных СУБД можно уложить в одномерную таблицу, каждая строка которой содержит данные одной записи, а в «шапке» которой записаны имена полей: «Фамилия, И.О.», «Дата рождения», «Адрес», «Вес» и т.д. Данные в этом случае могут иметь определенный тип: это может быть строка (фамилия), дата (дата рождения), число (вес в килограммах). У такой модели есть существенные ограничения, с которыми часто сталкиваются разработчики: во-первых, каждый элемент данных должен иметь фиксированную длину, из-за чего трудно работать с текстовой информацией, во-вторых, каждый элемент данных может встречаться в каждой записи только один раз (например, если при заполнении библиографической карточки в библиотеке, выяснилось, что у книги есть два автора, то «места» для неожиданно возникшей второй фамилии реляционная структура предоставить не может). Желание же предусмотреть все возможные ситуации заранее, в реляционной структуре приводит к увеличению размеров и количества хранимых полей, что довольно неэффективно. Создатели ИРИС сделали на первый взгляд небольшую модификацию: они ввели возможность объединять несколько связанных по смыслу полей в единую группу и декларировали возможность существования множественных полей и групп. Более того, группы в ИРИС могут быть вложенными друг в друга (с сохранением возможности размножения). Все это и привело к появлению у СУБД ИРИС совершенно новых качеств. Организация данных стала многоуровневой, появилась возможность работать с текстовой информацией переменной длины, возможность объединения нескольких связанных между собой полей в группы и дальнейшей обработки их как единого целого

Множественные поля и группы делают более полным соответствие данных компьютерных и бумажных документов. Например, все данные, относящиеся к определенному этапу научно-исследовательской работы (номер этапа, наименование работ, начало и окончание этапа, стоимость этапа), можно объединить в группу и объявить ее множественной. При этом совершено не обязательно заранее знать о точном количестве этапов работы. Всю работу по динамическому добавлению новых экземпляров этой группы в документ ИРИС и отображению их на экране возьмет на себя Монитор ИРИС –программная компонента, в которую заложен стандартный «сценарий» ИПС и который, собственно и организует работу с описанными с помощью Конструктора документами. Для организации работы с множественными, текстовыми элементами и группами достаточно на этапе конструирования документа задать соответствующие атрибуты

Таким образом, описание структуры документа состоит из определения имен полей, их типа, уровня вложенности (а, значит, принадлежности той или иной группе), атрибутов, способов обработки данных. Как мы уже говорили, описание структуры заключается в заполнении специальной таблицы Конструктора. Заполнять таблицу Конструктора можно либо прямым набором на клавиатуре необходимой информации, либо, нажав на клавишу F4, выбором требуемого значения из списка. Эта таблица содержит четыре столбца, первые три из которых («Уровень», «Имя», «Тип») служат для ввода одномерных характеристик поля, а четвертый («Атрибуты») служит для отображения атрибутов, задаваемых в специальном окне. На рис. как раз показан момент заполнения атрибутов для элемента с именем «Начало»

Для конструирования внешней формы служит третье базовое окно Конструктора. Внешняя форма документа – это то, как документ выглядит на экране. Помимо полей, содержащих данные документа, внешняя форма может содержать любую пояснительную информацию. Средства, предоставляемые Конструктором, для внесения пояснительной информации, аналогичны средствам любого текстового редактора. Имеется возможность рисования лини во внешней форме. Для создания формы поля, служащего для отображения информации, нужно переместить курсор в то место формы, где должно находиться поле, и нажать F6. В дополнительном окошке, появившемся при этом, следует задать характеристики этого поля: имя, длину, опции и цвет

Работа с базой документов (БД) реализует основные возможности информационно-поисковой системы: ввод новых документов в БД, удаление документов из БД, сортировка найденных документов по различным полям, просмотр и редактирование найденных документов, копирование и перемещение документа или группы документов из одного файла БД в другой, печать одного или группы документов и др.

При работе с БД используются три основных окна: окно для ввода, просмотра и корректировки документов (окно документов); окно для задания запроса на поиск (окно запроса) и окно для отображения списка найденных документов (окно списка)

Каждое из этих окон служит для отображения соответствующего документа (Хранимого документа, документа–Запроса или документа–Списка) и выполнения над ними различных операций

С помощью специальных команд можно переключаться с одного вида деятельности на другой, переходя в соответствующее окно. Например, можно начать ввод серии документов в БД, работая в окне документов. Затем перейти в окно поиска, сформулировать запрос на поиск, заполнив все или некоторые поля в документов. После этого можно просмотреть список найденных документов, перейдя в окно списка, и, наконец, отредактировать какой-либо из найденных документов, вернувшись для этого в окно ввода. Отметим, что это далеко не единственный, но тем не менее весьма типичный способ работы с БД. На его примере видно, что эта работа поддерживает три основных вида деятельности: ввод новых документов, поиск документов, просмотр и редактирование найденных документов

Чтобы ввести новый документ, нужно заполнить бланк документа. После этого ИРИС добавит этот документ в файл БД и предоставит бланк для ввода следующего документа

Для того чтобы отобразить нужные документы из файла БД, достаточно перейти в окно запроса и сформулировать запрос на поиск. Для этого необходимо заполнить все или некоторые поля в документе–Запросе, который является «образцом» того, что должно содержаться в искомых документах. Такая организация поиска называется «поиск по образцу». Получив запрос на поиск, ИРИС отбирает из файла БД документы, удовлетворяющие указанным критериям, и формирует из них в оперативной памяти так называемого «рабочее множество». Все операции (просмотр, корректировка, сортировка, печать и т.д.) выполняются только над документами из рабочего множества

Документы, входящие в рабочее множество, просматриваются в окне списка. При этом в любой момент можно перейти из окна списка в окно документов, чтобы просмотреть или откорректировать текущий документ. Далее можно снова вернуться в окно списка или, оставаясь в окне документов, с помощью специальных клавиш последовательно просматривать документы из рабочего множества

Помимо просмотра и редактирования над документами, входящими в рабочее множество, можно выполнять различные операции: удаление, копирование, печать и т.д. Эти операции можно применять как к отдельным документам, так и к группе документов (в том числе ко всему рабочему множеству)

Выполнение запроса на поиск схематично можно представить следующим образом: ИРИС перебирает один за одним по очереди все документы, хранящиеся в файле БД, и для каждого из них проверяет, удовлетворяют ли значения его полей критериям, заданным в соответствующих полях бланка запроса. Если удовлетворяют, такой документ отбирает в рабочее множество. (Внимание! Это только схематичное представление! На самом деле поиск в ИРИСе организован с использованием инвертированных списков, что делает его существенно эффективнее простого перебора)

Условие, заданное в отдельном поле бланка запроса, называется локальным критерием. Каждый локальный критерий поиска состоит из одного или нескольких элементарных условий, соединенных знаком «логическое ИЛИ». Этот знак может быть окружен любым количеством пробелов. Локальный критерий считается выполненным, если выполнено хотя бы одно из элементарных условий

Для символьных полей в бланке запроса значения могут быть набраны как заглавными, так и строчными буквами, результат поиска от этого не зависит

В ИРИСе допускаются следующие виды элементарных условий: Совпадение; Больше; Меньше; Интервал; Незаполненные поля; Несовпадение; Совпадение начала. Так, например, можно «попросить» ИРИС найти все документы-договора стоимостью больше 10.000 рублей, при этом в поле «Заказчик» должно быть слово, начинающееся на орг* (обратите внимание – в любом месте предложения!)

ИРИС – открытая для пользователя система. Для более «тонкой» настройки ИПС под Ваши нужду Вы можете использовать очень удобный механизм – модули дополнительной обработки. Они применяются для организации нестандартной обработки значений полей. Можно пользоваться как стандартными DO–модулями, входящими в комплект поставки ИРИС, так и самостоятельно создавать собственные DO–модули. Здесь следует отметить, что для программирования наряду со средствами ИРИС Вам потребуются транслятор Си, редактор связей и текстовый редактор

Стандартные DO–модули, входящие в комплект поставки ИРИС, позволяют выполнять различные действия с данными некоторого поля или группы полей (проверка значения поля на принадлежность заданному диапазону, вычисление значения поля, организация ввода информации в поле из списка возможных значений и прочая, и прочая). «Присоединение» DO–модуля к полю документа происходит на этапе конструирования. Для этого «Атрибуты» Конструктора необходимо указать имя DO–модуля и, если это необходимо, дополнительные параметры. Например, в ИПС «Договор», которая предназначена для учета договорных работ Вашего предприятия и которую Вы можете разработать средствами ИРИС, необходимо ограничить (по каким-либо причинам) минимальную стоимость работы. Для этого можно использовать стандартный DO-модуль RANGE, проверяющий, вводимое значение на принадлежность заданному диапазону

А сейчас немного информации для тех, кто программирует на Си. Программирование в среде ИРИС имеет определенную специфику по сравнению с традиционными методами программирования, связанную в основном с динамической загрузкой программ. Динамический модуль представляет собой программный модуль, состоящий из одной или нескольких функций, некоторые из которых могут быть объявлены доступными из других программ (такие функции будем называть точками входа динамического модуля). Синтаксически динамические модули могут ничем не отличаться от обычных программ на языке Си. Спецификации их стоит лишь в написании заголовков точек входа (кроме того, естественно, динамический модуль не может содержать функции Main). В оперативной памяти одновременно может разместиться модулей, их число ограничивается только доступным размером оперативной памяти. ИРИС представляет программисту средства для динамической загрузки и выгрузки модулей

Динамические модули выполняются под управлением Монитора ИРИС, который реализует следующие функции:

Загрузки и выгрузка модулей, причем каждый из них гарантированно присутствует в оперативной памяти в единственном экземпляре;

Передачи управления на точки входа и возврата в вызвавшую их программу;

Предоставление для всех функций общего стека для размещения параметров и переменных;

Предоставление всем динамическим модулям доступа к функциям из стандартных библиотек ИРИС и Си, размещенных в Мониторе ИРИС (такой подход позволяет существенно сократить размеры динамических модулей, т.к. они содержат лишь свой собственный код)

В отличие от процесса создания обычной программы на языке Си (исходный текст – компиляция – сборка) создание динамического модуля дополняется еще одним этапом – прекомпиляцией. Прекомпиляция предшествует компиляции и выполняет специальной утилитой, входящей в комплект поставки ИРИС. Прекомпилятор ИРИС (PRE.EXE) формирует исходный текст программного модуля для штатных компиляторов Си

Программирование в среде ИРИС помимо использования стандартных типов данных и функций языка Си, предполагает использование специальных типов данных и функций, необходимых для работы с такими специфическими для ИРИС объектами, как документы, результаты поиска и др.

Основным информационным объектом в ИРИС является документ. Для работы с документом в программах необходимо использовать специальные переменные – Д - переменные. Переменные этого типа предназначены для хранения данных документа и другой связанной с ним информации. Внутренняя структура Д – переменной скрыта от программиста. Все действия над Д – переменной осуществляют с помощью специальных функций ИРИС и интерфейсной структуры типа ifem_ref (в дальнейшем IREF). IREF – это логический указатель на элемент Д – переменной. В ней содержатся данные, позволяющие однозначно идентифицировать этот элемент, и некоторая вспомогательная информация

Библиотечные функции ИРИС можно разделить на пять больших групп:

Функции доступа к Д – переменным. К этой группе относятся функции создания и уничтожения Д – переменных, функций установки IREF не требуемый элемент Д – переменной, функции присваивания и получения значения элементов, функции изменения и получения характеристик элемента Д – переменной и некоторые другие функции;

Функции просмотра и редактирования документов. Эта группа включает в себя функции отображения и редактирования документов, функции выдачи сообщений, работы с клавиатурой. Функции этой группы позволяют Вам организовать работу с документами в диалоговом режиме;

Функции обслуживания Базы документов. Позволяют связывать Д – переменные с БД, позволять ввод/вывод данных из БД, проводить поиск документов в БД, осуществлять операции со списком найденных документов;

Функции поддержки динамических модулей. Эта группа включает в себя функции загрузки и выгрузки динамических модулей, функции их активизации, функции обработки событий;

Вспомогательные функции. Эта группа содержит большое число различных функций общего назначения (функции распознавания классов символов, работа со строками, функции выдачи диагностических сообщений, открытия библиотечных файлов и др.)

Специфика DO–модулей состоит в том, что их вызовом управляет не программист, а Монитор ИРИС. Программист же должен четко представлять (и описывать), в каких ситуациях этот DO–модуль будет вызван. Вызов DO–модуля происходит при возникновении определенной специфической ситуации в системе (в терминологии ИРИС – События). Примерами событий могут быть, например, нажатие клавиши на клавиатуре, порождение новой Д – переменной и т.п. Для того, чтобы можно было однозначно определить ситуацию, возникшую в системе, каждое событие идентифицируется своим кодом – целым числом. События, автоматически инициируется Монитором ИРИС при выполнении тех или иных действий составляют набор стандартных Событий. Все События можно разделить на локальные и глобальные

Локальные события – это события, относящиеся к какому-либо элементу Д – переменной. К стандартным локальным событиям относятся: нажатие клавиш, вход и выход из поля, преобразование внешнего изображения поля во внутреннее и обратно

Глобальные события относятся ко всей Д – переменной или к какой-либо группе элементов. К стандартным глобальным событиям относятся: порождение или уничтожение Д – переменной, вставка или удаление экземпляров множественных элементов, пересчет значений полей и т.д.

Итак, вторым существенным отличием ИРИС от распространенных западных систем (напомним – первое это нереляционная модель данных) является практически полная внутренняя открытость для профессиональных программистов. Из известных авторам программных средств такие возможности предоставляет, пожалуй, только пакет db_VISTA

К сожалению, объем на стоящей статьи не оставляет авторам возможности более подробно ознакомить Вас с богатейшими возможностями ИРИС. За рамками изложения остались вопросы, связанные с практическим программированием в среде ИРИС, использованием «мыши» при работе с документами и многое другое. Однако, развитые средства встроенной помощи ИРИС, прекрасная документация на этот программный продукт, сопровождение и консультации, которые гарантирует фирма «Инфорг» всем зарегистрированным пользователем ИРИС, позволяют Вам самим разобраться с этим и другими вопросами.