Les fragments disponibles
Ces fragments n'appellent pas de micro-patterns mais facilitent la saisie du code en affichant un assistant avec des paramètres à valoriser. Les lignes de code correspondantes sont ainsi toujours correctement formatées.
- Insertion d'indices. Ce fragment permet d'insérer les 3 indices générés
automatiquement à partir de la déclaration d'une table : IXXNNL pour le nombre
d’enregistrements stockés dans la table, IXXNNR pour la recherche dans la table et
IXXNNM pour le nombre maximum d’enregistrements.Exemple : A partir du fragment Insertion d'indices, les lignes de code suivantes (correspondant aux valeurs par défaut des variables) sont insérées dans le code.
05 IINDL PICTURE S9(4) VALUE ZERO. 05 IINDR PICTURE S9(4) VALUE ZERO. 05 IINDM PICTURE S9(4) VALUE +100.
- Insertion d'une recherche (SCH/SCB). Ce fragment est utilisé pour une
recherche de Rubrique dans une table triée. La Rubrique est indiquée dans le second opérande. Le
code de la table est indiqué dans le premier opérande. Ce code doit inclure le radical du code dans
la WORKING-STORAGE SECTION, s'il existe (1- par exemple). Il peut
être suivi du nom de la Rubrique s’il est différent du nom de la Rubrique à rechercher.
La recherche est effectuée avec les indices standard associés à la table. Si la recherche est infructueuse, l’indice IXXNNR sera supérieur à l’indice IXXNNL.
Avec SCH, la recherche s'interrompt dès que l’argument de la table est supérieur à l’argument recherché. Ce n'est pas le cas avec SCB.
Lorsque le fragment Insertion d'une recherche (SCH/SCB) est inséré, une ligne de commentaire est automatiquement ajoutée dans le code avant l'insertion. Cette ligne contient @SCH ou @SCB, suivi des deux opérandes entre guillemets.
Exemple : Dans l'exemple suivant, W-WK00-TABLE1 correspond au code de la table indiqué dans le premier opérande et W-WK00-VAL1 est la Rubrique indiquée dans le second opérande. Les lignes suivantes sont alors insérées dans le code.*@SCH "W-WK00-TABLE1 W-WK00-VAL1" MOVE 1 TO IINDIR. FXXYY-NNN. IF IINDIR NOT > IINDIL AND W-WK00-TABLE1 (IINDIR) NOT = W-WK00-VAL1 ADD 1 TO IINDIR GO TO FXXYY-NNN.
- Insertion d'une boucle. Ce fragment permet d'indiquer qu'un traitement
doit être effectué de façon répétitive. Vous indiquez le nom du traitement dans l'opérande. Quand
vous insérez le fragment, une ligne de commentaire @LOOP est automatiquement
ajoutée dans le code pour indiquer le début de la boucle. La ligne suivante contient un ordre COBOL
PERFORM suivi du nom du traitement et de TIMES. Vous devez ajouter
manuellement dans le code, avant TIMES, le nombre de répétitions du traitement.
Spécifiez le traitement à effectuer sur les lignes suivantes. L'ordre END-PERFORM
est automatiquement généré pour indiquer la fin de la boucle.Exemple : Vous voulez insérer un traitement MYPROCESSING. Vous indiquez MYPROCESSING en tant qu'opérande du fragment Insertion d'une boucle et vous insérez le fragment. Vous indiquez le nombre de répétitions du traitement (3 dans l'exemple) et spécifiez les lignes du traitement avant l'ordre END-PERFORM. Les lignes suivantes sont alors insérées dans le code.
*@LOOP PERFORM MYPROCESSING 3 TIMES * Insert code MYPROCESSING 1ST LINE MYPROCESSING 2ND LINE END-PERFORM.
- Insertion de l'ordre EVALUATE. Ce fragment permet d'insérer l'ordre COBOL
EVALUATE pour tester plusieurs conditions d'une Rubrique et spécifier une action
pour chacune d'elles.Exemple : Dans l'exemple suivant, vous insérez un ordre EVALUATE dans une sous-fonction F28BB. Dans l'assistant d'insertion du fragment, vous indiquez YA01-XCSDO en tant que Rubrique dont la valeur sera testée. Vous indiquez value1 en tant que condition. Vous précisez que le traitement MOVE 'value2' TO YA01-XTSD00 sera exécuté si la valeur de la Rubrique est value1. Vous indiquez aussi que le traitement MOVE 'value3' TO YA01-XTSD00 sera exécuté si la valeur de la Rubrique n'est pas value1. Les lignes suivantes sont alors insérées dans le code.
*N28BB. NOTE *EVALUATE statement for YA01-CSDO *. F28BB. *<insert code for F28BB here> EVALUATE YA01-XCSDO WHEN 'value1' MOVE 'value2' TO YA01-XTSD00 WHEN OTHER MOVE 'value3' TO YA01-XTSD00 END-EVALUATE. F28BB-FN. EXIT.
- Insertion d'une ligne en zone de travail et de lien. Ce fragment ne peut être inséré que dans une Macro. Il permet d'insérer un emplacement dans la WORKING-STORAGE SECTION en fonction des deux caractères que vous saisissez. Par exemple, si vous indiquez AA en tant que paramètre du fragment, l'emplacement WAA s'insère dans le code de la Macro.