Pour maintenir les Macros, vous devez comprendre comment les lignes de Macro sont gérées
par rapport aux lignes de code spécifique. Vous devez aussi connaître les règles pour remplacer une
Macro par une autre. Si, suite à des mises à jour, l'emplacement initial de certaines lignes de code
spécifique n'existe plus, des avertissements sont générés. Vous pouvez alors savoir comment les
gérer avec des correctifs rapides.
Cas simple d'insertion de lignes de code spécifique
Si vous ajoutez une ligne de code spécifique dans le COBOL généré d'un Programme, Ecran ou
Serveur appelant la Macro, cette ligne est affichée dans la vue
Structure du Code
Généré. Elle conserve sa place lors des générations suivantes entre l'étiquette qui la
précède et l'étiquette qui la suit.
Exemple : La Macro
AAASQ2 contient, dans la sous-fonction
F56BB, une ligne de
traitement 100100 et une ligne de traitement 200200. Dans le Programme appelant cette Macro, une
ligne de code spécifique est ajoutée entre ces deux lignes de traitement. Le contenu de cette
nouvelle ligne est affiché en tant que code spécifique dans la vue
Structure du Code
Généré, entre les deux étiquettes (
F56BB100100 et
F56BB210200) correspondant aux deux lignes de traitement entre lesquelles la ligne
a été insérée.
Figure 1. Ligne de code spécifique ajoutée entre deux lignes de Macro dans le Programme
appelant
Si vous insérez des lignes dans un numéro de ligne existant, ces nouvelles lignes ne créent pas
de nouvelles étiquettes dans la vue
Structure du Code Généré. L'étiquette de
la ligne de l'insertion correspond alors à la ligne existante et aux lignes insérées. Si des lignes
de code spécifique existent dans l'instance appelante, elles conservent leur position. Ceci est vrai
même si les Macros sont fusionnées dans l'instance appelante.
Exemple : La Macro
AAASQ2 contient, dans la sous-fonction
F56BB, une ligne
de condition 010 et une ligne de traitement 100100. Dans l'étape précédente, une ligne de code
spécifique a été ajoutée sous la ligne 100100 dans le COBOL du Programme appelant la Macro. Vous
ajoutez maintenant dans la Macro une ligne de condition sous la ligne 010 et une ligne de traitement
sous la ligne 100100, sans préciser de numéro de ligne. Après génération du Programme appelant, la
nouvelle ligne de condition est générée sous la ligne 010. La ligne de condition suivante provient
d'une autre Macro, fusionnée dans le Programme. La nouvelle ligne de traitement est générée sous la
ligne 100100. Dans la vue
Structure du Code Généré, la nouvelle ligne de
condition est incluse dans l'étiquette
F56BB010 et la nouvelle ligne de traitement
est incluse dans l'étiquette
F56BB100100. La ligne de code spécifique est conservée
à la même place. Il n'y a pas de problème d'imbrication des Macros.
Figure 2. Insertion d'une ligne de condition et de traitement dans une Macro
Ventilation de lignes de Macros dans un bloc de code spécifique
Pour ventiler des lignes de Macros à l'intérieur d'un bloc de code spécifique d'un Programme,
Ecran ou Serveur, vous devez insérer des balises dans ce code spécifique. Ces balises vous
permettent d'encadrer les lignes de code spécifique pour guider le placement des lignes provenant de
Macros. Vous assurez ainsi le bon placement des lignes de Macro dans le code spécifique lors de la
ventilation, même après l'ajout, le remplacement ou la modification d'un appel de Macro. Ces balises
évitent les erreurs de réconciliation lors de la génération de l'instance et de la fusion des
Macros.
Pour indiquer qu'un bloc de code spécifique doit apparaître avant une ligne de Macro, vous devez
encadrer ce bloc par deux lignes. Sur la première ligne, vous indiquez la balise *{BEFORE
FFFSSLIN, où FFSS représente la fonction ou sous-fonction et
LIN le numéro de ligne sur 3 ou 6 caractères. Sur la dernière ligne, vous indiquez
la balise *}. Le bloc de code spécifique encadré par ces balises s'affichera donc
avant la ligne LIN de la sous-fonction FFSS indiquée dans la
Macro.
Pour indiquer qu'un bloc de code spécifique doit apparaître après une ligne de Macro, vous devez
encadrer ce bloc par deux lignes. Sur la première ligne, vous indiquez la balise *{AFTER
FFFSSLIN, où FFSS représente la fonction ou sous-fonction et
LIN le numéro de ligne sur 3 ou 6 caractères. Sur la dernière ligne, vous indiquez
la balise *}. Le bloc de code spécifique encadré par ces balises s'affichera donc
après la ligne LIN de la sous-fonction FFSS indiquée dans la
Macro.
Exemple : La Macro
CLMACR insère une ligne 100 dans la
sous-fonction
F33RC. Cette ligne 100 apparaît dans le COBOL généré du Programme
CLPROG qui appelle cette Macro. Un bloc de code spécifique de 2 lignes est inséré
dans la sous-fonction
F33RC du Programme, à la suite de la ligne provenant de la
Macro.
Figure 3. Appel d'une Macro dans un Programme contenant un bloc de code spécifique dans la même
sous-fonctionVous ajoutez une ligne 200 dans la Macro.
Figure 4. Ajout d'une ligne dans la Macro
Pour insérer cette ligne 200 entre les 2 lignes de code spécifique du Programme, vous devez
insérer des balises dans le code spécifique. Vous indiquez que la première ligne de code spécifique
doit apparaître avant la ligne 200 de la Macro dans le code spécifique. Ainsi, vous encadrez cette
première ligne de code spécifique par les balises
*{BEFORE F33RC200 et
*}. Vous indiquez aussi que la deuxième ligne de code spécifique doit apparaître
après la ligne 200 de la Macro dans le code spécifique. Ainsi, vous encadrez cette deuxième ligne de
code spécifique par les balises
*{AFTER F33RC200 et
*}.
Quand vous regénérez le Programme, la ligne 200 de la Macro s'affiche alors bien entre les 2
lignes de code spécifique.
Figure 6. Affichage de la ligne de Macro à l'intérieur du bloc de code spécifique
Remplacement d'une Macro
Cette action n'est pas recommandée car des incohérences peuvent apparaître lors de la
regénération de l'instance appelante. Si vous devez néanmoins l'effectuer, vous devez sélectionner
une nouvelle Macro dont le contenu est proche de celui de la Macro initiale. Si vous remplacez une
Macro qui insère des lignes de traitement dans une sous-fonction, utilisez, dans la nouvelle Macro,
les mêmes numéros de ligne que dans la Macro initiale pour les lignes qui entourent des lignes de
code spécifique.
Pour remplacer une Macro, ouvrez l'onglet
Lignes -CP de l'instance
appelante et remplacez un appel de Macro par une autre Macro directement depuis la colonne
Macro. Les paramètres de la Macro initiale sont alors conservés dans la
nouvelle Macro. Les lignes de code spécifique dans l'instance appelante conservent leur place après
regénération si la nouvelle Macro contient les mêmes numéros de ligne que la Macro initiale.
Exemple : La Macro AAASQ2 est appelée dans un Programme. Les
Macros AAASQ2 et AAASQ6 insèrent toutes les deux des lignes dans
la sous-fonction F56BB. Elles contiennent chacune deux lignes de traitement 100100
et une ligne de traitement 200200.
Figure 7. Remplacement d'une Macro
Une ligne de code spécifique est insérée dans le code généré du Programme appelant, entre les
lignes correspondant aux lignes de traitement 100100 et 200200 de la Macro
AAASQ2.
La ligne de code spécifique est donc placée entre les étiquettes
F56BB100100 et
F56BB200200 dans la vue
Structure du Code Généré.
Figure 8. Code généré avant le remplacement
L'appel de la Macro
AAASQ2 est remplacé par l'appel de la Macro
AAASQ6 dans le Programme. Après le remplacement et une nouvelle génération, les
lignes correspondant aux lignes de traitement 100100 et 200200 sont maintenant celles de la Macro
AAASQ6. La ligne de code spécifique a été conservée à la même place, entre les
étiquettes
F56BB100100 et
F56BB200200 dans la vue
Structure du Code Généré.
Figure 9. Code généré après le remplacement
Utilisation du correctif rapide pour replacer des lignes de code spécifique
Des erreurs sont détectées lorsque l'emplacement initial de certaines lignes de code spécifique
n'existe plus. Ce cas se produit lorsque les étiquettes de la Macro ont été modifiées (code de la
sous-fonction ou numéro de ligne). La vue Erreurs affiche alors un
avertissement par bloc de code spécifique mal placé. L'avertissement indique que les modifications
de l'utilisateur ne peuvent pas être reconduites dans le code réconcilié car la position n'existe
plus. Le même avertissement s'affiche aussi dans l'éditeur de COBOL PDP sur les lignes du bloc de code spécifique mal placé.
Pour corriger le problème, procédez de la façon suivante :
- Placez votre curseur sur l'avertissement. Pour cela, double-cliquez sur l'avertissement dans la
vue Erreurs. Vous pouvez aussi accéder à l'avertissement directement dans
l'éditeur de COBOL PDP. Dans les deux cas, le symbole de
l'avertissement est décoré par le symbole du correctif rapide
.
- Cliquez sur l'avertissement. La liste des correctifs rapides s'affiche. Double-cliquez sur
Insérer le code spécifique à cette position. Le bloc de lignes de code
spécifique concerné est inséré.
- Coupez et collez les lignes pour les replacer au bon endroit. Dans la vue
Erreurs, le numéro de ligne de l'avertissement traité est modifié.
- Cliquez sur l'avertissement et double-cliquez sur le correctif Laisser le code en
l’état (Supprimer le problème). L'avertissement disparaît alors.
Vous devez procéder ainsi pour tous les avertissements de ce type.