Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans COBOL, vous pouvez utiliser la syntaxe OCCURS DEPENDING ON pour définir une table de longueur variable dans une déclaration de données. Le stockage d’une table de longueur variable est dynamique, selon la valeur de la variable spécificateur de longueur. La quantité de données transmises dépend également de la valeur de la variable spécificateur de longueur : seul le nombre d’éléments spécifiés est envoyé ou reçu. La variable spécificateur de longueur pour une table de longueur variable doit être un type numérique, et sa direction doit correspondre à la direction de la table de longueur variable qu’elle contrôle.
Lorsque vous importez COBOL dans le projet TI (Transaction Integrator) et que vous spécifiez des tables de longueur variable en tant qu’recordsets, les tables de longueur variable deviennent automatiquement des tableaux ou des objets recordset dont la taille est limitée par un autre paramètre. Le spécificateur de longueur est exposé côté Automation en tant que paramètre et doit être correctement défini lorsque le paramètre est envoyé à l’application hôte.
Pour indiquer manuellement qu’un paramètre dans une méthode est le spécificateur de longueur d’un tableau, définissez d’abord le paramètre de spécificateur de longueur, puis définissez le paramètre tableau ou recordset :
Dans la classe de propriété de paramètre à définir en tant que tableau ODO, utilisez le Concepteur pour sélectionner la propriété Is Array . Une fois IsArray sélectionné, les dimensions de tableau et la propriété Déclenche en fonction de deviennent disponibles. Définissez les dimensions du tableau à l’aide de la propriété Array Dimensions . Affectez l’index ODO au paramètre défini comme tableau ODO. Sélectionnez l’index en développant la propriété Se produit selon.
Vous pouvez également indiquer manuellement qu’un paramètre dans une méthode est le spécificateur de longueur d’un paramètre recordset.
Suivez les mêmes étapes que celles définies précédemment ; Toutefois, remplacez le type de données du paramètre d’un type de données simple par un jeu d’enregistrements.
Le code COBOL suivant montre une table de longueur variable :
01 CUSTOMER-DATA.
05 CUSTOMER-NUMBER PIC 9(9).
05 LAST-NAME PIC X(20).
05 FIRST-NAME PIC X(20).
05 INVOICE-COUNT PIC 9(7) COMP-3.
05 INVOICES OCCURS 50 TIMES DEPENDING ON INVOICE-COUNT.
10 INVOICE-NUMBER PIC 9(10).
10 INVOICE-DATE PIC 9(7) COMP-3.
10 INVOICE-AMOUNT PIC S9(13)V9(2) COMP-3.
10 INVOICE-DESCRIPTION PIC X(40).
Voici la méthode créée lorsque le COBOL précédent est importé :
SendInvoices(lCustomerNo As Long, strLastName As String, strFirstName As String _
, lcInvoices As Long) As Object
Voici un exemple de code Microsoft® Visual Basic® qui appelle une méthode importée :
Dim objCustomer As Object 'Uses late binding
Dim objInvoices As ADODB.Recordset
Dim lCustomerNumber As Long
Dim iRow As Integer
Dim iCol As Integer
Dim strLastName As String
Dim strFirstName As String
'create an instance of the invoicing object
On Error GoTo ErrorHandler1
Set objCustomer = CreateObject("Customer.Invoicing.1")
lCustomerNumber = CLng(txtCustomerNumber)
'invoke the GetInvoices method
On Error GoTo ErrorHandler2
Set objInvoices = objCustomer.GetInvoices(lCustomerNumber _
, strLastName, strFirstName)
'
' Transfer the Recordset data to a variant array in a single operation.
' This is efficient, but may not be suitable for larger Recordsets.
'
Dim Data As Variant
Data = objInvoices.GetRows
grdInvoices.Rows = UBound(Data, 2) + 1
grdInvoices.Cols = UBound(Data, 1) + 1