Функция DL / I — это первый параметр, который используется в вызове DL / I. Эта функция сообщает, какая операция будет выполняться в базе данных IMS с помощью вызова IMS DL / I. Синтаксис функции DL / I следующий:
01 DLI-FUNCTIONS. 05 DLI-GU PIC X(4) VALUE 'GU '. 05 DLI-GHU PIC X(4) VALUE 'GHU '. 05 DLI-GN PIC X(4) VALUE 'GN '. 05 DLI-GHN PIC X(4) VALUE 'GHN '. 05 DLI-GNP PIC X(4) VALUE 'GNP '. 05 DLI-GHNP PIC X(4) VALUE 'GHNP'. 05 DLI-ISRT PIC X(4) VALUE 'ISRT'. 05 DLI-DLET PIC X(4) VALUE 'DLET'. 05 DLI-REPL PIC X(4) VALUE 'REPL'. 05 DLI-CHKP PIC X(4) VALUE 'CHKP'. 05 DLI-XRST PIC X(4) VALUE 'XRST'. 05 DLI-PCB PIC X(4) VALUE 'PCB '.
Этот синтаксис представляет следующие ключевые моменты —
-
Для этого параметра мы можем предоставить любое четырехзначное имя в качестве поля хранения для хранения кода функции.
-
Функциональный параметр DL / I кодируется в разделе рабочего хранилища программы COBOL.
-
Для указания функции DL / I программисту необходимо кодировать одно из имен данных уровня 05, таких как DLI-GU, в вызове DL / I, поскольку COBOL не позволяет кодировать литералы в операторе CALL.
-
Функции DL / I разделены на три категории: функции «Получить», «Обновить» и «Другие». Давайте обсудим каждый из них подробно.
Для этого параметра мы можем предоставить любое четырехзначное имя в качестве поля хранения для хранения кода функции.
Функциональный параметр DL / I кодируется в разделе рабочего хранилища программы COBOL.
Для указания функции DL / I программисту необходимо кодировать одно из имен данных уровня 05, таких как DLI-GU, в вызове DL / I, поскольку COBOL не позволяет кодировать литералы в операторе CALL.
Функции DL / I разделены на три категории: функции «Получить», «Обновить» и «Другие». Давайте обсудим каждый из них подробно.
Получить функции
Функции Get аналогичны операции чтения, поддерживаемой любым языком программирования. Функция Get используется для извлечения сегментов из базы данных IMS DL / I. Следующие функции Get используются в IMS DB —
- Получить уникальный
- Получить следующий
- Получить следующий в рамках родительского
- Get Hold Unique
- Get Hold Next
- Держись рядом с родителем
Давайте рассмотрим следующую структуру базы данных IMS, чтобы понять вызовы функций DL / I:
Получить уникальный
Код GU используется для функции Get Unique. Он работает так же, как оператор случайного чтения в языке COBOL. Он используется для выборки конкретного вхождения сегмента на основе значений поля. Значения полей могут быть предоставлены с использованием аргументов поиска сегмента. Синтаксис вызова GU выглядит следующим образом:
CALL 'CBLTDLI' USING DLI-GU PCB Mask Segment I/O Area [Segment Search Arguments]
Если вы выполнили приведенный выше оператор вызова, предоставив соответствующие значения для всех параметров в программе COBOL, вы можете извлечь сегмент в области ввода / вывода сегмента из базы данных. В приведенном выше примере, если вы предоставите значения полей «Библиотека», «Журналы» и «Здоровье», вы получите желаемое вхождение сегмента «Здоровье».
Получить следующий
Код GN используется для функции Get Next. Он работает аналогично следующему утверждению в COBOL. Он используется для извлечения вхождений сегмента в последовательности. Предопределенный шаблон для доступа к вхождениям сегментов данных располагается вниз по иерархии, затем слева направо. Синтаксис вызова GN выглядит следующим образом:
CALL 'CBLTDLI' USING DLI-GN PCB Mask Segment I/O Area [Segment Search Arguments]
Если вы выполнили вышеуказанный оператор вызова, предоставив соответствующие значения для всех параметров в программе COBOL, вы можете извлечь вхождение сегмента в область ввода-вывода сегмента из базы данных в последовательном порядке. В приведенном выше примере он начинается с доступа к сегменту библиотеки, затем к сегменту книг и т. Д. Мы выполняем вызов GN снова и снова, пока не достигнем нужного вхождения сегмента.
Получить следующий в рамках родительского
Код GNP используется для Get Next в Parent. Эта функция используется для извлечения вхождений сегмента в последовательности, подчиненной установленному родительскому сегменту. Синтаксис вызова ВНП выглядит следующим образом:
CALL 'CBLTDLI' USING DLI-GNP PCB Mask Segment I/O Area [Segment Search Arguments]
Get Hold Unique
Код «GHU» используется для Get Hold Unique. Функция Hold указывает, что мы собираемся обновить сегмент после извлечения. Функция Get Hold Unique соответствует вызову Get Unique. Ниже приведен синтаксис вызова GHU —
CALL 'CBLTDLI' USING DLI-GHU PCB Mask Segment I/O Area [Segment Search Arguments]
Get Hold Next
Код «GHN» используется для Get Hold Next. Функция Hold указывает, что мы собираемся обновить сегмент после извлечения. Функция Get Hold Next соответствует вызову Get Next. Ниже приведен синтаксис вызова GHN —
CALL 'CBLTDLI' USING DLI-GHN PCB Mask Segment I/O Area [Segment Search Arguments]
Держись рядом с родителем
Код «GHNP» используется для Get Hold Next в Parent. Функция Hold указывает, что мы собираемся обновить сегмент после извлечения. Функция Get Hold Next в Parent соответствует функции Get Next в Parent. Ниже приведен синтаксис вызова GHNP —
CALL 'CBLTDLI' USING DLI-GHNP PCB Mask Segment I/O Area [Segment Search Arguments]
Функции обновления
Функции обновления аналогичны операциям перезаписи или вставки на любом другом языке программирования. Функции обновления используются для обновления сегментов в базе данных IMS DL / I. Перед использованием функции обновления должен быть успешный вызов с предложением Hold для вхождения сегмента. В базе данных IMS используются следующие функции обновления:
- Вставить
- удалять
- замещать
Вставить
Код ISRT используется для функции вставки. Функция ISRT используется для добавления нового сегмента в базу данных. Он используется для изменения существующей базы данных или загрузки новой базы данных. Ниже приведен синтаксис вызова ISRT —
CALL 'CBLTDLI' USING DLI-ISRT PCB Mask Segment I/O Area [Segment Search Arguments]
удалять
Код «DLET» используется для функции «Удалить». Он используется для удаления сегмента из базы данных IMS DL / I. Ниже приведен синтаксис вызова DLET —
CALL 'CBLTDLI' USING DLI-DLET PCB Mask Segment I/O Area [Segment Search Arguments]
замещать
Код «REPL» используется для Get Hold Next в Parent. Функция Replace используется для замены сегмента в базе данных IMS DL / I. Ниже приведен синтаксис вызова REPL —
CALL 'CBLTDLI' USING DLI-REPL PCB Mask Segment I/O Area [Segment Search Arguments]
Другие функции
Следующие другие функции используются в вызовах IMS DL / I —
- Контрольно-пропускной пункт
- Запустить снова
- печатная плата
Контрольно-пропускной пункт
Код «CHKP» используется для функции Checkpoint. Он используется в функциях восстановления IMS. Ниже приведен синтаксис вызова CHKP —
CALL 'CBLTDLI' USING DLI-CHKP PCB Mask Segment I/O Area [Segment Search Arguments]
Запустить снова
Код XRST используется для функции перезапуска. Он используется в функциях перезапуска IMS. Ниже приведен синтаксис вызова XRST —
CALL 'CBLTDLI' USING DLI-XRST PCB Mask Segment I/O Area [Segment Search Arguments]
печатная плата
Функция PCB используется в программах CICS в базе данных IMS DL / I. Ниже приведен синтаксис вызова PCB —
CALL 'CBLTDLI' USING DLI-PCB PCB Mask Segment I/O Area [Segment Search Arguments]
Вы можете найти более подробную информацию об этих функциях в главе восстановления.