Freigeben über


Zeichenfolgen mit variabeler Größe

Wenn der letzte Eingabe- oder Ausgabeparameter in einer Methode eine Zeichenfolge ist, kann diese Zeichenfolge eine variable Größe haben. Die Größe kann von 0 bis zur maximalen Anzahl von Bytes variieren, die für die Länge angegeben sind. Wenn der Rückgabewert eine Zeichenfolge ist und er nach allen anderen Ausgabeparametern positioniert wird, kann es das variabel dimensionierte endgültige Ausgabefeld sein.

Die Zeichenfolge muss zuletzt gesendet oder empfangen werden, wenn sie variabel groß sein 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 Teil der benötigten Zeichenfolge.

COBOL legt die Option für variable Größen bei Zeichenfolgen nie fest. Wenn Sie diese Eigenschaft manuell festlegen möchten, legen Sie die Eigenschaft " Endgültiges Feld variabler Größe " fest. Das Endfeld der Eigenschaft Variable Größe ist in zwei Teile nach Richtung unterteilt. Legen Sie die Richtung auf "true" fest.

Das folgende COBOL-Beispiel weist als letztes Datenelement eine große Zeichenfolge auf, 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