Contrôles de la syntaxe du code source des Macros

Les contrôles sur le code source des Macros permettent d'éviter les erreurs dans l'écriture de ce code et d'assurer le bon déroulement du processus de fusion des Macros lors de la génération. Si une Macro contient une erreur, il est impossible de générer les Programmes, Ecrans ou Serveurs qui l'appellent.

Les erreurs détectées par les contrôles sont affichées dans le code source des Macros et dans la vue Erreurs.

Rappel : Les Macros sont constituées des types de lignes suivants :
  • Les identifiants (F01$1 dans l'exemple suivant). Ces identifiants ont plusieurs formats possibles :
    • Fffss (où ff est le code fonction et ss le code sous-fonction) pour une insertion dans la PROCEDURE DIVISION,
    • Wnn (où nn est l'emplacement de la description dans la WORKING-STORAGE SECTION.
    • D'autres formats correspondant à des utilisations particulières (par exemple : IXXNN pour la déclaration d'un identifiant pour la génération d'indices).
  • Les attributs (*LV=10 dans l'exemple suivant) pour une insertion dans la PROCEDURE DIVISION. Les attributs sont ajoutés automatiquement sous forme de commentaires quand vous insérez une fonction ou sous-fonction avec l'assistant de création de fonctions et sous-fonctions.
  • Les lignes de traitement (lignes 100, 120 et 140 dans l'exemple suivant).
Figure 1. Les différents types de ligne des Macros
Cette photo d'écran montre une Macro dans son éditeur de code source. Le contenu est décrit dans les explications qui précèdent.

Contrôles sur les numéros de ligne

La saisie des numéros de ligne doit respecter les règles suivantes :
  • Les numéros de ligne sont alphanumériques en WORKING-STORAGE SECTION et numériques en PROCEDURE DIVISION. Vous pouvez les paramétrer avec des $.
  • Le numéro de ligne est obligatoire pour la première ligne suivant un identifiant ou une ligne d’attributs. Cependant, le numéro n'est pas obligatoire pour la première ligne d'une condition de fonction ou sous-fonction.
  • Le numéro de ligne doit être unique pour un même identifiant.
  • Si l'identifiant précédent est FXXYY, le numéro de ligne doit avoir les longueurs suivantes :
    • 3 ou 6 caractères s'il ne contient pas de $. Il est conseillé d'utiliser des numéros de ligne sur 3 caractères pour les Macros créées dans Rational Programming Patterns. Pour les numéros de ligne des Macros migrées de Pacbase, référez-vous à Code source des Macros migrées.
    • 2, 3, 5 ou 6 caractères s'il contient un $.
  • Si l'identifiant précédent n'est pas FXXYY, le numéro de ligne doit toujours avoir une longueur de 3 caractères.
  • Si le numéro de ligne contient un $, les contrôles suivants s'appliquent :
    • Le $ ne doit pas être en position 3 ou 6.
    • La valeur qui suit le $ doit être comprise entre 0 et 9 ou A et J.
  • Une ligne contenant un micro-pattern (*! à partir de la colonne 7) doit avoir son propre numéro de ligne.

Contrôles sur les identifiants

La saisie des identifiants doit respecter les règles suivantes :
  • Une ligne de traitement doit être précédée d’un identifiant.
  • Un identifiant doit être unique.
  • Si l’identifiant contient un $, celui-ci doit avoir une position correcte et la valeur du paramètre $n doit être comprise entre 0 et 9 ou entre A et J .
  • La longueur de l'identifiant doit correspondre à la longueur autorisée selon le type de ligne (5 caractères pour un type B, F, I ou J et 3 caractères pour un type W).
Remarque : La liste des identifiants est expliquée dans Syntaxe du code source des Macros.

Contrôles sur les attributs

La saisie des attributs doit respecter les règles suivantes :
  • L'attribut doit avoir un type connu (par exemple LV pour le niveau ou ACTION pour le contrôle d'une Rubrique).
  • Le niveau (LV) doit être sur 2 caractères numériques ou paramétrés ($x, où x est un caractère de 0 à 9).
  • Le niveau doit être 05 pour les fonctions et strictement supérieur à 05 pour les sous-fonctions.
  • Certains attributs ne sont autorisés que pour des fonctions déterminées (F20 ou F25 par exemple).
  • La position de l’attribut est contrôlée. Le type de la condition (IT ou DW par exemple) doit être en première position, suivi du niveau (LV=10 par exemple).
  • Un identifiant ne peut avoir qu'une seule ligne d'attributs.

Contrôle de syntaxe des attributs ACTION et REF selon la fonction

Les attributs ACTION et REF indiquent l'ajout de code spécifique dans les sous-fonctions automatiques d'un Ecran. Ils sont intégrés automatiquement dans le code en fonction de la saisie de certaines zones de l'assistant de création de sous-fonctions pour le modèle Dialogue standard ou client.

L'attribut ACTION précise la position de l'insertion de code spécifique par rapport aux sous-fonctions automatiques de l'Ecran (F20, F25, F30, F35, F60 et F65). Il est inséré automatiquement lorsque vous sélectionnez une valeur dans la zone Type d'action de l'assistant de création de sous-fonctions. Il peut prendre les valeurs suivantes :
  • ACTION=*A pour une insertion avant la sous-fonction,
  • ACTION=*P pour une insertion après la sous-fonction,
  • ACTION=*R pour le remplacement de la sous-fonction.
L'attribut REF indique une insertion de code spécifique pour contrôler des Rubriques ou des Segments de l'Ecran :
  • Pour les Rubriques, il correspond à une insertion dans la fonction F20 (contrôle des Rubriques). Il est inséré sous la forme : REF=xxxxxx, où xxxxxx est une Rubrique. Vous pouvez aussi paramétrer la saisie de la Rubrique avec $x. L'attribut REF est inséré automatiquement lorsque vous indiquez une Rubrique dans la zone Code Rubrique de l'assistant de création de sous-fonctions.
  • Pour les Segments, il correspond à une insertion dans une des fonctions suivantes :
    • F25 (accès aux Segments en réception), F35 (mise à jour des Segments) et F60 (accès aux Segments en affichage). Il peut alors prendre les valeurs suivantes :
      • REF=xxxx, où xxxx est un Segment,
      • REF=xxxx y, où y est un code catégorie : A (en-tête), R (répétitive) ou Z (bas d'écran),
      • REF=$x y, où $x est la saisie paramétrée d'un Segment,
      • REF=$x.
    • F30 (transfert des Rubriques de l'Ecran vers les Segments) et F65 (transfert des Rubriques des Segments vers l'Ecran). Il peut alors prendre les valeurs suivantes :
      • REF=y, où y est un code catégorie : A (en-tête), R (répétitive) ou Z (bas d'écran),
      • REF=$x, où $x est la saisie paramétrée d'une catégorie.
    • F80 (accès physiques). Il peut alors prendre les valeurs suivantes :
      • REF=xxxx yy, où xxxx est un Segment et yy est un type d'accès (CL, D, EB, OP, RN, RU, RW, P, UN ou W),
      • REF=$x, où $x est la saisie paramétrée d'un Segment,
      • REF=$x yy,
      • REF=$x $n,
      • REF=xxxx $n.

Contrôles de cohérence

Les contrôles de cohérence suivants sont effectués :
  • Une ligne de condition doit être présente pour les fonctions et sous-fonctions où elle est nécessaire (IT et DW par exemple).
  • La ligne d'attributs n'est pas autorisée pour les identifiants W (emplacement dans la WORKING-STORAGE SECTION), I (génération d'indices) et J (gestion des boucles DO).
  • Le niveau doit être présent si l'attribut ACTION est indiqué.

Vos commentaires