Création d’une fonction ou sous-fonction
Certaines fonctions ou sous-fonctions sont indépendantes des fonctions ou sous-fonctions automatiques. D’autres sont insérées relativement à des fonctions ou sous-fonctions automatiques spécifiques au modèle Dialogue standard ou client ou Composant Applicatif. Les informations affichées dans l'assistant de création varient en conséquence.
- L’insertion de fonctions ou sous-fonctions relatives associées aux deux modèles est impossible dans une même Macro.
- Une insertion en mode absolu est toujours possible. Pour un Programme, ce type d’insertion est le seul possible.
- Dans un Ecran standard ou client, une insertion par rapport au modèle Composant Applicatif est impossible.
- Dans un Composant Applicatif, une insertion par rapport au modèle Dialogue standard ou client est impossible.
- Code fonction
- Ce code est obligatoire. Il est constitué de deux caractères, uniquement des chiffres ou des
lettres.
Dans une Macro, vous pouvez le paramétrer en indiquant un $ suivi d’un chiffre ou d’une lettre.
Ce code détermine l'emplacement des lignes source dans la séquence des fonctions.
Le code des fonctions automatiquement générées est préétabli. Si vous sélectionnez un modèle dans la zone Modèle, vous devez donc créer un code fonction relativement aux codes des fonctions automatiques.
Pour le modèle Dialogue standard ou client, vous devez indiquer une des fonctions automatiques suivantes :- 20 : Contrôles des Rubriques
- 25 : Accès aux Segments en réception
- 30 : Transfert des Rubriques
- 35 : Ecritures de mise à jour
- 60 : Accès aux Segments en affichage
- 65 : Alimentation des Rubriques
- 80 : Accès physiques aux Segments
Avertissement : Dans les versions de 9.1.2 à 9.6 de Rational Programming Patterns, l'insertion en mode relatif dans l'éditeur COBOL PDP ne pouvait se faire que par l'intermédiaire de la Macro prioritaire associée à l'Ecran ou au Composant Applicatif. Cette Macro était identifiée par le nom de l'instance suivi de SP. A partir de la version 9.6.1, l'insertion en mode relatif s'effectue directement depuis le COBOL des Ecrans et Composants Applicatifs. Les changements induits par la génération 9.6.1 pour les fichiers COBOL générés avant cette version sont expliqués dans Mise à niveau de la génération.Remarque : Pour des explications sur les fonctions automatiques, référez-vous à Description du COBOL généré à partir d'un Programme, Ecran ou Serveur.
- Code sous-fonction
- Ce code est constitué de deux caractères, uniquement des chiffres ou des lettres.
Dans une Macro, vous pouvez le paramétrer en indiquant un $ suivi d’un chiffre ou d’une lettre.
Ce code détermine l'emplacement des lignes source dans la séquence des fonctions.
Pour le modèle Dialogue standard ou client, le code sous-fonction est obligatoire. Il ne doit pas reprendre le code des sous-fonctions générées, qui est toujours numérique. Vous devez donc indiquer un code sous-fonction purement alphabétique.
Pour le modèle Composant Applicatif, le code sous-fonction est interdit pour une Insertion par rapport aux traitements de niveaux hiérarchiques 05. En revanche, il est obligatoire pour une Insertion par rapport aux traitements SQL, une Insertion par rapport aux traitements Vue Logique et un Remplacement d'un accès physique. Il est facultatif pour une Insertion par rapport au niveau des accès logiques.
Certains codes sous-fonctions de la fonction 80 dans les Ecrans et Serveurs diffèrent des autres codes sous-fonctions de cette fonction. Contrairement aux autres, ils ne permettent pas de remplacer un accès standard à un Segment mais permettent d'écraser des sous-fonctions générées.- Le code sous-fonction 95 dans les Ecrans permet d'écraser les traitements de F80-HELP (sauvegarde de l'écran pour appel de documentation).
- Le code sous-fonction 98 dans les Ecrans permet d'écraser les traitements de F80-LE00 (accès au fichier des libellés d'erreur).
- Le code sous-fonction 99 dans les Ecrans et les Serveurs permet d'écraser les traitements de F80-OKKO (gestion OK ou KO des accès sur fichier).
- Niveau
- Le niveau est constitué de deux chiffres.
Dans une Macro, vous pouvez le paramétrer en indiquant un $ suivi d’un chiffre ou d’une lettre.
Il est affiché différemment selon l’entité :- Pour une Macro, il est affiché dans l’arbre de la vue Structure du code Macro, sur le noeud correspondant à la fonction ou sous-fonction. Il est identifié dans le code de la Macro sous la forme LV=nn (où nn représente le niveau).
- Pour un Programme, Ecran ou Composant Applicatif, il est affiché à partir de la colonne 73, sous la forme lvnn (où nn représente le niveau).
La valeur du niveau dépend de l’élément créé. Pour une fonction, le niveau est 05. Pour une sous-fonction, le niveau doit être compris entre 06 à 98. Le niveau par défaut des sous-fonctions est 10.
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. Par exemple, une sous-fonction de niveau 15 dépend de toute sous-fonction de niveau 06 à 14 la précédant. Une sous-fonction n'est exécutée que si la fonction et toutes les sous-fonctions dont elle dépend sont exécutées.
- Titre
- Vous pouvez indiquer, de manière facultative, le titre de la fonction
ou sous-fonction. La valeur par défaut est constituée d'une série
de tirets.
Pour une insertion dans un Programme, Ecran ou Serveur, la chaîne de caractère que vous indiquez constituera le titre d’une fonction ou un commentaire sur la première ligne d’une sous-fonction. La valeur par défaut est une série de tirets. Si vous la laissez et voulez la modifier dans le code, double-cliquez dessus et indiquez une autre valeur.
- Condition d’exécution
- Cette zone est disponible pour une fonction ou sous-fonction non liée à un modèle (valeur
Aucun dans la zone Modèle). Vous indiquez si l'exécution de la fonction ou sous-fonction est conditionnée de l’une des façons suivantes :
- Aucun : La fonction ou sous-fonction est toujours exécutée. Remarque : Pour créer une fonction ou sous-fonction de ce type, vous pouvez aussi insérer un fragment Sous-fonction sans conditionnement
- IT : La fonction ou sous-fonction est exécutée si la condition est
satisfaite.
Après avoir inséré la fonction ou sous-fonction, créez une ligne (sans numéro de ligne dans le code Macro) directement dans le code et saisissez la condition. Vous pouvez saisir du code sur les lignes suivantes (avec numéros de ligne dans le code Macro).
Remarque : Pour créer une fonction ou sous-fonction avec une condition IT, vous pouvez aussi insérer un fragment Sous-fonction avec conditionnement.Les ordres COBOL IF THEN condition et NEXT SENTENCE GO TO Fffnn-FN sont générés automatiquement.
Les ordres COBOL Fffnn-900 et GO TO Fffnn-FN indiquant la fin de la sous-fonction sont générés et gérés automatiquement. ffnn est la sous-fonction associée contenant la condition IT. Ainsi, si vous modifiez la condition d'exécution ou le niveau d'une sous-fonction et si cette modification entraîne le déplacement de la ligne -900, ce déplacement est automatique. Si vous indiquez une condition d'exécution EL après une condition IT, la ligne -900 sera automatiquement générée.
- EL : Cette condition est interdite au niveau fonction. La sous-fonction
est exécutée si la sous-fonction précédente avec une condition IT ne l’a pas
été.
Après avoir inséré la sous-fonction, créez une ligne (sans numéro de ligne dans le code Macro) directement dans le code et saisissez la condition. Vous pouvez saisir du code sur les lignes suivantes (avec numéros de ligne dans le code Macro).
Les ordres COBOL Fffnn-900 et GO TO Fffnn-FN indiquant la fin de la sous-fonction sont générés et gérés automatiquement. ffnn est la sous-fonction associée contenant la condition IT. Ainsi, si vous modifiez la condition d'exécution ou le niveau d'une sous-fonction et si cette modification entraîne le déplacement de la ligne -900, ce déplacement est automatique. Si vous indiquez une condition d'exécution EL après une condition IT, la ligne -900 sera automatiquement générée.
- DW : Cette condition est interdite au niveau fonction. La sous-fonction
est exécutée de façon répétitive tant que sa condition est satisfaite.
Après avoir inséré la sous-fonction, créez une ligne (sans numéro de ligne dans le code Macro) directement dans le code et saisissez la condition. Vous pouvez saisir du code sur les lignes suivantes (avec numéros de ligne dans le code Macro).
Les ordres COBOL Fffnn-900 et GO TO Fffnn indiquant la fin de la sous-fonction sont générés et gérés automatiquement.
- DU : Cette condition est interdite au niveau fonction. La sous-fonction
est exécutée de façon répétitive jusqu’à ce que sa condition soit satisfaite. Elle est donc exécutée
au moins une fois.
Après avoir inséré la sous-fonction, créez une ligne (sans numéro de ligne dans le code Macro) directement dans le code et saisissez la condition. Vous pouvez saisir du code sur les lignes suivantes (avec numéros de ligne dans le code Macro).
Les ordres COBOL Fffnn-900 et GO TO Fffnn indiquant la fin de la sous-fonction sont générés et gérés automatiquement.
Remarque : Si vous modifiez la condition d'exécution dans l'assistant de modification de fonctions ou sous-fonctions, une regénération démarre automatiquement dès que vous cliquez sur Terminer. La nouvelle condition d'exécution apparaît alors dans le code. Les éventuelles lignes de condition appartenant à l'ancienne condition d'exécution apparaissent sous forme de lignes de commentaires au début de la nouvelle fonction ou sous-fonction. Vous pouvez les supprimer ou les réutiliser.Note sur la condition DO : La condition DO ne peut pas être sélectionnée dans cet assistant. Cependant, elle peut être présente dans le code spécifique écrit dans Pacbase. Dans ce cas, elle apparaît dans le code dans l'éditeur COBOL PDP et est affichée dans l'assistant mais ne peut pas être sélectionnée. Pour savoir comment gérer une boucle DO migrée de Pacbase, consultez Cas particulier des boucles DO et CO.Pour indiquer qu'un traitement doit être effectué de façon répétitive, comme dans la boucle DO, vous pouvez insérer le fragment Insertion d'une boucle dans une sous-fonction. Ce fragment est disponible depuis la vue Fragments, catégorie Fragments RPP. Il insère un ordre COBOL PERFORM. Vous pouvez aussi écrire un ordre PERFORM directement sur une nouvelle ligne de code, sans utiliser le fragment.
Note sur la condition CO : La condition CO n'est pas disponible dans cet assistant. Cependant, elle peut être présente dans le code spécifique écrit dans Pacbase. Pour savoir comment la gérer, consultez Cas particulier des boucles DO et CO.Elle est reprise dans Rational Programming Patterns sous forme d'un micro-pattern CO, dans les Macros uniquement. Pour indiquer que des traitements doivent être exécutés indépendamment les uns des autres en fonction de la valeur d'une variable, vous devez insérer le fragment Micro-pattern CO : traitement du Case Of dans une Macro. Ce fragment est disponible depuis la vue Fragments, catégorie Fragments RPP pour Macro. Il insère un micro-pattern CO avec le nom de la variable à tester. Vous devez ensuite créer les sous-fonctions contenant les traitements à effectuer en fonction de la valeur de la variable.
- Aucun : La fonction ou sous-fonction est toujours exécutée.
Positionnement spécifique
- Modèle
- Les informations que vous devez indiquer dans l’assistant dépendent
du modèle sélectionné dans cette zone. Trois valeurs sont possibles
:
- Aucun : Les fonctions ou sous-fonctions créées dans l’assistant ne sont pas insérées relativement à des fonctions ou sous-fonctions automatiques.
- Dialogue standard ou client : Vous ne pouvez créer que des sous-fonctions. Ces sous-fonctions sont insérées relativement à des sous-fonctions automatiques du modèle.
- Composant Applicatif : Les fonctions et sous-fonctions créées dans l’assistant sont insérées relativement à des fonctions et sous-fonctions automatiques du modèle.
- Type d’insertion
- Cette zone est associée au modèle Composant Applicatif. Vous devez indiquer par rapport à quel traitement automatique votre traitement spécifique sera inséré. Les insertions suivantes sont possibles :
- Insertion par rapport aux traitements de niveau hiérarchique 05 : Insertion par rapport aux blocs de début et de fin de Composant Applicatif, bloc des déclarations SQL et blocs Vue Logique.
- Insertion par rapport aux traitements SQL :
Insertion par rapport aux traitements SQL de niveau hiérarchique 10 situés
dans le bloc des déclarations SQL. Ces insertions sont relatives aux
ordres SQL DECLARE CURSOR et WHENEVER.Remarque : Avant d'insérer des traitements spécifiques SQL, vous devez d'abord associer une fonction de niveau hiérarchique 05 au bloc FSQL. Les insertions se feront ensuite dans des sous-fonctions de niveaux hiérarchiques inférieurs.
- Insertion par rapport aux traitements d’une Vue Logique : Insertion dans le corps du programme ou dans les traitements élémentaires exécutés par PERFORM.
- Insertion par rapport au niveau des accès logiques : Insertion dans les traitements d'accès logiques aux Segments pour contrôle, mise à jour ou sélection.
- Insertion par rapport au niveau des accès physiques : Insertion dans la fonction 80.
Avec génération
Cette option est automatiquement cochée et ne peut pas être décochée si les modifications nécessitent une nouvelle génération. Tel est le cas, par exemple, si vous créez une sous-fonction relative dans un Ecran ou Serveur. Un message dans le titre de l'assistant informe aussi qu'une génération est nécessaire.
Vous pouvez cocher cette option si les modifications dans l'assistant de création ne nécessitent pas de nouvelle génération. Tel est le cas, par exemple, si vous modifiez le titre ou le niveau d'une fonction ou sous-fonction, ou si vous créez une fonction ou sous-fonction dans un Programme. Vous pouvez générer, par exemple, si vous avez auparavant effectué des mises à jour de micro-patterns.
La nouvelle génération démarre quand vous cliquez sur Terminer dans l'assistant.