Compartir a través de


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