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

IMS数据库1

变得独一无二

“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]

您可以在恢复一章中找到有关这些功能的更多详细信息。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁