Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

ПРИЛОЖЕНИЕ G
| << | < | > | >>

ПРИЛОЖЕНИЕ G
РАСШИРЕННЫЕ ТИПЫ КЛЮЧЕЙ

Это приложение описывает коды расширенных типов ключей и внутренний формат храненния расширенных типов ключей, поддерживаемых Btrieve.

КОДЫ РАСШИРЕННЫХ ТИПОВ КЛЮЧЕЙ

          Задавайте расширенный тип ключа, используя код  из таблицы на
          Рисунке G.1.

                    ------------------------------------¬
                    ¦                                   ¦
                    ¦  Тип                        Код   ¦
                    ¦                                   ¦
                    ¦-----------------------------------¦
                    ¦  string                      0    ¦
                    ¦  integer                     1    ¦
                    ¦  float                       2    ¦
                    ¦  date                        3    ¦
                    ¦  time                        4    ¦
                    ¦  decimal                     5    ¦
                    ¦  money                       6    ¦
                    ¦  logical                     7    ¦
                    ¦  numeric                     8    ¦
                    ¦  bfloat                      9    ¦
                    ¦  lstring                     10   ¦
                    ¦  zstring                     11   ¦
                    ¦  unsigned binary             14   ¦
                    ¦  autoincrement               15   ¦
                    L------------------------------------

                                 Рисунок G.1
                        Коды расширенных типов ключей

РАСШИРЕННЫЕ ТИПЫ КЛЮЧЕЙ


AUTOINCREMENT

(Автоинкремент) Ключ-автоинкремент - целое число, длиной или 2 или 4 байта. Btrieve сортирует ключи-автоинкременты по их абсолютному значению, сравнивая значения хранящиеся в различных записях в слове справа налево. Ключи-автоинкременты позволяют Вам задавать ключ, для которого Btrieve будет прибавлять значение ключа при каждом добавлении записи в файл. К ключам-автоинкрементам применяются следующие ограничения: - Ключ-автоинкремент не допускает значения-дубликаты. - Ключ-автоинкремент не может быть сегментированным или быть сегментом другого ключа. - Ключ-автоинкремент не может перекрывать другой ключ.
          Следующие абзацы описывают, как Btrieve обрабатывает значения
          ключей-автоинкрементов при добавлении записей в файл.

          ЕСЛИ ВЫ ЗАДАЕТЕ ЗНАЧЕНИЕ "ДВОИЧНЫЙ 0" ДЛЯ КЛЮЧА-АВТОИНКРЕМЕНТА,
          Btrieve присвоит значение ключу по следующему принципу:

             - Если добавляемая запись - первая запись в файле, Btrieve
               присвоит ключу-автоинкременту значение 1 и добавит запись в
               файл.

             - Если в файле уже существуют записи, Btrieve присвоит ключу
               значение на единицу большее самого старшего существующего
               абсолютного значения в файле и добавит запись в файл.

          ЕСЛИ ВЫ ЗАДАЕТЕ НЕНУЛЕВОЕ ЗНАЧЕНИЕ ДЛЯ КЛЮЧА-АВТОИНКРЕМЕНТА,
          Btrieve добавит запись в файл и будет использовать заданное
          значение в качестве значения ключа. Если запись, содержащая это
          значение, уже существует в файле, Btrieve возвратит ненулевой
          статус и не добавит запись.

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

          Как упоминалось раньше, Btrieve всегда сортирует
          ключи-автоинкременты по их абсолютному значению. Если Вы задаете
          отрицательное значение для ключа-автоинкремента при добавлении
          записи или если при корректировки записи Вы делаете значение
          ключа-автоинкремента отрицательным, Btrieve отсортирует значение
          согласно абсолютному значению. Это позволяет Вам использовать
          отрицательные значения как флаг записей без изменения позиции
          записи в индексе. Вдобавок, когда Вы выполняете операцию Get и
          задаете отрицательное значение в буфере ключа, Btrieve обработает
          отрицательное значение как абсолютное значение ключа.


BFLOAT

Поле типа "bfloat" - действительное число одинарной или двойной точности, хранящееся в формате совместимым с Microsoft BASIC. Действительное число одинарной точности хранится с 23-битовой мантиссой и 8-битовой экспонентой, смещенной на 128, и битом знака. Внутреннее представление 4-байтового числа с плавающей запятой: 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 ----------------------------------------------------------------¬ ¦ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ¦ ¦ | | ¦ ¦ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ¦ L---------------------------------------------------------------- 8-битовая ¦ 23-битовая мантисса экспонента ¦ знак Представления действительного числа с двойной точностью - то же самое, что и числа с одинарной точностью, за исключением того, что мантисса - 55 бит вместо 23 бит.

DATE

Поля типа "дата" - 4-байтовые значения, имеющие следующее внутреннее представление: 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 ----------------------------------------------------------------¬ ¦ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ¦ ¦ | | ¦ ¦ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ¦ L---------------------------------------------------------------- год месяц день День и месяц - хранятся в 1-байтовом двоичном формате. Год - 2-байтовое двоичное число, представляющее полное значение года, не имеющего смещения относительно какого-либо года.

DECIMAL

Поля десятичного типа имеют внутреннеее представление как упакованные десятичные числа с двумя десятичными цифрами на байт. Этот формат совместим с типом данных COMP-3 в стандарте ANSI-74 Кобола. Внутреннее представление n-байтового десятичного поля:

                 байт 0       байт 1                        байт n-1

                               1 1 1 1 1 1 1
           0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6   ...
          -----------------------------------  ...       -----------------¬
          ¦ | | | | | | | | | | | | | | | |               | | | | | | | | ¦
          ¦       |       |       |       |               |       |       ¦
          ¦ | | | | | | | | | | | | | | | |               | | | | | | | | ¦
          L----------------------------------            ------------------

            цифра   цифра   цифра   цифра                   цифра   байт
              1       2       3       4                     2n-1    знака
          Байт знака - F или C для положительных чисел и D для
          отрицательных чисел. Обратите внимание, что десятичная точка
          опущена. Все значения ключа десятичного типа должны иметь одно и
          то же число десятичных знаков для правильной сортировки ключей.


FLOAT

Тип с плавающей запятой совместим со стандартом IEEE для действительных чисел с одинарной и двойной плотностью. Внутренний формат 4-байтового числа с плавающей запятой состоит из 23-битовой мантиссы, 8-битовой экспоненты со смещением 127 и бита знака. 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 ----------------------------------------------------------------¬ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ¦ | | | ¦ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ¦ ----------------------------------------------------------------  8-битовая 23-битовая мантисса | экспонента знак

          Поле типа с плавающей запятой в 8 байт имеет 52-битовую
          мантиссу, 11-битовую экспоненту со смещением 1023 и бит знака.
          Внутренний формат:

           байты 7-4

           6 6 6 6 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3
           3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2
           ---------------------------------------------------------------
          | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
          | |                     |                                       |
          | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
           ---------------------------------------------------------------
               11-битовая             20 бит мантиссы
           |     экспонента
          знак

байты 3-0

           3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
           1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
           ---------------------------------------------------------------
          | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
          |                                                               |
          | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
           ---------------------------------------------------------------
                                   32 бита мантиссы

INTEGER

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


LOGICAL

Логический тип ключа хранится как 1- или 2-байтовое значение. Btrieve упорядочивает ключи логического типа как строку. Это позволяет прикладной программе определять хранимые значения, представляющие истину или ложь.

LSTRING

Тип "l-строка" в Btrieve соответствует строке в Паскале. Он имеет те же самые характеристики как обычный строковый тип за исключением того, что первый байт строки содержит двоичное представление длины строки. Длина, хранящаяся в байте 0 l-строки определяет число значащих байтов. Btrieve игнорирует все значения, расположенные за строкой заданной длины.

MONEY

Внутреннее представление типа "деньги" - точно такое же, как и для десятичного типа.

NUMERIC

Цифровые значения хранятся как ASCII-строки, выравненные по правой границе с добавлением ведущих нолей. Самый правый байт числа включает вложенный знак. Следующая таблица показывает, как представлена самая правая цифра, когда она содержит вложенный знак для положительных и отрицательных чисел. Число Положительное Отрицательное 2 B K 3 C L 4 D M 5 E N 6 F O 7 G P 8 H Q 9 I R 0 { } Для положительных чисел самая правая цифра может быть представлена как 1-0 вместо A-{. Btrieve рассматривает однозначно положительные числа, представленные обоими способами.

STRING

Строковый тип в Btrieve - последовательность символов, упорядоченных слева направо. Каждый символ представлен в ASCII формате в одном байте.

TIME

Поля типа "время" - 4-байтовые значение, имеющее следующий внутренний формат: 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 --------------------------------------------------------------- | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --------------------------------------------------------------- часы минуты секунды сотые доли секунды

UNSIGNED BINARY

Btrieve сортирует беззнаковые двоичные ключи как беззнаковые целые. Беззнаковый двоичный ключ содержит четное число байт. Btrieve сравнивает беззнаковые двоичные ключи целым словом справо налево.

ZSTRING

Тип "z-строка" в Btrieve соответствует строке в C. Он имеет те же самые характеристики как обычный строковый тип за исключением того, что тип "z-строка" завершается байтом, содержащим двоичный 0. Btrieve игнорирует все значения за первым двоичным 0 в z-строке.

| << | < | > | >>
Содержание

  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте