Ims Db 简明教程
IMS DB - Data Retrieval
IMS DL/I 调用中使用的各种数据检索方法如下 −
-
GU Call
-
GN Call
-
Using Command Codes
-
Multiple Processing
让我们考虑以下 IMS 数据库结构,以了解数据检索函数调用 −
GU Call
GU 调用的基本原理如下 −
-
GU 调用称为 Get Unique 调用。它用于随机处理。
-
如果应用程序没有定期更新数据库,或者数据库更新数量较少,那么可以使用随机处理。
-
GU 调用用于将指针置于某个特定位置,以便后续顺序检索。
-
GU 调用独立于由前一个调用建立的指针位置。
-
GU 调用处理基于调用语句中所提供的唯一键字段。
-
如果我们提供了非唯一的键字段,那么 DL/I 将返回该键字段的第一个分段出现。
CALL 'CBLTDLI' USING DLI-GU
PCB-NAME
IO-AREA
LIBRARY-SSA
BOOKS-SSA
ENGINEERING-SSA
IT-SSA
上面的示例显示,我们通过提供一组完整的限定 SSA 来发出 GU 调用。它包括了从根级别到我们要检索的分段出现的全部键字段。
GN Call
GN调用的基本原理如下:
-
GN 调用称为“获取下一个”调用。它用于基本的顺序处理。
-
数据库中指针的初始位置在第一个数据库记录的根分段之前。
-
在成功的 GN 调用之后,数据库指针位置在序列中的下一个分段出现之前。
-
GN 调用根据先前的调用所建立的位置开始遍历数据库。
-
如果 GN 调用是非限定的,那么它将返回数据库中下一个分段出现,而不论其类型,按照层次结构顺序。
-
如果 GN 调用包括 SSA,那么 DL/I 仅检索满足所有指定 SSA 要求的分段。
CALL 'CBLTDLI' USING DLI-GN
PCB-NAME
IO-AREA
BOOKS-SSA
上面的示例显示我们发出一个 GN 调用,提供开始读取记录的顺序位置。它获取 BOOKS 段的第一个出现。
Command Codes
命令码与调用一起用于获取段出现。下面将讨论与调用一起使用的各种命令码。
F Command Code
重点注意事项:
-
当在调用中指定 F 命令码时,该调用处理段的第一个出现。
-
当我们想要顺序处理时,可以使用 F 命令码,它可与 GN 调用和 GNP 调用一起使用。
-
如果我们使用 GU 调用指定 F 命令码,则它没有任何意义,因为 GU 调用默认获取第一个段出现。
D Command Code
重点注意事项:
-
D 命令码用于仅使用单个调用获取多个段出现。
-
通常,DL/I 对 SSA 中指定的最低级别段进行操作,但在很多情况下,我们也需要其他级别的段数据。在这些情况下,我们可以使用 D 命令码。
-
D 命令码使得可以轻松检索段的整个路径。
C Command Code
重点注意事项:
-
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 Command Code
重点注意事项:
-
当我们发出 GU 或 GN 调用时,DL/I 会在检索到的最低级别段处建立其父系关系。
-
如果我们包括 P 命令代码,那么 DL/I 将在分层路径的高级别段上建立其父级关系。