Vous devez respecter lès règles syntaxiques pour créer
des lignes de code dans l'éditeur de COBOL de la Macro.
Les identifiants
Vous devez indiquer un
identifiant avant chaque instruction COBOL pour permettre son placement
en début de programme, en WORKING-STORAGE SECTION, LINKAGE
SECTION ou PROCEDURE DIVISION. Vous devez
saisir l’identifiant dans la marge COBOL (colonnes 1 - 6). Vous devez
indiquer un numéro de ligne sur la ligne qui suit la ligne contenant
l'identifiant. Les lignes de la Macro seront insérées à l’emplacement
correspondant à l’identifiant.
Important : Toute ligne
identifiante ou attribut doit être saisie en majuscules.
La
saisie des identifiants est contrôlée. Si une erreur est détectée,
l’instance est marquée en erreur dans l'espace de travail. En conséquence,
la génération des instances appelant la Macro est impossible.
Les
identifiants varient selon l’emplacement dans le programme généré
:
- Identifiants pour le début de programme :
Ces identifiants peuvent
être paramétrés sous la forme B$n$n.
Le
tableau suivant indique tous les identifiants possibles et le paragraphe
généré pour chaque identifiant.
Tableau 1. Identifiants
pour la zone de début de programme Identifiants |
Paragraphes générés |
B__01 |
Commentaire API COBOL |
B__05 |
Commentaire PAF |
B__10 |
PROGRAM-ID |
B__20 |
AUTHOR |
B__30 |
DATE-COMPILED |
B__40 |
ENVIRONMENT DIVISION |
B00 |
CONFIGURATION SECTION |
B0000 |
SOURCE-COMPUTER |
B0010 |
OBJECT-COMPUTER |
B0020 |
SPECIAL-NAMES |
B01 |
INPUT-OUTPUT SECTION |
B01 |
FILE-CONTROL |
B01FF |
SELECT FF-FICHIER |
B0100 |
I-O-CONTROL |
B60 |
Réservé à la ligne DATA DIVISION |
B99 |
Réservé à la ligne FILE SECTION |
B9*FF |
Réécriture de la clause FD pour
le fichier FF |
Remarque : Vous pouvez utiliser l’attribut
ACTION=R pour
supprimer une section ou un paragraphe, comme dans l’exemple suivant
:
B01
000 INPUT-OUTPUT SECTION.
100 FILE-CONTROL.
B01A2
900 SELECT A2-FILE ASSIGN TO UT-S-TESTCTL.
B9999 *ACTION=R
- Identifiants pour les zones de travail et de lien : WXX (où XX est
l'emplacement dans la WORKING-STORAGE SECTION) :
Ces
identifiants peuvent être paramétrés.
Vous pouvez indiquer ces
identifiants pour écraser la ligne
PROCEDURE DIVISON dans
le programme généré. Pour cela, vous devez indiquer les informations
suivantes :
- Sur la première ligne, indiquez l’identifiant WXX.
- Sur la deuxième ligne, indiquez un numéro de ligne 000 suivi
de la nouvelle déclaration de la PROCEDURE DIVISON.
Vous pouvez créer d’autres lignes si nécessaire.
Vous pouvez par exemple écraser la ligne
PROCEDURE DIVISON de
la façon suivante :
W99
000 PROCEDURE DIVISION USING
010 SQ01.
- Identifiants pour la description des traitements (fonctions, sous-fonctions)
: FXXYY (où XX est le
code fonction et YY le code sous-fonction)
Ces
identifiants peuvent être paramétrés.
- Identifiants pour la génération d’indices :
Tous les indices
sont générés sous le même niveau indices. Pour qu'ils soient générés
sous le niveau 01 de votre choix, vous devez les
saisir sous un identifiant WXX. Pour qu'ils soient
générés sous le niveau 01 des indices automatiques,
vous devez saisir les identifiants suivants.
Vous pouvez indiquer
les indices suivants :
- IXXNN (où XX et NN sont
deux codes sur deux caractères chacun, comme le code Structure de
Données et Segment par exemple)
Cet indice correspond à la dimension
de la table qui doit être indiquée dans une zone de travail et de
lien.
Les trois indices suivants sont générés automatiquement
:
- IXXNNM contient le nombre d’enregistrements maximum
prévu par l’utilisateur (initialisé par VALUE).
- IXXNNL contient le nombre d’enregistrements effectivement
stockés dans la table. Il est initialisé à zéro et doit être incrémenté
au chargement. Ce nombre ne peut excéder le nombre maximum.
- IXXNNR concerne la recherche dans la table. Il
est initialisé à zéro et ne peut dépasser IXXNNL.
La donnée déclarée dans la zone de travail et de lien
doit être de la forme : W-XXNN ou W-XXNN-CORUB (où W est
un chiffre ou une lettre représentant la zone de travail et CORUB est
le code Rubrique).
La dimension de la table peut être paramétrée.
Le
niveau indiqué pour ces indices doit être 05.
Voir
les exemples dans figure 1 et figure 3.
- JXXNN (où XX est le code fonction
et NN le code sous-fonction)
Cet indice est utilisé
dans une boucle DO.
Règles de saisie des lignes
Avertissement : Le numéro de ligne est obligatoire sur
la première ligne du groupe de lignes : ligne titre, ligne d'attributs,
et ligne de conditionnement. Un numéro de ligne doit aussi être indiqué
sur la première ligne de source qui suit ce groupe.
Règles de saisie des numéros de ligne
Vous
pouvez sasir des numéros de ligne alphanumériques en WORKING-STORAGE
SECTION et numériques en PROCEDURE DIVISION..
Vous pouvez les paramétrer avec des $.
La
saisie des numéros de ligne doit respecter les règles suivantes :
- 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 $,
- 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 avoir une longueur de 3 caractères.
- Si *! est trouvé à partir de la colonne 7, le
numéro de ligne est obligatoire.
- 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.
La gestion des numéros de ligne est très stricte pour
les Macros migrées de Pacbase.
Le numéro de ligne est sur 3 caractères en WORKING-STORAGE
SECTION et sur 6 caractères en PROCEDURE DIVISION.
Pour des détails, reportez-vous aux informations sur les Numéros de ligne dans les Macros migrées de Pacbase.
Exemples
Figure 1. Indices
sous le niveau 01 des indices automatiques dans la
Macro :
Figure 2. Indices sous le niveau 01 dans
la partie générée du programme :
Figure 3. Indices sous un niveau 01 dans
la zone de travail et de lien dans la Macro :
Figure 4. Indices sous un niveau 01 de
la zone de travail et de lien dans la partie générée du programme
:
Figure 5. Exemple de saisie de code
dans une Macro