ВВЕДЕНИЕ В BTRIEVE
Btrieve - законченная система управления записями, обеспечивающая Вас необходимыми функциями для хранения, поиска и корректировки данных в Ваших файлах баз данных. Благодаря новым методам и структурам Btrieve Вы можете игнорировать физическую структуру файлов, поддержку индексов и проблемы параллелизма и сосредоточиться на логических аспектах Ваших файлов и баз данных.
Для доступа к Btrieve Вы включаете обращения к специфическим функциям в Вашей программе, посылая Btrieve информацию, необходимую для выполнения требуемой операции. Т.к. соглашения по обращению к программам различны для разных языков высокого уровня и компиляторов, в Btrieve включены интерфейсные программы для многих наиболее популярных языков и компиляторв, включая следующие:
- Microsoft QuickBASIC, IBM интерпретатор и компилятор BASIC-а, Turbo Basic и некоторые другие компиляторы BASIC-а
- IBM (или Microsoft) Pascal, Turbo Pascal и некоторые другие компиляторы Паскаля
- Microsoft C, Lattice C, Turbo C и некоторые другие компиляторы C
- Microsoft COBOL, Realia COBOL, MicroFocus COBOL и некоторые другие компиляторы COBOL-а
Это руководство содержит документацию и примеры программ для BASIC, C, Pascal и COBOL. Документация и дополнительные интерфейсные программы для других языков и компиляторов находятся на дискете Btrieve. Глава 4 включает информацию о требованиях для программ, написанных на ассемблере, для обращения к Btrieve из языков, для которых интерфейс не поддерживается.
ВОЗМОЖНОСТИ BTRIEVE
В следующих разделах приведены некоторые из возможностей, делающих Btrieve уникальной мощной системой управления записями.
ПОДДЕРЖКА ИНДЕКСОВ
Btrieve автоматически создает и поддерживает индексы в Ваших файлах при добавлении, корректировке и удалении записей. Кроме автоматической поддержки индексов Btrieve обеспечивает поддержку индексов в следующих случаях:
- поддержка до 24 индексов на файл
- поддержка для добавления или отбрасывания дополнительных индексов после создания файла
- поддержка до 14 различных типов данных для значений ключей
- поддержка дублированных, измененных, сегментированных, пустых, ручных и убывающих значенийй ключей
Глава 2 содержит более детальную информацию о том, как использовать индексные признаки Btrieve в Вашей прикладной программе.
СПЕЦИФИКАЦИИ ФАЙЛА
Btrieve позволяет Вам создавать файлы данных, используя обращения к функциям из Вашей прикладной программы или используя внешние утилиты (BUTIL). На уровне файлов Btrieve предлагает Вам следующие возможности:
- Размеры файла до 4 миллионов байт
- Неограниченное число записей
- Способность размещать файл на двух устройствах хранения информации
- Согласованное определение файлов и управляющих программ
- Согласованные структуры файлов
УПРАВЛЕНИЕ ПАМЯТЬЮ
Btrieve позволяет Вам задать объем памяти, используемой кэш-буфером ввода/вывода, основываясь на требуемой для Вашей прикладной программы памяти и общим объемом памяти, инсталированным на Вашем сервере. Объем памяти, зарезервированный Вами для кэш-буфера ввода/вывода, может оказать эффект на выполнение Btrieve.
УПРАВЛЕНИЕ ПАРАЛЛЕЛИЗМОМ И ЗАЩИТОЙ
Btrieve обеспечивает возможность управления параллелизмом и защитой данных в сети. Btrieve поддерживает сохранность и защиту данных, позволяя Вам:
- Задать захват одной или множества записей
- Захватить файл данных
- Определить логические транзакции
- Присвоить имена пользователей файлам
- Задать динамическую шифровку и расшифровку данных
Глава 2 содержит дополнительную информацию о том, как Btrieve и Ваша прикладная задача обрабатывают параллелизм и защиту.
СОХРАННОСТЬ ДАННЫХ
Btrieve использует некоторые методы для обеспечения сохранности Ваших файлов данных. Эти методы включают:
- Использование прообразов файлов для хранения образов страниц файла перед добавлением, корректировкой и удалением записей;
- Использование процесса транзакций для поддержки совместимости между файлами данных во время неоднократной корректировки файла.
BTRIEVE УТИЛИТЫ
Btrieve включает две программы-утилиты так же, как и некоторые диалоговые команды, позволяющие Вам выполнять тестирование и управление данными без составления прикладной программы. Они
включают:
- BUTIL.EXE, утилиту командной строки, позволяющую Вам создавать и управлять файлами данных Btrieve.
- B.EXE, интерактивную программу-утилиту, которую можно использовать для инструктажа, тестирования и отладки логики Вашей прикладной программы.
- Диалоговые команды, позволяющие Вам управлять работой сети Btrieve при Вашей работе с сетью.
Смотрите главу 4 для дополнительной информации об утилитах Btrieve и диалоговых командах.
ОПЕРАЦИИ УПРАВЛЕНИЯ ЗАПИСЯМИ
Btrieve поддерживает 36 отдельных операций, которые Вы можете выполнять в Вашей прикладной программе. Для выполнения Btrieve-операции Ваша прикладная задача должна выполнить следующие задачи:
- Удовлетворять всем требованиям операции.
Например, до выполнения Вашей прикладной задачей ввода/вывода файла она должна сделать файл доступным с помощью выполнения Btrieve-операции Открыть (Open) для этого файла.
- Инициализировать параметры, требуемые этой операцией.
Параметры - это переменные программы или структуры данных, по типу и размеру соответствующие значениям ожидаемым Btrieve для данной операции.
- Выполнить обращение к Btrieve-функции (BTRV)
Точный формат обращения к Btrieve-функции изменяется от языка к языку
- Проверить результаты обращения к функции.
Btrieve всегда возвращает статусный код, ознчающий успех (статус=0) или неудачу (статус<>0) операции. Ваша прикладная задача должна всегда проверять ненулевые статусные коды и предпринимать соответствующие действия.
Кроме того, Btrieve возвращает данные или другую информацию в индивидуальных параметрах, основываясь на цели операции.
Таблица 1.1 перечисляет Btrieve-операции и коды операций и содержит краткое описание выполняемой операцией функции.
Таблица 1.1 (Операции Btrieve) --------------------------------------------------------------------- ОПЕРАЦИЯ КОД ОПИСАНИЕ --------------------------------------------------------------------- Открыть 0 Делает файл доступным (Open) Закрыть 1 Отменяет доступ к файлу (Close) Вставить 2 Вставляет новые записи в файл (Insert) Изменить 3 Изменяет текущую запись (Update) Удалить 4 Удаляет текущую запись из (Delete) файла Получить Равную 5 Получает запись со значением (Get Equal) ключа равным требуемому значению ключа Получить Следующую 6 Получает запись следующую за (Get Next) текущей записью в индексном пути Получить Предыдущую 7 Получает запись предшествующую (Get Previous) текущей записи в индексном пути Получить Большую 8 Получает запись со значением (Get Greater) ключа большим требуемого значения ключа Получить Большую или 9 Получает запись со значением Равную ключа равным или большим (Get Greater or Equal) требуемого значения ключа Получить Меньшую Чем 10 Получает запись со значением (Get Less Than) ключа меньшим требуем значения ключа Получить Меньшую Чем 11 Получает запись со значением или Равную ключа равным или меньшим (Get Less Than or Equal) требуемого значения ключа Получить Первую 12 Получает первую запись в (Get First) запрошенном пути доступа Получить Последнюю 13 Получает последнюю запись в (Get Last) запрошенном пути доступа Создать 14 Создает Btrieve-файл с (Create) заданными характеристиками Статистика 15 Возвращает характеристики файла (Stat) и индекса и число записей Расширить 16 Расширяет файл на два дисковых (Extend) тома Установить Директорию 17 Изменяет текущую директорию (Set Directory) Получить Директорию 18 Возвращает текущую директорию (Get Directory) Начать Транзакцию 19 Отмечает начало набора логически (Begin Transaction) связанных операций Закончить Транзакцию 20 Отмечает конец набора логически (End Transaction) связанных операций Снять Транзакцию 21 Удаляет операции выполненные (Abort Transaction) во время незавершенной транзакции Получить Позицию 22 Получает позицию текущей записи (Get Position) Получить Направление 23 Получает запись в заданной (Get Direct) позиции Шаг на Следующую 24 Получает запись физически (Step Next) следующую за текущей записью Остановить 25 Завершает резидентные в памяти (Stop) программы Администратора Записей (Record Manager) на рабочей станции Версия 26 Возвращает загруженную в (Version) текущее время версию Record Manager Отмена Захвата 27 Отменяет захват записи или (Unlock) записей записей Сброс 28 Освобождает все ресурсы, взятые (Reset) рабочей станцией Установить Владельца 29 Присваивает файлу имя владельца (Set Owner) Стереть Владельца 30 Убирает имя владельца из файла (Clear Owner) Создать Дополнительный 31 Создает дополнительный индекс Индекс (Create Supplemental Index) Отбросить Дополнительный 32 Убирает дополнительный индекс Индекс (Drop Supplemental Index) Шаг на Первую 33 Возвращает запись физически (Step First) первую в файле Шаг на последнюю 34 Возвращает запись физически (Step Last) последнюю в файле Шаг на Предыдущую 35 Получает запись физически (Step Next) предыдущую текущей записи ---------------------------------------------------------------------
Смотри в главе 6 полное описание всех операций управления записями Btrieve. Глава 5 содержит инструкции по вызову Btrieve
из BASIC, Pascal, COBOL и C. Приложения C, D, E и F содержат примеры программ, иллюстрирующих как инициализировать параметры, выполнять обращения к Btrieve-функциям и проверять возвращаемые статусные коды.
КАК BTRIEVE РАБОТАЕТ
NetWare Btrieve - базируемое на сервере дополнение Btrive Record Manager, работающее под управлением Advanced NetWare v2.1 и выше.
Все Btrieve-запросы сетевой рабочей станции выполняются на сетевом сервере. По сравнению с программой базируемой у клиента конфигурация базируемая на сервере улучшает операции сетевых баз данных по следующим причинам:
- Выполнение на сервере является централизованным, допускающим эффективное управление множества пользователей.
- Количество сетевых запросов уменьшено, что приводит к более быстрому их выполнению из-за улучшенного применения сервера.
- Уменьшается использование сети из-за меньшего количества данных передаваемых в сети.
Обращения к NetWare Btrieve имеют тот же формат, что и обращения к Btrieve в другой среде. Прикладные задачи единственного пользователя Btrieve, обращающегося к NetWare Btrieve, могут запросить дополнительные проверки статуса благодаря прверке параллелизма, запрашиваемого в многопользовательской среде.
Кроме того, для обеспечения базируемой на сервере системы управления записями для прикладных задач рабочих станций NetWare Btrieve также включает средства, позволяющие VAPs использовать обращения Btrieve к BSERVER. Программа BROUTER обеспечивает необходимую связь между BSERVER и другими VAP-прграммами.
ПРОГРАММА BSERVER
Программа BSERVER должна быть загружена на каждый файл-сервер, где хранятся Btrieve-файлы. BSERVER состоит из ядра программы, осуществляющей взаимодействие специальных Btrieve-запросов,
оболочки сервера и модуля сетевых коммуникаций. BSERVER выполняет следующие функции:
- Она выполняет весь ввод/вывод на диск для Btrieve-файлов хранящихся на сервере, где она резидентно находится.
- Она запрашивает и отменяет все запреты на уровне записей и на
уровне файлов на сервере, где она резидентно находится.
- Она об'единяет в пакет все запросы Btrieve, выполняемые ей для передачи копии BREQUEST на рабочую станцию или копии BROUTER на сервер.
Прикладные программы и VAPs, осуществляющие Btrieve-вызовы, всегда взаимодействуют с BSERVER через BREQUEST или через BROUTER.
ПРОГРАМММА BREQUEST
Программа BREQUEST должна быть загружена на каждую станцию, посылающую запросы на сервер. Прикладные программы на рабочих станциях связаны с BSERVER через BREQUEST. BREQUEST выполняет следующие функции:
- Получает Btrieve-запросы из Вашей прикладной программы и передает их BSERVER.
- Возвращает результаты Btrieve-запросов в Вашу прикладную задачу.
На рабочих станциях OS/2 BREQUEST.DLL и BTRCALLS.DLL программы динамических связей должны быть доступны прикладной программе. BTRCALLS.DLL-программа должна быть доступна для того, чтобы поддерживать совместимость между NetWare Btrieve и Btrieve для OS/2. BREQUEST.DLL-программа обеспечивает связь между Вашей прикладной программой и BSERVER.
ПРОГРАММА BROUTER
BROUTER-программа загружается на файл-сервер сети. Это - программа межпроцессорной связи, позволяющая VAP-программам загружаемым на файл-серверы сети взаимодействовать с BSERVER. Эта возможность позволяет Вам писать Btrieve прикладную программу как VAP, делая ее расположенной на сервере, а не программой клиента.
BROUTER-программа выполняет следующие функции:
- Она связывает работу VAP, выполняя Btrieve-прерывание.
- Она связывает работу всех станций, инициирующих Btrieve- запросы к VAP.
- Она выполняет доступ к Btrieve-файлам, хранящимся на одном или множестве серверов сети.
- Она преобразовывает в последовательность Btrieve-запросы
загруженные на одном или более серверов.
Смотрите "Интерфейс с BROUTER" для инструкций по созданию интерфейса с BROUTER.
УПРАВЛЯЮЩАЯ ЛОГИКА
NetWare Btrieve программы функционируют так, как будто они являются подпрограммами Вашей прикладной прграммы. NetWare Btrieve поддерживает два метода доступа к BSERVER:
- Прикладная задача рабочей станции может иметь доступ к BSERVER через BREQUEST-программу.
- Прикладная задача рабочей станции может вызывать VAP, который затем взаимодействует с BSERVER через BROUTER.
Следующие разделы описывают эти два метода доступа.
Д о с т у п к BSERVER ч е р е з BREQUEST
Следующие шаги описывают управляющую логику, когда прикладная задача рабочей станции имеет доступ к BSERVER через BREQUEST- программу, загружаемую на рабочую станцию.
- Ваша прикладная прграмма выдает Btrieve-запрос в форме вызова функции. Действительный вызов реализован несколько по разному в разных языках. Для простоты в данном руководстве будем ссылаться на Btrieve-вызов как на вызов функции.
- Короткая программа связи, включаемая в Вашу прикладную программу, объединяет параметры вызова в блоки памяти, сохраняет исходный стек и делает обращение к BREQUEST.
- BREQUEST упаковывает запрос в сетевое сообщение, определяет какой сервер должен получить запрос и пересылает сообщение в BSERVER-программу резидентную на этом сервере.
- BSERVER получает сетевое сообщение, проверяет достоверность параметров и затем выполняет инструкцию. В зависимости от инструкции могут включаться операция памяти или операция ввода/вывода на системное устройство хранения данных. BSERVER затем возвращает результаты операции в BREQUEST-программу на рабочей станции.
- BREQUEST возвращает соответствующие данные и код статуса в
параметрические переменные или структуры в памяти Вашей
прикладной задачи, восстанавливает исходный стек и возвращает
управление Вашей программе.
Если прикладная задача на рабочей станции делает Btrieve-запросы как к локальному (неразделенному) устройству, так и к сетевому (разделенному) устройству, то на рабочей станции должна быть загружена копия Btrive Single User (однопользовательский Btrieve) или DOS 3.1 Networks также как и BREQUEST. BREQUEST определяет должен ли запрос быть передан в локальный Btrieve, обслуживающий неразделенные файлы, или в программу BSERVER, обслуживающую разделенные файлы на сервере.
Рисунок 1.2 изображает пример конфигурации для простой сети Novell, использующей NetWare Btrieve.
ФАЙЛ-СЕРВЕР -----------¬ -----------------¬ ----------------¬ ¦Диск сети ¦<--------->¦ NetWare ¦<---¬ ¦Локальный диск ¦ L----------- +----------------+ ¦ L---------------- ¦ BSERVER.VAP ¦<---- / L----------------- ¦ / / / ----------------¬ ¦ ¦ ----------------¬ ¦ DOS 3.x ¦ ¦ ¦ ¦ DOS 3.x ¦<--¬ +---------------+ ¦ ¦ +---------------+ ¦ ¦ NetWare Shell ¦ ¦ ¦ ¦ NetWare Shell ¦ ¦ +---------------+ ¦ ¦ +---------------+ ¦ ¦ ¦<------------ ¦ ¦ Btrieve ¦<--- ¦ BREQUEST ¦ ¦ ¦ Record Manager¦<--¬ ¦ ¦<---¬ ¦ +---------------+ ¦ +---------------+ ¦ L------->¦ BREQUEST ¦ ¦ ¦ Прикладная ¦<---- ---->¦ ¦<--- ¦ задача Btrieve¦ ¦ +---------------+ L---------------- ¦ ¦ Прикладная ¦ Рабочая станция 1 L--->¦ задача Btrieve¦ имеющая доступ L---------------- только к разделенным Рабочая станция 2 Btrieve-файлам имеющая досту к разделенным и локальным Btrieve-файлам Рисунок 1.2 Конфигурация сети, использующей BSERVER.VAP (Обратите внимание, что Рабочая станция 2 имеет доступ как к разделенным так и к локальным файлам )
Рисунок 1.3 иллюстрирует сеть с конфигурацией множества серверов. На этой диаграмме файл-серверы A и B обслуживают разделенные файлы сети. Обратите внимание, все станции сети могут делать запросы к обоим файл-серверам. Программы BREQUEST, загруженные на рабочие станции, посылают запросы на соответствующий файл-сервер. Правильная идентификация файл-серверов и томов существенна для правильного функционирования системы.
ФАЙЛ-СЕРВЕР А -----------------¬ -----------------¬ ------------------------>¦ NetWare ¦<------>¦Разделенный диск¦ ¦ ----------------¬ +----------------+ L----------------- ¦ ¦ DOS 3.x ¦ ¦ BSERVER.VAP ¦<-----------------------¬ ¦ +---------------+ L----------------- ----------------¬ ¦ ¦ ¦ NetWare Shell ¦ ¦ DOS 3.x ¦ ¦ ¦ +---------------+ +---------------+ ¦ ¦ ¦ ¦ ¦ NetWare Shell ¦ ¦ +->¦ BREQUEST ¦<---¬ +---------------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +---------------+ ¦ ---->¦ BREQUEST ¦<----+ ¦ ¦ Прикладная ¦<---- ¦ ¦ ¦ ¦ ¦ ¦ задача Btrieve¦ ¦ +---------------+ ¦ ¦ L---------------- L--->¦ Прикладная ¦ ¦ ¦ Рабочая станция 1 ¦ задача Btrieve¦ ¦ ¦ L---------------- ¦ ¦ Рабочая станция 2 ¦ ¦ ----------------¬ ¦ ¦ ¦ ¦ DOS 3.x ¦ ----------¬ ----------------¬ ¦ ¦ +---------------+ ¦Локальный¦<----->¦ DOS 3.x ¦ ¦ ¦ ¦ NetWare Shell ¦ ¦ диск ¦ ---->¦ ¦ ¦ ¦ +---------------+ L---------- ¦ ¦---------------¦ ¦ ¦ ¦ ¦ ¦ ¦ NetWare Shell ¦ ¦ +->¦ BREQUEST ¦<---¬ ¦ ¦---------------¦ ¦ ¦ ¦ ¦ ¦ L--->¦ Btrieve Record¦ ¦ ¦ +---------------+ ¦ ---->¦ Manager ¦ ¦ ¦ ¦ Прикладная ¦<---- ¦ +---------------+ ¦ ¦ ¦ задача Btrieve¦ L--->¦ ¦ ¦ ¦ L---------------- ¦ BREQUEST ¦<----+ ¦ Рабочая станция 3 ---->¦ ¦ ¦ ¦ ¦ +---------------+ ¦ ¦ ¦ ¦ Прикладная ¦ ¦ ¦ L--->¦ задача Btrieve¦ ¦ ¦ L---------------- ¦ ¦ Рабочая станция 4 ¦ ¦ -----------------¬ ¦ L---------------------->¦ BSERVER.VAP ¦<------------------------- +----------------+ -----------------¬ ¦ NetWare ¦ ¦Разделенный диск¦<---->¦ ¦ L----------------- L----------------- ФАЙЛ-СЕРВЕР B
Рисунок 1.3 Сеть с множеством файл-серверов (Обратите внимание, что BREQUEST, загруженный на каждую рабочую
станцию, может иметь доступ ко всем файл-серверам. Рабочая станция 4 имеет доступ как к разделенным так и к локальным Btrieve-файлам.)
Если Вы используете множество файл-серверов или интерсеть, все файл-серверы не должны быть в "online" при старте BREQUEST на рабочих станциях. BREQUEST распознает новые файл-серверы или устройства при обращении к новому файл-серверу или при изменении распределения сетевых устройств.
Д о с т у п к BSERVER ч е р е з BROUTER
ПРИМЕЧАНИЕ:
Если Вы не используете Value-Added Process (VAP), доступный NetWare Btrieve, можете пропустить этот раздел. ______________________________________________________________ Следующие шаги иллюстрируют управляющую логику при обращении
прикладной программы рабочей станции к VAP, который затем обращается к BSERVER через программу BROUTER.
- Прикладная программа рабочей станции посылает запрос к VAP. Запрос может быть сформирован как Btrieve-вызова или в форме, треуемой VAP.
- Программа связи, включенная в прикладную программу. упаковывает запрос в сообщение сети, определяет какой сервер должен получить запрос и посылает соощение в VAP, резидентный на сервере.
- VAP получает сообщение сети, проверяет правильность параметров и упаковывает параметры вызова как Btrieve-запрос в блок памяти. Затем сохраняет ID клиента в регистре AX и выполняет прерывание 7B.
- BROUTER получает Btrieve-запрос, сохраняет информацию об источнике вызова и вызывает копию BSERVER, активную на сервере, где хранится файл.
- BSERVER выполняет запрос и возвращает результаты операции в BROUTER.
- BROUTER возвращает соответствующие данные и код статуса в параметрические переменные или структуры в памяти VAP и возвращает управление VAP.
- VAP возвращает соответствующую информацию в прикладную программу на рабочей станции.
Если прикладная программа рабочей станции делает Btrieve-запрос к локальному (неразделенному) устройству и к VAP, вызывающему
Btrieve, копия Btrieve Single User или DOS 3.1 Networks должна быть загружена на рабочую станцию. Рисунок 1.4 иллюстрирует логику управления, когда VAP имеет доступ к Btrieve-файлам используя NetWare Btrieve.
РАБОЧАЯ СТАНЦИЯ
--------------¬ 1. Прикладная программа ¦ Прикладная ¦ на рабочей станции ¦ программа ¦ посылает запрос в VAP1 +-------------+ ¦Интерфейс VAP¦ L---T---------- ¦ / 2. Интерфейс VAP1 посылает ¦ ¦ 7. VAP1 возвращает запрос на сервер ¦ ¦ результаты ¦ ¦ прикладную программу ¦ ¦ рабочей станции ¦СЕРВЕР¦ / ¦ ---------+--¬ ---+ VAP1 ¦<-¬ 3. VAP1 упаковывает запрос ¦ ¦ ¦ ¦ 6. BROUTER возвращает и выполняет прерывание ¦ +-----------+ ¦ результаты в VAP1 7B L->¦ +--- ¦ BROUTER ¦ 4. BROUTER получает Btrieve---+ ¦<-¬ 5. BSERVER выполняет вызов и посылает его в ¦ +-----------+ ¦ запрос и посылает BSERVER ¦ ¦ ¦ ¦ результаты в L->¦ BSERVER +--- BROUTER ¦ ¦ -------¬ ¦ ¦<--->¦ Диск ¦ L------------ L------- Рисунок 1.4 Применение другого VAP с BSERVER
КЭШ-БУФЕРЫ
Кэш-память - область памяти, резервируемая BSERVER для буферизации страниц, читаемых с диска. Вы определяете размер кэш-памяти при конфигурации BSERVER. Кэш-память разделена на ряд буферов, каждый - имеющий размер самой большой страницы, к которой будет иметь доступ Ваша прикладная программа. В основном большая кэш-память улучшает выполнение, т.к. позволяет большему количеству страниц быть в памяти в данное время. (См. Главу 3 для дополнительной информации о конфигурации BSERVER.)
Когда Ваша прикладная программа делает запрос какой-либо записи, BSERVER сперва проверяет кэш-память ,чтобы посмотреть не находится ли уже страница, содержащая эту запись, в памяти. Если запись уже в кэш-памяти, BSERVER пересылает запись из кэш-памяти в буфер данных Вашей прикладной программы. Если страницы нет в кэш-памяти, BSERVER копирует страницу с диска в кэш-буфер до того, как пересылает требуемую запись в Вашу прикладную программу.
Если все кэш-буферы заполнены, когда BSERVER необходимо передать новую страницу в память, по алгоритму "наименьшего использования" (LRV) определяется, какую страницу BSERVER перекрывает в кэш-памяти. LRU уменьшает время выполнения, сохраняя наиболее употребляемые страницы в памяти.
Когда Ваша прикладная программа добавляет или корректирует запись, BSERVER сперва модифицирует страницу в кэш-памяти, а затем записывает страницу на диск, Модифицированная страница остается в кэш-памяти до тех пор, пока LRU не определит, что она должна быть перекрыта новой страницей.
ПАРАМЕТРЫ ОБРАЩЕНИЯ К BTRIEVE
Btrieve запрашивает определенную информацию из Вашей прикладной программы для выполнения операций управления записями и файлами. Ваша прикладная программа использует параметры Btrieve-обращения для задания информации, необходимой Btrieve и обеспечения места для возвращаемой Btrieve информации. При каждом обращении к Btrieve Ваша прикладная программа должна передать Btrieve все параметры, требуемые используемым Вами языком, даже если Вы и не ждете их значений. Этот раздел дает общее описание параметров и как Btrieve их использует.
ПРИМЕЧАНИЕ:
Для специфической информации о том, как использовать параметры в определенном языке см. Главу 5 "Интерфейс языков". Для информации о том, как Btrieve использует параметр для конкретной операции см. Главу 6 "Btrieve- операции записи". -----------------------------------------------------------
КОД ОПЕРАЦИИ
Параметр кода операции сообщает Btrieve, какую операцию Вы хотите выполнить. Ваша прикладная программа должна задавать код операции
при каждом обращении к Btrieve. Переменная, которую Вы определяете для хранения кода операции, должна быть 2-байтовым целым числом. Btrieve никогда не изменяет значение кода операции.
КОД СТАТУСА
Все Btrieve-операции возвращают значение кода статуса, информируя Вашу прикладную программу обо всех ошибках. Код статуса равный 0 показывает, что операция выполнена успешно. Для некоторых языков, в частности для С и Паскаля, вызов Btrieve - целая функция и Вашей прикладной программе не требуется задавать отдельный параметр для кода операции. Если Вы применяете язык, требующий отдельного параметра кода операции, задайте 2-байтовое целое для хранения возвращаемого значения.
БЛОК ПОЗИЦИИ
Btrieve использует параметр блока позиции для хранения указателей позиционирования и другой информации, необходимой для доступа к какому-либо файлу. Ваша прикладная программа использует блок
позиции для определения Btrieve-файла, к которому Вы хотите получить доступ при выполнении некоторой операции. Btrieve ожидает, что блок позиции - это 128-байтовый блок памяти. В зависимости от прикладного языка блок позиции может быть строкой, массивом или частью буфера файла (как, например, в Бейсике).
Ваша прикладная программа должна присвоить уникальный блок позиции каждому Btrieve-файлу, его необходимо открыть и проинициализировать блоком пробелов или двоичных нулей до выполнения операции Open. Ваша прикладная программа НИКОГДА не должна писать в блок позиции после того, как он был проинициализирован и присвоен файлу, до тех пор пока Вы не
выполните над файлом операцию Close. Вы можете тогда переинициализировать блок позиции таким образом, чтобы его можно было использовать для другого Btrieve-файла. Запись в блок позиции для открытого Btrieve--файла может привести к ошибкам или повреждению файла,
БУФЕР ДАННЫХ
Буфер данных - блок памяти, содержащий специфический вид информации, требуемый Btrieve-операцией.
Для операций, в которые вовлечена запись или чтение Btrieve- файла, блок данных содержит записи, которые Ваша прикладная программа передает в файл и из файла. Например, когда Ваша прикладная программа ищет запись в файле, Btrieve читает запись из файла и затем записывает запись в область памяти, указанную как блок записи для этой операции.
Для других операций блок данных содержит спецификации файла, определения и другую информацию, необходимую Btrieve для выполнения операции. Когда Ваша прикладная программа выполняет операцию Create, например, она создает блок данных, содержащий спецификации для создаваемого Вами файла в порядке, ожидаемом Btrieve. Btrieve затем читает буфер данных и создает файл согласно спецификации.
Btrieve распознает буфер данных как ряд байтов в памяти. Он не различает какие-либо поля или переменные как объекты буфера данных. Вы можете определить буфер данных как любой тип переменных, поддерживаемых Вашим языком: структурой, массивом или простой строковой переменной. Для некоторых версий Бейсика буфер данных - область Блока управления файла (FCB), определяемая сегментом FIELD.
ДЛИНА БУФЕРА ДАННЫХ
Для всех операций, требующих буфер данных, Ваша прикладная программа должна задать для Btrieve длину буфера данных в байтах. Это необходимо потому, что
- Btrieve позволяет Вам определять файлы, допускающие записи
переменной длины. Вы должны задать, какое количество байтов
Вам хочется прочитать из этих записей или записать в них.
- Btrieve не распознает какие-либо структуры данных Вашей программы. Он явно не знает длину буфера данных в байтах. Это создает возможность записи данных, не имеющих значений, в Ваши файлы или возврата большего количества данных, чем может содержать буфер данных, и наложения записей на область памяти, следующую за буфером данных.
Ваша прикладная программа должна определить буфер данных как 2-байтовое целое, При всех операциях Btrieve записывает некоторое значение в параметр длины буфера данных, даже если это значение равно 0 (показывающее, что не было возвращено данных). Поэтому Вы должны всегда инициализировать буфер данных соответствующей длины
для какой-либо операции до вызова Btrieve.
Применяйте следующие правила для инициализации значения параметра длины буфера данных:
- Когда Вы читаете из существующего файла или пишете в существующий файл и файл содержит записи фиксированной длины, задавайте значение равное длине записи, определенное для этого файла.
- Когда Вы читаете из существующего файла или пишете в существующий файл и файл содержит записи переменной длины, задавайте значение равное длине, определенной для фиксировнной части записи, плюс количество байтов, которое Вы хотите читать или писать за фиксированной частью.
- Когда Вы запрашиваете какую-либо другую операцию, задавайте точную длину буфера данных, требуещуюся для этой операции. Эти требования включены в обсуждение Btrueve-операций в Главе 5 этого руководства.
БУФЕР КЛЮЧА
Ваша прикладная программа должна посылать переменную для буфера ключа при каждом обращении к Btrieve. В зависимости от операции Ваша прикладная программа может устанавливать буфер ключа в определенное значение или Btrieve может возвращать значение буфера ключа.
Для некоторых языков Btrieve не может явно определить длину буфера ключа. Поэтому Вы должны всегда удостовериться, что заданная Вами переменная для буфера ключа имеет достаточную длину для хранения всего значения, требуемого для операции. Иначе Btrieve-запросы могут повредить другие данные, хранимые в следующей за буфером ключа памяти.
НОМЕР КЛЮЧА
Параметр номера ключа всегда 2-байтовая целая переменная со знаком. Для большинства Btrieve-операций этот параметр сооббщает Record Manager о пути доступа в этой операции. Для других операций Ваша прикладная программа использует параметр номера ключа для задания режима открытия файла, шифровки, логического устройства или другой информации. Btrieve никогда не изменяет значение параметра номера ключа.
Когда Вы используете параметр номера ключа для задания пути доступа к файлу, номер должен быть от 0 до 23, т.к. Btrieve допускает до 24 ключей или ключевых сегментов в файле.
ИНТЕРФЕЙС ЯЗЫКА
Интерфейс языка обеспечивает связь между Вашей прикладной программой и Btrieve. Интерфейс языка специфичен для определенного языка, компилятора и среды.
Когда Ваша прикладная программа обращается к Btrieve, интерфейс делает предварительные проверки параметров и проверяет, находится ли Btrieve Record Manager резидентно в памяти. Если интерфейс не обнаруживает ошибок, он выполняет соответствующее обращение для операционной среды, активизируя программу Record Manager.
ПРИМЕЧАНИЕ: Информация об интерфейсах Бейсика, Паскаля, КОБОЛа и С включена в Главу 5 этого руководства. Для специальной информации об языках и компиляторах не включенных в Главу 5 см. файл INTERFACE.DOC на програмной дискете Btrieve.
| <<
| <
| >
| >>
|
Содержание
|