📜  IMS DB-DL / I功能

📅  最后修改于: 2020-11-27 05:18:19             🧑  作者: Mango


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

IMS数据库1

获得独特

“ GU”代码用于获取唯一函数。它的工作方式类似于COBOL中的随机读取语句。它用于根据字段值获取特定的段出现。可以使用段搜索参数提供字段值。 GU调用的语法如下-

CALL 'CBLTDLI' USING DLI-GU
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

如果通过为COBOL程序中的所有参数提供适当的值来执行上述调用语句,则可以从数据库中检索段I / O区域中的段。在上面的示例中,如果提供“库”,“杂志”和“健康”的字段值,则可以得到“健康”段的期望值。

获取下一个

“ GN”代码用于Get Next函数。它的工作方式类似于COBOL中的read next语句。它用于获取序列中的片段出现。用于访问数据段出现的预定义模式在层次结构中向下,然后从左到右。 GN呼叫的语法如下-

CALL 'CBLTDLI' USING DLI-GN
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

如果通过为COBOL程序中的所有参数提供适当的值来执行上述调用语句,则可以按顺序从数据库中检索段I / O区域中的段出现。在上面的示例中,首先访问“库”段,然后是“书”段,依此类推。我们一次又一次地执行GN调用,直到达到所需的分段出现。

在父级中获得下一个

“ GNP”代码用于父级中的“获取下一个”。此函数用于检索从属于已建立的父段的序列中出现的段。 GNP调用的语法如下-

CALL 'CBLTDLI' USING DLI-GNP
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

保持独特

“ GHU”代码用于获取保持唯一性。 Hold函数指定检索后将更新该段。 “获取保持唯一性”函数对应于“获取唯一性”呼叫。下面给出的是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函数指定检索后将更新该段。 “在父项中获取保留”函数对应于“父项中获取保留”。下面给出的是GHNP调用的语法-

CALL 'CBLTDLI' USING DLI-GHNP
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

更新功能

更新功能类似于使用任何其他编程语言进行的重写或插入操作。更新功能用于更新IMS DL / I数据库中的段。使用update函数之前,必须成功使用Hold子句调用该段。 IMS DB中使用以下更新功能-

  • 插入
  • 删除
  • 更换

插入

“ ISRT”代码用于Insert函数。 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”代码用于Checkpoint函数。它用于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]

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