
- •Что такое внутренняя таблицы, её тело и строка заголовка.
- •Определение внутренней таблицы со строкой заголовка используя begin of и like.
- •Определение внутренней таблицы без строки заголовка.
- •Когда выделяется память для внутренней таблицы.
- •Порядок добавления строк во внутреннюю таблицу.
- •Добавление данных во внутреннюю таблицу, используя оператор append, формат оператора, пример использования.
- •Особенности дополнения occurs.
- •Операторы, используемые для чтения данных из внутренней таблицы, их форматы.
- •Чтение данных из внутренней таблицы используя оператор loop at, формат оператора.
- •Работа операторов exit, continue и check внутри цикла loop at/endloop.
- •Чтение единственной строки, используя оператор read table, формат оператора.
- •Дополнение index оператора read table, его особенности.
- •Дополнение with key keyexp оператора read table, его особенности.
- •Дополнение binary search оператора read table, его особенности.
- •Дополнение comparing оператора read table, его особенности.
- •Дополнение transporting оператора read table, его особенности.
- •Формы для выражения transporting в операторе read table:
- •Сортировка внутренней таблицы используя оператор sort, его дополнения и особенности.
- •Особенности дополнения as text.
- •Оператор тела таблицы, получение информации о внутренней таблице.
- •Оператор describe table, его описание и особенности работы.
- •Оператор append lines, его описание и особенности работы.
- •Оператор insert lines, его описание и особенности работы.
- •Оператор editor-call, его описание и особенности работы.
- •Оператор insert, его описание и особенности работы.
- •Оператор modify, его описание и особенности работы.
- •Оператор free, его описание и особенности работы.
- •Оператор delete, его описание и особенности работы.
- •Оператор clear, его описание и особенности работы.
- •Оператор refresh, его описание и особенности работы.
- •Оператор append sorted by, его описание и особенности работы.
- •Оператор collect, его описание и особенности работы.
- •Копирование информации из одной внутренней таблицы в другую.
- •Оператор select … into table, дополнения, особенности оператора.
- •Запишите различные формы оператора select для заполнения внутренней таблицы в порядке убывания эффективности оператора.
- •Управление процессом обработки с помощью оператора at first / endat.
- •Управление процессом обработки с помощью оператора at last / endat.
- •Управление процессом обработки с помощью оператора at new / endat.
- •Управление процессом обработки с помощью оператора at end of / endat.
- •Управление процессом обработки с помощью оператора sum.
- •Управление процессом обработки с помощью оператора on change of / endon.
Оператор append sorted by, его описание и особенности работы.
Предположим, что нужно создать список 10 лучших коммерческих представителей компании. Если есть способ получить общий объем продаж для каждого, можно сделать следующее:
добавить всех представителей и их общий объем продаж во внутреннюю таблицу
отсортировать их по убыванию
вывести первые 10.
Оператор append sorted by приводит к тому же результату и является более эффективным.
Синтаксис оператора append sorted by:
append [wa to] it sorted by c.
где:
it — имя внутренней таблицы
wa — рабочая область, имеющая ту же структуру, что и строка внутренней таблицы
c — компонента it
Особенности использования оператора append sorted by:
Если wa to не определено, добавляется строка из строки заголовка
Если wa to определено, добавляется строка из рабочей области wa
Только одна компонента c может быть определена
Оператор append sorted by берет строку из рабочей области и вставляет ее во внутреннюю таблицу в порядке сортировки. У него есть два необычных свойства:
Число строк, которые могут быть добавлены, ограничено значением в выражении occurs. Например, в случае occurs 10, максимум 10 строк могут быть добавлено во внутреннюю таблицу. Это — единственная ситуация, где occurs лимитирует число строк, которые могут быть добавлены во внутреннюю таблицу
Он сортирует только в порядке убывания
Оператор collect, его описание и особенности работы.
Используя оператор collect, можно просуммировать общие количества в пределах внутренней таблицы по ходу ее заполнения.
Синтаксис оператора collect:
collect [wa into] it.
где:
it — внутренняя таблица
wa — рабочая область той же структуры, что и у it
Особенности использования оператора collect:
Если дополнение wa into определено, строка, которая будет обработана, берется из явной рабочей области wa. В этом случае строка заголовка внутренней таблицы (если она у it есть) будет проигнорирована
Если дополнение wa into не определено, у внутренней таблицы должна быть строка заголовка. Строка, которая будет обработана, берется из строки заголовка it
При выполнении оператора collect система формирует ключ из заданных по умолчанию полей ключа в рабочей области. Заданные по умолчанию поля ключа — символьные поля (типа c, n, d, t и x). Поэтому ключ составляется из значений от всех полей типа c, n, d, t и x. Не имеет значения, находятся ли они друг около друга или отделены друг от друга другими полями
Затем система ищет в теле внутренней таблицы строку, у которой тот же ключ, что и ключ в рабочей области. Если она не находит такую строку, строка из рабочей области добавляется в конец таблицы. Если же находит, то числовые поля (типа i, p и f) из рабочей области добавляются к соответствующим полям в найденной строке.
Копирование информации из одной внутренней таблицы в другую.
Данные, которые помещают во внутреннюю таблицу, обычно содержаться в одной или более таблицах базы данных.
Для заполнения внутренней таблицы используются 2 способа:
выбор множества строк непосредственно в тело внутренней таблицы
выбор единичных строк в рабочую область и затем добавление во внутреннюю таблицу
Выбор множества строк во внутреннюю таблицу
Для выбора множества строк непосредственно в тело внутренней таблицы используется дополнение into table в операторе select. Этот оператор берет выбранные строки и размещает их в тело внутренней таблицы за одну операцию, известную как «операция над массивом». При этом не нужны и не используются никакие рабочие области.
Операция над массивом (array operation) — любой оператор, который выполняет операцию над множеством строк внутренней таблицы за один раз. Операции над массивом всегда более эффективны, чем операции над одной строкой.
select into table — самый эффективный способ заполнить внутреннюю таблицу из таблицы базы данных.
Синтаксис дополнения into table оператора select:
(a) select *
(b) select f1 f2 . . .
from dbtab into [corresponding fields of] table it.
где:
dbtab — имя таблицы базы данных
f1 и f2 — поля в таблице dbtab
it — имя внутренней таблицы
Особенности использования дополнения into table оператора select:
у it может быть строка заголовка (header line)
другие дополнения, такие как where и order by, могут следовать после it
endselect не используется с into table. select into table не запускает цикл, следовательно endselect не нужен
select into table помещает все выбранные строки непосредственно в тело it. Существующее перед заполнением содержимое it теряется.
Добавление по одной строке с использованием select
Использование select для добавления строк по одной требует использования рабочей области и второго оператора: append, insert или collect. Исключение из select дополнения table назначает строку на рабочую область. Обычно используют строку заголовка внутренней таблицы как явную рабочую область. Альтернативно можно использовать заданную по умолчанию рабочую область таблицы (определенную в tables).