Учебники

IMS DB — извлечение данных

Различные методы извлечения данных, используемые в вызовах IMS DL / I, следующие:

  • GU Call
  • GN Call
  • Использование командных кодов
  • Многократная Обработка

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

IMS DATABASE1

GU Call

Основы вызова ГУ следующие:

  • Вызов ГУ известен как Получить уникальный вызов. Используется для случайной обработки.

  • Если приложение не обновляет базу данных регулярно или количество обновлений базы данных меньше, мы используем случайную обработку.

  • Вызов GU используется для размещения указателя в определенной позиции для дальнейшего последовательного поиска.

  • Вызовы GU не зависят от позиции указателя, установленной предыдущими вызовами.

  • Обработка вызовов ГУ основана на уникальных ключевых полях, указанных в операторе вызова.

  • Если мы предоставляем ключевое поле, которое не является уникальным, то DL / I возвращает вхождение первого сегмента ключевого поля.

Вызов ГУ известен как Получить уникальный вызов. Используется для случайной обработки.

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

Вызов GU используется для размещения указателя в определенной позиции для дальнейшего последовательного поиска.

Вызовы GU не зависят от позиции указателя, установленной предыдущими вызовами.

Обработка вызовов ГУ основана на уникальных ключевых полях, указанных в операторе вызова.

Если мы предоставляем ключевое поле, которое не является уникальным, то DL / I возвращает вхождение первого сегмента ключевого поля.

CALL 'CBLTDLI' USING DLI-GU
                     PCB-NAME
                     IO-AREA
                     LIBRARY-SSA
                     BOOKS-SSA
                     ENGINEERING-SSA
                     IT-SSA

Приведенный выше пример показывает, что мы выполняем вызов GU, предоставляя полный набор квалифицированных SSA. Он включает в себя все ключевые поля, начиная с корневого уровня до вхождения сегмента, который мы хотим получить.

GU Call Соображения

Если мы не предоставляем полный набор квалифицированных SSA в вызове, то DL / I работает следующим образом —

  • Когда мы используем неквалифицированный SSA в вызове GU, DL / I получает доступ к первому вхождению сегмента в базе данных, которое соответствует указанным вами критериям.

  • Когда мы выполняем вызов GU без каких-либо SSA, DL / I возвращает первое вхождение корневого сегмента в базу данных.

  • Если некоторые SSA на промежуточных уровнях не упоминаются в вызове, то DL / I использует либо установленную позицию, либо значение по умолчанию неквалифицированного SSA для сегмента.

Когда мы используем неквалифицированный SSA в вызове GU, DL / I получает доступ к первому вхождению сегмента в базе данных, которое соответствует указанным вами критериям.

Когда мы выполняем вызов GU без каких-либо SSA, DL / I возвращает первое вхождение корневого сегмента в базу данных.

Если некоторые SSA на промежуточных уровнях не упоминаются в вызове, то DL / I использует либо установленную позицию, либо значение по умолчанию неквалифицированного SSA для сегмента.

Коды состояния

В следующей таблице показаны соответствующие коды состояния после вызова ГУ —

S.No Код состояния и описание
1

пространства

Успешный звонок

2

GE

DL / Я не смог найти сегмент, отвечающий критериям, указанным в звонке

пространства

Успешный звонок

GE

DL / Я не смог найти сегмент, отвечающий критериям, указанным в звонке

GN Call

Основы GN call следующие:

  • Звонок GN называется вызовом Get Next. Используется для базовой последовательной обработки.

  • Начальная позиция указателя в базе данных находится перед корневым сегментом первой записи базы данных.

  • Положение указателя базы данных находится перед следующим появлением сегмента в последовательности после успешного вызова GN.

  • Вызов GN начинается через базу данных с позиции, установленной предыдущим вызовом.

  • Если вызов GN неквалифицирован, он возвращает следующее вхождение сегмента в базу данных независимо от его типа в иерархической последовательности.

  • Если вызов GN включает SSA, то DL / I извлекает только те сегменты, которые соответствуют требованиям всех указанных SSA.

Звонок GN называется вызовом Get Next. Используется для базовой последовательной обработки.

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

Положение указателя базы данных находится перед следующим появлением сегмента в последовательности после успешного вызова GN.

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

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

Если вызов GN включает SSA, то DL / I извлекает только те сегменты, которые соответствуют требованиям всех указанных SSA.

CALL 'CBLTDLI' USING DLI-GN
                     PCB-NAME
                     IO-AREA
                     BOOKS-SSA

Приведенный выше пример показывает, что мы выполняем вызов GN, обеспечивающий начальную позицию для последовательного чтения записей. Он получает первое вхождение сегмента BOOKS.

Коды состояния

В следующей таблице приведены соответствующие коды состояния после вызова GN —

S.No Код состояния и описание
1

пространства

Успешный звонок

2

GE

DL / Я не смог найти сегмент, отвечающий критериям, указанным в вызове.

3

Джорджия

Неквалифицированный вызов GN перемещается на один уровень вверх по иерархии базы данных для извлечения сегмента.

4

гигабайт

Конец базы данных достигнут, а сегмент не найден.

Г.К.

Неквалифицированный вызов GN пытается извлечь сегмент определенного типа, отличный от только что извлеченного, но остается на том же уровне иерархии.

пространства

Успешный звонок

GE

DL / Я не смог найти сегмент, отвечающий критериям, указанным в вызове.

Джорджия

Неквалифицированный вызов GN перемещается на один уровень вверх по иерархии базы данных для извлечения сегмента.

гигабайт

Конец базы данных достигнут, а сегмент не найден.

Г.К.

Неквалифицированный вызов GN пытается извлечь сегмент определенного типа, отличный от только что извлеченного, но остается на том же уровне иерархии.

Командные коды

Коды команд используются с вызовами для получения вхождения сегмента. Различные коды команд, используемые с вызовами, обсуждаются ниже.

Код команды F

Обращает на себя внимание —

  • Когда в команде указан код команды F, этот вызов обрабатывает первое вхождение сегмента.

  • Коды F-команд можно использовать, когда мы хотим обрабатывать последовательно, и их можно использовать с вызовами GN и вызовами GNP.

  • Если мы указываем код команды F с помощью вызова GU, это не имеет никакого значения, поскольку вызовы GU по умолчанию извлекают вхождение первого сегмента.

Когда в команде указан код команды F, этот вызов обрабатывает первое вхождение сегмента.

Коды F-команд можно использовать, когда мы хотим обрабатывать последовательно, и их можно использовать с вызовами GN и вызовами GNP.

Если мы указываем код команды F с помощью вызова GU, это не имеет никакого значения, поскольку вызовы GU по умолчанию извлекают вхождение первого сегмента.

L Код команды

Обращает на себя внимание —

  • Когда в вызове указан код команды L, этот вызов обрабатывает последнее вхождение сегмента.

  • Коды команд L могут использоваться, когда мы хотим обрабатывать последовательно, и это может использоваться с вызовами GN и вызовами GNP.

Когда в вызове указан код команды L, этот вызов обрабатывает последнее вхождение сегмента.

Коды команд L могут использоваться, когда мы хотим обрабатывать последовательно, и это может использоваться с вызовами GN и вызовами GNP.

Код команды D

Обращает на себя внимание —

  • Код команды D используется для выборки более чем одного вхождения сегмента, используя всего один вызов.

  • Обычно DL / I работает с сегментом самого низкого уровня, указанным в SSA, но во многих случаях нам нужны данные и с других уровней. В этих случаях мы можем использовать код команды D.

  • Код команды D облегчает поиск по всему пути сегментов.

Код команды D используется для выборки более чем одного вхождения сегмента, используя всего один вызов.

Обычно DL / I работает с сегментом самого низкого уровня, указанным в SSA, но во многих случаях нам нужны данные и с других уровней. В этих случаях мы можем использовать код команды D.

Код команды D облегчает поиск по всему пути сегментов.

Код команды С

Обращает на себя внимание —

  • Код команды C используется для объединения ключей.

  • Использование реляционных операторов немного сложнее, так как нам нужно указать имя поля, реляционный оператор и значение поиска. Вместо этого мы можем использовать код команды C для предоставления связанного ключа.

Код команды C используется для объединения ключей.

Использование реляционных операторов немного сложнее, так как нам нужно указать имя поля, реляционный оператор и значение поиска. Вместо этого мы можем использовать код команды C для предоставления связанного ключа.

В следующем примере показано использование кода команды C —

01 LOCATION-SSA.
   05 FILLER		     PIC X(11) VALUE INLOCSEG*C(‘.
   05 LIBRARY-SSA      PIC X(5).
   05 BOOKS-SSA        PIC X(4).
   05 ENGINEERING-SSA  PIC X(6).
   05 IT-SSA           PIC X(3)
   05 FILLER		     PIC X	VALUE ‘)’.

CALL 'CBLTDLI' USING DLI-GU
                     PCB-NAME
                     IO-AREA
                     LOCATION-SSA

Код команды P

Обращает на себя внимание —

  • Когда мы выполняем вызов GU или GN, DL / I устанавливает свое происхождение в сегменте самого низкого уровня, который извлекается.

  • Если мы включим код команды P, то DL / I устанавливает свое происхождение в сегменте более высокого уровня в иерархическом пути.

Когда мы выполняем вызов GU или GN, DL / I устанавливает свое происхождение в сегменте самого низкого уровня, который извлекается.

Если мы включим код команды P, то DL / I устанавливает свое происхождение в сегменте более высокого уровня в иерархическом пути.

Код команды U

Обращает на себя внимание —

  • Когда в неквалифицированном SSA в вызове GN указан код команды U, DL / I ограничивает поиск сегмента.

  • Код команды U игнорируется, если он используется с квалифицированным SSA.

Когда в неквалифицированном SSA в вызове GN указан код команды U, DL / I ограничивает поиск сегмента.

Код команды U игнорируется, если он используется с квалифицированным SSA.

V Код команды

Обращает на себя внимание —

  • Код команды V работает аналогично коду команды U, но он ограничивает поиск сегмента на определенном уровне и всех уровнях выше иерархии.

  • Код команды V игнорируется при использовании с квалифицированным SSA.

Код команды V работает аналогично коду команды U, но он ограничивает поиск сегмента на определенном уровне и всех уровнях выше иерархии.

Код команды V игнорируется при использовании с квалифицированным SSA.

Код Q команды

Обращает на себя внимание —

  • Код команды Q используется для постановки в очередь или резервирования сегмента для эксклюзивного использования вашей прикладной программой.

  • Код команды Q используется в интерактивной среде, где другая программа может внести изменения в сегмент.

Код команды Q используется для постановки в очередь или резервирования сегмента для эксклюзивного использования вашей прикладной программой.

Код команды Q используется в интерактивной среде, где другая программа может внести изменения в сегмент.

Многократная Обработка

Программа может иметь несколько позиций в базе данных IMS, которая называется многократной обработкой. Многократную обработку можно выполнить двумя способами:

  • Несколько печатных плат
  • Многократное Позиционирование

Несколько печатных плат

Несколько плат могут быть определены для одной базы данных. Если имеется несколько печатных плат, то прикладная программа может иметь разные представления о ней. Этот метод для реализации множественной обработки неэффективен из-за накладных расходов, налагаемых дополнительными печатными платами.

Многократное Позиционирование

Программа может поддерживать несколько позиций в базе данных, используя одну печатную плату. Это достигается путем поддержания отдельной позиции для каждого иерархического пути. Множественное позиционирование используется для одновременного доступа к сегментам двух или более типов.