Archives par mot-clé : OCCURS

Dépasser le MOVE : Maîtriser les Tableaux et les Boucles avec OCCURS en COBOL

Dépasser le MOVE : Maîtriser les Tableaux et les Boucles avec OCCURS en COBOL

En tant que développeur COBOL, vous avez probablement déjà maîtrisé les bases du transfert de données avec MOVE, et vous comprenez l’importance d’une gestion rigoureuse des variables. Cependant, le monde réel des systèmes d’information ne se limite pas à des transferts ligne par ligne. Les données arrivent souvent sous forme de structures répétitives : des listes de transactions, des enregistrements multiples, etc. Pour gérer ces collections de données efficacement, vous devez passer au niveau supérieur : celui des tableaux et des boucles. L’instruction clé pour débloquer ce potentiel est bien sûr la clause OCCURS. Maîtriser OCCURS COBOL, ce n’est pas seulement écrire du code qui compile ; c’est écrire du code performant, robuste et facile à maintenir. Préparez-vous à transformer votre approche des données en COBOL !

Pourquoi les tableaux et OCCURS sont essentiels en COBOL moderne

Historiquement, le COBOL traitait souvent les données de manière séquentielle et atomique. Or, la plupart des applications métier modernes traitent des ensembles de données. Par exemple, si vous traitez un relevé bancaire, vous ne traitez pas un seul montant, mais une série de montants (débits, crédits) pour un même compte. C’est là que les tableaux entrent en jeu. La clause OCCURS permet de définir une structure de données capable de contenir plusieurs instances du même élément, comme un conteneur réutilisable.

Avant d’aborder les boucles, il est crucial de comprendre la syntaxe. L’utilisation de OCCURS n’est pas qu’une simple extension ; elle change fondamentalement la manière dont vous allouez et accédez à la mémoire. Si vous vous sentez encore incertain sur la manière de transférer des données de manière sûre, un rappel sur Maîtriser l’instruction MOVE en COBOL peut être très utile avant de passer aux structures complexes.

La puissance des boucles et l’usage structuré d’OCCURS COBOL

Une fois qu’une structure de données est définie avec OCCURS, comment en parcourir chaque élément ? La réponse réside dans les mécanismes de contrôle de flux : les boucles (PERFORM) et les indexation. C’est l’association de ces deux concepts qui permet de transformer une simple structure de données en un système de traitement de masse sophistiqué.

Le parcours d’un tableau doit toujours être contrôlé par un compteur d’itération. Ce compteur est souvent géré par une boucle PERFORM VARYING. Cette approche garantit que vous ne traiterez jamais plus d’éléments que ce que la structure peut contenir, tout en vous permettant d’accéder à chaque élément individuellement via son index. Si vous voulez approfondir le concept d’accès aux données, nous vous recommandons de revoir Maîtriser l’indexation en COBOL : Différence entre Subscript et Index (INDEXED BY).

💡 Conseil de Pro : La Dimensionnalité
N’oubliez pas que la clause OCCURS peut être imbriquée ! Vous pouvez avoir un tableau de tableaux (un tableau bidimensionnel), ce qui est extrêmement puissant pour simuler des matrices ou des grilles de données. Assurez-vous de bien gérer vos deux compteurs de boucle pour ne pas créer de décalage dans le traitement.

Exemple de code : Traitement de multiples enregistrements

Voici un exemple concret où nous utilisons OCCURS pour simuler le traitement de plusieurs articles dans un panier d’achat. Nous parcourons le tableau et calculons le coût total.


DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-PANIER-ARTICLE.
    WS-ARTICLE-NOM PIC X(20).
    WS-ARTICLE-QUANTITE PIC 9(3) VALUE 1.
    WS-ARTICLE-PRIX PIC 9(5)V99.
01 WS-PANIER.
    WS-ARTICLE-TABLEAU OCCURS 5 TIMES.
        WS-ARTICLE-NOM PIC X(20).
        WS-ARTICLE-QUANTITE PIC 9(3).
        WS-ARTICLE-PRIX PIC 9(5)V99.
01 WS-TOTAL-COMPTE PIC 9(5)V99.
01 WS-COMPTEUR PIC 9(2) VALUE 0.

PROCEDURE DIVISION.
MAIN-PROGRAM.
    PERFORM VARYING WS-COMPTEUR FROM 1 BY 1 UNTIL WS-COMPTEUR > 5
        MOVE 'Article' TO WS-ARTICLE-TABLEAU(WS-COMPTEUR).WS-ARTICLE-NOM
        MOVE 10 TO WS-ARTICLE-TABLEAU(WS-COMPTEUR).WS-ARTICLE-QUANTITE
        MOVE 150.00 TO WS-ARTICLE-TABLEAU(WS-COMPTEUR).WS-ARTICLE-PRIX
    END-PERFORM.

    MOVE 0.00 TO WS-TOTAL-COMPTE.
    
    *> Boucle de traitement des articles
    PERFORM VARYING WS-COMPTEUR FROM 1 BY 1 UNTIL WS-COMPTEUR > 5
        COMPUTE WS-TOTAL-COMPTE = WS-TOTAL-COMPTE + (
            WS-ARTICLE-TABLEAU(WS-COMPTEUR).WS-ARTICLE-QUANTITE * 
            WS-ARTICLE-TABLEAU(WS-COMPTEUR).WS-ARTICLE-PRIX
        )
    END-PERFORM.

    DISPLAY "Le coût total du panier est : " WS-TOTAL-COMPTE.
    STOP RUN.

Dans cet exemple, nous avons utilisé PERFORM VARYING pour itérer sur les 5 emplacements définis par OCCURS 5 TIMES. À chaque étape, nous accédons au nom, à la quantité et au prix en utilisant la syntaxe WS-ARTICLE-TABLEAU(WS-COMPTEUR).WS-ARTICLE-NOM. C’est la manière la plus propre et la plus performante de manipuler des ensembles de données en COBOL.

Les étapes clés pour maîtriser les structures de données complexes

Passer de MOVE simple à la gestion des tableaux nécessite un changement de mentalité. Voici les étapes recommandées pour consolider vos acquis en OCCURS COBOL :

  1. Définition des structures : Toujours commencer par la DATA DIVISION. Définissez clairement la taille et le nombre d’emplacements avec OCCURS.
  2. Initialisation : Utilisez INITIALIZE ou des mouvements initiaux pour garantir que tous les champs du tableau contiennent des valeurs connues avant la première boucle.
  3. Itération contrôlée : Utilisez toujours PERFORM VARYING avec un index clair pour le parcours. Ne jamais dépendre d’un simple GO TO ou d’une boucle PERFORM simple.
  4. Calculs : Effectuez tous les calculs en utilisant l’index de la boucle pour accéder aux champs du tableau (ex: WS-ARTICLE-TABLEAU(I).WS-ARTICLE-PRIX).
  5. Sécurité : Si le nombre d’enregistrements est variable, assurez-vous que votre boucle de contrôle utilise une variable de longueur (comme le résultat d’un SEARCH ou d’un READ) plutôt qu’un nombre fixe. Pour sécuriser vos calculs en général, n’oubliez pas de consulter Maîtriser la clause SIZE ERROR en COBOL.

Conclusion : De l’opération au système

Maîtriser les tableaux et les boucles avec OCCURS en COBOL est une étape décisive qui fait passer le développeur de niveau débutant à un niveau intermédiaire-avancé. Vous ne faites plus de simples transferts de données ; vous traitez des collections, vous calculez des totaux, et vous simulez des processus métier complexes. Cette compétence est fondamentale, car elle est le pilier de toute logique de traitement de données sérieuse.

Alors, prêt à dépasser le niveau MOVE ? Commencez par des exercices de simulation de facturation ou de gestion de stocks. Si vous souhaitez approfondir votre expertise en gestion des données, le module sur Maîtriser les tableaux en COBOL : Guide pratique de la clause OCCURS est la ressource idéale pour mettre en pratique ces concepts.

Avez-vous des questions sur la gestion des données complexes ? Laissez-nous un commentaire ci-dessous !

👉 Continuez votre parcours COBOL : Découvrez nos guides sur Maîtriser les variables de condition (Niveau 88) en COBOL pour écrire un code encore plus lisible et maintenable.

Au-delà du MOVE : Maîtriser la Logique de Mapping de Données Complexe en COBOL

Au-delà du MOVE : Maîtriser la Logique de Mapping de Données Complexe en COBOL

Le langage COBOL (Common Business-Oriented Language) reste le pilier de nombreuses infrastructures critiques bancaires et gouvernementales. Pour beaucoup de programmeurs, l’instruction MOVE est le cœur battant de la manipulation de données. Elle est simple, directe, et souvent suffisante pour les transferts basiques. Pourtant, dans les systèmes d’information modernes, les données ne sont jamais simples. Elles arrivent souvent sous des formats hétérogènes, nécessitant des transformations complexes, des validations et des regroupements logiques. Maîtriser le COBOL data mapping ne consiste donc pas seulement à savoir bouger des champs, mais à décoder la sémantique des données, à gérer les incohérences et à construire des flux d’information robustes.

Si vous avez déjà fait vos premiers pas avec MOVE (voir notre guide sur Maîtriser l’instruction MOVE en COBOL : L’art du transfert de données sans erreur), il est temps de passer au niveau supérieur. Ce guide avancé vous montrera comment aborder le COBOL data mapping complexe, transformant des simples transferts en véritables processus de transformation de données.

1. Comprendre les Défis du Mapping de Données Avancé

Un simple MOVE suppose une correspondance bit-à-bit parfaite entre la source et la destination. Dans la réalité, cette hypothèse est rarement valable. Le mapping de données complexe implique souvent les étapes suivantes :

  1. Décomposition Structurelle : Les données source sont parfois regroupées de manière non standard. Il faut identifier les blocs logiques qui doivent être séparés.
  2. Transformation : Les données doivent être calculées, formatées, ou normalisées (ex: convertir un code alphabétique en un code numérique, ou appliquer une règle métier de calcul).
  3. Validation et Nettoyage : Les données doivent être vérifiées pour s’assurer qu’elles respectent les contraintes métier avant d’être acceptées.

Pour aborder ces défis, nous devons aller au-delà de la simple copie. Nous devons utiliser les mécanismes avancés du langage pour contrôler chaque étape du flux.

💡 Astuce Avancée : Ne jamais faire confiance aux données entrantes. Même si vous utilisez l’instruction Validation des Données en COBOL : Comment sécuriser votre code contre les entrées invalides, prévoyez toujours des chemins de secours (fallbacks) en cas d’échec de conversion ou de formatage. Un mapping robuste gère l’échec avec élégance.

2. Les Techniques Clés pour un COBOL Data Mapping Efficace

Pour effectuer un mapping complexe, le programmeur COBOL avancé doit maîtriser un ensemble d’outils et de concepts qui permettent de structurer la logique de transformation.

2.1. Utiliser les Instructions de Manipulation pour la Transformation

Lorsque le MOVE ne suffit pas, il faut injecter de la logique. L’instruction MOVE peut être combinée avec des structures conditionnelles (IF/ELSE) ou des opérations de calcul. Par exemple, au lieu de simplement transférer un statut, vous pourriez devoir le recalculer en fonction de plusieurs champs.

Il est crucial de bien gérer l’initialisation des variables pour éviter les données résiduelles qui fausseraient le résultat du mapping. N’oubliez jamais de revoir Maîtriser l’instruction INITIALIZE en COBOL : Évitez les bugs de données résiduelles.

2.2. Gestion des Tableaux et des Indices

Le mapping de données est souvent synonyme de traitement par lots. Si votre donnée source est structurée en tableaux (l’équivalent de la clause OCCURS), vous devez itérer sur ces structures. L’utilisation correcte des indices (INDEXED BY) est fondamentale.

Pour des mappings complexes, la gestion des tableaux et des structures est vitale. Revoyez nos guides sur Maîtriser les tableaux en COBOL : Guide pratique de la clause OCCURS et Maîtriser l’indexation en COBOL : Différence entre Subscript et Index (INDEXED BY).

3. Exemple Pratique de Data Mapping Avancé

Considérons un scénario où nous recevons un enregistrement client brut (Source) et que nous devons le transformer pour le système de reporting (Destination). Le mapping ne se limite pas au transfert de noms et adresses, mais nécessite de calculer un statut et de transformer un numéro de code.

Voici un exemple de code illustrant une logique de mapping conditionnelle et calculatoire :


DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-SOURCE-RECORD.
   05 WS-SRC-CLIENT-CODE    PIC X(8).
   05 WS-SRC-STATUT-CODE    PIC X(1).
   05 WS-SRC-ANNEE-DEBUT    PIC 9(4).

01 WS-DESTINATION-RECORD.
   05 WS-DEST-CLIENT-CODE  PIC X(8).
   05 WS-DEST-STATUT-TEXTE  PIC X(20).
   05 WS-DEST-AGE-GROUP     PIC X(10).

PROCEDURE DIVISION.
MOVE WS-SOURCE-RECORD TO WS-SOURCE-RECORD. *> Initialisation (simulée)

*> 1. Mapping simple (MOVE)
MOVE WS-SRC-CLIENT-CODE TO WS-DEST-CLIENT-CODE.

*> 2. Mapping Conditionnel (Transformation de statut)
IF WS-SRC-STATUT-CODE = 'A'
    MOVE "Actif" TO WS-DEST-STATUT-TEXTE
ELSE IF WS-SRC-STATUT-CODE = 'I'
    MOVE "Inactif" TO WS-DEST-STATUT-TEXTE
ELSE
    MOVE "Inconnu" TO WS-DEST-STATUT-TEXTE
END-IF.

*> 3. Mapping Calculatoire (Détermination du groupe d'âge)
*> Ici, on suppose que le code de l'année est utilisé pour déterminer une catégorie.
COMPUTE WS-DEST-AGE-GROUP = 'Group-' || WS-SRC-ANNEE-DEBUT.

*> 4. Nettoyage des données (Exemple de vérification de longueur)
IF LENGTH(WS-DEST-CLIENT-CODE) < 8
    DISPLAY "Erreur de mapping: Code client trop court."
    STOP RUN
END-IF.

END-PROGRAM.

Ce code montre que le COBOL data mapping est une orchestration de plusieurs instructions, chacune servant un rôle précis : l'assignation, la condition, et le calcul. Pour aller plus loin, vous devrez peut-être intégrer des opérations de tri de données en utilisant Maîtriser le tri de données en COBOL : Guide pratique de l’instruction SORT pour réordonner les enregistrements avant le mapping final.

4. Les Bonnes Pratiques pour un Mapping Robuste

Le mapping n'est pas qu'une question de syntaxe ; c'est avant tout une question d'architecture et de méthodologie. Adopter ces pratiques vous fera passer de programmeur de maintenance à architecte de données.

  • Modularité : Décomposez votre mapping en sous-programmes ou sections LOGIQUE dédiées. Cela facilite la maintenance et le test.
  • Documentation : Documentez rigoureusement chaque règle de transformation. Le mapping doit être lisible, pas seulement fonctionnel.
  • Gestion des Erreurs : Chaque étape de transformation doit être encapsulée dans un bloc de gestion d'erreurs (ON ERROR ou vérifications explicites) pour éviter un arrêt brutal en cas de donnée invalide.
  • Séparation des Préoccupations : Séparez la logique de *lecture* (Input) de la logique de *transformation* (Mapping) et de la logique d'*écriture* (Output).
  • Auditabilité : Conservez un historique des données source et des données mappées pour pouvoir retracer l'origine de toute valeur.

Conclusion : De l'Exécution au Design de Données

Passer de l'utilisation simple du MOVE à la maîtrise du COBOL data mapping complexe est une montée en compétence significative. Vous ne programmez plus seulement des transferts de données ; vous modélisez des processus métier. Vous transformez des structures brutes en informations sémantiques exploitables.

La maîtrise de ces techniques avancées vous permettra de moderniser des systèmes historiques, de garantir l'intégrité des données critiques et de réduire considérablement les risques d'erreurs lors de l'intégration de nouvelles sources. Ne vous contentez plus de transférer ; transformez, validez, et enrichissez.

Prêt à relever le défi du mapping avancé ? Nous vous encourageons à approfondir vos connaissances sur les aspects structurels du COBOL, comme Maîtriser la LINKAGE SECTION en COBOL : Transférez des données entre vos programmes, pour gérer les données dans un contexte multi-programme et complexe.

Maîtriser les tableaux en COBOL : Guide pratique de la clause OCCURS

Si vous avez déjà commencé à explorer le monde de la programmation mainframe, vous savez que la gestion de données isolées est rarement suffisante. Dans les systèmes bancaires ou de gestion de stocks, nous manipulons des listes, des historiques de transactions ou des catalogues de produits. Pour gérer ces structures de données répétitives, la clause OCCURS COBOL est l’outil indispensable. Elle permet de transformer une simple variable en un véritable tableau (ou « table » en anglais), offrant ainsi la flexité nécessaire pour traiter des ensembles de données complexes au sein de la DATA DIVISION.

Dans ce guide complet, nous allons plonger dans les mécanismes de cette clause, apprendre à déclarer des tableaux multidimensionnels et découvrir comment les parcourir efficacement avec des boucles. Que vous soyez en train de débuter votre aventure COBOL ou que vous cherchiez à perfectionner vos compétences, ce tutoriel vous donnera les clés pour maîtriser la gestion des tableaux.

Comprendre la syntaxe et les fondamentaux de la clause OCCURS COBOL

La clause OCCURS COBOL est utilisée dans la DATA DIVISION pour spécifier qu’un élément de donnée est répété un certain nombre de fois. Contrairement à d’autres langages de programmation modernes où les tableaux sont des objets dynamiques, en COBOL, la taille du tableau doit être définie de manière statique lors de la compilation (sauf utilisation avancée de la clause DEPENDING ON).

Pour bien comprendre comment cette clause s’intègre dans votre structure de données, il est essentiel de bien maîtriser la DIVISION DATA en COBOL. C’est ici que vous définissez la structure de vos éléments avant de les répéter.

Voici la syntaxe de base d’un tableau unidimensionnel :


       05  WS-LISTE-NOMMES    PIC X(20) OCCURS 5 TIMES.

Dans cet exemple, la variable WS-LISTE-NOMMES n’est pas une simple chaîne de 20 caractères, mais un tableau contenant 5 éléments, chacun étant une chaîne de 20 caractères. Au total, cette structure occupe 100 octets en mémoire.

Astuce d’expert : Ne confondez pas la taille de l’élément et la taille totale du tableau. La taille totale est toujours le produit de la taille de l’élément de base par le nombre de répétitions spécifié par la clause OCCURS.

Déclaration avancée : Indexation et Tableaux Multidimensionnels

L’utilisation de la clause OCCURS COBOL ne se limite pas à de simples listes linéaires. Pour des structures de données plus complexes, comme une matrice ou un calendrier, vous pouvez imbriquer des clauses OCCURS.

Par exemple, pour représenter un tableau de notes pour 10 étudiants, où chaque étudiant a 3 notes, vous utiliseriez un tableau à deux dimensions :


       05  WS-NOTES-ETUDIANTS.
           10  WS-NOTE-ETUDIANT  PIC 9(3)V99 OCCURS 10 TIMES
                                   INDEXED BY ETU-IDX.
               15  WS-NOTE-MATIERE PIC 9(3)V99 OCCURS 3 TIMES
                                   INDEXED BY MAT-IDX.

Ici, nous introduisons une notion cruciale : l’indexation. L’utilisation de INDEXED BY permet de créer des indices de recherche optimisés pour le processeur. Contrairement à l’utilisation d’une variable classique (un sousscript), l’index est géré directement par le runtime COBOL, ce qui améliore les performances lors du parcours des données.

Si vous avez besoin de manipuler ces données de manière plus flexible, vous pourriez également coupler cette technique avec la clause REDEFINES en COBOL. Cela vous permet de voir le même bloc de mémoire sous différents angles, par exemple en interprétant une ligne de tableau comme un champ unique de grande taille.

Manipuler les tableaux avec la clause OCCURS COBOL et les boucles

Déclarer un tableau est une chose, mais l’utiliser en est une autre. Pour parcourir les éléments d’un tableau, la méthode standard consiste à utiliser l’instruction PERFORM. C’est ici que la puissance de la programmation structurée prend tout son sens.

Pour traiter chaque élément, nous utilisons généralement une boucle qui incrémente un index ou un sousscript de 1 jusqu’à la limite définie dans l’OCCURS. Si vous maîtrisez déjà les boucles en COBOL, vous comprendrez que la logique est identique à celle d’un FOR en C ou en Java.

Voici un exemple complet et fonctionnel d’un programme COBOL qui utilise un tableau pour calculer la moyenne de notes :


       IDENTIFICATION DIVISION.
       PROGRAM-ID. CALCUL-MOYENNE.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       
       * Déclaration du tableau avec la clause OCCURS
       01  WS-TABLEAU-NOTES.
           05  WS-NOTE           PIC 9(3)V99 OCCURS 5 TIMES
                               INDEXED BY NOTE-IDX.

       01  WS-VARIABLES-CALCUL.
           05  WS-SOMME          PIC 9(5)V99 VALUE 0.
           05  WS-MOYENNE        PIC 9(3)V99 VALUE 0.
           05  WS-I              PIC 9(2) VALUE 0.

       PROCEDEMENT-DIVISION.
       000-MAIN.
           * Initialisation des notes (Simulation de données)
           MOVE 12.50 TO WS-NOTE(1).
           MOVE 15.00 TO WS-NOTE(2).
           MOVE 08.75 TO WS-NOTE(3).
           MOVE 14.25 TO WS-NOTE(4).
           MOVE 10.00 TO WS-NOTE(5).

           * Parcours du tableau pour calculer la somme
           PERFORM 100-CALCULER-SOMME 
               VARYING NOTE-IDX FROM 1 BY 1 
               UNTIL NOTE-IDX > 5.

           * Calcul de la moyenne
           COMPUTE WS-MOYENNE = WS-SOMME / 5.

           DISPLAY "LA SOMME DES NOTES EST : " WS-SOMME.
           DISPLAY "LA MOYENNE EST : " WS-MOYENNE.

           STOP RUN.

       100-CALCULER-SOMME.
           ADD WS-NOTE(NOTE-IDX) TO WS-SOMME.

Dans ce programme, nous avons utilisé :

  • La clause OCCURS pour créer un tableau de 5 notes.
  • L’instruction INDEXED BY pour une navigation performante.
  • L’instruction PERFORM VARYING pour automatiser le parcours.
  • L’instruction COMPUTE pour effectuer l’opération arithmétique.
  • Une structure de données simple pour stocker le résultat intermédiaire.

Bonnes pratiques et pièges à éviter lors de l’utilisation de l’OCCURS

Travailler avec des tableaux en COBOL demande de la rigueur. Une mauvaise gestion de la mémoire ou des indices peut entraîner des erreurs fatales lors de l’exécution (S0C4 sur mainframe par exemple).

Voici une liste de points de vigilance essentiels pour tout développeur intermédiaire :

  1. Respectez les limites de l’indice : Ne tentez jamais d’accéder à un élément WS-NOTE(6) si votre clause OCCURS est limitée à 5. Cela provoque un dépassement de capacité.
  2. Privilégiez l’indexation (INDEXED BY) : Pour les grands tableaux, l’utilisation d’un index est bien plus performante que l’utilisation d’une variable numérique classique comme sousscript.
  3. Attention à la taille des types numériques : Si vous utilisez des calculs complexes dans vos tableaux, assurez-vous que vos variables de travail (comme WS-SOMME) sont assez grandes pour ne pas subir d’overflow. Pensez à maîtriser les calculs numériques et le format COMP-3 pour optimiser le stockage.
  4. Utilisez la clause DEPENDING ON avec parcimonie : La gestion de tableaux à taille variable (OCCURS DEPENDING ON) est puissante mais rend la gestion de la mémoire plus complexe.
  5. Initialisation systématique : Avant de parcourir un tableau pour un calcul (comme une somme), assurez manquement que vos variables d’accumulation sont réinitialisées à zéro.

En maîtrisant la clause OCCURS COBOL, vous débloquez la capacité de traiter des volumes de données significatifs, ce qui est l’essence même de la puissance du langage COBOL dans le monde de l’entreprise. Que vous manipuliez des chaînes de caractères via STRING et UNSTRING ou des fichiers de transactions complexes via la gestion des fichiers, la structure de tableau reste votre alliée la plus fidèle.

Conclusion

La clause OCCURS COBOL est bien plus qu’une simple fonctionnalité de répétition ; c’est le fondement de la gestion de structures de données dynamiques en COBOL. En apprenant à déclarer des tableaux multidimensionnels, à utiliser l’indexation et à parcourir vos données avec des boucles PERFORM, vous franchissez une étape cruciale vers le niveau expert.

Vous souhaitez aller plus loin ? Ne vous arrêtez pas là ! Pour devenir un véritable maître du mainframe, nous vous recommandons de consulter nos autres guides sur la modularité avec l’instruction CALL ou sur la gestion avancée des dates. Continuez votre apprentissage et transformez votre code COBOL en une véritable œuvre d’art industrielle !