Description du COBOL généré à partir d'un Programme

Le COBOL est généré à partir des informations indiquées dans l'éditeur de design de l'instance et éventuellement complétées par des insertions de code spécifique. Pour vous aider à comprendre le COBOL généré et à décider des points d'insertion de votre code spécifique, cette page explique les variables présentes dans le COBOL et décrit les fonctions générées.

Le COBOL d'un Programme débute par l'IDENTIFICATION DIVISION du COBOL, générée à partir de la Définition du Programme.

Vient ensuite l'ENVIRONMENT DIVISION, générée à partir des appels de Structures de Données. Elle est adaptée à la variante du COBOL demandée pour le Programme.

La DATA DIVISION est aussi générée à partir des appels de Structures de Données. Sa FILE SECTION ne doit en aucun cas être modifiée, si ce n’est par la description des Structures de Données.

La WORKING-STORAGE SECTION et la PROCEDURE DIVISION sont décrites en détails dans cette page.

WORKING-STORAGE SECTION

La WORKING-STORAGE SECTION contient les variables et indices utilisés par le Programme. Ils sont générés en fonction des caractéristiques des Structures de Données et de l’appel de ces Structures dans le Programme.

En tête de la WORKING-STORAGE SECTION sont générées les description des fichiers en organisation W: Description de fichier en Working, ou en organisation L: Working avec placement ou D: DL/1, IDS I et II avec un code placement alphabétique.

Le niveau DEBUT-WSS est généré systématiquement après ces descriptions. Il contient les éléments suivants :
  • La constante BLANC si le Programme comprend un fichier d’utilisation M: Mouvement à contrôler ou N: Mouvement à ne pas contrôler.
  • La variable IK, systématiquement générée.
Les tableaux suivants donnent la signification des variables et indices de la WORKING-STORAGE SECTION :
Tableau 1. Variables relatives aux dates
Code Signification
DATCE Variable composée d’une zone CENTUR contenant la valeur du siècle, et d’une zone date (DATOR) non initialisée pour stocker la date du traitement sous la forme an-mois-jour (DATOA-DATOM-DATOJ). Les zones DAT6, DAT8, DAT8E, DAT6C et DAT8C servent au formatage de la date.
DATSEP Séparateur utilisé dans les dates (valeur par défaut : /).
Tableau 2. VARIABLES-CONDITIONNELLES
Code Signification
RTDn Rupture totale dernière au niveau n.

Au cours de l’itération, le traitement des enregistrements ayant le même indicatif au niveau n est terminé sur tous les fichiers synchronisés en entrée.

RTPn Rupture totale première au niveau n.

Au cours de l’itération, le traitement des enregistrements ayant le même indicatif au niveau n est commencé sur tous les fichiers synchronisés en entrée.

dd-DEn Rupture dernière sur le fichier dd au niveau n.

Le dernier des enregistrements ayant le même indicatif au niveau n a été trouvé pour le fichier dd.

dd-PEn Rupture première sur le fichier dd au niveau n.

Le premier des enregistrements ayant le même indicatif au niveau n a été trouvé pour le fichier dd.

dd-CFn Configuration du fichier dd au niveau n.

Au niveau n, l'enregistrement du fichier en entrée dd participe au traitement dans l’itération.

dd-OCn Occurrence sur le fichier dd au niveau n.

Au niveau n, l’enregistrement du fichier en entrée dd est traité.

dd-FT Fin de travail sur le fichier dd.

Tous les enregistrements du fichier dd ont été traités.

dd-FI Fin de lecture sur le fichier dd.

Tous les enregistrements du fichier dd ont été lus.

Tableau 3. Indices de recherche en table et compteurs
Code Signification
IddssM Mémorisation du nombre d’enregistrements maximum prévu par l’utilisateur.
IddssL Mémorisation du nombre d’enregistrements effectivement stockés dans la table issue de la description de l’enregistrement ss du fichier dd. Ce nombre ne peut excéder IddssM.
IddssR Utilisé pour toute recherche sur la table issue de la description de l’enregistrement ss du fichier dd.

A la fin du chargement de la table, cet indice est initialisé à zéro si la table ne déborde pas, au nombre d’enregistrements lus si elle déborde.

5-dd00-CPTENR Compteur d'enregistrements du fichier dd. Il est incrémenté à chaque lecture ou écriture séquentielle.
Tableau 4. Variables et zones de controle
Code Signification
EN-PRR Mémorise, pour chaque Rubrique du fichier mouvement, la présence et l’état de la Rubrique dans l’enregistrement.
A chaque Rubrique élémentaire (corub) différente de FILLER, et ne faisant pas partie des Rubriques facultatives, est associée une position dans une table nommée PR-ss-corub (ss est le Segment). Elle peut prendre les valeurs suivantes :
  • 0 : Rubrique absente,
  • 1 : Rubrique présente,
  • 2 : Rubrique absente à tort,
  • 3 : Rubrique présente à tort,
  • 4 : Classe erronée,
  • 5 : Contenu erroné.
La dernière position de cette table, EN-EI, mémorise les erreurs d’identification. Elle peut prendre les valeurs suivantes :
  • 0 : Code structure et code mouvement reconnus
  • 5 : Erreur sur le code structure
  • 6 : Erreur sur le code mouvement
EN-PRE Mémorise à un instant donné la présence et l’état d’une Rubrique.
ER-PRR Permet d’assurer les transferts entre EN-PRR et un fichier d’utilisation M : Mouvement à contrôler, N : Mouvement à ne pas contrôler ou E : Mouvement avec détection d'erreurs portant un vecteur erreur réduit
GR-PRR Mémorise, pour chaque type d’enregistrement du fichier mouvement, la présence et l’état de l’enregistrement dans un mouvement.
A chaque structure d’enregistrement possible dans le fichier mouvement est associée une position dans cette table nommée GR-PR(I01). Elle peut prendre les valeurs suivantes :
  • 0 : Enregistrement absent,
  • 1 : Enregistrement présent,
  • 2 : Enregistrement absent à tort,
  • 3 : Enregistrement présent à tort,
  • 7 : Enregistrement en double,
  • 8 : Création à tort,
  • 9 : Modification ou suppression à tort.
La dernière position de cette table, GR-EG, mémorise toute erreur détectée dans le mouvement. Elle peut prendre les valeurs suivantes :
  • 1 : Pas d'erreur,
  • 4 : Erreur.
GR-PRE Mémorise à un instant donné la présence et l’état d’un enregistrement.
GM-ER Mémorise s’il y a eu ou non une erreur sur un ensemble de mouvements destinés à mettre à jour un enregistrement du fichier permanent
UT-ERUT Mémorise les erreurs gérées par l’utilisateur.
Tableau 5. Indices tables d’édition
Code Signification
CAT-TAB Table des catégories qui mémorise les catégories à éditer dans une itération
ST-TA Table banalisée des triplets (numéro de structure, numéro de libellé, saut) de la catégorie à éditer
e-LlB Table des libellés relatifs à l’Etat e
ST-SLS Mémorise le triplet (numéro de structure, numéro de libellé, saut) en cours d’édition
CATX Mémorise la catégorie en cours d’édition
5-dd00-eCP Compteur de page relatif à l’Etat e du fichier dd
5-dd00-eCL Compteur de lignes de l’Etat e du fichier dd
5-dd00-eCLM Compteur mémorisant le nombre de lignes maximum autorisé dans la page
e-cc-NL Nombre de lignes requis pour éditer la catégorie cc de l’Etat e
Jddecc Indice associé à la catégorie itérative cc de l’Etat e, supporté par le fichier dd

Il contient, au niveau du remplissage des structures, le rang de la catégorie cc en cours d’édition.

Tableau 6. Zones de totalisation
Code Signification
Tess-corub(x) Totalisateur au niveau x associé à la Rubrique corub de la structure ss de l’Etat e
Gess-corub Totalisateur général associé à la Rubrique corub de la structure ss de l'Etat e

PROCEDURE DIVISION

La PROCEDURE DIVISION est générée à partir des appels de Structures de Données ou Segments, des traitements spécifiés et des appels de Macros.

Tableau 7. Structure de la PROCEDURE DIVISION d'un Programme
Code fonction Objectif de la fonction
F01 Initialisations.

Cette fonction est toujours générée. Elle contient une sous-fonction F01dd pour l'ouverture et la première lecture du fichier dd si le fichier est à rupture ou chargement en table.

F05 Lecture fichiers sans rupture.

Cette fonction comprend une sous-fonction F05dd par fichier dd en entrée défini sans rupture et non chargé en table.

F10 Lecture fichiers avec rupture.

Cette fonction comprend une sous-fonction F10dd par fichier dd en entrée à rupture.

F20 Fin de traitement.

Cette fonction comprend une sous-fonction F20dd pour la fermeture de chaque fichier dd à rupture ou chargement en table.

Elle contient aussi une sous-fonction 2099 qui génère l'ordre STOP RUN si le Programme ne comporte pas de fichier de tri.

F22 Calcul des ruptures par fichier.

Cette fonction est générée si un niveau de rupture est indiqué pour un fichier principal, consulté ou mouvement.

F24 Calcul des configurations.

Cette fonction est générée si un niveau de synchronisation est indiqué pour un fichier en entrée qui n’est pas chargé en table ou si un fichier en entrée ou en entrée-sortie est un fichier principal.

F26 Calcul des ruptures totales.

Cette fonction est générée si un niveau de rupture et un niveau de synchronisation sont indiqués pour un fichier principal, consulté ou mouvement.

F30 Calcul des variables de contrôle.

Cette fonction est générée si un fichier en entrée est un fichier mouvement.

F33 Contrôle d'identification.

Cette fonction est générée si un code structure ou un code mouvement est indiqué pour le fichier mouvement du Programme.

Cette fonction comprend une sous-fonction F33AA pour le contrôle du code structure et une sous-fonction F33BB pour le contrôle du code mouvement.

F36 Contrôle des enregistrements en double.

Cette fonction est générée si le Programme comporte un fichier d'utilisation M : Mouvement à contrôler pour lequel un niveau de rupture a été indiqué. Le code structure doit faire partie de l’argument du fichier et une rupture doit être définie pour ce niveau, ou alors le fichier ne doit comporter qu’un seul type d’enregistrement.

F39 Détermination de la présence des Rubriques.

Cette fonction est générée si le Programme comporte un fichier mouvement (utilisation M : Mouvement à contrôler ou N : Mouvement à ne pas contrôler) en entrée.

F42 Contrôle de structure de l'enregistrement.

Cette fonction est générée si un fichier d'utilisation M : Mouvement à contrôler est utilisé dans le Programme.

Cette fonction comprend une sous-fonction F4210 pour le contrôle de la présence ou de l’absence des Rubriques de la partie commune, et une sous-fonction F4220 pour le contrôle de la présence ou de l’absence des Rubriques de la partie spécifique.

F45 Contrôle du contenu des Rubriques.

Cette fonction est générée si un fichier d'utilisation M : Mouvement à contrôler est utilisé dans le Programme.

Cette fonction comprend une sous-fonction F4500 pour le contrôle du contenu des Rubriques de l'enregistrement dd00, et une sous-fonction F45nn pour le contrôle du contenu des Rubriques de l'enregistrement ddnn.

F51 Contrôle de présence des enregistrements.

Cette fonction est générée si un fichier d'utilisation M : Mouvement à contrôler est utilisé dans le Programme et si ce fichier comporte plusieurs types d'enregistrements.

Cette fonction comprend une sous-fonction F5110 pour le contrôle de la présence à tort des enregistrements, et une sous-fonction F5120 pour le contrôle de l'absence à tort des enregistrements.

F70 Contrôle de correspondance.

Cette fonction est générée si le Programme utilise un fichier d'utilisation M : Mouvement à contrôler ou N : Mouvement à ne pas contrôler dont les Rubriques mettent à jour un ou plusieurs fichiers principaux.

Cette fonction comprend une sous-fonction F70dd par fichier dd à mettre à jour.

F73 Mise à jour.

Cette fonction est générée si un fichier mouvement met à jour un fichier principal.

F76 Mémorisation des erreurs et reprise.

Cette fonction est générée si un fichier mouvement est appelé dans le Programme. Elle mémorise les erreurs détectées dans les contrôles et reprend l'état initial de chaque enregistrement des fichiers principaux en cas d'erreur sur un mouvement.

Cette fonction comprend une sous-fonction F76dd par fichier dd à mettre à jour. Ces sous-fonctions F76dd sont exécutées lorsque les fichiers sont en ruptures totales dernières.

F8E Edition de l’état E.

Cette fonction est générée lorsqu’un Etat est appelé dans un Programme. Une fonction F8E est générée par Etat à éditer.

Chaque fonction est découpée en deux sous-ensembles :
  • Détermination des catégories à éditer, avec une sous fonction F8Ecc (cc : code catégorie, alphabétique) par catégorie,
  • Edition des structures, avec une sous-fonction F8Ess (ss : code structure, numérique) par structure.
Chaque fonction comprend les éléments suivants :
  • Le conditionnement d’édition de l’Etat tel que défini dans la ligne de composition de l’édition,
  • Une sous-fonction par catégorie,
  • Une sous-fonction F8EZZ pour la détermination de la ligne à éditer et le chargement de l’ensemble des informations de structures, libellés et sauts nécessaires à l’édition de cette ligne,
  • Une sous-fonction F8E00 pour le débranchement à la sous-fonction d’édition de la structure concernée,
  • Une sous-fonction d’édition par structure,
  • Une sous-fonction F8E99 pour les ordres d’écriture de l’Etat et l’incrémentation du compteur de lignes écrites.
F90 Ecritures.

Cette fonction est générée si le programme utilise en sortie un fichier séquentiel d’utilisation D : Fichier en sortie, S : Sélectionné, R : Résultat ou E: Mouvement avec détection d'erreurs.

Cette fonction regroupe les fonctions d’écriture sur les différents fichiers en sortie. Elle n’est pas conditionnée.

Elle comprend une sous-fonction F90dd (dd : code fichier) par fichier en sortie.

F95 Fonction appelée par PERFORM.

Cette fonction est générée à partir des fonctions 05 ou 10, si une Structure de Données a une organisation W: Description de fichier en Working dans l'appel des Structures de Données.

La sous-fonction F9520 est la sous-fonction par défaut de transformation des dates. Le numéro de la sous-fonction peut être modifié avec l'option DATPRO dans le Programme.


Vos commentaires