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


third week pregnancy
            Pro*C  for  MS-DOS
             Getting Started
                VERSION 1.2

                                 ПРЕКОМПИЛЯТОР PRO*C
                              ДЛЯ ОПЕРАЦИОННОЙ СИСТЕМЫ
                                       MS-DOS
                                     ВЕРСИЯ 1.2
                                      ВВЕДЕНИЕ

                                 ORACLE
             СИСТЕМА УПРАВЛЕНИЯ РЕЛЯЦИОННЫМИ БАЗАМИ ДАННЫХ
                       Прекомпилятор Pro*C/MS-DOS
                                 Введение
                                Версия 1.2
                  Изделие N 5055-V1.2      декабрь 1988

Ответственный автор: Джоан Найленд
Составители: Эд Оутс,Питер Уичерн,Джин Шклар,Лес Йегер,Эллен Броут,Стив Мен-
кофф,Стив Мак-Адамс,Джейм Амадео,Ли Уей,Майк Робертс,Шармини Натан
(С) Корпорация ORACLE,1988
Все права защищены.Напечатано в США

             Замечания по ограничению прав на распространение:
     Использование,дублирование или раскрытие содержания этой программы ог-
раничены в соответствии с положениями Вашего контракта с корпорацией ORACLE.
Использование,дублирование или раскрытие содержания этих программ со стороны
правительства США подлежит действию ограничений на коммерческое программное
обеспечение,а сами программы будут заявлены на лицензирование в соответствии
с федеральным законом на ограничение прав распространения.
     Информация,содержащаяся в этом документе м.б. изменена без предварите-
льного уведомления.Если Вы обнаружите какие-либо ошибки в документации,про-
сим сообщить нам об этом в письменном виде.Корпорация ORACLE не может гаран-
тирновать отсутствие ошибок в этом документе.
     ORACLE,SQL*Plus,SQL*Forms,SQL*Menu и SQL*Loader являются зарегистриро-
ванными  торговыми марками корпорации ORACLE.Pro*C и SQL*Net - торговые мар-
ки корпорации ORACLE.
     Microsoft и MS-DOS - зарегистрированные торговые марки корпорации Mic-
rosoft.IBM - зарегистрированная торговая марка корпорации International Bu-
siness Machines.Intel - зарегистрированная торговая марка корпорации Intel.
Lattice - зарегистрированная торговая марка корпорации Lattice.PLINK 86 PLUS
- зарегистрированная торговая марка компании Phoenix Software Associates Ltd.

                                 ПРЕДИСЛОВИЕ
    В этом руководстве содержатся общие сведения о программном интерфейсе
прекомпилятора Pro*C/MS-DOS,а также инструкция по установке этого программ-
ного обеспечения.В руководстве освещены следующие вопросы:
 - общие сведения о прекомпиляторе Pro*C/MS-DOS и программе интерфейса вызо-
   вов ORACLE (OCI)
 - различия в запуске системы ORACLE и в разработке прикладных программ на
   языке Pro*C для реального и защищенного режимов работы.
 - рекомендации по установке программного обеспечения Pro*C для MS-DOS
 - особенности в использовании программного интерфейса языка С при работе
   под управлением операционной системы MS-DOS
 - инструкция по использованию средств разработки программ для работы в за-
   щищенном режиме (Protected-Mode Development Kit = PDK),включая утилиту
   отладки программ защищенного режима (Protected-Mode Debugging Utility =
   PDU)
 - пояснения к изменениям,внесенным в программные интерфейсы для языка С,по
   отношению к более ранним версиям этого программного обеспечения,выполняю-
   щегося под управлением OC MS-DOS

     Более подробные сведения по использованию прекомпилятора Pro*C при ра-
боте в различных OC можно найти в документе "Руководство пользователя преко-
мпилятором Pro*C"

                   На кого рассчитано это руководство?
     Этот документ,"Введение в прекомпилятор Pro*C/MS-DOS",необходим при ус-
тановке или использовании программного интерфейса ORACLE с языком С при ра-
боте под управлением OC MS-DOS.

                 Что нужно знать при чтении этого документа?
     Предполагается,что,прежде чем приступить к чтению этого документа,вы
уже хорошо ознакомились с работой вашего компьютера и OC.В частности,предпо-
лагается,что вы знаете команды,с помощью которых можно удалять и копировать
файлы,понимаете,что означают такие термины,как поиск маршрута доступа в OC
MS-DOS,подсправочники,маршрутные имена.Если вы хотите установить программное
обеспечение Pro*C/MS-DOS для использования в защищенном режиме,то вы должны
хорошо представлять себе,какими особенностями характеризуется этот режим (в
том числе,вы должны иметь представление об архитектуре микропроцессора 80286
или 80386).Предполагается также,что вы умеете вносить изменения в текстовый
файл в кодах ASCII с помощью какого-либо текстового редактора.

                          Структура руководства
Этот документ состоит из следующих основных разделов:
 - Введение в прекомпилятор Pro*C/MS-DOS:  В главе 1 содержатся общие сведе-
   ния о программном обеспечении Pro*C и создании прикладных программ на
   языке Pro*C для работы в реальном или защищенном режиме использования ос-
   новной памяти.
 - Установка прекомпилятора Pro*C/MS-DOS: В главе 2 рассмотрены процедуры
   установки программного обеспечения ORACLE.
 - Использование прекомпилятора Pro*C/MS-DOS: В главе 3 рассмотрены вопросы
   использования прекомпилятора Pro*C,интерфейса вызовов ORACLE,а также опи-
   саны программные вызовы интерфейса OCI.
 - Средства разработки программ для работы в защищенном режиме: В главе 4
   описано использование системы разработки программ PDU,включая примеры
   программ,а также использование специальной утилиты для преобразования
   программ реального режима памяти в программы защищенного режима памяти.
 - Дополнительные возможности прекомпилятора Pro*C: В этом приложении описа-
   ны изменения,включенные в версию 1.2 прекомпилятора Pro*C,а также измене-
   ния в версиях 1.1 и 1.0 программных интерфейсов,не включенные в документ
   "Руководство пользователя прекомпилятором Pro*C".

                                  Ограничения:
   В этом приложении описаны и исправлены известные ошибки в программном
обеспечении Pro*C.

                                    Нотация
   В документе используются следующие соглашения по нотации:

english text  Вводите такой текст так,как показано.Текст,вводимый на персо-
              нальном компьютере,не зависит от того,на каком буквенном реги-
              стре его набирают,если это не оговорено особо.
русский текст В синтаксисе операторов русский текст представляет параметры.
              Подставьте в этом месте нужное значение.
[]            В квадратные скобки заключены факультативные опции или функци-
              ональные клавиши.Сами скобки вводить не нужно.
|             Вертикальная черта разделяет альтернативные опции.Нужно ввести
              одну,и только одну из опций,разделенных вертикальной чертой.
              Сам этот знак вводить не нужно.
Знаки         Знаки пунктуации,отличные от квадратных скобок и
пунктуации    вертикальной черты,следует вводить в том виде,в
              каком они указаны.
ENGLISH       Буквы верхнего  регистра  на  английском  языке  в
              тексте используются для обозначения имен команд.
С>            Это символ-подсказка OC MS-DOS с указанием идентификатора ис-
              пользуемого вами накопителя на жестких дисках.Подсказка на ва-
              шем экране может отличаться от этой,поскольку она может пока-
              зывать подсправочник,с которым вы в данный момент работаете.
\DIRECTORY    Символ обратной косой черты перед именем справочника указывает
              на то,что это -  подсправочник.

                          Замечание по справочникам
     В этом документе предполагается,что все имена справочников соответству-
ют именам,присваиваемым при выполнении принимаемой по умолчанию процедуры
установки программного обеспечения ORACLE.Исходя из этого предполагается,что
главным справочником ORACLE является справочник \ORACLE,а справочник,содер-
жащий прикладные программы,имеет имя \ORACLE5\BIN (или \ORACLE5\PBIN для за-
щищенного режима).Если при настройке вашей системы использовались другие
имена справочников,вам необходимо вместо указанных выше имен в нужных местах
подставлять соответствующие имена ваших справочников.

                             Ждем Ваших замечаний
    Мы будем глубоко признательны Вам за Ваши замечания как пользователя
ORACLE и читателя этого руководства.Поскольку мы постоянно ведем запись пос-
тупающих предложений,оцениваем их и пересматриваем,Ваши замечания очень нуж-
ны в этой работе.В конце этого документа имеется специальный бланк замечаний
пользователя.Мы были бы Вам очень признательны,если бы Вы заполнили этот
бланк и сообщили нам о том,что Вам нравится или не нравится в этом руководс-
тве или в других руководствах по системе управления реляционными БД ORACLE.
Если в Вашем документе по каким-либо причинам отсутствует бланк замечаний
пользователя,или если вы предпочитаете сообщить Ваши замечания непосредстве-
нно нам,обращайтесь,пожалуйста,по указанному ниже адресу или по телефону
(415) 598-8000.
   Pro*C for MS-DOS
   PC Product Line Manager
   Oracle Corporation
   20 Davis Drive
   Belmont,California 94002


+                                  СОДЕРЖАНИЕ
Глава 1.Введение в прекомпилятор Pro*C/MS-DOS ............
       Что представляет собой прекомпилятор Pro*C/MS-DOS? ...
       Для чего нужен программный интерфейс? ................
       Прикладные программы,работающие в реальном и защищенном режиме памяти.
       Использование прекомпилятора Pro*C/MS-DOS ............
       С чего начать? ..................................
       Для нынешних пользователей прекомпилятора Pro*C ......
       Улучшенная функциональность .....................
       Преобразование из более ранних версий прекомпилятора Pro*C/MS-DOS .
Глава 2.Установка прекомпилятора Pro*C/MS-DOS ............
       Структура справочников системы ORACLE ................
       Установка прекомпилятора для реального режима,
            защищенного режима или обоих режимов ............
       Установка для обоих режимов памяти ..............
       Параметр REAL_MEMORY в файле CONFIG.ORA .........
       Требования к техническому и программному обеспечению .
       Установка и удаление примеров программ ...............
       Установка прекомпилятора Pro*C/MS=DOS ................
       Этапы подготовки системы ........................
       Обновление библиотек компилятора .....................
       Обновление библиотек компилятора Microsoft C ....
       Обновление библиотек компилятора Lattice C ......
       Запуск прекомпилятора ...........................
Глава 3.Использование прекомпилятора Pro*C/MS-DOS ........
       Использование прекомпилятора .........................
       Пользовательские выходы для прекомпилятора Pro*C .....
       Включение пользовательских выходов в бланки запросов .....
       Использование интерфейса вызовов системы ORACLE ......
       Программные вызовы интерфейса OCI ....................
Глава 041.Подсистема разработки программ для защищенного режима памяти .
       Введение в подсистему разработки программ для
                защищенного режима памяти .......................
       На кого рассчитан этот пакет программ ...........
       Преимущества защищенного режима .................
       Связь с SQLPME ..................................
       Подготовка к использованию подсистемы PDU ............
       Оперативные подсказки "помощь" ..................
       Подготовка к отладке на уровне исходного языка ..
       Отладка на уровне исходного языка ....................
       Запрещение отображения об`ектного кода ..........
       Запрещение отображения исходного текста программы
       Запуск подсистемы PDU ................................
       Включение дополнительных параметров в подсистему PDU .....
       Работа с подсистемой PDU .............................
       Распознавание чисел и символов ..................
       Распознавание операций ..........................
       Повторение команд PDU ................................
       Приостановка выполнения программы во время отладки ...
       Команды подсистемы PDU ...............................
       Создание примерной программы в защищенном режиме .....
       Преобразование программ из реального режима в защищенный .....
Приложение А.Усовершенствования в прекомпиляторе Pro*C ...
             Усовершенствования к прекомпилятору Pro*C версии 1.2
             Синтаксис прекомпилятора ........................
             Изменения в прекомпиляторе ...........................
             Параметры HOLD_CURSOR и RELEASE_CURSOR ..........
             Усовершенствования к прекомпилятору Pro*C версий 11.0 и 1.1 .
             Оператор SELECT не используется совместно с
                               операторами PREPARE и EXECUTE .............
             Замечания по новым свойствам оператора DESCRIBE
             Опции оператора EXEC ORACLE .....................
             Оператор DECLARE ................................
Приложение Б.Особенности прекомпилятора Pro*C ............
             Известные ошибки в документе "Руководство пользователя"
             Исправления в прекомпиляторе .........................
             Закрытие курсоров ...............................
             Интерфейс операторов EXEC IAF GET/PUT ...........
             Переменные типа VARCHAR .........................
             Исправления в интерфейсе вызова системы ORACLE
             Параметр OPEN_CURSORS в файле INIT.ORA ..........


+             Глава 1.Введение в прекомпилятор Pro*C/MS-DOS
    В этой главе описаны программные интерфейсы ORACLE для языка С,работаю-
щие под управлением OC MS-DOS (для реального и защищенного режимов).В част-
ности,здесь освещаются следующие вопросы:
 -  что такое прекомпилятор Pro*C/MS-DOS
 -  для чего нужно пользоваться программными интерфейсами
 -  прикладные программы,работающие в реальном и защищенном режимах
 -  как пользоваться прекомпилятором Pro*C/MS-DOS
-  какие усовершенствования сделаны для пользователей данной версии преком-
   пилятора Pro*C/MS-DOS

                  Что такое прекомпилятор Pro*C/MS-DOS?
    Вы можете обращаться к БД ORACLE посредством высокоуровневого языка зап-
росов,так называемого "Структурного языка запросов",или SQL (произносится
как "сикуел") (Structured Query Language).Язык SQL чаще всего используется
через интерактивный интерфейс SQL*Plus.Другим способом использования языка
SQL м.б. встраивание операторов SQL в программу,написанную на процедурном
языке программирования,таком как С,с последующим использованием одного из
программных интерфейсов ORACLE для трансляции этих операторов в операторы
языка С.
    Прекомпилятор Pro*C предоставляет в ваше распоряжение 2 программных ин-
терфейса для языка С: собственно прекомпилятор,который позволяет встраивать
операторы языка SQL непосредственно в код программы на языке С,и интерфейс
вызовов ORACLE (OCI),то есть формирование последовательности операторов на
языке С,с помощью которых вы можете включить процедурные вызовы SQL в прик-
ладную программу,обращающуюся к БД ORACLE.

                    Для чего нужен программный интерфейс?
    Программный интерфейс представляет собой инструмент для написания прик-
ладных программ связи с БД ORACLE на процедурном языке программирования.При
написании таких программ вы можете воспользоваться преимуществами двух раз-
личных подходов в обработке данных: гибкость и эффективность процедурного
языка программирования в сочетании с мощностью и выразительностью языка SQL.
Прекомпилятор Pro*C предназначен для преобразования программ на языке С,вк-
лючающих операторы языка SQL,в программы,на языке С,которые могут получать
доступ и манипулировать данными,хранящимися в БД ORACLE.Будучи прекомпилято-
ром,Pro*C преобразует операторы EXEC SQL,которые он обнаруживает во входном
файле,в операторы на языке С.Результирующий предварительно компилированный
выводной файл после этого м.б. докомпилирован,связан с другими модулями и
выполнен обычным образом.
     Использование прекомпилятора Pro*C выгодно в двух отношениях.Во-первых,
благодаря встраиванию операторов языка SQL непосредственно в прикладную про-
грамму языка Pro*C,вы можете задать в одном таком операторе от 8 до 10 функ-
ций.Во-вторых,поскольку прекомпилятор Pro*C довольно часто обновляется,вы
можете своевременно обеспечивать использование новых функций системы управ-
ления БД.
     Интерфейс OCI предоставляет вам возможность использовать специальные
операторы языка С для включения в программу обращения к БД ORACLE вызовов на
языке запросов SQL.
     Программные интерфейсы Pro*C/MS-DOS поддерживают работу двух компилято-
ров языка С: компилятора Microsoft C версии 1.5 и компилятора Lattice C вер-
сий 3.0 - 3.2.Кроме того,программное обеспечение Pro*C/MS-DOS поддерживает
работу 3 редакторов связей: Microsoft LINK,IBM Linker,Phoenix PLINK 86 PLUS.

      Прикладные программы для реального и защищенного режимов памяти
     Прикладные программы ORACLE,в том числе те,которые составлены с исполь-
зованием Pro*C,могут теперь выполняться в защищенном режиме OC MS-DOS.Благо-
даря этому можно выполнять нужное вам программное средство ORACLE в расшире-
нной памяти за пределами 640 Кбайт,которыми ограничена OC MS-DOS реального
режима основной памяти.Составляя прикладную программу с операторами языка
Pro*C в защищенном режиме,вы можете использовать большое пространство основ-
ной памяти "за чертой" (вплоть до 15 Мбайт) и к тому же работать в операцио-
нной среде,обеспечивающей лучшую защиту от программных ошибок.Однако,если в
вашем компьютере не установлены платы расширенной памяти или если ваш компь-
ютер использует центральный процессор,отличный от 80286 или 80386,вам следу-
ет разрабатывать программы в расчете на реальный режим.
     Вы можете установить программное обеспечение Pro*C/MS-DOS для использо-
вания в реальном режиме (R),в защищенном режиме (P) или в обоих этих режимах
(B).
     При установке прекомпилятора Pro*C в защищенном режиме в систему вклю-
чается также подсистема разработки программ защищенного режима PDK.Этот па-
кет программ включает в свой состав отладчик,примеры программ,обновления для
библиотеки служебных программ,а также 2 утилиты для преобразования программ
реального режима в программы защищенного режима.

                 Использование прекомпилятора Pro*C/MS-DOS
     Чтобы понять,как пользоваться средствами Pro*C/MS-DOS,вы д.б. знакомы с
OC MS-DOS и языком программирования С.В этом документе предполагается,что вы
уже обладаете необходимыми знаниями.Научиться пользоваться любым из упомяну-
тых ранее программных интерфейсов вы можете самостоятельно с помощью этого
документа или "Руководства пользователя прекомпилятора Proc*C".

                                С чего начать?
     Чтобы вы могли быстро начать пользоваться этим новым программным проду-
ктом системы ORACLE,вам следует выполнить следующее:
 -  Заполните и отошлите регистрационную карту,включенную в
    буклет "Информация для пользователя".
 -  Прочтите первые несколько глав настоящего документа,где
    описаны принципы и средства программных интерфейсов.
 -  Установите в вашей вычислительной системе (следуя прилагающейся инструк-
    ции) систему управления реляционными БД (СУРБД) ORACLE для работы под
    управлением OC MS-DOS,или программное обеспечение SQL*Net,если вы еще
    этого не сделали.Инструкцию по установке можно найти во вводном руковод-
    стве или руководстве пользователя и руководстве по установке СУРБД ORA-
    CLE или программного обеспечения SQL*Net.
 -  Установите прекомпилятор Pro*C/MS-DOS,следуя инструкции
    из главы 2 настоящего документа.
 -  Далее следуйте инструкциям из главы 3 по запуску
    прекомпилятора или использованию интерфейса OCI.
 -  Если вы предполагаете программировать пользовательские выходы,следуйте
    инструкциям по установке программного средства бланков запросов SQL*
    Forms.Эти сведения можно найти в документе "Введение в инструменты прик-
    ладного программирования в ORACLE/MS-DOS".После этого следуйте инструк-
    циям из главы 3 настоящего документа "Пользовательские выходы для преко-
    мпилятора Pro*C".
 -  Если вы предполагаете писать прикладные программы для защищенного режима
    работы,то вам также необходимо внести изменения в библиотеки программ
    времени выполнения вашего компилятора,затем прочитать главу 4 "Подсисте-
    ма разработки программ для защищенного режима работы".

            Для пользователя текущей версии прекомпилятора Pro*C
Если вы пользовались более ранними изданиями прекомпилятора Pro*C/MS-DOS,то
в следующих разделах вы узнаете о данном издании прекомпилятора и о том,как
можно перейти от более ранней версии Pro*C/MS-DOS к текущей версии 1.2.

                        Усовершенствованные функции
Прекомпилятор Pro*C/MS-DOS версии 1.2 включает в себя следующие
функциональные усовершенствования:
 -  новый синтаксис для вызова прекомпилятора Pro*C
 -  изменения в командах HOLD_CURSOR и RELEARE_CURSOR
 -  исправления в прекомпиляторе
 -  пакет программ для разработки программ защищенного режима работы для от-
    ладки программ на языке С,которые должны пользоваться основной памятью
    "за чертой" стандартногоразмера.

           Преобразование программ,рассчитанных на работу с более
               ранними версиями прекомпилятора Pro*C/MS-DOS
Вы можете выполнять прикладные программы на языке Pro*C/MS-DOS версии 5.1А
под управлением версии 5.1В без изменений,если вы установите версию 5.1В для
реального режима работы.Однако мы рекомендуем вам произвести повторную пре-
компиляцию,перекомпиляцию и перередактирование связей существующих программ,
с тем чтобы вы могли воспользоваться преимуществами более эффективной систе-
мы программирования версии 5.1В,а также облегчить техническую поддержку ва-
ших прикладных программ,рассчитанных на использование прекомпилятора Pro*C.
     Чтобы подготовить программы,написанные на языке С (включая прикладные
программы для версии 5.1А) для использования в защищенном режиме работы,вы
должны связать их с обновленными библиотеками времени выполнения,которые со-
здаются с помощью утилит,включенных в состав этого программного обеспечения,
после чего выполнить служебную программу EXE2PXE.Только те программы,которые
связаны со скорректированными библиотеками,м.б. преобразованы для выполнения
в защищенном режиме.Более подробно об использовании этой утилиты можно узна-
ть в разделе "Преобразование из реального режима в защищенный" главы 4.

+              Глава 2.Установка прекомпилятора Pro*C/MS-DOS
В этой главе описано,каким образом нужно производить установку программного
обеспечения Pro*C/MS-DOS,если вы еще не установили его в вашей вычислитель-
ной системе.В частности,в этой главе рассмотрены следующие вопросы:
 -  структура справочников ORACLE
 -  установка программного обеспечения для выполнения приклад-
    ных программ в реальном или защищенном режиме работы
 -  требования к техническим и программным средствам
 -  процедуры установки
 -  процедуры обновления библиотек компилятора

Вы можете использовать программное обеспечение Pro*C/MS-DOS для создания
прикладных программ,предназначенных для работы в реальном или защищенном
режиме.

                      Структура справочников ORACLE
В процессе выполнения процедуры установки системы управления реляционными
БД ORACLE по умолчанию создается справочник \ORACLE5 в корневом справочнике
системы.Кроме того,в справочнике \ORACLE5 создаются подсправочники,в которые
переписываются файлы,связанные с различными компонентами ORACLE.

        Корневой справочник
             |
             |
           \ORACLE5
             |
  =======================================-------------
  |      |      |      |      |
 \BIN    \PBIN     \DBS    \LOADER   \прочие
      Рис.2-1.Структура справочников системы ORACLE.

Во время выполнения процедуры установки системы ORACLE создаются
следующие подсправочники:
\BIN   Здесь хранятся исполнительные программы и пакетные файлы ORACLE,а та-
       кже инструментальные средства ORACLE.
\PBIN  Здесь хранятся исполнительные программы для работы в защищенном режи-
       ме,в том числе утилита отладчика программ для защищенного режима
       (PDU).Создается при установке программного обеспечения Pro*C/MS-DOS.
\DBS   Здесь хранятся файлы,содержащие БД ORACLE,а также несколько связанных
       с ней файлов данных и файлов параметров разных типов.
\LOADER Здесь хранятся некоторые файлы,используемые загрузчиком SQL*Loader
        (установка программы SQL*Loader производится по желанию).

Помимо упомянутых выше справочников,вы можете создать и другие справочники,в
зависимости от того,какое дополнительное программное обеспечение ORACLE вы
приобрели.Например,при установке программных продуктов системы SQL*Net соз-
дается справочник \NET.Во время установки программного обеспечения Pro*C со-
здается справочник \PRO,содержащий следующие подсправочники для хранения
программ и файлов системы Pro*C:

\PRO\C    Здесь хранятся примерные файлы и некоторые файлы заголовков,испо-
          льзуемые программными интерфейсами ORACLE.
\PRO\LIB   Здесь хранятся библиотеки,используемые программными интерфейсами
          ORACLE.
\PRO\EXIT  Здесь хранятся примерные пользовательские выходы для подсистемы
           бланков запросов SQL*Forms и соответствующие исходные файлы.
\PRO\PROT  Здесь содержатся подсправочники обновлений для библиотек времени
           выполнения.
\PRO\PROT  Здесь содержатся обновления для библиотек времени
\MSCP    выполнения системы программирования Microsoft C.

\PRO\PROT  Здесь содержатся обновления для библиотек времени
\LCP     выполнения системы программирования Lattice C.

    Установка для реального режима,защищенного режима или обоих режимов
При установке инструментальных средств ORACLE версии 5.1В или прекомпилятора
Pro*C версии 1.2 вы можете указать,в каком режиме должны использоваться эти
программы: в защищенном режиме (P),в реальном режиме (R) или в обоих режимах
(B) работы.Эти режиме работы уже рассматривались ранее в главе 1 настоящего
документа.
    Возможно,вам придется установить это программное обеспечение для работы
в реальном режиме,если вы ограничены одним мегабайтом расширенной памяти,ко-
торая используется для работы системы управления БД.
    Если вы устанавливаете программное обеспечение Pro*C реального режима
(R),то необходимые исполнительные файлы (с расширением имени .EXE) будут
скопированы в подсправочник \BIN вашего справочника ORACLE,принимаемого по
умолчанию.Если вы устанавливаете это программное обеспечение для работы в
защищенном режиме (P),то необходимые исполнительные файлы для защищенного
режима (с расширением имени .PXE и .COM) будут скопированы в подсправочник
\PBIN.Если же вы выбрали установку программного обеспечения для обоих режи-
мов работы (B),то все необходимые исполнительные файлы для обоих режимов ра-
боты будут скопированы в соответствующие подсправочники.

                       Установка для обоих режимов
Если вы производите установку для обоих режимов работы,но хотите работать в
защищенном режиме,вам необходимо соответствующим образом настроить маршрут
доступа OC.По умолчанию OC сначала просматривает справочник \BIN,а затем уже
справочник \PBIN.Установите свой маршрут поиска таким образом,чтобы сначала
просматривался справочник \PBIN,а затем уже справочник \BIN - это будет га-
рантией того,что работа будет производиться в защищенном режиме.

                  Параметр REAL_MEMORY в файле CONFIG.ORA
С помощью параметра REAL_MEMORY в файле CONFIG.ORA вы можете определить час-
ть реальной памяти (ниже предела в 640 Кбайт) как защищенную.Более подробно
об использовании параметра REAL_MEMORY можно узнать из Приложения Б "Параме-
тры конфигурации CONFIG и конфигурационный файл CONFIG.ORA" документа "Руко-
водство пользователя системы управления реляционными БД ORACLE/MS-DOS" или
из руководства по установке системы SQL*Net.

              Требования к техническим и программным средствам
Ниже приведены некоторые специфические требования к техническим и программ-
ным средствам вычислительной системы,необходимые для нормальной работы прог-
раммного обеспечения Pro*C/MS-DOS:
 - компьютер,на котором может выполняться OC MS-DOS
 - основная память,необходимая для выполнения ORACLE,программы Pro*C и ваших
   прикладных программ
  ЗАМЕЧАНИЕ: Программа Pro*C занимает приблизительно 150 Кбайт памяти в реа-
             льном или защищенном режиме работы.Оценки памяти для других
             программных продуктов ORACLE можно найти в соответствующих до-
             кументах по ORACLE и SQL*Net.
 - по крайней мере 1,3 Мбайт пространства памяти на жестких дисках,если ус-
   тановка программы производится для реального или расширенного режима (при
   установке для обоих режимов работы требуется по крайней мере 1,4 Мбайт
   памяти).Это требуемое дополнительное пространство памяти,помимо того,ко-
   торое требуется для нормальной работы OC MS-DOS и других программных про-
   дуктов.
 - цветной или черно-белый дисплей
 - 5,25-дюймовый накопитель на гибких дисках с 2-хсторонней высокой плотности
 - 3,5-дюйомвый накопитель на гибких дисках с 2-хсторонней записью обычной
   или высокой плотности
 - ОC MS-DOS версии 3.1 или более поздней
 - система управления реляционными БД ORACLE/MS-DOS версии 5.1В или соответ-
   ствующий программный продукт SQK*Net для вашей конфигурации технических
   средств

Для выполнения прикладных программ системы Pro*C требуется следующее програ-
ммное обеспечение:
 - компилятор Microsoft C (версия 5.1) или Lattice C (версия 3.0 - 3.2)
 - редактор связей Microsoft LINK,IBM Linker или Phoenix PLINK 86 PLUS
 - ассемблер Microsoft Macro Assembler (если предполагается программировать
   пользовательские выходы)

                    Установка и удаление образцов программ
Программное обеспечение Pro*C/MS-DOS распространяется вместе с набором прог-
раммных примеров и файлов редактирования связей.Эти программы и файлы описа-
ны ниже в этом разделе.Для редактирования связей этих программ следует поль-
зоваться соответствующими редакторами связей,приведенными ниже в таблицах.
    Эти программы и файлы можно будет удалить впоследствии с помощью команд
OC MS-DOS DEL или ERASE.Их также можно будет установить в системе еще раз,
скопировав с установочного диска программы Pro*C.Примерные программы включа-
ют в себя следующее:

SAMPLE.PC  Пример программы на языке С.Файл SAMPLE.PC и последовательности
           команд редактирования связей установлены в подсправочнике \PRO\C.
OCISAM.C   Пример программы с использованием программного интерфейса вызовов
           ORACLE (OCI).Файл OCISAM.C и соответствующие последовательности
           команд редактирования связей установлены в подсправочнике \PRO\C.
           В системе Pro*C/MS-DOS предусмотрены последовательности команд
           редактирования только для разработки программ реального режима
           работы.
TESTEXIT.PC Пример программы с использованием пользовательских выходов.Файл
            TESTEXIT.PC и последовательности команд редактора связей для по-
            льзовательских выходов установлены в подсправочнике \PRO\EXIT.

    Последовательности команд редактированния для программы SAMPLE.PC

Компилятор  Режим   Редактор    Редактор        Редактор
            работы  связей       связей         связей
                    Microsoft     IBM           Phoenix
---------------------------------------------------------------
Microsoft  Реальный SAMPLEM.MLN   SAMPLEM.LNK  SAMPLEM.PLN
Microsoft  Защищен .SAMPLEMP.MLN  SAMPLEMP.LNK SAMPLEMP.PLN
Lattice    Реальный SAMPLEL.MLN   SAMPLEL.LNK  SAMPLEL.PLN
Lattice    Защищен. SAMPLELP.MLN  SAMPLELP.LNK SAMPLELP.PLN


     Последовательности команд редактированния для программы OCISAM.PC

Компилятор   Режим    Редактор     Редактор    Редактор
             работы    связей       связей      связей
                     Microsoft       IBM       Phoenix
---------------------------------------------------------------
Microsoft  Реальный OCISAMM.MLN  OCISAMM.LNK  OCISAMM.PLN
Lattice     Защищен.OCISAML.MLN  OCISAML.LNK  OCISAML.PLN

        Последовательности команд (сценарии) рредактирования для
                         программы TESTEXIT.PC

Компилятор   Режим     Редактор      Редактор     Редактор
             работы     связей        связей       связей
                       Microsoft       IBM        Phoenix
-----------------------------------------------------------------
Microsoft   Реальный  USRXITM.MLN   USRXITM.LNK  USRXITM.PLN
Microsoft   Защищен.  USRXITMP.MLN  USRXITMP.LNK USRXITMP.PLN
Lattice     Реальный  USRXITL.MLN   USRXITL.LNK  USRXITM.PLN
Lattice     Защищен.  USRXITLP.MLN  USRXITLP.LNK USRXITLP.PLN

ЗАМЕЧАНИЕ: Возможно,эти последовательности команд редактирования связей при-
           дется подправить,чтобы привести их в соответствие с конфигурацией
           вашей вычислительной системы.

                    Установка прекомпилятора Pro*C/MS-DOS
В приведенной ниже процедуре установки предполагается,что вы ранее установи-
ли ORACLE/MS-DOS или SQL*Net.В состав этих систем входит утилита ORAINST,ко-
торая используется для копирования файлов и инициализации программного обес-
печения ORACLE.Для того чтобы установить программу Pro*C/MS-DOS,вам также
необходимо выполнить утилиту ORAINST.
  ЗАМЕЧАНИЕ: Не нужно запускать программу INSTALL5.EXE,которая имеется на
             дискете Pro*C.Утилита ORAINST сама вызовет эту программу в под-
             ходящий момент во время выполнения процедуры установки.

           В этом разделе подробно описаны шаги процедуры установки.
Если вы хотите разрабатывать прикладные программы для работы в защищенном ре-
жиме,вам потребуется обновить библиотеки компилятора Microsoft C или Lattice
C (по завершении процедуры установки программного обеспечения Pro*c).Это мож-
но сделать с помощью утилит,включенных в состав программы Pro*C.Более подроб-
но об этом можно узнать в разделе "Обновление библиотек компилятора" этой
главы.

                               Подготовка системы
 Шаг 1.             Резервное копирование дискет ORACLE
       Чтобы предохранить ORACLE от возможного непреднамеренного уничтожения,
сделайте резервное копирование всех дискет этого программного обеспечения с
помощью команды OC MS-DOS DISKCOPY.Описание использования команды DISKCOPY
можно найти в справочном руководстве по OC MS-DOS.
      Аккуратно пометьте резервные дискеты,а оригинальные дискеты уберите в
безопасное место.Для выполнения процедуры установки программного обеспечения,
описанной в этом разделе,пользуйтесь только копиями дискет.

Шаг 2.                    Задание текущего дисковода
      Сделайте текущим накопитель на жестких дисках,на котором вы хотите уста-
новить ваш ORACLE,включая подсистему Pro*C.Например,если вы хотите установить
ORACLE на дисководе С,вы можете сделать его текущим с помощью следующей кома-
нды:
     A> C:
     C>
Напомним,что на жестком диске д.б. по крайней мере 1,3 Мбайт свободного прост-
ранства памяти,чтобы вместить все необходимые файлы программы Pro*C (если ус-
тановка производится для реального и защищенного режимов работы,то необходимо
иметь по крайней мере 1,4 Мбайт свободного пространства памяти).

Шаг 3.                       Запуск утилиты ORAINST
Выполните команду ORAINST с вашего текущего диска:
     С> ORAINST

Шаг 4.           Прочтите замечание о сохранении авторских прав
Прочтите отображающееся на экране замечание о сохранении авторских прав,затем
нажмите клавишу С.

Шаг 5.                  Войдите в ваш справочник ORACLE
На экран выводится подсказка,чтобы вы вошли в справочник,в котором вы хотите
установить ORACLE.Если вы хотите использовать имя,принимаемое по умолчанию,
\ORACLE5,нажмите сразу клавишу ввода [Enter],в противном случае введите имя
справочника,в котором вы хотите установить ORACLE.Не забудьте указать полный
маршрут доступа и дисковод.

Шаг 6.   Установите дискету с программным обесппечением Pro*C в дисководе
       Процедура установки,используемая в ORACLE,одинакова для всех прикладных
программ.Поэтому,когда на экране появляется подсказка о том,что нужно устано-
вить дискету,вставьте дискету с программой Pro*C в дисковод и нажмите клавишу
С.После того как ORACLE распознает,что вы установили дискету с программным
обеспечением Pro*C,она создает соответствующие справочники и устанавливает в
них необходимые программы и файлы примеров.

Шаг 7.       Выбор режима работы программ: реальный или зищащенный
      Процедура установки требует от вас указания режима,в котором будут выпо-
лняться программы: реального (R),защищенного (P) или и того и другого (B).Наж-
мите соответствующую буквенную клавишу.Вопросы,связанные с выполнением прог-
рамм в ORACLE в реальном и в защищенном режимах обсуждаются в разделе "Прикла-
дные программы реального и защищенного режима работы" главы 1.

Шаг 8.                         Выбор компилятора
       Процедура установки просит вас указать,с каким компилятором вы хотите
работать.Нажмите клавишу М,если вы хотите работать с компилятором Microsoft C,
L,если вы хотите работать с компилятором Lattice C,или В,если вы хотите рабо-
тать с обоими компиляторами.

Шаг 9.           Выбор средств поддержки пользовательских выходов
       На экран выводится список средств поддержки пользовательских выходов.
Однако,чтобы можно было пользоваться этими средствами,вы должны установить в
системе программное обеспечение SQL*Forms,с помощью которого задаются пользо-
вательские выходы.Если вы хотите установить средства поддержки пользовательс-
ких выходов программного обеспечения Pro*C,введите Y.Инструкции по установке
программного обеспечения SQL*Forms можно найти в документе "Инструментальные
средства ORACLE/MS-DOS.Введение".

Шаг 10. Установка подсистемы разработки программ для защищенного режима работы
       Когда на экране появляется такая подсказка,введите Y,если вы хотите ус-
тановить программное обеспечение PDK,которое включает в себя пакет изменений
для обновления библиотек компиляторов и утилиты отладки.

Шаг 11.                Завершение процесса установки
       После того как скопированы все необходимые файлы,вы автоматически возв-
ращаетесь к началу программы установки.В этом месте установочная программа
просит вас:
  "insert into drive A: Diskette 1 of the ORACLE product you want installed."
  /установите в дисководе А: дискету N 1 программного продукта
  системы ORACLE,который вы хотите установить/

Чтобы установить какой-либо другой пакет прикладных программ,выполните проце-
дуру установки,описанную во вводном руководстве по этому программному продукту
или в руководстве по установке.Чтобы выйти из программы установки,введите Q.

                      Обновление библиотек компилятора
Если вы предполагаете разрабатывать прикладные программы для работы в защищен-
ном режиме,то после установки программного обеспечения Pro*C/MS-DOS вам необ-
ходимо обновить ваши библиотеки компиляторов Microsoft C или Lattice C.Пакет
программ Pro*C/MS-DOS включает в свой состав файлы изменений для библиотек
программ времени выполнения,а также утилиты,вносящие эти изменения в библиоте-
ки.
ЗАМЕЧАНИЕ: Для того чтобы иметь возможность разрабатывать прикладные программы
           для работы в защищенном режиме или преобразовать прикладные програ-
           ммы реального режима в программы защищенного режима,необходимо,что-
           бы в вашей вычислительной системе была установлена опция Altmath
           компилятора Microsoft C,помимо опции Emulator.

                 Обновление библиотек компилятора Microosoft C
Шаг 1.           Локализация библиотек компилятора Microsoft C
       Вам необходимо иметь библиотеки для большой модели памяти: LLIBC.LIB,
LIBH.LIB и LIBFA.LIB.Обычно библиотеки программ компилятора Microsoft C храня-
тся в справочнике C:\MSC\LIB.

Шаг 2.            Обращение к файлам усовершенствований библиотек
       Перейдите к справочнику,в котором хранятся файлы усовершенствований би-
блиотек.В случае компилятора Microsoft C эти файлы хранятся в справочнике C:
\ORACLE5\PRO\PROT\MSCP.

Шаг 3.                Установка усовершенствований библиотек
       Чтобы установить в системе усовершенствования библиотек,необходимо вы-
полнить утилиту INSTMSC,для чего нужно ввести следующую команду:

                              С> INSTMSC C:\MSC\LIB

Утилита установки библиотек INSTMSC создает библиотеку по имени LLIBCAP.LIB,
которая представляет собой версию библиотеки программ времени выполнения ком-
пилятора Microsoft C,благодаря которой вы можете работать с программами защи-
щенного режима.По завершении утилиты INSTMSC эта библиотека будет размещаться
в подсправочнике \MSCP.Оригинальные библиотеки компилятора Microsoft C оста-
нутся нетронутыми.

                   Обновление библиотек компилятора Lattice C
Шаг 1.             Локализация библиотек компилятора Lattice C
      Библиотека программ компилятора Lattice C имеет имя LC.LIB.Вам нужно по-
льзоваться библиотекой для большой модели памяти,которая обычно размещается в
подсправочнике L справочника Lattice.Например,библиотека LC.LIB может распола-
гаться в справочнике C:\LC\L.

Шаг 2.           Обращение к файлам усовершенствований библиотек
      Перейдите к справочнику,в котором содержатся файлы усовершенствований
библиотек компилятора Lattice C.По умолчанию этот справочник имеет имя C:\
ORACLE5\PRO\PROT\LCP.

Шаг 3.               Установка усовершенствований библиотек
      Чтобы установить усовершенствования библиотек,необходимо выполнить ути-
литу INSTLC,для чего нужно ввести следующую команду:

     C> INSTLC C:\LC\L\LC.LIB

где C:\LC\L\LC.LIB - имя и место расположения библиотеки компилятора Lattice
C для большой модели памяти.
      Утилита установки INSTLC создает библиотеку по имени LCP.LIB в подспра-
вочнике \LCP,об`единив вашу библиотеку LC.LIB со специальными об`ектными фай-
лами,необходимыми для реализации функционирования программ в защищенном режи-
ме.Оригинальная библиотека компилятора остается нетронутой.

                             Запуск прекомпилятора
Прекомпиляцию следует запускать на уровне команд OC перед собственно компиля-
цией и редактированием связей вашей программы.Более подробное описание вызова
прекомпилятора или использования интерфейса вызовов OCI можно найти в главе 3.
Более подробное описание метода встраивания операторов языка SQL в прикладную
программу на языке С или использования соответствующего интерфейса вызовов
OCI можно найти в документе "Руководство пользователя прекомпилятором Pro*C".

+             Глава 3.Использование прекомпилятора Pro*C/MS-DOS
В этой главе описывается использование прекомпилятора Pro*C/MS-DOS версии 1.
2.В частности,здесь рассмотрены следующие вопросы:
 -  как пользоваться прекомпилятором
 -  как создавать пользовательские выходы
 -  как пользоваться интерфейсом вызова ORACLE (OCI)
 -  программные вызовы интерфейса OCI

В приведенном ниже описании не рассмотрены основные компоненты программных ин-
терфейсов для языка С.Эти сведения можно найти в документе "Руководство поль-
зователя прекомпилятором Pro*C/MS-DOS".Перечень усовершенствований к версии 1.
2 можно найти в Приложении А настоящего руководства.

                        Использование прекомпилятора
Прекомпилятор Pro*C/MS-DOS содержится в файле по имени PROC.EXE.Прекомпилятор,
предназначенный для использования в защищенном режиме работы,содержится в та-
ком же файле,но с расширением имени .PXE.Программное обеспечение Pro*C/MS-DOS
обеспечивает поддержку компилятора Microsoft C версии 5.1,а также компилято-
ра Lattice C версии 3.0 - 3.2.
       В составе программного обеспечения Pro*C/MS-DOS поставляются библиотеки
редактора связей: SQLMSC.LIB для языка Microsoft C,и SQLLC.LIB для языка Lat-
tice C.
      Для построения и выполнения программы SAMPLE (предназначенной для работы
в реальном режиме) с использованием компилятора с языка С и редактора связей
фирмы Microsoft следует выполнить приведенный ниже пример.Пример построения
программы SAMPLE для работы в защищенном режиме можно найти в главе 4.
ЗАМЕЧАНИЕ: Прежде чем строить программу SAMPLE,вам или вашему администратору
           БД следует построить демонстрационную таблицу ORACLE,поставляемую в
           составе программного обеспечения SQL*Plus.Эти таблицы можно постро-
           ить,выполнив программу-утилиту DEMOBLD.Более подробно о построении
           таких таблиц можно узнать из документа "Руководство пользователя по
           инструментальным средствам ORACLE/MS-DOS".

В приведенном ниже примере предполагается,что файл SQLCA.H располагается в сп-
равочнике C:\ORACLE5\PRO\C,а также что библиотеки компилятора Microsoft C и
редактора связей фирмы Microsoft настроены на принимаемую по умолчанию конфи-
гурацию системы,как это описано в документации на компилятор.Команда прекомпи-
ляции и редактирования связей должны вводиться из справочника C:\ORACLE5\PRO\
С; все приведенные ниже команды м.б. введены из этого справочника.

   C> PROC iname=sample.pc include=C:\ORACLE5\PRO\C\
   C> CL -c -al sample.c
   C> LINK @samplem.mln
   C> SAMPLE

Средства поддержки компилятора Microsoft C требуют использования большой моде-
ли памяти.В поставляемом программном обеспечении отсутствуют средства поддежки
для малой и средней моделей памяти.
      Чтобы построить и выполнить программу с использованием компилятора Lat-
tice C,нужно выполнить ту же последовательность команд,что и выше,но подстави-
ть соответствующие переключатели компилятора Lattice C и команды вашего редак-
тора связей.
ЗАМЕЧАНИЕ: Программное обеспечение Pro*C/MS-DOS поддерживает работу 3 редакто-
           ров связей.Список примеров последовательностей команд редактирова-
           ния связей можно найти в главе 2 "Установка и удаление примерных
           программ".

            Пользовательские выходы для прекомпилятора Pro*C/MS-DOS
Пользовательский выход представляет собой подпрограмму или некоторую совокуп-
ность подпрограмм,написанных на процедурном языке программирования,таком как
С,которая вызывается подсистемой SQL*Forms как шаг задания (trigger).Хотя по-
льзовательские выходы обеспечиваются самой подсистемой SQL*Forms,они кодируют-
ся с помощью программных интерфейсов ORACLE.
       Прежде чем выполнять бланк запроса,в котором содержится обращение к по-
льзовательскому выходу,этот пользовательский выход д.б. связан с новым програ-
ммным продуктом - интерактивным прикладным процессором (IAP - Interactive Ap-
plication Processor).Процессор IAP является компонентом подсистемы SQL*Forms,
предназначенным для выполнения бланков запросов.По умолчанию этот процессор
имеет имя RUNFORM.Созданный вами процессор IAP распознает программу вашего по-
льзовательского выхода и соответствующий шаг задания в бланке запроса.
      Если вы хотите работать с пользовательскими выходами,обратитесь к доку-
менту "Справочник разработчика бланков запросов системы SQL*Forms",где содер-
жатся сведения о пользовательских выходах,интерактивном прикладном процессоре
IAP и шагах заданий.
      Для создания нового процессора IAP в пакет программ Pro*C включена спе-
циальная утилита по имени GENXTB.Эта утилита сначала генерирует таблицу поль-
зовательских выходов (IAPXTB),а затем создает модуль IAPXTB - основной строи-
тельный блок процессора IAP.Утилита GENXTB содержится в справочнике \ORACLE5
\BIN вместе с другими исполнительными файлами.Все остальные файлы поддержки
пользовательских выходов (а именно,бланк GENTXB,бланк TESTEXIT и исходный те-
кст программы TESTEXIT.PC) содержатся в справочнике по имени \ORACLE5\PRO\
EXIT.
ЗАМЕЧАНИЕ: Прежде чем генерировать пользовательские выходы,необходимо настро-
           ить и запустить ORACLE.

             Включение пользовательских выходов в бланки запросов
Чтобы создать пользовательский выход и включить его в прикладную программу
подсистемы SQL*Forms,необходимо выполнить следующие действия:

Шаг 1.          Написать и компилировать пользовательский выход
      Напишите ваш пользовательский выход на языке С и компилируйте его.Не за-
будьте выполнить прекомпиляцию вашей программы,если вы хотите встроить опера-
торы языка SQL непосредственно в программу на языке С.Исходные файлы для пре-
компиляции должны иметь расширения имени.PC.Исходный файл примера пользовате-
льского выхода TESTEXIT.PC включен в состав программного обеспечения Pro*C/MS
-DOS.Чтобы выполнить компиляцию файла TESTEXIT.PC,следуйте инструкциям по пре-
компилированию и компилирования примерной программы SAMPLE.PC,содержащимся в
предыдущем разделе "Использование прекомпилятора".
ЗАМЕЧАНИЕ: Команды прекомпиляции и редактирования связей должны вводиться из
           справочника C:\ORACLE5\PRO\EXIT; все команды для построения пользо-
           вательского выхода должны вводиться из этого справочника.

Шаг 2.                Создайте таблицу для бланка GENXTB
      Выполните утилиту GENXTB,чтобы создать таблицу для использования бланка
запросов GENXTB.
                     C> GENXTB идентификатор-пользователя/пароль

Шаг 3.            Введите информацию о пользовательском выходе
      Для выполнения бланка запросов GENXTB пользуйтесь принимаемым по умолча-
нию процессором IAP - RUNFORM.Затем введите в БД сведения о вашем пользовате-
льском выходе (например,имя выхода).

             C> RUNFORM genxtb идентификатор-пользователя/пароль

Шаг 4.                       Создайте модуль IAPXTB
      После того как вы ввели информацию в таблицу,описывающую ваш пользовате-
льский выход,вам нужно генерировать модуль,содержащий эту информацию.Этот мо-
дуль нужно будет впоследствии связать с об`ектным файлом вашего пользовательс-
кого выхода и другими библиотеками и файлами,чтобы создать новый процессор IAP.
      Чтобы создать этот модуль,выполните снова утилиту HENXTB и укажите в ней
ассемблерное имя.В результате выполнения утилиты генерируется файл,который мо-
жно ассемблировать с помошью ассемблера Microsoft Macro Assembler.
      Если вы пользуетесь компилятором Microsoft C,то при запуске утилиты
GENXTB нужно задать опцию -m.Если же вы пользуетесь компилятором Lattice C,то
эту опцию задавать не нужно.

                             C> MASM ассемблерный-файл

Шаг 5.                 Создайте новую версию процессора IAP
      Создайте новую версию процессора IAP,для чего выполните соответствующий
сценарий редактирования связей,входящий в состав пакета программ Pro*C/MS-DOS.
Эти сценарии редактируют связи модуля IAPXTB,необходимых файлов и библиотек,а
также модуль пользовательского выхода,в результате чего создается новая версия
процессора IAP.Эти сценарии различаются,в зависимости от используемого компи-
лятора и редактора связей,а также в зависимости от того,будет ли ваша програм-
ма выполняться в реальном или в защищенном режиме.
      Например,если вы генерируете примерный пользовательский выход для испо-
льзования в защищенном режиме работы,компилируете его с помощью компилятора
Microsoft C и редактируете связи с помощью редактора фирмы Microsoft,то вам
нужно выполнить сценарий редактирования связей USRXITMP.MLN:

   C> LINK @usrxitmp.mln

Выполнение этой команды приводит к созданию файла USR$EXITP.EXE.Этот файл нео-
бходимо преобразовать в исполнительный файл для защищенного режима работы.Эти
действия описаны в шаге 6.
 ЗАМЕЧАНИЕ: В  примерных сценариях редактирования связей используются обновле-
           нные библиотеки времени выполнения и другие файлы.Чтобы была гаран-
           тия того,что ваш новый процессор IAP включает эти файлы,пользуйтесь
           именно этими сценариями.Чтобы изменить имя исполнительного файла на
           имя вашей программы,отредактируйте соответствующий примерный сцена-
           рий.Необходимо также заменить имя TESTEXIT.OBJ на имя об`ектного
           файла вашего пользовательского выхода.Список сценариев редактирова-
           ния связей можно найти в главе 2 "Установка и удаление примеров
           программ".

Шаг 6.           Преобразование в программу защищенногоо режима
      Исполнительный файл типа .EXE нужно преобразовать в исполнительный файл
типа .PXE.Для этой цели используется утилита EXE2PXE.

           C> EXE2PXE имя-файла

Чтобы OC MS-DOS могла распознать ваш исполнительный файл типа .PXE,вам также
необходимо на основе этого файла подготовить специальный командный файл типа
.COM.Для этой цели в пакет программ Pro*C включена утилита MAKECOM.Эта утилита
содержится в справочнике C:\ORACLE5\PRO\PROT.

                   C> MAKECOM имя-файла

Шаг 7                      Определите шаг задания
     В бланке запроса,включающем этот пользовательский выход,необходимо опре-
делить шаг задания,в котором этот выход должен вызываться.Определение для при-
мерного пользовательсого выхода можно найти в бланке TESTEXIT.Шаг задания для
этого пользовательского выхода можно найти в поле ENAME блока EMP.

Шаг 8                    Используйте новый процессор IAP
      Наконец,проинструктируйте операторов о том,что они должны использовать
созданную вами версию процессора IAP,если они будут выполнить этот бланк зап-
роса с вашим шагом задания.(Если новая версия процессора IAP замещает стандар-
тную,по имени RUNFORM,то этот шаг не нужен.)

                     Использование интерфейса вызовов ORACLE
Интерфейс OCI обеспечивает поддержку компилятора Microsoft C версии 1.2 и ком-
пиляторов Lattice C версий 3.0 - 3.2.Так же как и прекомпилятор,этот интерфейс
обеспечивает поддержку редакторов связей фирм Microsoft,IBM и Phoenix.
      Библиотека редактора связей,поставляемая для компилятора Microsoft C,со-
держится в файле SQLMSC.LIB.Библиотека редактора связей,поставляемая для ком-
пилятора Lattice C,содержится в файле SQLLC.LIB.
      Чтобы построить и выполнить примерную программу,использующую этот интер-
фейс вызовов,рассчитанную на компилятор Microsoft C,введите приведенные ниже
команды.Предполагается,что компилятор Microsoft C,библиотеки и редактор связей
настроены в соответствии с принимаемой по умолчанию конфигурацией системы,как
описано в документации по компилятору.

   C> CL -c -al ocisam.c
   C> LINK @ocisamm.mln
   C> OCISAM

Чтобы построить и выполнить примерную программу,использующую интерфейс OCI,
рассчитанную на компилятор Lattice C,выполните те же команды,что и в вышепри-
веденном примере,включив в них соответствующие переключатели для компилятора
Lattice C и сценарии редактирования связей для вашего редактора связей.
      Средства поддержки компилятора Microsoft C требуют использования большой
модели памяти.Малая и средняя модели памяти интерфейсом вызовов OCI не поддер-
живаются.

                      Программные вызовы интерфейса OCI
Определение области данных курсора для программного интерфейса OCI в OC MS-DOS
      В приведенных ниже таблицах дано определение области данных курсора для
программного интерфейса OCI для OC MS-DOS.Более подробное описание этой облас-
ти данных,используемой для идентификации и контроля операторов языка SQL,со-
держится в главе 8 документа "Руководство пользователя прекомпилятора Pro*C".

                                   Общая часть
Байты   Использование
-----------------------
0-1    Код возврата
2-3    Тип функции
4-7    Счетчик обработанных рядов
8-9    Смещение ошибки Parse
10     Код функции
11     Символ-заполнитель
12-13  Код ошибки V4
14     Флажки-1
15     Флажки-2

                           Часть,зависящая от OC
Байты   Использование
-----------------------
16-17   Номер курсора
18-31   Внутренний идентификатор ряда
32      Ошибка OSD
33      Контрольный байт
34-64   Параметры системы Oracle

ЗАМЕЧАНИЕ: Эта область определения в примерной программе программного интерфе-
           йса OCISAM.C.

Определение области данных регистрации для программного интерфейса в OC MS-DOS
      В приведенных ниже таблицах дано определение области данных регистрации
программного интерфейса OCI в OC MS-DOS.Более подробные сведения об этой обла-
сти,которая обеспечивает связь с ORACLE,содержатся в главе 8 документа "Руко-
водство пользователя прекомпилятором Pro*C/MS- DOS".

                                  Общая часть
Байты   Использование
-----------------------
0-1     Код возврата
2-11    Символ-заполнитель
12-13   Код ошибки V4
14-27   Символ-заполнитель

                             Часть,зависящая от OC
Байты   Использование
-----------------------
28-30   Символ-заполнитель
31-32   Ошибка OSD
33      Контрольный байт
34-64   Параметры системы ORACLE

+           Глава 4.Подсистема разработки программ защищенного режима
В этой главе описана подсистема разработки программ защищенного режима работы
PDK (Protected-mode Development Kit),включенная в состав программного обеспе-
чения Pro*C/MS-DOS.В этой главе рассмотрены следующие вопросы:
 -  состав подсистемы PDK
 -  подготовка исполнительных файлов дляп отладчика
 -  отладка исполнительных файлов на уровне исходного текста
 -  выполнение утилиты отладки программ защищенного режима PDU
    (Protected-mode Debugging Utility)
 -  полное описание команд утилиты PDU
 -  использование образцов отладочных программ
 -  преобразование существующих программ реального режима в программы защищен-
    ного режима

         Введение в подсистему разработки программ защищенного режима
Подсистема PDK позволяет осуществлять контроль возможности использования испо-
лнительных программ в защищенном режиме работы.
       Подсистема PDK включает в свой состав четыре компонента:
 -  утилиту отладки программ защищенного режима PDU
 -  образцы отладочных программ
 -  пакеты изменений для библиотек программ времени выполнения компиляторов
    Microsoft C и Lattice C
 -  утилиту для подготовки программ к выполнению в защищенном режиме работы

Утилита PDU представляет собой символический отладчик программ защищенного ре-
жима,позволяющий легко находить и исправлять ошибки программирования в прикла-
дных программах на языке Pro*C.Эта утилита имеет командно-ориентированный по-
льзовательский интерфейс,аналогичный тому,который используется отладчиком Sym-
deb и другими символическими отладчиками.
      При использовании утилиты PDU вы также можете отлаживать программы на
уровне машинных команд,если вы этого захотите.Вы можете просматривать и испра-
влять на экране исходный или дизассемблированный машинный код программы,или
тот и другой одновременно.Этот отладчик не может работать в реальном режиме
памяти и не м.б. использован для отладки программ реального режима.Однако вы
можете преобразовать ваши программы реального режима в соответствующие програ-
ммы защищенного режима с помощью утилиты PDU.
      Чтобы быстрее разобраться в принципах работы отладчика PDU,можно произ-
вести пробную отладку с помощью имеющихся образцов программ.Образцовую програ-
мму можно использовать для обучения прекомпилированию,компилированию,редакти-
рованию связей и отладке программ,предназначенных для работы в защищенном ре-
жиме,а также составлению командных файлов с помощью утилиты MAKECOM.

                       На кого рассчитана эта подсистема?
Подсистема PDK предназначена для использования теми,кто разрабатывает програм-
мы на языке С и хорошо представляет - что представляет из себя программная
среда защищенного режима OC MS-DOS.Эта подсистема поможет вам в отладке прог-
рамм для ORACLE,предназначенных для работы в защищенном режиме.

                    Преимущества защищенного режима работы
Архитектура микропроцессоров 80286/80386 позволяет выполнять программы в защи-
щенном режиме.Основными преимуществами выполнения программ в защищенном режиме
являются использование расширенной основной памяти путем устранения ограниче-
ния OC MS-DOS на использование лишь 640 Кбайт памяти,а также поддержка прог-
рамной среды,обеспечивающей большую защищенность против программных ошибок,в
частности,более совершенное управление основной памятью и кольцевая защита.

                     Связь с управляющей программой SQLPME
Утилита PDU использует в своей работе возможности,предоставляемые управляющей
программой языка SQL для защищенного режима SQLPME (SQL Protected-mode Execu-
tive).Эта управляющая программа представляет собой утилиту ORACLE,благодаря
использованию которой программы могут выполняться в защищенном режиме OC MS-
DOS.Прежде чем использовать отладчик PDU,следует загрузить программу SQLPME.
Установка программы SQLPME осуществляется в процессе установки системы управ-
ления реляционными БД ORACLE или драйверов SQL*Net.
      Программу SQLPME достаточно вызывать один раз за сеанс работы.Для вызова
этой утилиты в командной строке нужно ввести следующее:

            C> SQLPME

ЗАМЕЧАНИЕ.Если вы загружаете программное обеспечение Pro*C для обоих режимов
         работы и хотите разрабатывать программы в защищенном режиме,вы должны
         изменить маршрут доступа к файлам OC,с тем чтобы задействовать эту
         опцию.Более подробно об этом можно найти в разделе "Если вы произво-
         дите установку для обоих режимов работы" этого документа.

Перед тем как использовать отладчик PDU нет необходимости загружать ORACLE или
какую-либо другую программу защищенного режима.Чтобы удалить из основной памя-
ти программу SQLPME (а также любую другую программу ORACLE,выполняющуюся в
данный момент),введите следующее:

          C> REMPME

                   Подготовка к использованию отладчика PDU
PDU представляет собой отладчик на уровне исходного текста.Это означает,что во
время отладки программы можно использовать информацию о номерах строк исходно-
го текста,встраиваемую компилятором в об`ектные файлы,с тем чтобы можно было
просматривать исходный текст программы во время ее выполнения.
      Информация о номерах строк исходного текста используется отладчиком PDU
следующим образом:
 -  Номера строк можно использовать так же,как вы использовали бы символичес-
    кие имена для ссылки на соответствующие адреса памяти.
 -  Вы можете просматривать исходные строки вперемежку с генерируемым ими при
    дизассемблировании об`ектным кодом.
 -  Вы можете выполнять по одной исходной строке за раз (так называемый "поша-
    говый режим на исходном уровне"),что позволяет вам полностью отрешиться от
    генерируемого по вашей программе машинного кода и сконцентрировать внима-
    ние на оригинальном тексте на языке С.

                             Оперативная помощь
Чтобы еще больше облегчить отладку программ,утилита PDU включает в себя опера-
тивную документацию.Чтобы вызвать экран помощи во время работы отладчика,нужно
ввести следующее:
                      :H
             или
                      :?

                 Подготовка к отладке на уровне исходного текста
Чтобы иметь возможность отлаживать программу на уровне исходного текста,эту
программу необходимо компилировать с использованием опции встраивания информа-
ции о номерах строк в об`ектный файл (типа .OBJ).При использовании компилятора
Microsoft C нужно задать переключатели /Zi /Od.При использовании компилятора
Lattice C нужно задать переключатель -d.Более подробно об этом можно узнать из
документации по компилятору Microsoft C или Lattice C.
      При редактировании связей программы неободимо указать редактору связей,
что он должен генерировать файл плана программы,в который будут включены гло-
бальные символы и номера строк операторов.Этот план программы позволяет отлад-
чику PDU определить соответствие между строками исходного текста и генерируе-
мыми ими машинными инструкциями.Когда вы загружаете программу и ее символичес-
кие имена,в память считываются также номера строк операторов.При использовании
редактора связей фирмы Microsoft это можно сделать с помощью переключателей
/MAP и /LINE.Файл плана программы должен храниться в формате редактора связей
Microsoft LINK (файл типа .MAP).Если вы пользуетесь другим редактором связей,
то вам необходимо преобразовать ваш файл плана программы в соответствующий фо-
рмат.Редактор связей фирмы IBM совместим с редактором LINK фирмы Microsoft,а
для редактора связей фирмы Phoenix можно использовать утилиту STRIPPE,чтобы
создать файл,совместимый с форматом фирмы Microsoft (файл типа .MP1).

                     Отладка на уровне исходного текста
Программу можно отлаживать полностью на уровне исходного текста.Благодаря это-
му мощному средству отладки у вас отпадает необходимость расшифровывать машин-
ный код,генерируемый компилятором для вашей программы,так что вы можете полно-
стью концентрировать внимание на ходе выполнения программы на уровне исходного
текста.
     Отладчик PDU отображает на экране исходный текст программы каждый раз,ко-
гда вы разассемблируете инструкции,содержащие ссылки на номера строк исходного
текста.
     Каждый раз,когда отладчик PDU приступает к очередному номеру строки,он
выводит на экран эту строку из вашего исходного файла вместе со следующими за
ней строками,которые не генерируют об`ектного кода (например,комментарии,дек-
ларации арифметических переменных и макроопределения не генерируют об`ектного
кода).
     Если во время отладки вы разассемблируете код,содержащий номера исходных
строк,но отладчик PDU не может найти соответствующего исходного файла,то отла-
дчик запрашивает имя исходного файла.Если вы не хотите просматривать строки
исходного текста,нажмите в ответ клавишу ввода,в противном случае введите имя
файла,указав при необходимости маршрут доступа и расширение имени файла.
ЗАМЕЧАНИЕ.Обычно имя модуля совпадает с именем исходного файла (без учета име-
         ни дисковода,маршрута доступа или расширения имени).Так,например,мо-
       дуль SAMPLE,скорее всего,был получен на основе файла по имени SAMPLE.C.

Прежде чем обращаться к вам за помощью,отладчик всегда просматривает исходные
файлы во всех справочниках,в которых он ранее находил исходные файлы,и пытает-
ся проверить файлы со всеми расширениями имени,которые он перед тем встречал в
других исходных файлах.
      Сначала отладчик PDU проверяет файлы с расширением имени .C и .ASM в те-
кущем справочнике и справочниках,из которых вы производили загрузку каких-либо
программ или файлов символических имен.

                   Запрещение отображения об`ектного кода
С помощью команды Mode Source вы можете сообщить отладчику PDU,что когда вы
разассемблируете инструкции,он должен отображать на экране только строки исхо-
дного текста.Этот режим особенно удобен при пошаговом выполнении программы на
уровне исходного текста,поскольку позволяет вам следить за выполнением прог-
раммы по одной строке за раз.При пошаговом выполнении программы на уровне ис-
ходного текста обычно не возникает желания наблюдать об`ектный код,генерируе-
мый по исходному тексту.Итак,если вы хотите просматривать на экране лишь стро-
ки исходного текста,пользуйтесь командой Mode Source.

                   Запрещение отображения исходного кода
С помощью команды Close Module вы можете запретить отображение на экране исхо-
дных строк.Эта команда сообщает отладчику,что он не должен выводить на экран
исходный код данного модуля.Впоследствии можно снова разрешить вывод на экран
исходного текста с помощью команды Assign module.Более подробно о включении и
выключении отображения исходного текста программы можно узнать из описания со-
ответствующих команд в разделе "Команды отладчика PDU" ниже в этой главе.К та-
ким командам относятся следующие:
 -  Assign Module
 -  Close Module
 -  Delete Symbols
 -  Load
 -  Mode
 -  Source Step

                               Запуск отладчика PDU
Чтобы начать отладку какой-либо программы,нужно вызвать утрилиту PDU и указать
имя отлаживаемого файла в качестве аргумента.Например,чтобы отладить программу
SAMPLE.PXE,нужно ввести следующую команду:

   C> PDU sample [аргумент-1 аргумент-2 ...]

Отладчик попытается загрузить программу SAMPLE.PXE из текущего справочника,по-
сле чего считает символические имена из файла SAMPLE.MAP.Если какой-либо из
этих файлов отсутствует,отладчик выводит предупреждающее сообщение."Агрумент-
1" и "аргумент-2" - факультативные аргументы командной строки,которые м.б. пе-
реданы отлаживаемой программе.Когда отлаживаемая программа начинает выполнять-
ся,ей передаются эти параметры,так же как это делалось бы при выполнении прог-
раммы в отсутствие отладчика.
      Подсказывающим символом отладчика PDU является двоеточие (:).В строке
подсказки вы можете вводить команды отладчика.Команда отладчика PDU должна
вводиться непосредственно после символа подсказки (то есть без пробелов между
двоеточием и командой).

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

C> PDU [опция-1 опция-2 ...] программа [аргумент-1 аргумент-2...]

                      Допустимые опции приведены ниже:
-s# Задает размер таблицы символов,равный #,где # - целое.Это максимальное чи-
    сло байтов,которое м.б. занято всеми символами программы.По умолчанию при-
    нимается значение 65520,которое одновременно и максимально допустимое.
-c# Задает максимальное количество символов программы,равным #, где # - целое.
    По умолчанию принимается значение 8180,которое одновременно и максимально
    допустимое.
-l# Задает размер таблицы номеров строк,равный # байтов.В файле плана програмы
    на каждый номер строки требуется приблизительно 6 байтов.По умолчанию при-
    нимается значение 65520,которое одновременно является и максимально допус-
    тимым.

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

                           Работа с отладчиком PDU
Отладчик PDU предоставляет в ваше распоряжение команды,позволяющие производить
отладку программ.Эти команды включают инструкции,позволяющие:
 -  отображать и задавать значения в памяти защищенного режима
 -  разассемблировать инструкции
 -  вычислять выражения
 -  устанавивать и удалять точки останова
 -  трассировать инструкции
 -  выполнять программный код

При вводе большинства команд отладчика достаточно вводить лишь одну или 2 бук-
вы,однако вы можете вводить после первой буквы команды столько следующих букв,
сколько пожелаете.Часть имени команды,введенная после необходимых для распоз-
навания букв,игнорируется вплоть до первого пробела,так что команды "GO" и
"GOXXX" эквивалентны.
ЗАМЕЧАНИЕ.Более конкретно о необходимых для распознавания буквах имени команды
         можно узнать из описания команд.

Аргументы отладчика PDU должны разделяться одиночным пробелом; например,коман-
да Mode Source может быть введена в следующем виде:
                                                        :M S

ЗАМЕЧАНИЕ.В описании команд необходимая часть ввода имени обозначена буквами
          верхнего регистра.Вы же можете вводить команды как на верхнем,так и
          на нижнем регистре.

                       Распознавание чисел и символов
Числа можно вводить в двоичном,8-ном,10-ном или 16-ном формате.При запуске от-
ладчика предполагается,что числа будут вводиться в шестнадцатеричном формате,
однако вы можете изменить это принимаемое по умолчанию основание системы счис-
ления с помощью команды Base.
     Чтобы ввести число с основанием,отличным от принимаемого по умолчанию,по-
сле собственно числа необходимо указать суффикс основания.Такими суффиксами
являются следующие:
 t  Десятеричное (основание десять)
 y  Двоичное
 h  Шестнадцатеричное
 o или q  Восьмеричное
ЗАМЕЧАНИЕ.Суффикс основания системы счисления можно вводить на верхнем или на
          нижнем регистре.

В любом месте,где может использоваться адрес памяти,можно использовать также
символическое имя.Ввод символа осуществляется простым указанием имени.Напри-
мер,чтобы разассемблировать код,начиная с символического имени printf,достато-
чно ввести следующее:
                        :U PRINTF

Может оказаться,что в качестве символического имени используется 16-ное число.
Например,допустим,что в вашей программе используется символическое имя DC10,
которое может вызывать путаницу,если по умолчанию используется 16-ное основа-
ние системы счисления.В подобных случаях приоритет отдается символическому
имени.Чтобы определенно указать отладчику,что данный символ представляет собой
16-ное число,следует перед ним указать цифру 0,в данном случае 0DC10.Благодаря
этому ссылка становится однозначной.
     Кроме того,везде,где это возможно,вы можете использовать регистры.Напри-
мер,вы можете отобразить строку по адресу DS:SI+20 следующим образом:

   :DB ds:si+20

Наконец,вы можете использовать номера строк программы в любом месте,где может
встретиться символическое имя.Например:
                                            :U sample#50

В этом примере разассемблирование начинается с 50-й строки модуля по имени
SAMPLE.

                         Распознавание знаков операций
Отладчик PDU распознает следующие операции:

Оператор   Значение
----------------------------------------------------------------

+     Сложение
-     Унарное отрицание,бинарное вычитание
*     Умножение
/     Целочисленное деление
%     Деление по модулю: a % b представляет собой остаток от операции a/b
~     Побитовое унарное отрицание
&     Побитовое логическое умножение (AND)
|     Побитовое логическое сложение (OR)
^     Побитовая операция исключающего логического сложения
(XOR)
>     Двоичный сдвиг вправо: a>b представляет собой a,деленное на 2 b раз
<     Двоичный сдвиг влево: a PROC iname=sample.pc include=C:\ORACLE5\PRO\C\

Шаг 2.                Компилировать исходный текст
    Компилируйте исходную программу SAMPLE.C в модуль SAMPLE.OBJ.Этот шаг не
зависит от того,компилируете ли вы программу для работы в реальном режиме
или в защищенном режиме.Не забывайте в данном случае указать опцию большой
модели памяти (для компилятора Microsoft C это переключатель -al).

   C> CL -c -al sample.c

Шаг 3.                Редактирование связей программы
    Вместо того чтобы редактировать связи программы с обычными библиотеками
времени выполнения компилятора Microsoft C или Lattice C,вам следует связать
эту программу со специальной библиотекой,которая была создана при выполнении
пакета изменений для библиотек после процедуры установки.Эти библиотеки вы-
зываются сценариями редактирования связей.Обратите внимание на то,что при
этом необходимо использовать параметр /NoDef редактора связей фирмы Microso-
ft.Заметим также,что не следует пользоваться переключателем /STACK редактора
связей фирмы Microsoft при связывании программ для защищенного режима работы.

   C> LINK @samplemp.mln

Шаг 4.                Выполнение утилиты преобразования
    После того как образцовая программа скомпилирована и отредактирована вы
можете преобразовать ее в программу защищенного режима.Это можно сделать с
помощью утилиты EXE2PXE.Об`яснение работы этой утилиты можно найти в следую-
щем разделе.
              C> EXE2PXE sample

Шаг 5.                    Создание файла типа .COM
    Чтобы создать командный файл на основе исполнительного файла защищенного
режима,нужно выполнить утилиту MAKECOM.Это необходимо для того,чтобы OC DOS
могла распознать вашу программу защищенного режима.
                                                     C> MAKECOM sample

Шаг 6.                 Выполнение и отладка (по необходимости)
    Теперь у вас имеется прикладная программа на языке Pro*C,предназначенная
для работы в защищенном режиме.После проверки программы (если это необходи-
мо),вы можете использовать отладчик PDU для ее отладки на исходном и/или ма-
шинном языке.Чтобы вызвать отладчик в командной строке OC,нужно ввести
следующее:
                C> PDU sample
ЗАМЕЧАНИЕ.Прежде чем начинать отладку программы,необходимо загрузить управ-
          ляющую программу SQLPME.

               Преобразование из реального режима в защищенный
Подсистема разработки программ PDK поставляется с утилитой преобразования по
имени EXE2PXE,которая позволяет подготовить правильно связанные программы
для использования в защищенном режиме.
ЗАМЕЧАНИЕ.Утилита EXE2PXE может преобразовывать только программы,которые
       связывались с использованием пакета изменений библиотечных программ
       времени выполнения.См."Обновление библиотек компиляторов" в главе 2,
       где это об`яснено подробно.Прочие программы не смогут выполняться в
      защищенном режиме,даже если их преобразовать с помощью утилиты EXE2PXE.

По умолчанию утилита EXE2PXE хранится в справочнике C:\ORACLE%\PRO\C.Чтобы
выполнить преобразование программы,введите следующее:
                                                      C> EXE2PXE имя-файла

Результатом выполнения утилиты будет файл с расширением имени .PXE.Чтобы вы-
полнить эту программу,вы должны преобразовать ее в командный файл.Для этого
нужно выполнить утилиту MAKECOM:
                                       C> MAKECOM имя-файла

Для отладки программы можно использовать отладчик PDU (после загрузки управ-
ляющей программы SQLPME).

+                              Приложение А.
                Усовершенствования в прекомпиляторе Pro*C
             Усовершенствования к прекомпилятору Pro*C версии 1.2
В этом приложении описаны изменения в программных интерфейсах,усовершенство-
вания и корректировки ошибок,не включенные в документ "Руководство пользова-
теля прекомпилятора PRO*C".

                       Синтаксис вызова прекомпилятора
Общий синтаксис команды вызова прекомпилятора языка С:

  C> PRECOMPILER INAME=имя-файла [HOST=язык] [INCLUDE=маршрут]
    [OPTION=значение ...]
Пример
          PROC INAME=myfile.pc

ЗАМЕЧАНИЕ.Опция командной строки INCLUDE= необходима в том случае,если ваша
     программа включает команду EXEC SQL INCLUDE...,где включаемый в компи-
     ляцию файл не содержится в вашем текущем справочнике и точное местона-
     хождение его не указано.Маршрут поиска,указанный в опции INCLUDE=марш-
     рут,должен заканчиваться символом обратной косой черты (\),если маршрут
     не сводится лишь к спецификации дисковода.

Кроме того,опция HOST= необходима лишь в том случае,когда во время прекомпи-
ляции вы используете принимаемое по умолчанию расширение имени файла для
языка С (.PC).

                         ИЗМЕНЕНИЯ В ПРЕКОМПИЛЯТОРЕ
В программных интерфейсах ORACLE версии 1.2 сделаны следующие изменения.

                      HOLD_CURSOR и RELEASE_CURSOR

Начиная с версии 1.2 уточнено действие опций HOLD_CURSOR и RELEASE_CURSOR.

Опции HOLD_CURSOR и RELEASE_CURSOR оказывают влияние на следующие три об`ек-
та ORACLE: кеш-область курсора,область контекста ORACLE и явно и неявно об`-
явленные курсоры (каждый из которых ассоциируется с оператором языка манипу-
лирования данными (Data Manipulation Language - DML) SQL.
      Когда выполняется какой-либо оператор SQL DML,ассоциированный с курсо-
ра,независимо от того,об`явлен ли этот курсор в явном или неявном виде.После
этого кеш-вход курсора привязывается к контекстной области ORACLE,в которой
хранится информация,необходимая для обработки этого оператора,такая как ра-
зобранные части оператора.
    Опции HOLD_CURSOR и RELEASE_CURSOR оказывают влияние на то,что происхо-
дит с этими связями при закрытии курсора (что указывает на незаконченное ис-
пользование курсора).

                            Неявные и явные курсоры
Курсор м.б. закрыт двумя способами: явно и неявно.
      Неявные курсоры используются для операторов SELECT,INSERT,UPDATE,DELE-
TE и EXECUTE IMMEDIATE.Каждый раз,когда выполняется какой-либо из этих опе-
раторов,осуществляется неявное об`явление и открытие курсора.Как только дей-
ствие,определенное данным оператором,завершается (например,оператор DELETE
удаляет требуемые строки таблицы),использование этого неявного курсора счи-
тается законченным,и курсор неявно закрывается.
      Явные курсоры используются для таких операторов,как PREPARE,OPEN и FE-
TCH,которые требуют явного об`явления и открытия курсора.Ассоциированные с
этими операторами курсоры сохраняются до тех пор,пока не будет выполнена не-
которая команда,которая в явном виде указывает на то,что использование дан-
ного курсора прекращается.Примером тому может служить использование команды
CLOSE.После выполнения соответствующей команды курсор закрывается.

                             RELEASE_CURSOR
Опция RELEASE_CURSOR управляет воздействием на связь между курсорной кеш-об-
ластью и контекстной областью ORACLE в момент закрытия курсора.
      Если задана опция RELEASE_CURSOR=YES,то эта связь удаляется при закры-
тии курсора.Благодаря этому освобождается память,распределенная для контекс-
тной области,и предназначенному для чтения образу подвергшихся воздействию
таблиц файла предшествующих образов (Before Image) ORACLE.Кроме того,освобо-
ждаются замки,установленные для таблиц во время синтаксического разбора опе-
ратора.Как только освобождены замки синтаксического разбора,эти таблицы сно-
ва можно исправлять или удалять.
      Если задана опция RELEASE_CURSOR=NO,то связь между курсорной кеш-обла-
стью и контекстной областью ORACLE сохраняется и после закрытия курсора.Бла-
годаря этому ускоряется выполнение последующих операторов этого типа,поско-
льку теперь нет необходимости проводить повторный разбор оператора или расп-
ределять память для контекстной области ORACLE.По умолчанию принимается зна-
чение RELEASE_CURSOR=NO.

                                HOLD_CURSOR
Опция HOLD_CURSOR управляет воздействием на связь между курсором,ассоцииро-
ванным с оператором SQL DML,и курсорной кеш-областью.
       Если задана опция HOLD_CURSOR=NO,то эта связь помечается при закрытии
курсора как повторно-используемая.Эта связь сохраняется лишь до тех пор,пока
курсорный кеш-вход,на который она ссылается,еще нужен где-нибудь.
      По умолчанию принимается значение HOLD_CURSOR=NO.Если задана опция
HOLD_CURSOR=YES,то такая связь - постоянная.Как и в случае опции RELEASE_CU-
RSOR=NO,это также ускоряет выполнение операторов данного типа,поскольку нуж-
ный кеш-вход,содержащий информацию о данном операторе,уже имеется.

       Замечания по использованию опций HOLD_CURSOR и RELEASE_CURSOR
Если задана опция RELEASE_CURSOR=YES,то связь между курсором и курсорной
кеш-областью помечается как повторно-используемая,независимо от того,как за-
дана опция HOLD_CURSOR.
     Имеется единственное исключение в описанном выше использовании опций
HOLD_CUROSR и RELEASE_CURSOR.Независимо от того,каким образом установлены
опции HOLD_CUROSR и RELEASE_CURSOR,оператор PREPARE с последующим оператором
EXECUTE игнорирует их значения.Поскольку в этом случае нет никакой команды,
позволяющей пользователю об`явить о том,что использование курсора оператора
PREPARE завершается,то курсор всегда должен оставаться в памяти активным.
Следовательно,несмотря на реальные значения этих опций,этот оператор дейст-
вует таким образом,как будто заданы значения HOLD_CURSOR=YES и RELEASE_CUR-
SOR=NO,так что курсор оператора PREPARE сохраняется постоянно.

       УСОВЕРШЕНСТВОВАНИЯ ДЛЯ ПРЕКОМПИЛЯТОРА PRO*C ВЕРСИЙ 1.0 И 1.1
В прекомпиляторе PRO*C версии 1.0 и 1.1 сделано много изменений.Большинство
из этих изменений документировано в "Руководстве пользователя прекомпилятора
PRO*C".Однако некоторые изменения не нашли отражения в этом документе.Ниже
приведены сведения,которые не были включены в документ "Руководство пользо-
вателя прекомпилятора PRO*C" для версии 1.1.

Оператор SELECT не используется в операторах PREPARE и EXECUTE

В руководстве по прекомпилятору неправильно указано,что оператор SELECT мо-
жет использоваться как составная часть операторов PREPARE и EXECUTE.Хотя при
этом не выводится никакого сообщения об ошибке,включение оператора SELECT в
оператор PREPARE или EXECUTE считается незаконным.Операторы SELECT не м.б.
использованы таким образом,поскольку четыре метода динамического SQL не под-
держивают способ указания главных переменных,в которых должны храниться дан-
ные.

              Замечания о новых свойствах оператора DESCRIBE
Начиная с версии 1.1 программных интерфейсов ORACLE,свойства оператора DESC-
RIBE,используемого в дескрипторах связывания и выбора,более совместимы с
языком DB2.
       В примере на странице 103 документа "Руководство пользователя преком-
пилятора PRO*C",пример функции утилиты,sqlprc,д.б. изменен таким образом,
чтобы задавать точность и масштаб 1-байтовых переменных (символ без знака,
символ),а не 2-байтовых переменных (слово):

   SQLDA     *sdp;   /* - дескриптор SELECT  */
   unsigned char  prec;  /* точность (1 байт)   */
   char      scale;  /* масштаб (1 байт)   */

   extern VOID sqlprc();  /* извлеченная точность и масштаб     */

   sqlprc( &(sdp->L[i]),&prec,&scale);

Помимо программ,перечисленных на странице 104 документа "Руководство пользо-
вателя прекомпилятора PRO*C",возможно,придется изменить существующие програ-
ммы,в которых используется оператор DESCRIBE,поскольку в них может обнаружи-
ться следующее:
 - Для колонок LONG или LONG RAW возвращается нулевая длина.Вы должны выде-
   лить максимальную длину,какую считаете нужной.Чтобы получить эту длину,вы
   должны выполнить операцию FETCH для этой колонки и запомнить результат в
   главной переменной VARCHAR.Вы должны задать в поле L максимальную длину
   главной переменной VARCHAR (то есть 65 Кбайт) и установить в поле V адрес
   главной переменной VARCHAR.
 - Когда вы выполняете операцию FETCH для колонки LONG или LONG RAW и загру-
   жаете результат в главную переменную VARCHAR,поле длины будет содержать
   правильное значение.Отметим,однако,что это не проходит для SQL LONG RAW в
   гетерогенной машинной среде,где осуществляются преобразования набора сим-
   волов (например,из кода ASCII в код EBCDIC,и наоборот).Эту проблему пока
   нельзя устранить.

В приведенной ниже таблице даны типы данных,которые м.б. возвращены (SQLTY-
PE),их двочиная длина или длина,описанная с помощью оператора DESCRIBE (DSC-
LEN),а также их отображаемая длина или длина типа CHAR (DSPLEN).Эта таблица
отличается от приведенной в документе "Руководство пользователя прекомпиля-
тора PRO*C",поскольку в ней приведены два новых типа колонок: ZERO TERMINA-
TED STRING и VARCHAR.Ниже для удобства приведена полная таблица.

COLTYPE               SQLTYPE          DSCLEN          DSPLEN
----------------------------------------------------------------
CHAR                     1               A*               A*
NUMBER                   2               C*               C*
ZERO TERMINATED STRING   5               A*               E*
LONG                     8               0                B*
VARCHAR                  9               A*               F*
ROWID                    11              13               18
DATE                     12              7                9
DATE(D*)                 13              7                9
RAW                      23              A*               A*
LONGRAW                  24              0                B*
*  См.замечания

                                   ЗАМЕЧАНИЯ:
А. DSCLEN и DSPLEN равны SYSCOLUMNS.WIDTH или ширине колонки,хранящейся в
   словаре данных.
Б. DSPLEN для всех колонок типа LONG переменны,поскольку выбранная колонка
   LONG имеет собственную длину (то есть одну длину для всей строки).Макси-
   мальная длина колонки LONG определяется OC (для VMS она составляет 64 К-
   байт).См.также замечание А.
В. См.пояснение ранее в этом разделе относительно точности и масштаба,а так-
   же обратите внимание на то,что колонки NUMBER д.б. приведены к пользова-
   тельскому типу данных,например CHAR или VARCHAR.Это связано с тем,что
   внутреннее представление для колонки NUMBER не соответствует типу данных,
   которым мог бы манипулировать сам пользователь.
Г. Оператор DESCRIBE может неправильно возвращать тип данных SQLTYPE=13 (вну-
   тренние данные).Его нужно исправить на что-либо имеющее смысл (обычно
   DATE или CHAR).Такое поведение оператора можно наблюдать при описании вы-
   ражения типа DATE,такого как TO_DATE('1-Mar-86')-1.
Д. Для определения DSPLEN используйте функцию длины строки.
Е. Длину можно найти в поле длины переменной типа VARCHAR.

ЗАМЕЧАНИЕ.Прежде чем пользоваться типом данных в операторах,таких как OPEN
      или FETCH,необходимо сбросить бит NULL/NOT NULL в этом типе данных.
      Этот бит нельзя устанавливать ни при каких обстоятельствах,поскольку
      это может привести к ошибке.

                       Опции оператора EXEC ORACLE
В программных интерфейсах ORACLE версии 1.0 представлен оператор EXEC ORACLE
OPTION:
                EXEC ORACLE OPTION ( опция=аргумент-опции );

Теперь можно пользоваться тремя новыми опциями этого оператора,не описанные
на с.23 документа "Руководство пользователя прокомпилятора Pro*C":
 -  HOLD_CURSOR
 -  RELEASE_CURSOR
 -  SELECT_ERROR

                               Оператор DECLARE
В прекомпиляторах версии 1.0 представлен новый оператор,аналогичный операто-
ру DECLARE CURSOR:

EXEC SQL [AT имя-базы-данных] DECLARE <имя-оператора> STATEMENT

Этот оператор можно использовать для контроля декларации операторов,применя-
емых вместе с PREPARE.Например,в более ранних версиях прекомпиляторов следу-
ющий участок кода на языке С был недействителен:
   main()
   {
   init();
   execute90;
   }
   execute90
   {
   EXEC SQL EXECUTE S;
   }
   EXEC SQL PREPARE S FROM
   "INSERT INTO EMP (ENAME) VALUES ('WILMA')";
   }

Эта программа была недействительная,поскольку оператор S был неопределенным
в момент обработки прекомпилятором оператора EXEC.Однако теперь достаточно
вставить в процедуру main() приведенный ниже оператор,как эта программа ста-
нет функционировать правильно:

   EXEC SQL CONNECT :userid IDENTIFIED BY :password
     AT eastern_db USING "D:WRVMS";

Отсюда не следует,что оператор DECLARE может находиться в области и делать
курсоры известными во всех компилируемых блоках.
     Этот оператор,при использовании в сочетании с системой SQL*Net,может
также применяться для БД,по отношению к которой вы хотите выполнить динами-
ческий оператор языка SQL.Например,предположим,что у вас имеется следующий
оператор:
            EXEC SQL CONNECT :userid IDENTIFIED BY :password
                 AT eastern_db USING "D:WRVME";

Этот оператор подключает вас к удаленной БД и присваивает последней имя EAS-
TERN_DB.Теперь предположим,что у вас имеется динамический оператор языка
SQL,хранимый в переменной по имени MY_SQL_STATEMENT,и вы хотите выполнить
его для БД EASTERN_DB.В зависимости от используемого SQL способа выполнения
динамических операторов,вы можете вводить различные операторы (см.в главе 6
документа "Руководство пользователя прекомпилятора Pro*C" об`яснение спосо-
бов выполнения динамических операторов языка SQL).
   По способу 1 динамического SQL вы можете ввести оператор следующего вида:

   EXEC SQL AT eastern_db EXECUTE IMMEDIATE :my_sql_statement;

Однако по способам 2,3 и 4 вам придется использовать оператор DECLARE.Напри-
мер,при использовании способа 4 вам придется ввести оператор такого вида:

   EXEC SQL AT eastern_db DECLARE S1 STATEMENT;
   EXEC SQL PREPARE S1 FROM :my_sql_statement;
   EXEC SQL DESCRIBE SELECT LIST FOR S1 INTO :descriptor;

+                              Приложение Б.
                ОСОБЕННОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ PRO*C
В этом приложении описаны и,там где это возможно,исправлены некоторые извес-
тные ошибки программного обеспечения Pro*C,его реализации и соответствующей
документации.

            Известные ошибки в документе "Руководство пользователя"
Ниже приведены исправления в документе "Руководство пользователя прекомпиля-
тором Pro*C" версии 1..
      Пример подключения к удаленной БД через сеть SQL*Net,приведенный на
с.21,должен выглядеть следующим образом:

   EXEC SQL BEGIN DECLARE SECTION:
     VARCHAR usr[20];
     VARCHAR pwd[20];
     char host[] = " d:BOSTON";
     char host[] = " d:CHICAGO";
   EXEC SQL END DECLARE SECTION;
   ...
     /* подключение к локальной БД */
   EXEC SQL CONNECT :usr identified by :psw;

     /* подключение к двум другим удаленным БД */
   EXEC SQL DECLARE ORA1 DATABASE;
   EXEC SQL DECLARE ORA2 DATABASE;
   EXEC SQL CONNECT :usr identified by :psw
     AT ORA1 USING :host1;
   EXEC SQL CONNECT :usr IDENTIFIED BY :psw
     AT ORA2 USING :host2;

На с.70 неправильно сказано о том,что ORACLE сразу же после успешного завер-
шения программы автоматически приступает к внесению ожидающих своей очереди
изменений.По существу,никакие изменения в действительности не будут сделаны
до тех пор,пока в явном виде не будет выполнена команда COMMIT.

                        Исправления в прекомпиляторе
                             Закрытие курсоров
При попытке закрыть неоткрывавшийся курсор теперь возвращается код  ошибки
"ORA-1001:  Invalid cursor." (Недействительный курсор).

При использовании динамических средств языка SQL курсор на базе оператора
подготовки,который был ранее открыт,затем закрыт,м.б. успешно переоткрыт.
Чтобы сделать это,вам необходимо снова подготовить этот курсор и переоткрыть
его.Если курсор не подготовлен перед переоткрытием,ORACLE возвращает код
ошибки "ORA-1001: Invalid cursor." (Недействительный курсор).

                    Интерфейс оператора EXEC IAF GET/PUT
Интерфейс оператора EXEC IAF GET/PUT между прекомпилированной программой и
бланком запросов стал теперь более гладким.
 - Если имеются какие-либо недействительные ссылки на поле в бланке,такие
   как ссылка на несуществующее или двусмысленное поле,генерируется новый
   код ошибки: "ORA-1057: Invalid or ambiguous block.field reference in
   user exit." (Недействительная или двусмысленная ссылка на блок.поле в по-
   льзовательском выходе).Это состояние м.б. обнаружено с помощью оператора
   EXEC SQL WHENEVER SQLERROR...Этот код ошибки выдается в прекомпиляторах
   версии 1.2.10,а соответствующий текст сообщения об ошибке будет генериро-
   ваться ORACLE версии 5.1.22.
   ЗАМЕЧАНИЕ.Чтобы уточнить двусмысленную ссылку,укажите перед именем поля
             имя связанного с ним блока,как блок.поле.
 - Если данные д.б. укорочены,чтобы они уместились в принимающем поле,возв-
   ращаемый код SQLCODE не изменяется.Однако флажки предупреждения 0 (глоба-
   льный флажок предупреждения) и 1 (флажок предупреждения об укороченных
   данных) будут установлены.Это состояние можно обнаружить с помощью опера-
   тора EXEC SQL WHENEVER SQLERROR...
 - Если делается попытка выполнить запрещенное или необеспечиваемое системой
   преобразование типов данных,то теперь в этом случае возвращается код оши-
   бки  "ORA-1460: unimplemented or unreasonable conversion requested." (Зап-
   рошено нереализованное или неприемлемое преобразование типов данных).Это
  состояние можно обнаружить с помощью оператора EXEC SQL WHENEVER SQLERROR...

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

                     Исправления в интерфейсе вызова ORACLE
Параметр OPEN_CURSORS в файле INIT.ORA
     Пользователям интерфейса вызова ORACLE версии 4.0 следует помнить о
том,что параметр OPEN_CURSORS в файле INIT.ORA задает максимальное количест-
во курсоров,которые м.б. открыты одним процессом.Первоначально этот параметр
устанавливается равным 50,так что пользователи,чьи программы используют бо-
лее 50 курсоров,должны увеличить значение этого параметра и сделать "теплый"
перезапуск БД,прежде чем выполнять эти программы.

KOAP Open Portal 2000



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