Appel de Serveurs dans un Composant Applicatif

L'onglet Lignes -CS d'un Serveur ou Dialogue Serveur de type Composant Applicatif vous permet d'appeler un autre Composant Applicatif pour exécuter un service. Vous devez indiquer le nom de la première Vue Logique qui transmet la demande de service au Composant Applicatif de premier niveau, l'appel de la Vue Logique de niveau 2 par son nom dans le Composant Applicatif de niveau 1 et l'appel de service auprès du Composant Applicatif de second niveau.

Remarque : Pour mettre en place cet appel de service, vous devez déclarer la Vue Logique 2 qui véhicule les informations entre les deux Composants Applicatifs et préciser le type de service à exécuter sur la Vue Logique 2.

Vous pouvez, par exemple, appeler un Composant Applicatif de second niveau pour gérer un service utilisateur. Un service utilisateur est un service entièrement géré en spécifique. Il peut être, par exemple, un compteur pour compter le nombre de clients par jour ayant passé une commande, ou un service d'impression. Il est décrit avec du code spécifique. Pour réutiliser le service utilisateur dans d'autres Composants Applicatifs, vous pouvez dédier un Composant Applicatif à ce service utilisateur et l'appeler depuis d'autres Composants Applicatifs. Vous déclarez le service utilisateur en appelant la Macro protégée ££USER dans les Lignes -CP du Composant Applicatif.

L'appel d'un Serveur depuis un Composant Applicatif d'Initialisation ou de Terminaison comporte les restrictions suivantes :
  • Une seule ligne d'appel de Serveur est possible.
  • Seules les zones Serveur, Segment (nom du Segment ou de la Vue Logique dans le référentiel) et Code Segment (nom du Segment ou de la Vue Logique dans le Serveur) sont accessibles.
  • L'Organisation est obligatoirement 2 : Appel de Composant Applicatif instance par instance.
  • Le Type de description est obligatoirement 1 : Partie spécifique uniquement.

Les champs sont expliqués selon leur ordre d'affichage dans la section de définition Ligne -CS - Appel de Serveur.

Segment
Indiquez le nom du Segment dans le référentiel. Cliquez sur Modifier pour sélectionner un Segment ou changer le Segment appelé. Un assistant de sélection s'ouvre alors avec les Segments sélectionnables. Sélectionnez-en ou créez-en un et cliquez sur OK. Dans le tableau, il s'affiche dans la colonne Seg / VL.

Vous pouvez aussi spécifier le Segment directement depuis la colonne Seg / VL.

Deux méthodes sont possibles :
  • Positionnez le curseur dans la colonne et saisissez directement un nom. Pour faciliter la saisie, vous pouvez afficher un assistant de contenu en cliquant simultanément sur Ctrl et la barre d'espace. Si vous avez commencé à saisir un nom, l'assistant propose les instances commençant par cette saisie. Si vous saisissez le nom d'une instance qui n'existe pas et validez, la saisie n'est pas prise en compte.
  • Cliquez sur le bouton qui s'affiche quand vous positionnez votre curseur dans la colonne. Un assistant de sélection s'ouvre alors pour vous permettre de sélectionner une instance.
Serveur
Indiquez un Serveur de second niveau dans le Composant Applicatif. Cliquez sur Modifier pour sélectionner un Serveur ou changer le Serveur appelé. Un assistant de sélection s'ouvre alors avec les Serveurs sélectionnables. Sélectionnez-en ou créez-en un et cliquez sur OK. Dans le tableau, il s'affiche dans la colonne Serveur.

Vous pouvez aussi spécifier le Serveur directement depuis la colonne Serveur.

Deux méthodes sont possibles :
  • Positionnez le curseur dans la colonne et saisissez directement un nom. Pour faciliter la saisie, vous pouvez afficher un assistant de contenu en cliquant simultanément sur Ctrl et la barre d'espace. Si vous avez commencé à saisir un nom, l'assistant propose les instances commençant par cette saisie. Si vous saisissez le nom d'une instance qui n'existe pas et validez, la saisie n'est pas prise en compte.
  • Cliquez sur le bouton qui s'affiche quand vous positionnez votre curseur dans la colonne. Un assistant de sélection s'ouvre alors pour vous permettre de sélectionner une instance.

Identifiant

Catégorie
Dans cette zone, vous indiquez à quelle catégorie de traitement le Segment appartient. Les catégories, et donc les Segments correspondants, sont traités dans l'ordre suivant :
  • Blanc : Catégorie en-tête
  • R : Catégorie répétitive
  • Z : Catégorie bas d'écran
Code Segment
Ce code est obligatoire. Il correspond au nom de la Vue Logique ou du Segment dans le COBOL généré du Composant Applicatif. Il peut être identique au nom défini dans le référentiel.
Numéro de ligne
Cette zone doit contenir une valeur numérique. Pour un Segment donné, une seule ligne 00 est acceptée (par défaut). Cette ligne 00 est obligatoire pour renseigner les caractéristiques physiques du Segment (nom externe, organisation), le code de la clé d'accès au Segment, le code du Segment dans le référentiel.

Remplissage clé d'accès

Code Segment précédent
Il est possible, dans chacune des catégories de traitement, d'accéder à plusieurs Segments. On peut donc être amené à préciser la hiérarchie des accès aux Segments d'une catégorie. Cette zone contient le code du Segment précédent dans la hiérarchie des accès. Ce Segment doit appartenir à la même catégorie. Si plusieurs Segments ont un même Segment précédent, ils sont traités dans l'ordre alphabétique de leur code.
Chaque Segment doit être chaîné directement ou indirectement à la Vue Logique dont il dépend. Il doit donc comporter le code d'un Segment précédent, ou de sa Vue Logique (organisation S).
Exception : Le Segment dédié au fichier des libellés d'erreur ne doit pas comporter de Segment précédent. De même, une Vue Logique ne peut avoir de Segment précédent.
Réception
Dans cette zone, vous devez préciser de quelle façon le Segment est utilisé dans les traitements de contrôle et mise à jour en choisissant une des valeurs proposées dans la liste déroulante.
Tableau 1. Valeurs de l'utilisation d'un Segment dans les traitements de contrôle et mise à jour
Options Description
Aucune valeur ou N : Non utilisé ou aucun appel de Serveur Pour une organisation différente de X, S ou 2, aucun ordre d'accès n'est généré pour le Segment dans les traitements de contrôle et mise à jour.

Pour une organisation de type X ou 2, aucun appel de Serveur n'est généré.

L : Lu ou appel de Serveur pour sélection Un ordre de lecture simple est généré pour le Segment pour une organisation différente de X, S ou 2.

Pour une organisation de type X ou 2, un Serveur est appelé pour sélection.

E : Contrôle d'existence ou appel de Serveur pour contrôle Pour une organisation différente de X, S ou 2, un contrôle d'existence est effectué. Un ordre de lecture avec positionnement d'un code erreur est généré (s’il n’est pas trouvé).

Pour une organisation de type X ou 2, un Serveur est appelé pour contrôle.

M : Mise à jour (modification) ou appel de Serveur pour contrôle et mise à jour Pour une organisation différente de X, S ou 2, le Segment est mis à jour (modification uniquement).

Pour une organisation de type X ou 2, un Serveur est appelé pour contrôle et mise à jour.

X : Mise à jour (création et modification) ou appel de Serveur pour contrôle et sélection Pour une organisation différente de X, S ou 2, le Segment est mis à jour (création et modification uniquement).

Pour une organisation de type X ou 2, un Serveur est appelé pour contrôle et sélection.

S : Segment mis à jour (annulation uniquement) Pour une organisation différente de X ou 2, le Segment est mis à jour (annulation uniquement).
C : Mise à jour (création uniquement) Pour une organisation différente de X ou 2, le Segment est mis à jour (création uniquement).
T : Mise à jour ou appel d'un Serveur pour contrôle, mise à jour et sélection Pour une organisation différente de X, le Segment est mis à jour (création, modification et annulation). Dans ces trois cas, le contrôle d'existence et les ordres de mise à jour correspondant aux options choisies sont générés. Si le Segment est chaîné à un Segment précédent, quelle que soit l'utilisation, seuls sont générés les ordres de mise à jour de modification et création.

Pour une organisation de type X ou 2, un Serveur est appelé pour contrôle, mise à jour et sélection. Si la Vue Logique est appelée dans la catégorie répétitive, il n'est pas possible d'afficher la suite de l'Ecran. Il est donc impossible d'utiliser de manière automatique le code opérateur S.

U : Appel d'un service utilisateur Pour une organisation de type X ou 2, un service utilisateur est appelé.
Affichage
Dans cette zone, vous devez préciser de quelle façon le Segment est utilisé dans les traitements d'affichage. Sélectionnez une des valeurs proposées dans la liste.
Tableau 2. Valeurs de l'utilisation d'un Segment en affichage
Options Description
Aucune valeur ou N : Non utilisé ou aucun appel de Serveur Pour une organisation différente de X, aucun ordre d'accès n'est généré pour ce Segment dans les traitements d'affichage (option par défaut).

Pour une organisation X ou 2, aucun appel de Serveur n'est généré.

A : Utilisé en affichage ou appel de Serveur pour sélection Pour une organisation différente de X, les ordres d'accès sont générés pour l'affichage en fonction du type de traitement d'accès logique. Si le code Segment précédent est à blanc et si le Segment est utilisé, la clé est sauvegardée en zone de conversation.

Pour une organisation X ou 2, un serveur est appelé pour sélection (incompatible avec la valeur L en réception).

U : Appel d'un service utilisateur Pour une organisation de type X ou 2, un service utilisateur est appelé.
Alimentation de la clé
Cette zone peut être une zone de travail (ww10-corub par exemple) ou un littéral (02 par exemple).
Remarque : L'alimentation des clés pour les listes doit toujours se faire à partir de la zone 1- dans les Serveurs dès lors que la clé se trouve dans la catégorie répétitive de la Vue Logique.

Un chaînage libre est établi dès que vous indiquez une Rubrique dans cette zone.

La saisie dans cette zone est facilitée par un assistant de saisie, signalé par le symbole assistant de saisie devant la zone. Pour activer l'assistant de contenu, cliquez simultanément sur Ctrl et la barre d'espace. Un lien de sous-référence est créé automatiquement, même si l'instance cible n'existe pas. Depuis l'instance cible affichée dans les sous-références, vous pouvez lancer une recherche de super-références.

Si vous placez le curseur de la première à la quatrième position de la zone, l'assistant de contenu affiche d'abord la liste des Segments. Sélectionnez l'un d'eux puis cliquez à nouveau dans la zone et cliquez à nouveau sur Ctrl et la barre d'espace. L'assistant de contenu affiche alors la liste des Rubriques. Sélectionnez l'une d'elles.

Clé primaire

Dans cette section, vous devez sélectionner une Rubrique ou saisir le nom d'une nouvelle Rubrique (non définie) qui servira de clé d'accès au Segment. Elle est utilisée pour générer la clause RECORD KEY. La Rubrique indiquée est considérée comme une Rubrique groupe, sauf dans les organisations SQL où elle est considérée comme Rubrique élémentaire.

Rubrique
Indiquez dans cette zone la Rubrique utilisée comme clé d'accès au Segment. Cliquez sur Modifier pour sélectionner une Rubrique ou changer la Rubrique appelée. Un assistant de sélection s'ouvre alors avec les Rubriques appelées dans le Segment. Sélectionnez-en une et cliquez sur OK. Elle s'affiche dans le tableau dans la colonne Clé accès.

Vous pouvez aussi spécifier la Rubrique directement depuis la colonne Clé accès.

Deux méthodes sont possibles :
  • Positionnez le curseur dans la colonne et saisissez directement un nom. Pour faciliter la saisie, vous pouvez afficher un assistant de contenu en cliquant simultanément sur Ctrl et la barre d'espace. Si vous avez commencé à saisir un nom, l'assistant propose les instances commençant par cette saisie. Si vous saisissez le nom d'une instance qui n'existe pas et validez, la saisie n'est pas prise en compte.
  • Cliquez sur le bouton qui s'affiche quand vous positionnez votre curseur dans la colonne. Un assistant de sélection s'ouvre alors pour vous permettre de sélectionner une instance.
Rubrique non définie
Si la clé d'accès primaire est une Rubrique groupe, vous pouvez saisir dans la zone Rubrique non définie les Rubriques élémentaires composant le groupe.

S'il s'agit d'un groupe et que les différentes sous-Rubriques sont alimentées séparément, des lignes suites contiennent alors le code des sous-Rubriques alimentées.

Pour une Table (organisation G), la sélection d'un sous-système s'effectue en indiquant dans cette zone la valeur NUSSY. L'alimentation de la clé associée (G-ddss-NUSSY) est automatiquement générée.

En DL/1, la Rubrique peut appartenir à toutes les SSA qui permettent d'accéder au Segment dans le PCB indiqué dans le nom externe.

Pour les bases de données SQL, une Rubrique clé doit être indiquée pour chaque ligne où un Affichage autre que N est déclaré.

Dans les accès générés, la sélection se fait sur l'égalité en mise à jour ou lecture directe. Pour la lecture séquentielle en catégorie répétitive, la sélection se fait sur les valeurs supérieures ou égales.

Le nombre de Rubriques clés pour un même Segment est limité à 10

Si le Segment libellés d’erreur est un Segment SQL/DS ou s’il a une organisation V ou W, la Rubrique clé doit être ERKEY.

Caractéristiques logiques

Limitation de génération
Sélectionnez dans la liste la limitation de génération des accès logiques aux Segments.
  • Automatique.

    Les accès logiques sont générés automatiquement (en fonction de l'utilisation du Segment)

  • U : Accès laissés à la charge de l'utilisateur.

    Les traitements logiques d'accès sont gérés par l'utilisateur (organisations différentes de S)

  • P : Pas de description du Segment

    Il n'y a pas de génération des traitements logiques d'accès (organisations différentes de S).

Rupture d'affichage
Vous pouvez indiquer qu’une Rubrique appartenant à une clé dans la partie répétitive doit rester constante au cours de l'affichage ou de la sélection d'une liste. Seuls les enregistrements ayant cette valeur de clé seront retenus. Vous devez alors provoquer une rupture d'affichage ou de sélection.
Tableau 3. Valeurs possibles pour la rupture d'affichage
Option Description
Pas de rupture d'affichage Il n'y a pas de rupture d'affichage ou de sélection.
C : Rupture d'affichage Il y a une rupture d'affichage ou de sélection.
E : Rupture d'affichage (SQL) Pour les organisations SQL, cette valeur provoque la génération dans la clause WHERE de l'ordre SQL DECLARE CURSOR d'une condition d'égalité (et non >= qui est généré sinon).
R : Lecture massive du Dossier (Serveur uniquement) Cette valeur est réservée aux Segments dont l'organisation est H, D ou V. Elle est utilisée pour spécifier une lecture massive, comme l’affichage de toutes les lignes de toutes les commandes, pour chaque Segment rattaché à la Vue Logique. Vous l'indiquez sur chaque Rubrique clé correspondant à une Rubrique clé de la Vue Logique. La Vue Logique doit appartenir au nœud racine du Dossier, s'il existe.
Sous-schéma
Cette zone permet d'indiquer quel sous-schéma doit être décrit. Vous devez sélectionner une valeur dans la liste déroulante parmi Toutes les Rubriques et une sous-description de 0 à 9. La valeur 0 correspond à un sous-schéma 10. Un sous-schéma est un groupe de Rubriques présentes dans la composition du Segment.
  • Pour les organisations G ou H, cette zone précise le numéro de la sous-description de la Table à laquelle correspond la description de la zone entrée-sortie. Si le Segment appelé correspond à une vue et si aucun sous-schéma n'est indiqué, la valeur prise en compte est celle indiquée dans les Lignes -DR du Bloc :
    • Toutes les Rubriques du Segment
    • Sous-description ou sous-schéma numéro 0 à 9
  • Pour les organisations V, cette zone indique les clés secondaires d'accès aux fichiers indexés :
    • La valeur 2 indique que la clé secondaire est référencée en codant 2 dans le numéro de sous-schéma. La clé primaire doit être indiquée sur la ligne 00 du Segment sans utilisation en affichage ni réception, même si elle n'est pas utilisée, afin de générer la clause RECORD KEY. Si la clé secondaire est une zone groupe, le numéro du sous-schéma doit être indiqué uniquement pour cette zone groupe.
    • La valeur 3 indique que la clé secondaire est DUPLICATE.
      Remarque : Cette spécification n'est pas implémentée dans la variante CICS puisque la déclaration des clés secondaires est effectuée lors de la définition VSAM.
Niveau des traitements générés
Non utilisé pour un Composant Applicatif.

Caractéristiques physiques

Organisation
  • X: Appel global de Composant Applicatif.

    Le Composant Applicatif de premier niveau effectue ainsi des appels de service et se comporte comme un Client. Sa fonctionnalité doit être envisagée comme un aiguillage vers des Composants Applicatifs de second niveau qui exécutent la totalité du service demandé. L'appel du Composant Applicatif de second niveau ne s'effectue qu'une seule fois pour toutes les instances.

  • 2 : Appel de Composant Applicatif (instance par instance).

    L'appel du Composant Applicatif de second niveau s'effectue à chaque instance. Ceci permet l'appel de Composants Applicatifs en tant que Serveurs complémentaires par rapport au Composant Applicatif de premier niveau. De la sorte, une demande de service peut appeler des Composants Applicatifs et des Segments d'accès aux données.

    Remarque : Ce type d'appel permet notamment à une application TUI de travailler en mode pseudo Dossier. Le client TUI demande un service sur une Vue Logique agrégée contenant plusieurs Vues Logiques. Ce service est implémenté par un Composant Applicatif de premier niveau qui a charge d'appeler, pour chaque instance de la Vue Logique agrégée, les différents Composants Applicatifs associés aux autres Vues Logiques concernées.
Type de description
La zone Type de description affiche des valeurs permettant d'obtenir, à partir de la description du Segment dans le référentiel, différentes descriptions dans le COBOL généré. Les valeurs possibles sont les suivantes :
  • Complet (valeur par défaut) pour un Segment avec une éventuelle partie commune. Il s'agit, par exemple, d'une Structure de Données avec un Segment.
  • 1 : Partie spécifique uniquement pour un enregistrement sans partie commune. Il peut s'agir par exemple, pour les bases de données, de plusieurs Segments définis dans une même Structure de Données.
  • E : Type Table : Pour l'organisation Table, prise en compte du format d'entrée des Rubriques du Segment Table.
  • 2 : Complet (longueur variable) : Segment complet en longueur variable pour l'organisation indexée (V). La description générée peut varier en fonction de la variante de langage sélectionnée.
Nom externe
Saisissez le code du Composant Applicatif.

Vos commentaires