IMS DB - 段搜索参数 (SSA)



SSA 代表段搜索参数 (Segment Search Arguments)。SSA 用于标识正在访问的段的出现。这是一个可选参数。根据需要,我们可以包含任意数量的 SSA。SSA 有两种类型:

  • 非限定 SSA
  • 限定 SSA

非限定 SSA

非限定 SSA 提供在调用中使用的段的名称。以下是未限定 SSA 的语法:

01 UNQUALIFIED-SSA.
   05  SEGMENT-NAME  PIC X(8).
   05  FILLER        PIC X     VALUE SPACE.

非限定 SSA 的关键点如下:

  • 基本的非限定 SSA 长度为 9 字节。

  • 前 8 个字节包含用于处理的段名称。

  • 最后一个字节始终包含空格。

  • DL/I 使用最后一个字节来确定 SSA 的类型。

  • 要访问特定段,请将段名称移动到 SEGMENT-NAME 字段。

下图显示了非限定和限定 SSA 的结构:

SSA

限定 SSA

限定 SSA 提供段类型以及段的特定数据库出现。以下是限定 SSA 的语法:

01 QUALIFIED-SSA.
   05  SEGMENT-NAME  PIC X(8).
   05  FILLER        PIC X(01)     VALUE '('.
   05  FIELD-NAME    PIC X(8).
   05  REL-OPR       PIC X(2).
   05  SEARCH-VALUE  PIC X(n).
   05  FILLER        PIC X(n+1) VALUE ')'.

限定 SSA 的关键点如下:

  • 限定 SSA 的前 8 个字节包含用于处理的段名称。

  • 第九个字节为左括号'('。

  • 从第十个位置开始的接下来的 8 个字节指定我们要搜索的字段名称。

  • 在字段名称之后,在第 18 和 19 个位置,我们指定两个字符的关系运算符代码。

  • 然后我们指定字段值,最后一个字节为右括号')'。

下表显示了在限定 SSA 中使用的关系运算符。

关系运算符 符号 描述
EQ = 等于
NE ~= ˜ 不等于
GT > 大于
GE >= 大于或等于
LT << 小于
LE <= 小于或等于

命令代码

命令代码用于增强 DL/I 调用的功能。命令代码减少了 DL/I 调用的数量,使程序更简单。此外,由于调用次数减少,它还提高了性能。下图显示了如何在非限定和限定 SSA 中使用命令代码:

unqualified ssa

命令代码的关键点如下:

  • 要使用命令代码,请在上图所示的 SSA 的第 9 个位置指定星号“*”。

  • 命令代码编码在第十个位置。

  • 从第十个位置开始,DL/I 将所有字符都视为命令代码,直到遇到非限定 SSA 的空格和限定 SSA 的左括号。

下表显示了在 SSA 中使用的命令代码列表:

命令代码 描述
C 连接键
D 路径调用
F 第一个出现
L 最后一个出现
N 忽略路径调用
P 设置父子关系
Q 入队段
U 保持此级别的位置
V 保持此级别和所有上级的级别位置
- 空命令代码

多个限定

多个限定的基本要点如下:

  • 当我们需要使用两个或多个限定或字段进行比较时,需要多个限定。

  • 我们使用 AND 和 OR 等布尔运算符来连接两个或多个限定。

  • 当我们想要根据单个字段的一系列可能值来处理段时,可以使用多个限定。

以下是多个限定的语法:

01 QUALIFIED-SSA.
   05  SEGMENT-NAME  PIC X(8).
   05  FILLER        PIC X(01)     VALUE '('.
   05  FIELD-NAME1   PIC X(8).
   05  REL-OPR       PIC X(2).
   05  SEARCH-VALUE1 PIC X(m).
   05  MUL-QUAL      PIC X      VALUE '&'.
   05  FIELD-NAME2   PIC X(8).
   05  REL-OPR       PIC X(2).
   05  SEARCH-VALUE2 PIC X(n).
   05  FILLER        PIC X(n+1) VALUE ')'.

MUL-QUAL 是 MULtiple QUALIfication 的缩写,我们可以在其中提供 AND 或 OR 等布尔运算符。

广告