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功能,程序员需要编码其中一个05级数据名称,例如DL/I调用中的DLI-GU,因为COBOL不允许在CALL语句上编码文字.

  • DL/I函数分为三类:获取,更新和其他功能.让我们详细讨论它们.

获取函数

获取函数类似于任何编程语言支持的读操作. Get函数用于从IMS DL/I数据库中获取段.以下Get函数用于IMS DB :

  • Get Unique

  • Get Next

  • Get Next within Parent

  • Get Hold Unique

  • Get Hold Next

  • Get Hold Next within Parent

让我们考虑以下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'代码用于Get Next功能.它的工作方式类似于COBOL中的read next语句.它用于获取序列中的段出现.用于访问数据段出现的预定义模式在层次结构中,然后从左到右. GN调用的语法如下 :

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


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

在Parent中获取下一个

'GNP'代码被使用在父母中获取下一个.此函数用于按顺序检索从属于已建立父段的段出现. GNP调用的语法如下 :

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


获取保持唯一

'GHU'代码用于Get Hold Unique.保持功能指定我们将在检索后更新段. Get Hold Unique功能对应于Get Unique呼叫.下面给出了GHU调用的语法 :

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


获取保留下一步

'GHN'代码用于Get Hold Next.保持功能指定我们将在检索后更新段. Get Hold Next功能对应于Get Next调用.下面给出了GHN调用的语法 :

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


在父级内获取保留

'GHNP '代码用于Parent中的Get Hold Next.保持功能指定我们将在检索后更新段. 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 :

  • Insert

  • Delete

  • Replace

插入

'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'代码在Parent中获取Hold Next. Replace函数用于替换IMS DL/I数据库中的段.下面给出了REPL调用的语法 :

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

其他功能

以下其他功能是用于IMS DL/I呼叫 :

  • Checkpoint

  • Restart

  • PCB

检查点

'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

在CICS中使用PCB功能IMS DL/I数据库中的程序.下面给出了PCB调用的语法 :

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


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