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