IMS DB - DL/I 功能
DL/I 函数是 DL/I 调用中使用的第一个参数。该函数告知 IMS DL/I 调用将在 IMS 数据库上执行哪个操作。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 函数,程序员需要在 DL/I 调用中编写 05 级数据名称之一,例如 DLI-GU,因为 COBOL 不允许在 CALL 语句上编写文字。
DL/I 函数分为三类:Get、Update 和 Other 函数。让我们详细讨论它们中的每一个。
获取函数
获取函数类似于任何编程语言支持的读取操作。Get 函数用于从 IMS DL/I 数据库获取段。IMS DB 中使用以下 Get 函数 -
- 变得独一无二
- 下一步
- 在父级中获取下一个
- 保持独特
- 抓住下一个
- 在父级中保持下一步
让我们考虑以下 IMS 数据库结构来理解 DL/I 函数调用 -
变得独一无二
“GU”代码用于“获取唯一”功能。它的工作原理类似于 COBOL 中的随机读取语句。它用于根据字段值获取特定段的出现。可以使用段搜索参数来提供字段值。GU 调用的语法如下 -
CALL 'CBLTDLI' USING DLI-GU PCB Mask Segment I/O Area [Segment Search Arguments]
如果通过为 COBOL 程序中的所有参数提供适当的值来执行上述调用语句,则可以从数据库中检索段 I/O 区域中的段。在上面的示例中,如果您提供“图书馆”、“杂志”和“健康”字段值,那么您将获得所需的“健康”段。
下一步
“GN”代码用于“获取下一个”功能。它的工作原理类似于 COBOL 中的 read next 语句。它用于获取序列中出现的段。用于访问数据段出现的预定义模式是沿着层次结构向下,然后从左到右。GN 调用的语法如下 -
CALL 'CBLTDLI' USING DLI-GN PCB Mask Segment I/O Area [Segment Search Arguments]
如果通过为 COBOL 程序中的所有参数提供适当的值来执行上述调用语句,则可以按顺序从数据库中检索段 I/O 区域中出现的段。在上面的示例中,它首先访问 Library 段,然后访问 Books 段,依此类推。我们一次又一次地执行 GN 调用,直到到达我们想要的段出现位置。
在父级中获取下一个
“GNP”代码用于在父级中获取下一个。该函数用于按顺序检索从属于已建立的父段的段出现次数。GNP 调用的语法如下 -
CALL 'CBLTDLI' USING DLI-GNP PCB Mask Segment I/O Area [Segment Search Arguments]
保持独特
“GHU”代码用于“获取唯一”。Hold 函数指定我们将在检索后更新该段。Get Hold Unique 函数对应于 Get Unique 调用。下面给出的是 GHU 调用的语法 -
CALL 'CBLTDLI' USING DLI-GHU PCB Mask Segment I/O Area [Segment Search Arguments]
抓住下一个
“GHN”代码用于“获取下一步”。Hold 函数指定我们将在检索后更新该段。Get Hold Next 功能对应于 Get Next 调用。下面给出的是 GHN 调用的语法 -
CALL 'CBLTDLI' USING DLI-GHN PCB Mask Segment I/O Area [Segment Search Arguments]
在父级中保持下一步
“GHNP”代码用于在父级中获取下一个。Hold 函数指定我们将在检索后更新该段。“Parent 内的 Get Hold Next”功能对应于“Parent 内的 Get Next”调用。下面给出的是 GHNP 调用的语法 -
CALL 'CBLTDLI' USING DLI-GHNP PCB Mask Segment I/O Area [Segment Search Arguments]
更新功能
更新函数类似于任何其他编程语言中的重写或插入操作。更新函数用于更新 IMS DL/I 数据库中的段。在使用更新函数之前,必须对段出现成功调用 Hold 子句。IMS DB 中使用以下更新函数 -
- 插入
- 删除
- 代替
插入
“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”代码用于在父级中获取下一个。Replace 函数用于替换 IMS DL/I 数据库中的段。下面给出的是 REPL 调用的语法 -
CALL 'CBLTDLI' USING DLI-REPL PCB Mask Segment I/O Area [Segment Search Arguments]
其他功能
IMS DL/I 调用中使用以下其他函数 -
- 检查站
- 重新开始
- 印刷电路板
检查站
“CHKP”代码用于检查点功能。它用于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 函数用于 IMS DL/I 数据库中的 CICS 程序。下面给出的是 PCB 调用的语法 -
CALL 'CBLTDLI' USING DLI-PCB PCB Mask Segment I/O Area [Segment Search Arguments]
您可以在恢复章节中找到有关这些功能的更多详细信息。