Datos de tamaño variable
Cuando el último parámetro de entrada o el último parámetro de salida de un método es una cadena, esa cadena puede tener un tamaño variable. Su tamaño puede variar de 0 al número máximo de bytes especificados para su longitud. Cuando el valor devuelto es una cadena y se coloca después de todos los demás parámetros de salida, puede ser el campo de salida final de tamaño variable.
La cadena debe enviarse o recibirse por última vez si debe tener un tamaño variable. De lo contrario, no hay ninguna manera confiable de determinar el final de una cadena de tamaño variable y el siguiente elemento de datos del búfer. La lógica de la aplicación host envía solo los datos de la parte de la cadena que se necesita.
COBOL nunca establece la opción de tamaño variable para las cadenas. Para establecer esta propiedad manualmente, establezca la propiedad Variable Sized Final Field como variable. La propiedad Variable Size Final Field se subdivide en dos partes por dirección. Establezca la dirección que desea true.
El siguiente ejemplo de COBOL tiene como último elemento de datos una cadena grande que podría optimizarse enviando solo el tamaño de la cadena:
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).
Cuando se importa, este código COBOL crea el método siguiente:
CustomerInformation(lCustomerNo As Long,_
strLastName As String,_
strFirstName As String,-
strComments As String)
El siguiente código de Visual Basic llama al método :
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