📅  最后修改于: 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函数调用-
“ 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]
您可以在恢复一章中找到有关这些功能的更多详细信息。