PL/I、C和COBOL中的主机结构

宿主结构是指在SQL语句中引用的PL/I结构、C结构或COBOL组。

宿主结构由宿主语言的语句定义,如访问 Db2 for z/OS 数据的编程应用程序概述中所述。 此处使用的 “主机结构 ”一词不包括SQLCA或SQLDA。

在Java™和REXX中,没有与主机结构等效的东西。

宿主结构引用的形式与宿主变量引用的形式相同。 如果 S1 指代一个主机结构,则 :S1:S2 是一个主机结构引用。 如果 S1 指定了宿主结构,则 S2 必须是一个小整数变量或小整数变量数组。 S1 是主机结构, 是其指示数组。 S2

在可以引用宿主变量列表的任何情况下,都可以引用宿主结构。 主机结构引用等同于对结构中每个主机变量的引用,顺序与主机语言结构声明中的定义顺序相同。 指标数组的第n个变量是主机结构第n个变量的指标变量。

例如,在PL/I中,如果 V1V2 ,并且 V3 在结构体 S1 中声明为变量,则以下两个语句等价:
   EXEC SQL FETCH CURSOR1 INTO :S1;
   EXEC SQL FETCH CURSOR1 INTO :V1, :V2, :V3;

如果宿主结构中的变量数量多于指标数组,则宿主结构中的最后m个变量没有指标变量。 如果宿主结构中的变量数量少于指标数组中的变量数量,则忽略指标数组中的最后m个变量。 如果对宿主结构的引用包含指示变量,或者对宿主变量的引用包含指示数组,则这些规则同样适用。 如果未指定指示数组或变量,则主机结构中的变量都不带指示变量。

除了结构引用,PL/I、C和COBOL中的单个宿主变量或指示变量也可以通过限定名称进行引用。 合格的形式是主机标识符后跟一个句点,再后跟另一个主机标识符。 第一个主机标识符必须指明一个结构,第二个主机标识符必须指明该结构中下一级的主机变量。

在PL/I、C和COBOL中, 宿主变量的语法为:

阅读语法图跳过可视化语法图:主机标识符. 主机标识符INDICATOR:主机标识符. 主机标识符

一般来说,表达式中的宿主变量必须根据宿主变量的声明规则来标识程序中描述的宿主变量(而不是结构)。 然而,有一些SQL语句允许在表达式中使用一个主机变量来标识一个结构,这在语句描述中特别指出。

以下示例显示了宿主变量和宿主结构的引用:
  :V1   :S1.V1   :S1.V1:V2   :S1.V2:S2.V4