Chaînes de taille variable
Lorsque le dernier paramètre d’entrée ou le dernier paramètre de sortie d’une méthode est une chaîne, cette chaîne peut être dimensionnée de manière variable. Sa taille peut varier de 0 au nombre maximal d’octets spécifié pour sa longueur. Lorsque la valeur de retour est une chaîne et qu’elle est positionnée après tous les autres paramètres de sortie, il peut s’agir du champ de sortie final de taille variable.
La chaîne doit être envoyée ou reçue en dernier si elle doit être dimensionnée de manière variable. Sinon, il n’existe aucun moyen fiable de déterminer la fin d’une chaîne de taille variable et l’élément de données suivant dans la mémoire tampon. La logique de l’application hôte envoie uniquement les données pour la partie de la chaîne nécessaire.
COBOL ne définit jamais l’option de dimensionnement variable pour les chaînes. Pour définir cette propriété manuellement, définissez la propriété Champ final dimensionné sur variable. La propriété Champ final dimensionné variable est subdivisé en deux parties par direction. Définissez la direction à true.
L’exemple COBOL suivant a comme dernier élément de données une chaîne volumineuse qui peut être optimisée en envoyant uniquement la taille de la chaîne :
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).
Lors de l’importation, ce code COBOL crée la méthode suivante :
CustomerInformation(lCustomerNo As Long,_
strLastName As String,_
strFirstName As String,-
strComments As String)
Le code Visual Basic suivant appelle la méthode :
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