当方法中的最后一个输入或最后一个输出参数是数组或记录集时,可以绑定该参数。 其大小可能从 0 到指定的最大元素数或行数不等。 数组或记录集必须是最后一个才能绑定的。 否则,没有可靠的方法来确定边界数组或记录集的末尾以及缓冲区中下一个字段的开头。 主机应用程序必须负责发送截断的表。
自动化客户端会自动处理此选项。 事务集成器 (TI) 运行时环境根据自动化边界发送截断的数据量,并检测截断的数据,并在收到数据时创建适当的自动化类型。
导入 COBOL 向导从不设置数组或记录集的边界选项。 若要为方法中的最终参数手动设置此值,请使用Designer为属性“最大出现次数”赋值。 此字段定义记录集可以包含的最大行数。 在包含记录集的方法上,按方向将 属性 Variable Sized Final Field 设置为 true,以使记录集绑定。
如果方法包含未绑定的记录集,则不能也为该方向指定有界或大小可变的最终字段。 例如,如果 Parameter1 是一个输出参数,并且它是一个无限制的记录集,则最终的输出参数不能是边界数组、记录集或大小可变的字符串。 当返回值定位在所有其他输出参数之后时,返回值可以是绑定的最终输出字段。
以下 COBOL 示例仅发送记录集中的某些行:
01 INVOICE-COUNT PIC S9(4) COMP.
01 CUSTOMER-DATA.
05 CUSTOMER-NUMBER PIC 9(9).
05 LAST-NAME PIC X(20).
05 INVOICES OCCURS 50 TIMES.
10 INVOICE-NUMBER PIC 9(10).
10 INVOICE-DATE PIC 9(7) COMP-3.
10 INVOICE-AMOUNT PIC S9(13)V9(2) COMP-3.
.
.
.
MOVE SIZE OF CUSTOMER-DATA TO SEND-LENGTH.
SUBTRACT LENGTH OF INVOICES FROM SEND-LENGTH.
EXEC-CICS SEND FROM(CUSTOMER-DATA)
LENGTH(SEND-LENGTH)
END-EXEC.
PERFORM VARYING I FROM 1 BY 1 UNTIL I = INVOICE-COUNT
COMPUTE SEND-LENGTH = LENGTH OF INVOICE-NUMBER +
LENGTH OF INVOICE-DATE +
LENGTH OF INVOICE-AMOUNT
EXEC-CICS SEND FROM(INVOICES(I))
LENGTH(SEND-LENGTH)
END-EXEC.
END-PERFORM.