Partager via


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