Особенности дополнения occurs. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Особенности дополнения occurs.



Дополнение occurs не ограничивает число строк, которые могут быть добавлены во внутреннюю таблицу. Например, если определить occurs 10, то во внутреннюю таблицу можно поместить больше 10 строк. Число строк, которые можно поместить во внутреннюю таблицу, теоретически ограничено только количеством виртуальной памяти, доступной на сервере приложений.

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

Как альтернатива, можно определить occurs 0. В этом случае система распределяет 8 КБ памяти за один раз.

При определении внутренней таблицы рекомендуется выбирать значение в дополнении occurs, равное среднему максимальному числу строк в таблице.

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

Для чтения данных из внутренней таблицы обычно используются два оператора:

§ loop at

§ read table

Оператор цикла loop at используется для чтения множества строк из внутренней таблицы, оператор read table — для чтения единственной строки.

Синтаксис оператора loop at:

loop at it [into wa ] [from m ] [to n ] [where exp ].

---

Endloop.

где:

it — имя внутренней таблицы

wa — имя рабочей области

m и n — целочисленные literals, константы или переменные, представляющие относительный номер ряда. Например, 1 означает первую строку в таблице, 2 означает вторую и т.д.

exp — логическое выражение, ограничивающее читаемые строки

--- — любое число строк программы (эти строки выполняются один раз для каждой строки, восстановленной из внутренней таблицы)

Синтаксис оператора read table:

read table it [into wa ] [index i | with key keyexp [binary search] ]

[comparing cmpexp ]

[transporting texp ].

где:

it — имя внутренней таблицы

wa — имя рабочей области

i — целочисленный literal, константа или переменная, представляющая относительный номера ряда. Например, 1 означает первую строку в таблице, 2 означает вторую и так далее

keyexp — выражение, представляющее значение, которое будет найдено

cmpexp — выражение сравнения, представляющее тест, который будет выполнен на найденной строке

texp — выражение, представляющее поля, которые будут транспортироваться в рабочую область после того, как строка будет найдена

(если определены и comparing, и transporting, то comparing должно быть на первом месте)

Чтение данных из внутренней таблицы используя оператор loop at, формат оператора.

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

Синтаксис оператора loop at:

loop at it [into wa ] [from m ] [to n ] [where exp ].

---

Endloop.

где:

it — имя внутренней таблицы

wa — имя рабочей области

m и n — целочисленные literals, константы или переменные, представляющие относительный номер ряда. Например, 1 означает первую строку в таблице, 2 означает вторую и т.д.

exp — логическое выражение, ограничивающее читаемые строки

--- — любое число строк программы (эти строки выполняются один раз для каждой строки, восстановленной из внутренней таблицы)

Строки читаются из внутренней таблицы по одной и помещаются последовательно в рабочую область. Строки программы между loop at и endloop выполняются для каждой прочитанной строки. Цикл заканчивается автоматически после прочтения последней строки, и тогда выполняется оператор после endloop.



Поделиться:


Последнее изменение этой страницы: 2017-01-19; просмотров: 70; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.43.140 (0.005 с.)