IMS DB - 数据操作
IMS DL/I 调用中使用的不同数据操作方法如下 −
- ISRT 调用
- 获取保持调用
- REPL 调用
- DLET 调用
让我们考虑以下 IMS 数据库结构以了解数据操作函数调用 −
![IMS DATABASE](/ims_db/images/ims_database1.png)
ISRT 调用
注意事项 −
ISRT 调用称为插入调用,用于将段添加到数据库中。
ISRT 调用用于加载新的数据库。
当段描述字段加载数据时,我们会发出 ISRT 调用。
必须在调用中指定不合格或合格的 SSA,以便 DL/I 知道将段出现的位置。
我们可以在调用中同时使用不合格和合格的 SSA。可以为上述所有级别指定合格的 SSA。让我们考虑以下示例 −
CALL 'CBLTDLI' USING DLI-ISRT PCB-NAME IO-AREA LIBRARY-SSA BOOKS-SSA UNQUALIFIED-ENGINEERING-SSA
上面的例子表明,我们通过提供合格和不合格 SSA 的组合来发出 ISRT 调用。
当我们插入的新段具有唯一关键字段时,它会被添加到适当的位置。如果关键字段不是唯一的,则由数据库管理员定义的规则添加。
当我们发出 ISRT 调用而不指定关键字段时,插入规则会告诉相对于现有孪生段将段放置在何处。下面给出了插入规则 −
First − 如果规则是第一个,则新段将添加到任何现有孪生之前。
Last − 如果规则是最后一个,则新段将添加到所有现有孪生之后。
Here −如果规则在这里,它将被添加到相对于现有双胞胎的当前位置,可能是第一个、最后一个或任何地方。
状态代码
下表显示了 ISRT 调用后的相关状态代码 −
S.No | 状态代码 &描述 |
---|---|
1 | 空格 调用成功 |
2 | GE 使用了多个 SSA,DL/I 无法通过指定路径满足调用。 |
3 | II 尝试添加数据库中已存在的段出现。 |
4 | LB / LC LD / LE 我们在加载处理过程中获取这些状态代码。在大多数情况下,它们表明您没有按照精确的层次顺序插入段。 |
获取 Hold 调用
注意事项 −
我们在 DL/I 调用中指定了三种类型的获取 Hold 调用:
获取唯一 Hold (GHU)
获取下一个 Hold (GHN)
获取父级中的下一个 Hold (GHNP)
Hold 函数指定我们将在检索后更新段。因此,在 REPL 或 DLET 调用之前,必须发出成功的 hold 调用,告知 DL/I 更新数据库的意图。
REPL 调用
注意事项 −
成功执行 get hold 调用后,我们发出 REPL 调用来更新段出现。
我们无法使用 REPL 调用更改段的长度。
我们无法使用 REPL 调用更改关键字段的值。
我们无法将合格的 SSA 与 REPL 调用一起使用。如果我们指定合格的 SSA,则调用失败。
CALL 'CBLTDLI' USING DLI-GHU PCB-NAME IO-AREA LIBRARY-SSA BOOKS-SSA ENGINEERING-SSA IT-SSA. *Move the values which you want to update in IT segment occurrence* CALL ‘CBLTDLI’ USING DLI-REPL PCB-NAME IO-AREA.
上述示例使用 REPL 调用更新 IT 段发生。首先,我们发出 GHU 调用以获取要更新的段发生。然后,我们发出 REPL 调用来更新该段的值。
DLET 调用
注意事项 −
DLET 调用的工作方式与 REPL 调用大致相同。
成功获取保持调用后,我们发出 DLET 调用来删除段发生。
我们不能将合格的 SSA 与 DLET 调用一起使用。如果我们指定合格的 SSA,则调用失败。
CALL 'CBLTDLI' USING DLI-GHU PCB-NAME IO-AREA LIBRARY-SSA BOOKS-SSA ENGINEERING-SSA IT-SSA. CALL ‘CBLTDLI’ USING DLI-DLET PCB-NAME IO-AREA.
上述示例使用 DLET 调用删除 IT 段发生。首先,我们发出 GHU 调用以获取要删除的段发生。然后,我们发出 DLET 调用来更新该段的值。
状态代码
下表显示了 REPL 或 DLET 调用后的相关状态代码 −
S.No | 状态代码 &描述 |
---|---|
1 | 空格 成功调用 |
2 | AJ 在 REPL 或 DLET 调用中使用了合格的 SSA。 |
3 | DJ 程序发出 replace 调用,而没有紧接在前面的 get hold 调用。 |
4 | DA 程序在发出 REPL 或 DLET 调用之前对段的关键字段进行更改 |