当方法中的最后一个输入参数或最后一个输出参数是字符串时,该字符串的大小可以可变。 其大小可能从 0 到为其长度指定的最大字节数不等。 当返回值是一个字符串并且它位于所有其他输出参数之后时,它可以是可变大小的最终输出字段。
如果字符串是可变大小的,则它必须作为最后一个发送或接收。 否则,无法可靠地确定固定大小的字符串的末尾和缓冲区中的下一个数据项。 主机应用程序的逻辑仅发送所需字符串部分的数据。
COBOL 从不设置字符串的可变大小选项。 若要手动设置此属性,请将 “可变大小最终字段 ”属性设置为变量。 属性 “可变大小最终字段 ”按方向细分为两个部分。 设置要实现的方向。
以下 COBOL 示例中最后一个数据项是一个大型字符串,可以通过仅发送字符串大小来优化。
01 CUSTOMER-DATA.
05 CUST-HEADER.
10 CUSTOMER-NUMBER PIC 9(9).
10 LAST-NAME PIC X(20).
10 FIRST-NAME PIC X(20).
05 COMMENTS PIC X(4096).
导入后,此 COBOL 代码将创建以下方法:
CustomerInformation(lCustomerNo As Long,_
strLastName As String,_
strFirstName As String,-
strComments As String)
以下 Visual Basic 代码调用该方法:
Dim objCustomer As Object
Dim lCustomerNo As Long
Dim strLastName As String
Dim strFirstName As String
Dim strComments As String
lCustomerNo = 100231
'create an instance of the invoicing object
On Error GoTo ErrorHandler1
Set objCustomer = CreateObject("Customer.Invoicing.1")
'invoke the SetInvoices method
On Error GoTo ErrorHandler2
objCustomer.CustomerInformation lCustomerNo, strLastName _
, strFirstName, strComments