IMS 数据库 – DL/I 函数
IMS 数据库 – 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 和其他函数。让我们详细讨论它们中的每一个。
获取函数
Get 函数类似于任何编程语言都支持的读取操作。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 区域中的段。在上面的示例中,如果您提供 Library、Magazines 和 Health 的字段值,那么您将获得 Health 段的期望出现次数。
下一步
“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’ 代码用于 Get Hold Unique。Hold 函数指定我们将在检索后更新段。Get Hold Unique 函数对应于 Get Unique 调用。下面给出的是 GHU 调用的语法 –
CALL 'CBLTDLI' USING DLI-GHU PCB Mask Segment I/O Area [Segment Search Arguments]
抓住下一步
‘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’ 代码用于在父级中获取下一个。Hold 函数指定我们将在检索后更新段。Get Hold Next inside Parent 函数对应于 Get Next inside Parent 调用。下面给出的是 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”代码用于在父级中获取下一个保持。替换功能用于替换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]
您可以在恢复一章中找到有关这些功能的更多详细信息。