Rational Programming Patterns for System z

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. Vous devez pour cela ouvrir une Macro dans un modèle serveur de façon à utiliser les assistants de création mis à votre disposition pour vous permettre d'insérer du code spécifique à différents niveaux des traitements générés dans le Composant Applicatif (au niveau général, au niveau de la Vue logique, au niveau logique et au niveau physique).

Insertion dans un traitement général

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

Code fonction
Créez une fonction en saisissant un code sur deux caractères libres (sauf 80 et 81).
Code sous-fonction
Cette zone devient saisissable lorsque vous sélectionnez Ordre SQL WHENEVER ou Ordre DECLARE CURSEUR. Le code sous-fonction doit être saisi pour la prise en compte des ordres d'accès SQL au niveau du Composant Applicatif. Il contient deux caractères libres.
Niveau
Le seul niveau hiérarchique possible pour une fonction est '05'. Les sous-fonctions ont un niveau '10' par défaut. La zone devient saisissable uniquement pour le choix d'un traitement Ordre SQL WHENEVER ou Ordre DECLARE CURSEUR et si le type d'action sélectionné est 'Avant' ou 'Après' . Dans ce cas, vous pouvez saisir un niveau de 06' à '98'.
Bloc
Le bloc sert à déclarer une insertion de traitement spécifique ou un remplacement au niveau Composant Applicatif et à identifier la Vue Logique pour laquelle vous allez insérer ou remplacer un traitement. Le bloc ne doit pas contenir d'instruction, celles-ci 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
  • un bloc déclarations des curseurs SQL.
Cochez une des options du bloc :
Début serveur
Le bloc récupère les informations contenues dans la zone de communication et effectue des initialisations. Si vous cochez cette option, le traitement spécifique sera inséré au début d'un traitement standard.
Vue Logique
Si vous cochez la Vue Logique, vous devez insérer le code du Segment Vue Logique pour laquelle vous allez insérer ou remplacer le traitement.
Fin serveur
Retourne les informations vers le Gestionnaire de Services. Si vous cochez cette option, le traitement spécifique sera inséré à la fin du traitement standard.
Déclarations des curseurs SQL
Ce bloc décrit les clauses nécessaires aux déclarations SQL (WHENEVER et DECLARE CURSOR).
Code Segment
Cette zone est saisissable uniquement pour une option bloc Vue Logique. Saisissez le code (4 caractères maximum) de la Vue Logique concernée par le traitement. Le code identifie l'emplacement de votre insertion par rapport au traitement standard.
Traitements (niveau sous fonction)
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 encore prendre en compte différents critères de sélection correspondant à des méthodes d'extraction. Dans tous les cas, pour que ces types d'accès soient pris en compte au niveau du Composant Applicatif, vous devez créer une sous-fonction de la fonction 80. Vous devez indiquer le code de la sous-fonction et son niveau hiérarchique. Sélectionnez Ordre SQL WHENEVER ou Ordre DECLARE CURSEUR.
Code table ou vue SQL
Cette zone est saisissable uniquement si vous avez sélectionné Ordre DECLARE CURSEUR. Vous devez indiquer le code du Segment de table relationnelle ou le code de l'accès personnalisé à prendre en compte.
Type d'action
Pour ajouter un traitement spécifique, positionnez votre traitement en relatif par rapport à l'un des blocs sélectionné dans la zone Bloc de l'assistant, soit avant, soit après, soit en remplacement.

Insertion au niveau d'une Vue logique

L'assistant qui s'ouvre lorsque vous sélectionnez le choix 'Insertion au niveau d'une Vue logique" permet de s'insérer dans les traitements élémentaires appelés par PERFORM. Cette insertion s'effectue derrière l'étiquette générée automatiquement ou le conditionnement associé.

Code fonction
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 un code sur deux caractères libres (sauf 80 et 81).
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.
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.
Type de traitement
Vous trouvez dans une liste, tous les traitements standard d'implémentation des différents services de la Vue Logique. Sélectionnez, le traitement à insérer par rapports aux traitements standard d'une Vue logique (tous ces traitements standard sont rattachés à une seule Vue Logique). Lorsque vous sélectionnez certains traitements, d'autres zones de l'assistant se dégrisent, vous devez donc renseigner ces options requises pour ce 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 1. Type de traitement pour une Vue Logique
Type de traitement Commentaires Zones 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 de 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 rafraîchir 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) dans la zone dédiée de l'assistant. 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 vers les données des Segments d'accès. Catégorie, Type d'insertion
TRER : Transfert des erreurs Traitement des erreurs sur demande des 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", qui soit autre qu'un service de sélection ou de contrôle/mise à jour.
Remarque : 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 est disponible pour les choix de traitement 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: Check/selection service.
* 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, par exemple, dans plusieurs serveurs. 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. Cette zone s'affiche uniquement pour un choix de traitement de type CHUP (Contrôle et/ou MAJ) et SELC (Sélection).
Choix d'une valeur
Les choix disponibles dans cette zone sont conditionnés par la sélection d'un traitement et du choix d'un service. En effet, les choix de traitements élémentaires s'affichent lors de la sélection d'un traitement de type CHUP (contrôle/MAJ) et de ses services associés ou d'un traitement de type SELC : Sélection. Le tableau suivant identifie les traitements élémentaires exécutés pour chaque service :
Tableau 2. 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 s'affiche lorsque vous choisissez un traitement de type OPEN ou CLOS: Ouverture/fermeture. Vous devez saisir le code du fichier, il est 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 ne s'affiche que pour le choix d'un traitement de type USER : service utilisateur. Vous devez saisir dans cette zone du service utilisateur. Ce nom est limité à 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
Les choix proposé dans cette zone ne sont requis que pour des traitements de type contrôle de données, contrôle/MAJ, transfert Segment/Vue et inversement, et de sélection. Choisissez une catégorie parmi les trois suivantes :
  • 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, par contre, 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 dans cette zone, 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. Le choix est dégrisé 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

L'assistant 'Insertion niveau d'un accès logique', permet d'insérer des traitements spécifiques dans des accès logiques aux Segments pour contrôle, mise à jour et sélection.
Code fonction
Créez une fonction en saisissant un code sur deux caractères libres (sauf 80 et 81).
Code sous fonction
Saisissez le code de la sous fonction sur deux caractères, il peut être composé de lettres et/ou de chiffres. Ce code détermine l'emplacement des lignes source dans la fonction.
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 des tags, sur la ligne de chaque fonction. 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.
    Remarque : 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.
Code Segment
Saisissez le code Segment sur quatre caractères.
Type de traitement
Dans un accès logique, vous avez trois type 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
Consultez l'aide sur cette même zone dans la section 'Insertion au niveau de la Vue logique'.
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

L'assistant 'Insertion niveau d'un accès physique', permet 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.
Code fonction
Les deux premiers caractères de la fonction sont automatiquement 80.
Code sous fonction
Pour créer une sous fonction de la fonction 80, vous devez saisir deux caractères non numériques.
Niveau
Vous devez insérer un niveau hiérarchique 10, le même que la sous fonction générée en standard.
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
Cochez cette option pour sélectionner le 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.