IMS DL/I呼叫中使用的各种数据检索方法如下:
GU Call
GN Call
Using Command Codes
Multiple Processing
让我们考虑以下IMS数据库结构来理解数据检索函数调用 :
GU调用
GU调用的基本原理如下 :
GU调用称为获取唯一调用.它用于随机处理.
如果应用程序没有定期更新数据库,或者数据库更新的数量较少,那么我们使用随机处理.
GU调用用于将指针放在特定位置,以便进一步顺序检索.
GU调用与前一次调用建立的指针位置无关.
GU调用处理基于调用语句中提供的唯一键字段.
如果我们提供的密钥字段不是唯一的,那么DL/I将返回密钥字段的第一个分段出现.
CALL 'CBLTDLI' USING DLI-GU PCB-NAME IO-AREA LIBRARY-SSA BOOKS-SSA ENGINEERING-SSA IT-SSA
上述exa mple显示我们通过提供一整套合格的SSA来发出GU调用.它包括从根级别到我们要检索的段发生的所有关键字段.
GU调用注意事项
如果我们不这样做在通话中提供完整的合格SSA,然后DL/I按以下方式工作&减去;
当我们在GU调用中使用不合格的SSA,DL/I访问数据库中符合您指定条件的第一个段出现.
当我们发出GU时在没有任何SSA的情况下调用,DL/I返回数据库中第一次出现的根段.
如果调用中没有提到中间级别的某些SSA ,然后DL/I使用既定位置或该段的非限定SSA的默认值.
状态代码
下表显示GU调用后的相关状态代码 :
S.No | 状态代码&描述 |
---|---|
1 | Spaces 成功通话 |
2 | GE DL/我找不到符合通话中指定条件的段 |
GN Call
GN调用的基本原理如下:
GN调用称为Get Next调用.它用于基本顺序处理.
数据库中指针的初始位置在第一个数据库记录的根段之前.
在成功进行GN调用之后,数据库指针位置在序列中下一个段出现之前.
GN调用从前一次调用建立的位置开始通过数据库.
如果GN调用不合格,则返回下一个段发生的数据库,无论其类型如何,按层次顺序排列.
如果GN调用包含SSA,则DL/I仅检索满足所有指定要求的段SSA.
CALL 'CBLTDLI' USING DLI-GN PCB-NAME IO-AREA BOOKS-SSA
上面的例子显示我们发行GN cal l提供起始位置以顺序读取记录.它取出第一次出现的BOOKS段.
状态码
下表显示GN调用后的相关状态码 :
S.No | 状态代码&描述 |
---|---|
1 | Spaces 成功通话 |
2 | GE DL/我找不到符合通话中指定条件的段. |
3 | GA 非限定GN调用在数据库层次结构中向上移动一级以获取段. |
4 | GB 达到数据库结束且找不到分段. |
GK 非限定GN调用尝试获取特定类型的片段,而不是刚刚检索到但保留的片段在同一层级. |
命令代码
命令代码用于获取段出现的调用.下面将讨论与调用一起使用的各种命令代码.
F命令代码
注意事项和减号;
当在通话中指定F命令代码时,该调用将处理该段的第一次出现.
当我们想要按顺序处理时,可以使用F命令代码,它可以用于GN调用和GNP调用.
如果我们指定带有GU调用的F命令代码,它没有任何意义,因为GU调用默认获取第一个段出现.
L命令代码
注意事项:
当L命令时代码在调用中指定,调用处理该段的最后一次出现.
当我们想要按顺序处理时,可以使用L命令代码与GN调用和GNP调用一起使用.
D命令代码
注意事项:
D命令代码用于仅使用一次调用来获取多个段出现.
通常,DL/I在SSA中指定的最低级别段上运行,但在许多情况下,我们也需要来自其他级别的数据.在这些情况下,我们可以使用D命令代码.
D命令代码可以轻松检索整个段的路径.
C命令代码
注意事项:
C命令代码用于连接键.
使用关系运算符有点复杂,因为我们需要指定字段名称,关系运算符和搜索值.相反,我们可以使用C命令代码来提供连接键.
以下示例显示了C命令代码的使用:
01 LOCATION-SSA. 05 FILLER PIC X(11) VALUE ‘INLOCSEG*C(‘. 05 LIBRARY-SSA PIC X(5). 05 BOOKS-SSA PIC X(4). 05 ENGINEERING-SSA PIC X(6). 05 IT-SSA PIC X(3) 05 FILLER PIC XVALUE ‘)’.CALL 'CBLTDLI' USING DLI-GU PCB-NAME IO-AREA LOCATION-SSA
P命令代码
注意事项:
当我们发出GU或GN调用时,DL/I在检索到的最低级别段建立其父级.
如果我们包含P命令代码,然后DL/I在分层路径中的更高级别段建立其父级.
U命令代码
注意事项:
当在一个不合格的SSA中指定U命令代码时GN调用,DL/I限制搜索段.
如果与合格的SSA一起使用,则忽略U命令代码.
V命令代码
注意事项:
V命令代码的工作方式类似于U co mmand代码,但它限制了对特定级别的段的搜索以及层次结构之上的所有级别.
与合格者一起使用时,将忽略V命令代码SSA.
Q命令代码
注意事项:
Q命令代码用于排队或保留段以供您的应用程序专用.
Q命令代码用于交互式环境中,其他程序可能会对某个段进行更改.
多处理
程序在IMS数据库中可以有多个位置,称为多处理.可以通过两种方式进行多次处理 :
多个PCB
多重定位
多个PCB
可以为单个数据库定义多个PCB.如果有多个PCB,则应用程序可以具有不同的视图.这种实现多处理的方法效率低,因为额外的PCB会产生开销.
多重定位
一个程序可以维持多个位置使用单个PCB的数据库.这是通过为每个分层路径保持不同的位置来实现的.多个定位用于同时顺序访问两种或更多种类型的段.