Rational Programming Patterns

Insertion d'un traitement spécifique dans une Macro

Vous pouvez insérer des traitements spécifiques dans une Macro appelée dans un Composant applicatif de type serveur à différents niveaux (au niveau général, au niveau de la Vue logique, au niveau logique et au niveau physique). Cette page vous donne le principe général pour l'insertion des traitements spécifiques. Elle indique aussi les types de valeurs que vous pouvez saisir sous REF= sur les lignes issues du squelette des modèles dialogue et serveur.

Insertion dans un traitement général

Il s'agit ici de l'insertion d'une fonction par rapport aux traitements de niveaux hiérarchiques 05.

le code fonction
Créez une fonction en indiquant un code sur deux caractères libres (sauf 80 et 81).
le code sous-fonction
Pour les Ordre SQL WHENEVER ou Ordre DECLARE CURSEUR. Le code sous-fonction est saisi pour la prise en compte des ordres d'accès SQL au niveau du Composant Applicatif. Il contient deux caractères libres.
le niveau
Le seul niveau hiérarchique possible pour une fonction est 05. Les sous-fonctions ont un niveau 10 par défaut uniquement pour le choix d'un traitement Ordre SQL WHENEVER ou Ordre DECLARE CURSEUR et pour un type d'action Avant ou Après. Dans ce cas, vous pouvez saisir un niveau de 06 à 98.
la référence
La référence saisie est l'ensemble des éléments qui permettent le positionnement d'une sous-fonction. Ces éléments sont saisis à la suite et introduits par REF=. Dans ce contexte, il s'agit du type de traitement suivi du type d'action. La référence correspondante apparaît dans la colonne de droite dans la vue Structure du code Macro.
Vous pouvez ainsi déclarer ou remplacer un traitement spécifique au niveau Composant Applicatif et identifier la Vue Logique impactée. Les instructions doivent être écrites sur des niveaux hiérarchiquement inférieurs. Dans le corps du programme, plusieurs blocs de niveau hiérarchique 05 sont générés :
  • un bloc début serveur,
  • un bloc Vue Logique,
  • un bloc fin serveur
Pour ajouter un traitement spécifique, positionnez votre traitement en relatif par rapport à l'un de ces blocs, soit avant, soit après, soit en remplacement.
Action
  • A : Avant
  • P : Après
  • R : Remplacer
  • blanc : Aucun.
Traitement
Tableau 1.
Traitement (niveau fonction) Type Actions possibles
début serveur BS A, P, R
Vue logique vulo * A, P, R, blanc
Fin serveur ES A, P, R
Déclarations curseurs SQL SQ A, P, R, blanc
Tableau 2.
Traitement (niveau sous-fonction) Type Actions possibles
Ordre SQL WHENEVER SQLW A, P, R
Ordre SQL DECLARE CURSOR SQLD vulo A, P, R
Remarque : vulo= code Vue Logique
Exemples :
  • BS A
  • vulo R
  • SQLW R
  • ES

Insertion au niveau d'une Vue logique

Dans le bloc concernant une Vue Logique, que ce soit dans le corps du programme ou dans les niveaux élémentaires "performés" ou appelés par PERFORM, on trouve tous les traitements standard d'implémentation des différents services de cette Vue Logique. Tous ces traitements standard sont rattachés à une seule Vue Logique. L'insertion au niveau d'une Vue Logique s'effectue derrière l'étiquette générée automatiquement ou le conditionnement associé. Cette section énonce les principes que vous retrouverez appliqués spécifiquement à chaque service. Pour ajouter des traitements spécifiques concernant une Vue Logique, vous devez d'abord l'identifier. Pour cela, créez une fonction en précisant :

le code fonction
Créez une fonction en indiquant un code sur deux caractères libres (sauf 80 et 81).
le code sous-fonction
Pour chaque traitement spécifique à ajouter, vous positionnez le traitement en relatif par rapport à un traitement standard de la Vue Logique. Pour cela, créez une sous-fonction en précisant un code sur deux caractères libres.
le niveau
Indiquez un niveau hiérarchique égal ou supérieur à celui du traitement standard, nécessairement supérieur à 05 et inférieur à 99. Pour un traitement de type LOCK : verrouillage, le niveau hiérarchique doit être obligatoirement supérieur à 10.
la référence (REF=)
La référence saisie est l'ensemble des éléments de placement d'une sous-fonction.

REF=TypeTraitement Catégorie Service TrtElémentaire

Exemples :
  • REF=CHUP CATA SRVL TRAN
  • REF=CHUP CATT SRVM CHCK
  • REF=SELC CATR $1

Vous trouverez ci-après les traitements que vous pouvez insérer au niveau d'une Vue Logique ainsi que les informations complémentaires à saisir en fonction du type de traitement.

le Type de traitement
Le tableau suivant donne la liste des traitements qui peuvent être insérés au niveau d'une Vue logique, les caractéristiques de ce traitement et les zones à compléter pour compléter la définition de ce traitement.
Tableau 3. Type de traitement pour une Vue Logique
Type de traitement Commentaires Informations associées
BEGV : début de Vue logique   Type d'insertion
CCNX : connexion à la base   Type d'insertion
CHKD : Contrôle des données Vous demandez un contrôle quand vous voulez uniquement contrôler les données saisies par l'utilisateur final et lui renvoyer un message d'erreur si la saisie est erronée. Les données de la Vue Logique ne sont pas transférées dans la base de données. Le Segment qui sert de référence pour le contrôle doit être rattaché à la Vue Logique. C'est pourquoi vous devez indiquer le code du Segment concerné. Code Rubrique, Catégorie, Type d'insertion
CHUP : Contrôle et/ou MAJ Vous demandez un contrôle et/ou une mise à jour quand vous voulez contrôler les données saisies par l'utilisateur (avec envoi d'un message d'erreur si nécessaire), présenter les informations dans le composant Client selon un format spécifié et actualiser ces informations par la saisie de l'utilisateur, en mettant à jour la base de données. Si vous insérez un traitement spécifique au niveau 10, 15 ou 20, il vaudra pour tous les services de contrôle/mise à jour de la Vue Logique. C'est le traitement spécifique le plus générique. Service, Type d'insertion
CLOS : Fermeture   Type d'insertion
DCNX : Déconnexion de la base   Type d'insertion
ENDV : Fin Vue logique   Type d'insertion
LOCK : verrouillage Le service de verrouillage vous permet de bloquer la mise à jour d'un ensemble de données pour empêcher leur mise à jour simultanée, et donc pour éviter des incohérences. Type d'insertion
OPEN : Ouverture Ouverture des fichiers indexés de la Vue. Vous devez indiquer le code fichier (code Structure de données). Type d'insertion, Code fichier
SELC : Sélection Vous remplacez le traitement du service de sélection de la Vue dans la catégorie de votre choix. Vous devez également choisir le type de service et le type de traitement élémentaire. Service, Type de traitement élémentaire, Catégorie, Type d'insertion
TRDT : Transfert Vue -> Segment Ce traitement permet les transferts des données de la Vue Logique vers les données des Segments d'accès. Catégorie, Type d'insertion
TRER : Transfert des erreurs Traitement des erreurs sur demande de service. Il s'agit de la récupération des erreurs lors de l'appel d'un Composant Applicatif de niveau 2. Vous devez indiquer le code du Segment où l'erreur a été détectée dans la zone dédiée. Code Segment, Type d'insertion
TRVW : Transfert Segment -> Vue Le Composant Applicatif de niveau 2 exécute les transferts de du Segment vers la Vue Logique. Catégorie, Type d'insertion
UNLK : Déverrouillage Insertion d'un service de déverrouillage dans le Composant Applicatif. Type d'insertion
USER : Service utilisateur Possibilité pour un composant Client de demander un service particulier, appelé "Utilisateur". Ce service n'est ni un service de sélection ni un service de contrôle/mise à jour.
Exemple : Compteur pour compter le nombre de clients par jour ayant passé une commande, service d'impression…
Par l'intermédiaire de la zone de communication, le Composant Applicatif récupère le code et le nom du service utilisateur demandé par le composant Client.
Code du service utilisateur, Type d'insertion
Service
Cette option n'est disponible que pour les traitements de type CHUP (Contrôle et/ou MAJ) et SELC (Sélection). Les services de contrôle/mise à jour sont des services en réception : ils récupèrent les données saisies dans le composant Client (via la Vue Logique) et les comparent à celles de la base de données (via un Segment) pour les contrôler ou les mettre à jour.
Choix d'une valeur
Pour un traitement de contrôle et/ou MAJ, des services de contrôle, lecture, mise à jour ou sélection sur Segments peuvent être insérés :
  • SRVE : Service de contrôle,
  • SRVL : Service de lecture,
  • SRVM : Service de contrôle/MAJ*,
  • SRVT : Service de contrôle/MAJ/sélection
  • SRVX: Service de contrôle/sélection.
* Pour un traitement en sélection, le service est SRVA : Service en sélection.
Paramétrage
Vous pouvez définir un paramètre associé au service sélectionné pour identifier ce service dans plusieurs serveurs, par exemple. Vous pouvez saisir un paramètre dont le code sur deux caractères aura la forme $n (n = 1 à 0 et A à J).
Type de traitement élémentaire
Les traitements élémentaires sont exécutés par PERFORM individuellement à partir du niveau Vue Logique. Pour un traitement de type CHUP (Contrôle et/ou MAJ) et SELC (Sélection).
Le tableau suivant identifie les traitements élémentaires exécutés pour chaque service :
Tableau 4. Traitements élémentaires exécutés pour chaque type de service
Services générés Aucun traitement élémentaire INIT : Initialisation CHCK : Contrôle TRAN : Transfert UPDT : MAJ DONE : Fin SELC : Sélection
SRVE : Service de Ctrl * * *     *  
SRVL : Service de lecture * * * *   *  
SRVM : Service de Ctrl/MAJ * * * * * *  
SRVT : Service de Ctrl/MAJ/sélection * * * * * *  
SRVX : Service de Ctrl/sélection * * *     *  
SRVA : Service de sélection * *   *   * *
Aucun * * *   * *
Paramétrage
Vous pouvez paramétrer un traitement élémentaire. Vous devez pour cela saisir un code sur deux caractères de type $n.
Code fichier
Cette zone est disponible uniquement pour un traitement de type OPEN ou CLOS (Ouverture/fermeture). Vous devez saisir le code du fichier, constitué des deux premiers caractères du code du Segment dans l'Ecran de type S.
Segment code
Le code Segment n'est requis que pour le transfert des erreurs, lorsque vous choisissez le traitement de type TRER. Vous devez renseigner le code Segment où l'erreur a été détectée, sur quatre caractères.
Code service utilisateur
Cette zone est disponible uniquement pour un traitement de type USER (service utilisateur). Vous devez saisir le code du service utilisateur sur 25 caractères maximum.
Code Rubrique
Le code Rubrique est demandé pour le contrôle des données, dans le cadre d'un traitement de contrôle de type CHKD. Saisissez le code de la Rubrique de la Vue logique qui fait l'objet du contrôle.
Catégorie
Requis uniquement pour des traitements de type contrôle de données, contrôle/MAJ, transfert Segment/Vue et inversement, et de sélection. La catégorie peut être :
  • Initialisation,
  • Itérative, pour une Vue Logique multi-occurrences. Cette catégorie assure un traitement itératif d'accès aux enregistrements.
  • Terminaison.
Vous pouvez paramétrer la catégorie pour tous les types de traitements en saisissant un paramètre sur deux caractères.
Type d'insertion
Vous indiquez le type de positionnement du traitement en relatif par rapport à un traitement standard de la Vue Logique en utilisant un type de structure particulier :
Début
Au début du traitement standard, juste derrière l'étiquette de début. Ce positionnement ne peut être utilisé que pour les traitements performés. Seulement pour les types de traitements suivants sélectionnés : CCNX, CHKD, CLOS, SCNX, OPEN, TRDT, TRER et TRVW.
Avant
Avant l'étiquette de début du traitement standard.
Après
Après (post) le traitement standard, juste avant l'étiquette de fin, si le niveau hiérarchique est supérieur au standard, ou juste après l'étiquette de fin si le niveau hiérarchique est égal au standard.
Remplacer
En remplacement du traitement standard.
Insérer
Ce choix est spécifique au traitement service utilisateur. Il s'agit de l'insertion du service utilisateur au niveau de la Vue Logique, donc dans une sous-fonction quelconque dépendant d'une fonction de niveau 05.

Insertion au niveau d'un accès logique

Vous pouvez insérer des traitements spécifiques dans des accès logiques aux Segments pour contrôle, mise à jour et sélection. Pour cela, vous devez saisir :
le code fonction
Créez une fonction en saisissant un code sur deux caractères libres (sauf 80 et 81).
le code sous-fonction
Saisissez le code de la sous-fonction sur deux caractères, il peut être composé de lettres ou de chiffres. Ce code détermine l'emplacement des lignes source dans la fonction.
le niveau
Le niveau sert en particulier à hiérarchiser les sous-fonctions d'une fonction. Une sous-fonction est de niveau inférieur à une autre si son nombre niveau est plus grand. Le niveau d'une fonction ou sous-fonction est indiqué en bleu sur l'arbre de la vueStructure du code Macro. Les valeurs possibles d'un niveau sont les suivantes :
  • 05 : Niveau par défaut pour toutes les fonctions.
  • 10 : Niveau par défaut d'une sous-fonction.
  • 06 à 98 : Niveaux possibles d'une sous-fonction. A l'intérieur d'une fonction, une sous-fonction de niveau n est dépendante des sous-fonctions de niveau inférieur à n qui la précèdent.
    Exemple : Dans une fonction donnée, une sous-fonction de niveau 15 dépendra de toute sous-fonction de niveau 06 à 14 la précédant.
  • 99 : Niveau pour les traitements élémentaires. Le niveau 99 est réservé aux traitements élémentaires. Il permet d'écrire une condition sans pour autant créer une nouvelle sous-fonction. Un niveau 99 ne peut contenir plus de 75 lignes. Une sous-fonction ne peut pas avoir plus de 98 niveaux 99.
Une sous-fonction n'est exécutée que si toutes les sous-fonctions et fonction dont elle dépend sont exécutées.
la REF
La référence saisie est l'ensemble des éléments de placement d'une sous-fonction.

REF=TypeTraitement Segment Catégorie TrtElémentaire

Exemples :
  • REF=SLCT SS01 CATR ALIM
  • REF=CHCK SS01
Code Segment
Saisissez le code Segment sur quatre caractères.
Type de traitement
Un accès logique comprend trois types de traitements possibles :
  • CHCK : Contrôle, par rapport au niveau 10 pour l'accès à un Segment pour le contrôle des données, par rapport au niveau 15 pour l'accès à un Segment pour le contrôle des données par catégorie ou par rapport au niveau 20 pour l'accès à un Segment pour le contrôle des données par catégorie et par type de traitement élémentaire.
  • SLCT : Sélection par rapport au niveau 10 pour l'accès à un Segment pour la sélection des données, par rapport au niveau 15 pour l'accès à un Segment pour la sélection des données par catégorie, ou par rapport au niveau 20 pour l'accès à un Segment pour la sélection des données par catégorie et par type de traitement élémentaire.
  • UPDT : Mise à jour, par rapport au niveau 10 pour l'accès à un Segment pour la mie à jour des données, par rapport au niveau 15 pour la mise à jour des données par catégorie ou par rapport au niveau 20 pour l'accès à un Segment pour la mise à jour par catégorie et par type de traitement élémentaire.
Type de traitement élémentaire
Choix d'une valeur
Choisissez le type de traitement élémentaire (ALIM pour l'alimentation des clés, CALL pour l'appel des traitements physiques, ERRS pour le traitement des erreurs).
Paramétrage
Vous pouvez paramétrer un traitement élémentaire en saisissant un code de type $n.
Catégorie
Requis que pour des traitements de type contrôle de données, contrôle/MAJ, transfert Segment/Vue et inversement, et de sélection. La catégorie peut être :
  • Initialisation,
  • Itérative, pour une Vue Logique multi-occurrences, cette catégorie assure un traitement itératif d'accès aux enregistrements.
  • Terminaison.
Vous pouvez, paramétrer la catégorie pour tous les types de traitements en saisissant un paramètre sur deux caractères.
Type d'insertion
Consultez l'aide sur cette même zone dans la section Insertion au niveau de la Vue Logique. Le niveau 10 n'est pas imposé pour les types avant et après pour l'accès logique aux Segments.

Insertion au niveau physique

Il s'agit ici d'insérer des traitements spécifiques dans des accès physiques aux Segments, c'est-à-dire dans la fonction 80.
Remarque : Les accès physiques aux données constituent un troisième niveau de traitements. Un accès physique est exécuté par PERFORM à partir d'un accès logique au Segment. Les traitements d'accès physiques générés dépendent du mode de stockage physique des données. Un changement du mode de stockage physique des données ne modifie pas la structure logique du Composant Applicatif.
La fonction 80 du Composant Applicatif est structurée en sous-fonctions : une sous-fonction par Segment et par type d'accès. Vous devez saisir :
le code fonction
Les deux premiers caractères de la fonction sont automatiquement 80.
le code sous-fonction
Pour créer une sous-fonction de la fonction 80, vous devez saisir deux caractères non numériques.
le niveau
Vous devez insérer un niveau hiérarchique 10, le même que la sous-fonction générée en standard.
la référence REF
La référence saisie est l'ensemble des éléments de placement d'une sous-fonction.
  • REF=Segment EX MéthodeExtraction
  • ou REF=Segment TypeAccès
Exemples :
  • REF=SS11 EX method1
  • REF= SS11 OP
  • REF=SS11 $1
Dans le cas des appels de serveurs, la référence est:
  • REF=Segment TypeTraitementGeneral avec
    • TypeTraitementGeneral = R1 pour ALIM
    • TypeTraitementGeneral = R2 pour CALL
    • TypeTraitementGeneral = R3 pour RETC
Exemples : REF=SS11 R1
le code Segment
Saisissez le code du Segment accédé, sur quatre caractères. Pour les accès SQL personnalisés, il s'agit du code du Segment de table relationnelle.
Méthode d'extraction
Saisissez le nom de la méthode d'extraction (en majuscules) susceptible d'être utilisée si des critères de sélection sont à prendre en compte.
Type d'accès
Dans le cadre du remplacement d'une sous-fonction standard, si un type d'accès est sélectionné, seule la sous-fonction correspondant au type d'accès est remplacée. Si le type d'accès n'est pas indiqué, toutes les sous-fonctions d'accès à ce Segment sont remplacées.
Choix d'une valeur
Sélectionnez un type d'accès physique généré en standard, si vous voulez le compléter avec un accès personnalisé. Dans le cas d'utilisation de bases de données relationnelles, il est possible de personnaliser les ordres d'accès SQL pour :
  • ajouter / remplacer des clauses particulières dans un accès généré en standard ou créer un nouvel accès physique,
  • ou prendre en compte différents critères de sélection correspondant à des méthodes d'extraction.
Valeurs pour appel de serveur
Type de traitement général :
  • ALIM : Alimentation avant appel, pour l'alimentation de la zone de communication,
  • CALL : Appel du serveur, appel du Composant Applicatif,
  • RETC : Retour après appel serveur, traitement au retour du Composant Applicatif.
Paramétrage
Vous pouvez paramétrer le type d'accès en utilisant un code sur deux caractères de type $n.
Type d'action
L'insertion de traitements en fonction 80 se fait par positionnement relatif : avec un type de structure Remplacer, pour remplacer une sous-fonction standard, avec un type de structure Insérer pour compléter ou créer un accès SQL.

Conditions d'utilisation | Commentaires en retour

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