IMS教程

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 函数调用-
IMS Database1

变得独一无二

'GU' 代码用于 Get Unique 函数。它的工作原理类似于 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]

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' 代码用于在父级中获取下一个保持。 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 中使用了以下更新函数-
插入 删除 替换

Insert

'ISRT' 代码用于插入功能。 ISRT 函数用于向数据库添加新段。它用于更改现有数据库或加载新数据库。下面给出的是 ISRT 调用的语法-
CALL 'CBLTDLI' USING DLI-ISRT
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Delete

'DLET' 代码用于删除功能。它用于从 IMS DL/I 数据库中删除段。下面给出的是 DLET 调用的语法-
CALL 'CBLTDLI' USING DLI-DLET
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Replace

'REPL' 代码用于在父级中获取下一个保持。替换功能用于替换IMS DL/I 数据库中的一个段。下面给出的是 REPL 调用的语法-
CALL 'CBLTDLI' USING DLI-REPL
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

其他功能

以下其他函数用于 IMS DL/I 调用-
检查站 重启 印刷电路板

Checkpoint

'CHKP' 代码用于检查点功能。它用于 IMS 的恢复功能。下面给出的是 CHKP 调用的语法-
CALL 'CBLTDLI' USING DLI-CHKP
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Restart

'XRST' 代码用于重启功能。它用于 IMS 的重启特性。下面给出的是 XRST 调用的语法-
CALL 'CBLTDLI' USING DLI-XRST
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

PCB

PCB 函数用于 IMS DL/I 数据库中的 CICS 程序。下面给出的是 PCB 调用的语法-
CALL 'CBLTDLI' USING DLI-PCB
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]
您可以在恢复章节中找到有关这些功能的更多详细信息。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4