Freigeben über


Zeichenfolgen mit variabler Größe

Wenn der letzte Eingabeparameter oder der letzte Ausgabeparameter in einer Methode eine Zeichenfolge ist, kann diese Zeichenfolge variabel sein. Seine Größe kann von 0 bis zur maximalen Anzahl von Bytes variieren, die für seine Länge angegeben werden. Wenn der Rückgabewert eine Zeichenfolge ist und hinter allen anderen Ausgabeparametern positioniert ist, kann es sich um das variabel dimensionierte endgültige Ausgabefeld handeln.

Die Zeichenfolge muss zuletzt gesendet oder empfangen werden, wenn sie eine variable Größe aufweisen soll. Andernfalls gibt es keine zuverlässige Möglichkeit, das Ende einer variabel dimensionierten Zeichenfolge und das nächste Datenelement im Puffer zu bestimmen. Die Logik der Hostanwendung sendet nur die Daten für den erforderlichen Teil der Zeichenfolge.

COBOL legt nie die Option variabel größe für Zeichenfolgen fest. Um diese Eigenschaft manuell festzulegen, legen Sie die Variable Size Final Field-Eigenschaft auf variabler Größe fest. Die Eigenschaft Variable Size Final Field wird nach Richtung in zwei Teile unterteilt. Legen Sie die Richtung fest, in der Sie true sein möchten.

Das folgende COBOL-Beispiel enthält als letztes Datenelement eine große Zeichenfolge, die optimiert werden kann, indem nur die Größe der Zeichenfolge gesendet wird:

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).  
  

Beim Importieren erstellt dieser COBOL-Code die folgende Methode:

CustomerInformation(lCustomerNo As Long,_  
                    strLastName As String,_  
                    strFirstName As String,-  
                    strComments As String)  
  

Der folgende Visual Basic-Code ruft die -Methode auf:

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