Partager via


Champs finaux délimités

Lorsque la dernière entrée ou le dernier paramètre de sortie d’une méthode est un tableau ou un jeu d’enregistrements, ce paramètre peut être limité. Sa taille peut varier de 0 au nombre maximal d’éléments ou de lignes spécifié. Le tableau ou le jeu d’enregistrements doit être le dernier pour être limité. Sinon, il n’existe aucun moyen fiable de déterminer la fin d’un tableau limité ou d’un jeu d’enregistrements et le début du champ suivant dans la mémoire tampon. L’application hôte doit s’occuper de l’envoi de la table tronquée.

Le client Automation gère automatiquement cette option. L’environnement d’exécution TI (Transaction Integrator) envoie une quantité de données tronquées en fonction des limites Automation, détecte les données tronquées et crée le type Automation approprié lors de la réception des données.

L’Assistant Importation de COBOL ne définit jamais l’option limitée pour les tableaux ou les jeux d’enregistrements. Pour définir manuellement ce paramètre pour le paramètre final dans une méthode, utilisez la Designer pour affecter une valeur à la propriété Maximum Occurrence. Ce champ définit le nombre maximal de lignes que le jeu d’enregistrements peut contenir. Sur la méthode contenant le jeu d’enregistrements, affectez à la propriété Variable Sized Final Field la valeur true par direction pour limiter le jeu d’enregistrements.

Si la méthode contient un jeu d’enregistrements qui n’est pas limité, vous ne pouvez pas également spécifier un champ final limité ou de taille variable pour cette direction. Par exemple, si Parameter1 est un paramètre de sortie et qu’il s’agit d’un recordset non limité, le paramètre de sortie final ne peut pas être un tableau limité, un jeu d’enregistrements ou une chaîne de taille variable. Lorsque la valeur de retour est positionnée après tous les autres paramètres de sortie, la valeur de retour peut être le champ de sortie final limité.

L’exemple COBOL suivant envoie uniquement certaines lignes d’un jeu d’enregistrements :

01  INVOICE-COUNT                        PIC S9(4) COMP.  
01  CUSTOMER-DATA.  
    05  CUSTOMER-NUMBER                  PIC 9(9).  
    05  LAST-NAME                        PIC X(20).  
    05 INVOICES OCCURS 50 TIMES.  
               10  INVOICE-NUMBER               PIC 9(10).  
               10  INVOICE-DATE                 PIC 9(7) COMP-3.  
               10  INVOICE-AMOUNT               PIC S9(13)V9(2) COMP-3.  
.  
.  
.  
            MOVE SIZE OF CUSTOMER-DATA TO SEND-LENGTH.  
            SUBTRACT LENGTH OF INVOICES FROM SEND-LENGTH.  
            EXEC-CICS SEND FROM(CUSTOMER-DATA)  
                           LENGTH(SEND-LENGTH)  
                           END-EXEC.  
            PERFORM VARYING I FROM 1 BY 1 UNTIL I = INVOICE-COUNT  
                COMPUTE SEND-LENGTH = LENGTH OF INVOICE-NUMBER +  
                                      LENGTH OF INVOICE-DATE +  
                                      LENGTH OF INVOICE-AMOUNT  
                EXEC-CICS SEND FROM(INVOICES(I))  
                               LENGTH(SEND-LENGTH)  
                               END-EXEC.  
            END-PERFORM.