Rational Developer for System z, Version 7.6

Macro

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.

Types de Macros

On peut regrouper les Macros en grands ensembles :
  • Un ensemble de type 'squelette' permettant de donner une structure standard aux programmes, en fonction des normes en vigueur. Des traitements technologiques liés au moniteur de temps réel ou au SGBD utilisé peuvent y être incorporés.
  • Un ensemble de type 'fonctions technologiques' permettant de standardiser des commandes spécifiques telles que les entrées-sorties d’un système de gestion de Base de Données (lecture, modification, suppression, création, etc.).
  • Un ensemble de type 'fonctions techniques élaborées' dont le rôle est de résoudre a priori des traitements complexes (parcours d’une Base de Données, gestion des erreurs d’une application, lecture dynamique d’un fichier...).

    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 M.S.P. élémentaires entre elles.

  • Un ensemble de type 'fonctionnel général'. Ces Macros décrivent des traitements communs à un ensemble d’applications tels que contrôle de date, calcul de lettre clé, transformation de date en délai... Elles sont indépendantes du matériel ou des outils utilisés.
  • Un ensemble de type 'fonctionnel spécifique' permettant de définir des traitements communs à tous les programmes d’une application (par exemple, harmonisation de présentation des états ou des écrans de saisie).
  • Un ensemble permettant de réaliser des chaînages; par exemple si l’appel d’un sous-programme est fait par une Macro, on peut connaître automatiquement les programmes qui l’utilisent.

Différences entre les Macros et les sous-programmes

Vous êtes souvent amené à décider si des traitements communs à plusieurs programmes doivent être regroupés dans un sous-programme ou dans une Macro.

Pour résoudre ce dilemme, plusieurs questions doivent être posées :
  • Les traitements communs sont-ils consécutifs ?
  • L’emplacement de ces traitements est-il défini ?
  • Le nombre de paramètres est-il important ?
  • Les traitements à effectuer sont-ils exécutés dans le cas général ?
Une fois toutes ces questions résolues, il sera possible de choisir quels traitements sont à effectuer dans des sous- programmes ou dans des Macros :
  • S’ils ne sont pas consécutifs ⇒ Macro.
  • Si l’emplacement est défini a priori ⇒ Macro.
  • Si le nombre de paramètres est important ⇒ sub-program.
  • Si les traitements ne sont pas généraux ⇒ sub-program.

Paramétrage de l'indicatif des lignes de code spécifique

Vous pouvez paramétrer la majeure partie de l’indicatif des lignes de code spécifique (fonction, sous-fonction et deux premiers caractères du numéro de ligne). Il est recommandé, avant d’écrire une Macro, d’essayer de structurer les traitements à écrire, c’est-à-dire de minimiser le nombre de paramètres de l’indicatif, de façon à :
  • Faciliter l’utilisation de la Macro,
  • Eviter la prolifération de la même Macro dans un seul programme,
  • Obtenir une structuration homogène des programmes résultants.

Nombre de paramètres

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.

Cohérence des paramètres

Un programme fait souvent appel à plusieurs Macros. Dans ce cas, il est souhaitable que la codification des paramètres soit cohérente, c’est-à-dire que des informations de même type apparaissent dans le même ordre. Par exemple,
Exemple : Si deux Macros appelées dans un programme ont comme paramètre un code fichier, il est souhaitable qu’il ait le même rang dans les deux Macros.

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.

Documentation d'une Macro

Les Macros peuvent être documentées à l’aide des lignes de commentaires saisies dans :
  • L'onglet Lignes -G (section Lignes -GC), comme toutes les autres entités,
  • L'onglet Commentaires. Il est souhaitable de définir de cette façon les paramètres utilisés car ces lignes figurent dans la description des programmes appelant la Macro (suite à une demande d'édition-génération).

Modification d'une ligne de Macro

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.


Conditions d'utilisation | Commentaires en retour

Ce centre de documentation utilise la technologie Eclipse. (http://www.eclipse.org)