Une Macro est destinée à décrire des traitements standard communs à plusieurs programmes (batch ou TP) ou répétés dans un même programme, avec des variantes éventuelles. L'appel d'une Macro dans un programme va provoquer, lors de l'édition et de la génération du programme, l'insertion des lignes de la Macro aux emplacements correspondant à leur indicatif, compte tenu de la résolution éventuelle des paramètres. Ainsi, pour le programmeur et pour le compilateur, tout se passe comme si les instructions de la Macro faisaient partie du programme.
Une Macro n'est pas un sous-programme car contrairement à un sous-programme, une Macro peut contenir des lignes d'instructions non consécutives.
En revanche, il est tout à fait possible de faire appel à un sous-programme à l'intérieur d'une Macro.
C'est en général une combinaison de fonctions techniques élémentaires qu'il faut redécrire de façon à minimiser le travail nécessaire à la liaison de Macros élémentaires entre elles.
Vous êtes souvent amené à décider si des traitements communs à plusieurs programmes doivent être regroupés dans un sous-programme ou dans une Macro.
Dans tous les cas, il est recommandé de minimiser le nombre de paramètres d'une Macro de façon à faciliter l'utilisation de cette Macro et minimiser son temps de résolution.
Il est souvent préférable de 'banaliser' certains codes (fichier, Segment, Rubrique) dans une zone de travail spécifique de la Macro, définie par l'appel de Rubriques en zones de travail.
Cela n'est pas toujours possible, mais en écrivant une Macro, on essaiera d'étudier les Macros déjà existantes afin de minimiser les différences.
A indicatif égal, les lignes du programme appelant (entité Programme ou Ecran) sont prioritaires sur les lignes de la Macro. Il est souhaitable de concevoir les Macros de façon à ce qu'il n'y ait pas de lignes modifiées par programme.
La maintenance des deux entités en sera facilitée. Si des insertions de lignes spécifiques de programme sont nécessaires, elles doivent être soigneusement documentées.