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

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.

La génération est possible à partir d'un Ecran de type standard, Client ou Moniteur Client.

Le COBOL généré est adapté au matériel et au moniteur de temps réel précisés dans la Définition du Dialogue ou de l'Ecran.

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 constantes et les variables utilisées par l'Ecran.

Les tableaux suivants expliquent la signification des principales constantes et variables générées :
Tableau 1. Variables et constantes générales
Code Signification
CURPOS Position du curseur dans l'Ecran en réception. CPOSL représente le numéro de ligne et CPOSC représente le numéro de colonne.
CPOSN Position absolue du curseur dans l'écran. L'origine correspond à CPOSL=1 et CPOSC=1.
INA Nombre de Rubriques dans la catégorie en-tête.
INR INA + nombre de Rubriques dans la catégorie répétitive.
INZ INA + nombre de Rubriques dans la catégorie bas d'écran.
IRR Nombre de répétitions dans la catégorie répétitive.
INT Nombre total de Rubriques saisissables dans l'Ecran.
IER Nombre de messages d'erreur sur l'Ecran.
PRDOC Nom externe du programme souffleur.
DATOR Zone où la date machine peut être stockée sous la forme AN-MOIS-JOUR.
DATSEP Séparateur utilisé dans les dates (valeur par défaut : /)
DATSET Séparateur utilisé dans les dates (valeur par défaut : -).
DAT6, DAT7, DAT8 Zones pour formatage de date sous la forme JJMMAA ou AAMMJJ et d'édition (JJ/MM/AA par exemple). Générées si une Rubrique variable comporte un format date.
DATCTY Zone pour chargement du siècle.
DAT6C et DAT7C Zones pour date avec siècle non formatée.
DAT8C Zone pour formatage date avec siècle (JJ/MM/AAAA).
DAT8G Zone pour date au format grégorien (SSAA-MM-JJ).
TIMCO Zone pour chargement de l'heure.
TIMDAY Zone pour formatage de l'heure (HH:MM:SS).
5-xxnn-PROGE Zone contenant le programme appelé, renseignée lors d'un débranchement.
Tableau 2. Variables de contrôle et indicateurs
Code Signification
ICF Variable de configuration :
  • 1 : Ecran en entrée
  • 0 : Pas d'Ecran en entrée
OCF Variable de configuration :
  • 1 : Ecran en sortie
  • 0 : Pas d'Ecran en sortie
OPER Code opération :
  • A : Affichage
  • M : Mise à jour
  • S : Suite de l'Ecran
  • E : Abandon de la conversation
  • P : Même Ecran
  • O : Appel d'un autre Ecran
OPERD Code opération pour débranchements différés :

O : Appel différé d'un autre Ecran

Initialisé en F0520 et transféré dans OPER en F40

CATX Catégorie en cours de traitement :
  • 0 : Début de réception ou d'affichage
  • blanc : En-tête d'écran
  • R : Répétitive
  • Z : Fin d'écran
CATM Code mouvement :
  • C : Création
  • M : Modification
  • A : Annulation
  • X : Mise à jour implicite
ICATR Indice de la catégorie en cours de traitement (catégorie répétitive seulement)
FT Indicateur de fin de catégorie répétitive :
  • 0 : Lignes à afficher
  • 1 : Plus de lignes à afficher
ddss-CF Configuration du Segment ddss :
  • 0 : Le Segment ne participe pas
  • 1 : Le Segment participe
IK Code retour lors d'un accès à un Segment :
  • 0 : Pas d'erreur
  • 1 : Erreur
Tableau 3. Variables d'erreur
Code Signification
GR-EG Mémorisation d'une erreur sur l'Ecran :
  • 1 : Pas d'erreur
  • 4 : Erreur
CATG Mémorisation d'une erreur en cours sur une catégorie :
  • blanc : Pas d'erreur
  • E : Erreur
PR-nn-corub Mémorisation d'une erreur sur Rubrique (corub) :
  • 0 : Rubrique absente
  • 1 : Rubrique présente
  • 2 : Rubrique absente à tort
  • 3 : Rubrique présente à tort
  • 4 : Classe erronée
  • 5 : Contenu erroné

PROCEDURE DIVISION

Tableau 4. Structure de la PROCEDURE DIVISION d'un Ecran
Code fonction Objectif de la fonction
F0110 Initialisations.

Cette fonction est toujours générée. Elle contient les initialisations des zones de travail. Elle positionne le traitement à exécuter en cas d'erreur. Elle assure le débranchement vers la fonction d'affichage physique après une consultation de documentation (si un appel de documentation est renseigné sur la ligne de définition de l'Ecran). Elle assure la localisation de la position du curseur pour le premier affichage.

F05 Réception et contrôle du code opération (ICF=1).

Cette fonction contient le conditionnement de l'ensemble des traitements de la partie réception du COBOL, de F05 à END-OF-RECEPTION (F45-FN) . Les fonctions automatiques de cette partie du COBOL sont générées si au moins une des zones de l'Ecran est déclarée de nature variable.

F0510 Réception de l'Ecran en entrée.
F0512 Traitement d'appel de documentation si un appel de documentation est renseigné sur la Définition de l'Ecran. Cette sous-fonction initialise les zones nécessaires au débranchement vers l'Ecran de documentation.
F0520 Détermination du code opération.

La sous-fonction F0520 est générée si une Rubrique variable ou une Rubrique touche fonction est déclarée comme code opération dans l'onglet Lignes -CE de l'Ecran.

Le code opération interne OPER est positionné en fonction de la valeur de la Rubrique déclarée comme code opération.

Si une erreur est rencontrée sur la valeur du code opération, les traitements suivants en réception ne sont pas exécutés.

F1010 Positionnement de la catégorie en cours.
Cette fonction positionne la catégorie à traiter en réception en fonction de l'indicateur CATX qui peut prendre les valeurs suivantes :
  • 0 : Début de la réception,
  • blanc : Catégorie en-tête,
  • R : Catégorie répétitive,
  • Z : Catégorie de bas d'écran.

Les traitements sont donc générés en fonction des catégories définies au niveau de la liste des zones de l'Ecran. Si aucune catégorie n'a été définie, l'Ecran est considéré comme une seule catégorie en-tête.

Pour une catégorie répétitive, les traitements suivants sont effectués :
  • Basculements entre la ligne répétée à traiter et le poste banalisé de la description d'Ecran en entrée, qui permet l'accès à chacune des Rubriques de la ligne.
  • Initialisation et incrémentation de l'indice ICATR de gestion de la catégorie répétitive.

Si, après le traitement complet d'une catégorie (F15 à F3999-ITER-FI), une erreur a été détectée (CATG=E), GR-EG est positionné et les contrôles sur les catégories suivantes ne sont pas effectués.

F15 Détermination du code mouvement.

Cette fonction est générée si au moins une Rubrique est déclarée comme code mouvement dans une catégorie dans la liste des zones de l'Ecran.

Le code mouvement interne CATM est positionné en fonction des valeurs de la Rubrique de la catégorie déclarée comme code mouvement. Cette déclaration peut être effectuée à deux niveaux :
  • L'onglet Lignes -D de la Rubrique,
  • La section Contrôles supplémentaires du champ de l'onglet Lignes -CE de l'Ecran.
Les sous-fonctions suivantes sont générées si un code mouvement a été indiqué dans une catégorie :
  • F15A pour la catégorie en-tête,
  • F15R pour la catégorie répétitive,
  • F15Z pour la catégorie de bas d'écran.

Si une erreur est rencontrée sur la valeur du code mouvement, les traitements suivants en réception ne sont pas exécutés.

F20 Contrôles des Rubriques.

Cette fonction générée dès qu'une Rubrique variable a été indiquée.

Les sous-fonctions suivantes sont générées en fonction des catégories contenant au moins une Rubrique à contrôler :
  • F20A pour la catégorie en-tête,
  • F20R pour la catégorie répétitive,
  • F20Z pour la catégorie de bas d'écran.

Le traitement pour chacune des catégories contient une sous-fonction par Rubrique à contrôler de la catégorie.

Les contrôles sont les suivants :
  • Contrôle de présence,
  • Contrôle de numéricité,
  • Contrôle de valeur en fonction des valeurs ou des plages de valeurs définies pour la Rubrique,
  • Contrôle de date par PERFORM pour les Rubriques déclarées avec un format date,
  • Contrôle par PERFORM d'une sous-fonction définie au niveau de la section Contrôles supplémentaires du champ de l'onglet Lignes -CE de l'Ecran.

Le conditionnement de chaque sous-fonction est généré en fonction de l'option de traitement de la Rubrique.

Le résultat des contrôles de chaque Rubrique est mémorisé dans une zone PR-nn-corub (où nn représente les deux derniers caractères du nom de l'Ecran et corub le nom de la Rubrique). Les valeurs suivantes sont possibles :
  • 0 : Rubrique absente,
  • 1 : Rubrique présente,
  • 2 : Rubrique absente à tort,
  • 4 : Classe erronée,
  • 5 : Valeur erronée.

Toute erreur spécifique sur Rubrique (ou erreur utilisateur) entraîne le positionnement de CATG.

La numérotation des sous-fonctions dépend, entre autres, du nombre de Rubriques et de leur position sur l'Ecran. Il ne faut donc pas faire de référence directe à une étiquette générée dans des traitements spécifiques, mais insérer les traitements spécifiques en relatif.

F25 Accès aux Segments en réception.

Cette fonction est générée dès qu'un Segment est accédé en réception.

Les sous-fonctions suivantes sont générées en fonction des catégories contenant un Segment en réception :
  • F25A pour la catégorie en-tête,
  • F25R pour la catégorie répétitive,
  • F25Z pour la catégorie de bas d'écran.
Les traitements de chaque catégorie incluent une sous-fonction par accès à un Segment. Les traitements suivants sont effectués :
  • Initialisation de la clé si elle est définie dans l'onglet Lignes -CS de l'Ecran,
  • Lecture ou lecture avec mise à jour du Segment en fonction de son utilisation dans l'Ecran (par PERFORM de F80-ddss-R ou F80-ddss-RU),
  • Positionnement de la variable ddss-CF du Segment,
  • Traitement en cas d'erreur.

La sous-fonction F2599 est générée si au moins un des Segments en lecture peut être mis à jour. Elle contient le PERFORM des fonctions F80-ddss-UN, selon les Segments utilisés, ainsi que le positionnement du curseur sur la première Rubrique variable de la catégorie en cas d'erreur sur un Segment.

La numérotation des sous-fonctions dépend, entre autres, du nombre de Rubriques et de leur position sur l'Ecran. Il ne faut donc pas faire de référence directe à une étiquette générée dans des traitements spécifiques, mais insérer les traitements spécifiques en relatif.

F30 Transfert des Rubriques.

Cette fonction assure le transfert des Rubriques de l'Ecran dans les Rubriques correspondantes des Segments.

Les sous-fonctions suivantes sont générées en fonction des catégories contenant au moins un transfert de Rubriques en réception :
  • F30A pour la catégorie en-tête,
  • F30R pour la catégorie répétitive,
  • F30Z pour la catégorie de bas d'écran.
F35 Ecritures de mise à jour.

Cette fonction assure la mise à jour des Segments. Elle n'est pas exécutée s'il y a eu au moins une erreur détectée par les contrôles (CATG).

Les sous-fonctions suivantes sont générées en fonction des catégories contenant un Segment à mettre à jour :
  • F35A pour la catégorie en-tête,
  • F35R pour la catégorie répétitive,
  • F35Z pour la catégorie de bas d'écran.

L'accès est réalisé par PERFORM de la sous-fonction adéquate en F80

Dans le traitement de chaque catégorie se trouve une sous-fonction par Segment à mettre à jour, comprenant éventuellement plusieurs types d'accès.

Pour un Segment sans Segment précédent, l'accès est conditionné par la valeur du code mouvement interne (CATM) correspondant aux opérations suivantes :
  • Création : écriture (F80-ddss-R),
  • Annulation : suppression (F80-ddss-D),
  • Autres cas : réécriture (F80-ddss-RW).
Pour un Segment avec Segment précédent, l'accès est conditionné par la configuration du Segment :
  • ddss-CF=0 : écriture,
  • ddss-CF=1 : réécriture.

La Rubrique code mouvement de la catégorie ou de la ligne de catégorie répétitive est remise à blanc après la mise à jour.

La numérotation des sous-fonctions dépend, entre autres, du nombre de Rubriques et de leur position sur l'Ecran. Il ne faut donc pas faire de référence directe à une étiquette générée dans des traitements spécifiques, mais insérer les traitements spécifiques en relatif.

F3999-ITER-FN GO TO F10
F3999-ITER-FT EXIT
F40 Cette fonction contient les traitements de fin de la partie réception. Elle est exécutée si aucune erreur n'a été rencontrée.
F4010 Alimentation des clés d'affichage d'un nouvel Ecran.

Cette sous-fonction est exécutée pour une opération d'affichage ou de mise à jour. Elle contient l'alimentation des clés des Segments qui n'ont pas de Segment précédent et qui sont utilisés en affichage.

En fonction des catégories, la mémorisation de la clé d'accès des Segments en affichage se trouve dans les sous-fonctions suivantes :
  • F40A pour la catégorie en-tête,
  • F40R pour la catégorie répétitive,
  • F40Z pour la catégorie de bas d'écran.
F4020 Affichage de la suite de l'Ecran.

Cette sous-fonction contient la mémorisation de la première clé pour l'affichage de la suite de l'Ecran si le Segment est utilisé dans la partie répétitive.

F4030 Abandon de la conversation.
F4040 Appel d'un autre Ecran.
F45-FN END-OF-RECEPTION
F50 Cette fonction contient le conditionnement de l'ensemble des traitements de la partie affichage du COBOL, de F50 à END-OF-DISPLAY(F78-FN).

Si une erreur a été détectée, un débranchement à la fonction de traitement des erreurs est effectué. Les champs des Rubriques valides resteront inchangés et ne seront pas transmis sur la ligne.

F5010 Cette sous-fonction est toujours générée. Elle assure les initialisations des zones de travail et de la description de l'Ecran en affichage.
F55 Gestion de la catégorie.
Cette fonction positionne la catégorie à traiter en affichage selon les différentes valeurs de l'indicateur CATX :
  • 0 : Début de l'affichage,
  • blanc : Catégorie en-tête,
  • R : Catégorie répétitive,
  • Z : Catégorie de bas d'écran.

Les traitements sont donc générés en fonction des catégories définies au niveau de la liste des zones de l'Ecran.

Si aucune catégorie n'a été définie, l'Ecran est considéré comme une seule catégorie en-tête.

Une catégorie répétitive contient les traitements suivants :
  • Basculements entre la ligne répétée à traiter et le poste banalisé de la description d'Ecran en sortie, qui permet l'accès à chaque Rubrique de la ligne,
  • Initialisation et incrémentation de l'indice ICATR de gestion de la catégorie répétitive.
F60 Accès aux Segments en affichage.
Cette fonction est générée dès qu'un Segment est accédé en affichage. En fonction des catégories contenant un segment en affichage, les sous-fonctions suivantes sont générées :
  • F60A pour la catégorie en-tête,
  • F60R pour la catégorie répétitive,
  • F60Z pour la catégorie de bas d'écran.
Dans le traitement de chaque catégorie se trouve une sous-fonction par accès à un Segment. Elle contient les traitements suivants :
  • Chargement de la clé à partir de la zone K-cddss-clé mémorisée en fonction F40. Dans le cas d'un premier affichage, vous devez assurer le chargement de la zone K-.
  • Accès par PERFORM à la sous-fonction F80 adéquate en fonction de la catégorie :
    • Lecture directe (F80-ddss-R),
    • lecture séquentielle après positionnement (répétitive) (F80-ddss-P et F80-ddss-RN), en fonction de l'utilisation du Segment.
  • Positionnement de la variable ddss-CF du Segment,
  • Traitement en cas d'erreur.

Si un Segment est précédé par un autre Segment, sa lecture sera toujours une lecture directe, même en répétitive.

La numérotation des sous-fonctions dépend, entre autres, du nombre de Rubriques et de leur position sur l'Ecran. Il ne faut donc pas faire de référence directe à une étiquette générée dans des traitements spécifiques, mais insérer les traitements spécifiques en relatif.

F65 Alimentation des Rubriques.
Cette fonction assure le transfert de Rubriques des Segments dans les Rubriques correspondantes de l'Ecran. Selon les catégories de l'Ecran contenant au moins un transfert de Rubrique en affichage, les sous-fonctions suivantes sont générées :
  • F65A pour la catégorie en-tête,
  • F65R pour la catégorie répétitive,
  • F65Z pour la catégorie de bas d'écran.
F6999-ITER-FN. GO TO F55
F6999-ITER-FT. EXIT
F70 Traitement des erreurs.
Cette fonction est systématiquement générée. Elle contient les traitements suivants :
  • F7010-A : Exploration du vecteur erreur EN-PRR, positionnement de l'attribut de zone erronée, accès au fichier des libellés d'erreurs et chargement du libellé d'erreur de l'Ecran,
  • F7010-B : Exploration de la table d'erreurs utilisateur T-XCLEF, accès au fichier des libellés d'erreurs et chargement du libellé d'erreur de l'Ecran.
F7020 Positionnement des attributs.

Cette sous-fonction est générée s'il existe au moins une zone déclarée de nature variable dans l'Ecran.

F78-FN END-OF-DISPLAY
F8Z Cette fonction est systématiquement générée.
F8Z05 Sous-fonction d'aide.

Cette sous-fonction est générée si un appel de documentation est renseigné sur la Définition de l'Ecran.

F8Z10 Envoi de l'Ecran.

Cette sous-fonction contient l'affichage du message selon la variante de langage utilisée.

F8Z20 Fin de programme.
F80

F8095

F8098

Accès physiques.

Sauvegarde de l'Ecran (appel de documentation)

Accès au fichier des libellés d'erreur

F81

F81ER

F81UT

F8110

F8115

F8120

F8125

F8130

F8135

F8140

Fonctions appelées par PERFORM.

Traitement de fin anormale

Mémorisation des erreurs pour affichage

Contrôle de numéricité

Initialisation des zones variables

Contrôle et mise en forme date

Transfert en affichage

Traitement de la fonction d'aide

Transfert en réception

Calcul de la position du curseur


Vos commentaires