Ims Db 简明教程

IMS DB - DL/I Functions

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 '.

此语法表示以下要点 -

  1. 对于此参数,我们可以提供任何四个字符的名称作为存储字段以存储函数代码。

  2. DL/I 功能参数在 COBOL 程序的工作存储部分中编码。

  3. 为了指定 DL/I 功能,程序员需要在 DL/I 调用中编码一个 05 级数据名称,如 DLI-GU,因为 COBOL 并不允许在 CALL 语句中编码常量。

  4. DL/I 功能分为三类:获取、更新和其他功能。让我们详细讨论每一类。

Get Functions

获取功能类似于任何编程语言所支持的读取操作。获取功能用于从 IMS DL/I 数据库提取段。以下获取功能用于 IMS DB 中 −

  1. Get Unique

  2. Get Next

  3. Get Next within Parent

  4. Get Hold Unique

  5. Get Hold Next

  6. 在父级内获取保持下一个

让我们考虑以下 IMS 数据库结构以了解 DL/I 函数调用 −

ims database

Get Unique

“GU”代码用于唯一获取功能。它类似于 COBOL 中的随机读取语句。它用于基于字段值获取特定段出现。可以使用段搜索参数提供字段值。GU 调用的语法如下 −

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

如果你通过在 COBOL 程序中为所有参数提供适当的值来执行上述调用语句,你便可以在数据库中的段 I/O 区域中检索该段。在上述示例中,如果你提供图书馆、杂志和健康这三个字段值,那么你便可以获取健康段的所需出现。

Get Next

“GN”代码用于获取下一个功能。它类似于 COBOL 中的读取下一个语句。它用于按顺序获取段出现。访问数据段出现的预定义模式是从层次结构往下,然后从左到右。GN 调用的语法如下 −

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

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

Get Next within Parent

“GNP”代码用于在父级内获取下一个。该函数用于按顺序检索建立父级段的从属段出现。GNP 调用的语法如下 −

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

Get Hold Unique

“GHU”代码用于唯一保持获取。保持功能指定我们在检索后将更新该段。唯一保持获取功能对应于唯一获取调用。以下是 GHU 调用的语法 −

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

Get Hold Next

“GHN”代码用于保持获取下一个。保持功能指定我们在检索后将更新该段。保持获取下一个功能对应于获取下一个调用。以下是 GHN 调用的语法 −

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

Get Hold Next within Parent

“GHNP”代码用于在父级内保持获取下一个。保持功能指定我们在检索后将更新该段。在父级内保持获取下一个功能对应于在父级内获取下一个调用。以下是 GHNP 调用的语法 −

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

Update Functions

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

  1. Insert

  2. Delete

  3. Replace

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]

Other Functions

以下其他函数用于 IMS DL/I 调用 −

  1. Checkpoint

  2. Restart

  3. PCB

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]

有关这些功能的更多详细信息,请参见恢复章节。