Condividi tramite


Stringhe con dimensioni variabili

Quando l'ultimo parametro di input o l'ultimo parametro di output in un metodo è una stringa, tale stringa può essere ridimensionata in modo variabile. Le dimensioni possono variare da 0 al numero massimo di byte specificati per la relativa lunghezza. Quando il valore restituito è una stringa e viene posizionato dopo tutti gli altri parametri di output, può essere il campo di output finale ridimensionato in modo variabile.

La stringa deve essere inviata o ricevuta per ultima se deve essere ridimensionata in modo variabile. In caso contrario, non esiste un modo affidabile per determinare la fine di una stringa con dimensioni variabili e l'elemento di dati successivo nel buffer. La logica dell'applicazione host invia solo i dati per la parte della stringa necessaria.

COBOL non imposta mai l'opzione con dimensioni variabili per le stringhe. Per impostare questa proprietà manualmente, impostare la proprietà Variable Size Final Field su variabile. La proprietà Variable Size Final Field è suddivisa in due parti in base alla direzione. Impostare la direzione che si vuole impostare su true.

Nell'esempio COBOL seguente è presente come ultimo elemento di dati una stringa di grandi dimensioni che può essere ottimizzata inviando solo le dimensioni della stringa:

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

Quando viene importato, questo codice COBOL crea il metodo seguente:

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

Il codice visual Basic seguente chiama il metodo :

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