47 F2 15UP Rev02
Préparation des programmes
PCFGuide de l'utilisateurAide à la mise au point (PCF)
GCOS 7
Logiciel
Sujet : Ce manuel combine un guide d'utilisateur et un manuel deréférence concernant le logiciel d'aide à la mise au point PCF(Program Checkout Facility) pour les programmes exécutés sousGCOS 7.
Observations : Remplace la révision 01 pour tous les utilisateurs de GCOS 7 V7.La révision 01 reste valable pour les utilisateurs de GCOS 7 V6.
Version du logiciel : GCOS 7-AP/XPS/EXMS Version V7 (à partir de l'état technique7254)
Date : Février 95
Bull S.A. Bull HN Information Systems Inc.CEDOC Publication Order EntryAtelier de reproduction MA30/843331, Avenue Patton BP 428 300 Concord Road49005 ANGERS Cedex Billerica, MA 01821FRANCE U.S.A.
47 F2 15UP Rev02
Copyright Bull S.A., 1995
Toutes les marques citées sont la propriété de leurs titulaires respectifs.
Vos suggestions sur la forme et le fond de ce manuel seront les bienvenues.Une feuille destinée à recevoir vos remarques se trouve à la fin du présent
manuel.
La loi du 11 mars 1957, complétée par la loi du 3 juillet 1985, interdit les copiesou reproductions destinées à une utilisation collective. Toute représentation oureproduction intégrale ou partielle faite par quelque procédé que ce soit, sansconsentement de l'auteur ou de ses ayants causes, est illicite et constitue unecontrefaçon sanctionnée par les articles 425 et suivants du code pénal.
Ce document est fourni à titre d'information seulement. Il n'engage pas laresponsabilité de Bull S.A. en cas de dommages résultant de son application.Des corrections ou modifications au contenu de ce document peuvent intervenirsans préavis ; des mises à jour ultérieures les signaleront éventuellement auxdestinataires.
47 F2 15UP Rev02
47 F2 15UP Rev02 iii
Préface
Le présent manuel est à la fois un guide de l'utilisateur et un manuel de référenceconcernant le logiciel PCF (Program Checkout Facility), outil d'aide à la mise au pointpour les programmes exécutés sur DPS 7000.
La première partie (chapitres 1 à 6) constitue un guide de l'utilisateur; elle présente lesprincipales caractéristiques du logiciel. L'utilisateur est censé avoir des connaissances debase sur l'architecture DPS 7000, le système d'exploitation GCOS 7, et un langageévolué, ainsi qu'une certaine expérience de la programmation.
La seconde partie (à partir du chapitre 7) peut être considérée comme un manuel deréférence. Elle décrit PCF plus en détail, indique quelles en sont les règles d'utilisationque ce soit en traitement et télétraitement par lots, en interactif ou en transactionnel,avec des conseils pour la mise au point illustrés par des exemples.
BIBLIOGRAPHIE
Cette bibliographie est fournie à titre indicatif. Pour plus de p récis ions(disponibilité du manuel, nu méro de révis ion, indice de mise à jour), veuillez vousadresser à CEDOC ou éventuellement consulter le fascicule "Documentsnouveaux" (référence 00 F4 7210).
Langage C - Guide de l'utilisateur................................................................. 47 F2 60ULC Language User's Guide ............................................................................ 47 A2 60UL
COBOL 85 - Guide de l'utilisateur................................................................. 47 F2 06ULCOBOL 85 User's Guide .............................................................................. 47 A2 06UL
FORTRAN 77 - Guide de l'utilisateur............................................................ 47 F2 16ULFORTRAN 77 User's Guide ......................................................................... 47 A2 16UL
GPL - Guide de l'utilisateur........................................................................... 47 F2 36ULGPL User's Guide ........................................................................................ 47 A2 36UL
JCL - Guide de l'utilisateur ........................................................................... 47 F2 12UJJCL User's Guide ......................................................................................... 47 A2 12UJ
Aide à la mise au point (PCF)
4 47 F2 15UP Rev02
COBOL - Guide du programmeur TDS......................................................... 47 F2 32UTTDS COBOL Programmer's Guide...............................................................47 A2 32UT
Langage C - Guide du programmeur TDS .................................................... 47 F2 07UTTDS C Programmer's Guide.........................................................................47 A2 07UTIOF - Manuel de référence de l'utilisateur Vol. 1 : Introduction à IOF .......................................................................... 47 F2 38UJ Vol. 2 : Commandes GCL .......................................................................... 47 F2 39UJ Vol. 3 : Directives et commandes processeurs ........................................... 47 F2 40UJ GCL Manuel du programmeur .................................................................... 47 F2 36UJ
IOF Terminal User's Reference Manual Part 1 : Introduction to IOF......................................................................... 47 A2 38UJ Part 2 : GCL Commands............................................................................ 47 A2 39UJ Part 3 : Processors Commands.................................................................. 47 A2 40UJ GCL Programmer's Manuel........................................................................ 47 A2 36UJ
CONVENTIONS D'ECRITURE
Les conventions d'écriture utilisées dans ce manuel pour la syntaxe des commandes ouordres des différents langages sont les suivantes:
ELEMENT Les majuscules indiquent un nom ou un mot-clé, àintroduire tel quel.
élément Les minuscules indiquent une valeur à fournir parl'utilisateur. Le nom symbolique chiffresn représente unechaîne de chiffres décimaux de longueur maximum n.
[élément] Les crochets indiquent un élément facultatif.
{élément-1}{élément-2}{élément-3}
Une colonne d'éléments entre accolades indique que l'und'eux doit être sélectionné, si le paramètre correspondantest retenu. La valeur implicite (éventuelle) est soulignée(ici élément 3).
( ) L'utilisateur peut spécifier une seule valeur ou une liste devaleurs séparées par un espace et placées entreparenthèses.
élément... Les points de suspension indiquent que l'élément peut êtrerépété une ou plusieurs fois.
47 F2 15UP Rev02 v
Table des matières
1. Généralités ........................................................................................................ 1-1
1.1 OBJET ................................................................................................................... 1-1
1.2 DESCRIPTION GENERALE DE PCF ..................................................................... 1-2
1.3 UTILISATION DE PCF ........................................................................................... 1-3
1.3.1 Phase de compilation ........................................................................................... 1-31.3.2 Phase d'exécution ................................................................................................ 1-3
1.4 MISE AU POINT EN TRAITEMENT PAR LOTS .................................................... 1-4
1.5 MISE AU POINT EN MODE INTERACTIF ............................................................. 1-4
1.6 MISE AU POINT EN TELETRAITEMENT PAR LOTS ........................................... 1-5
1.7 MISE AU POINT EN TRAITEMENT TRANSACTIONNEL ...................................... 1-6
1.7.1 Mode traitement par lots ...................................................................................... 1-61.7.2 Mode interactif ...................................................................................................... 1-7
Aide à la mise au point (PCF)
vi 47 F2 15UP Rev02
2. Langage PCF .................................................................................................... 2-1
2.1 SYNTAXE DES COMMANDES PCF ...................................................................... 2-1
2.1.1 Commandes et abréviations ................................................................................ 2-12.1.2 Clauses "Quoi", "Quand" et IF ............................................................................. 2-2
2.2 SESSION PCF ....................................................................................................... 2-2
2.3 RECAPITULATION DES COMMANDES PCF ........................................................ 2-3
3. Adressage symbolique ................................................................................. 3-1
3.1 CLAUSES "QUOI" ET "QUAND" ........................................................................... 3-1
3.2 LISTE DE NUMEROS DE COMMANDES .............................................................. 3-2
3.3 EXPRESSIONS DE DONNEES .............................................................................. 3-2
3.4 CONSTANTES ....................................................................................................... 3-2
3.5 REFERENCE DE DONNEE.................................................................................... 3-2
3.5.1 Variables simples .................................................................................................. 3-33.5.2 Eléments de tableau ou de table .......................................................................... 3-33.5.3 Agrégats ................................................................................................................ 3-43.5.4 Sous-ensemble de tableau ou de table ............................................................... 3-43.5.5 Variables basées ................................................................................................... 3-43.5.6 Affichage de variables locales ............................................................................. 3-6
3.6 OPERATEURS ....................................................................................................... 3-6
3.6.1 Parenthèses .......................................................................................................... 3-63.6.2 Formats ................................................................................................................. 3-63.6.3 Opérateurs arithmétiques ..................................................................................... 3-73.6.4 Opérateurs logiques ............................................................................................. 3-73.6.5 Opérateur adresse ................................................................................................ 3-7
Table des matières
47 F2 15UP Rev02 vii
3.7 LISTE DE POINTS D'INTERVENTION .................................................................. 3-8
3.7.1 Etiquettes .............................................................................................................. 3-83.7.2 Numéros de lignes ................................................................................................ 3-93.7.3 Plage d'instructions .............................................................................................. 3-93.7.4 Noms de points d'intervention symboliques ...................................................... 3-103.7.5 Mise au point pas à pas ........................................................................................ 3-11
3.8 CLAUSE IF ............................................................................................................. 3-11
4. Adressage effectif ........................................................................................... 4-1
4.1 ADRESSES MEMOIRE .......................................................................................... 4-1
4.2 LISTE DE NUMEROS DE COMMANDES .............................................................. 4-2
4.3 EXPRESSIONS DE DONNEES .............................................................................. 4-2
4.4 CONSTANTES ....................................................................................................... 4-2
4.5 REFERENCE DE DONNEE.................................................................................... 4-3
4.6 OPERATEURS ....................................................................................................... 4-3
4.6.1 Parenthèses .......................................................................................................... 4-34.6.2 Opérateurs arithmétiques ..................................................................................... 4-34.6.3 Opérateurs logiques ............................................................................................. 4-4
4.7 LISTE DE POINTS D'INTERVENTION .................................................................. 4-4
4.7.1 Mise au point pas à pas ........................................................................................ 4-4
4.8 CLAUSE IF ............................................................................................................. 4-5
4.9 DESASSEMBLAGE ............................................................................................... 4-5
Aide à la mise au point (PCF)
viii 47 F2 15UP Rev02
5. Adressage semi-symbolique ...................................................................... 5-1
5.1 ADRESSES MEMOIRE .......................................................................................... 5-1
5.2 LISTE DE NUMEROS DE COMMANDE ................................................................. 5-2
5.3 EXPRESSIONS DE DONNEES .............................................................................. 5-2
5.4 CONSTANTES ....................................................................................................... 5-3
5.5 REFERENCE DE DONNEE.................................................................................... 5-3
5.5.1 Adressage semi-symbolique direct ..................................................................... 5-35.5.2 Nom symbolique ................................................................................................... 5-4
5.6 OPERATEURS ....................................................................................................... 5-4
5.6.1 Parenthèses .......................................................................................................... 5-45.6.2 Opérateurs arithmétiques ..................................................................................... 5-55.6.3 Opérateurs logiques ............................................................................................. 5-5
5.7 LISTE DE POINTS D'INTERVENTION .................................................................. 5-5
5.7.1 Mise au point pas à pas ........................................................................................ 5-5
5.8 CLAUSE IF ............................................................................................................. 5-6
6. Les commandes PCF ..................................................................................... 6-1
6.1 APPLY ................................................................................................................... 6-2
6.2 BEGIN .................................................................................................................... 6-4
6.3 CHANGE ................................................................................................................ 6-6
6.4 CHECKPOINT ........................................................................................................ 6-8
6.5 CULIB1/2/3 ............................................................................................................. 6-9
Table des matières
47 F2 15UP Rev02 ix
6.6 DISPLAY ................................................................................................................ 6-10
6.7 DSR........................................................................................................................ 6-11
6.8 DUMP..................................................................................................................... 6-12
6.9 END........................................................................................................................ 6-14
6.10 EXEC...................................................................................................................... 6-16
6.11 FSE ........................................................................................................................ 6-18
6.12 GOTO..................................................................................................................... 6-19
6.13 INLIB1/2/3 .............................................................................................................. 6-20
6.14 KILL ....................................................................................................................... 6-22
6.15 LIB ......................................................................................................................... 6-24
6.16 LIST ....................................................................................................................... 6-25
6.17 OUTPUT ................................................................................................................ 6-26
6.18 PAUSE ................................................................................................................... 6-28
6.19 RECOVER.............................................................................................................. 6-30
6.20 RESUME ET SUSPEND......................................................................................... 6-31
6.21 TRACE ................................................................................................................... 6-33
6.22 WHERE .................................................................................................................. 6-35
Aide à la mise au point (PCF)
x 47 F2 15UP Rev02
7. Appel de PCF en traitement par lots ........................................................ 7-1
7.1 COMMANDES SUR CARTES ................................................................................ 7-1
7.2 COMMANDES DANS UN FICHIER DISQUE SEQUENTIEL NON CATALOGUE .. 7-2
7.3 COMMANDES DANS UN FICHIER SEQUENTIEL CATALOGUE .......................... 7-2
7.4 COMMANDES DANS UNE UNITE DE BIBLIOTHEQUE ORIGINENON CATALOGUEE .............................................................................................. 7-2
7.5 COMMANDES DANS UNE UNITE DE BIBLIOTHEQUE ORIGINECATALOGUEE ....................................................................................................... 7-3
8. Appel de PCF en interactif ........................................................................... 8-1
8.1 DEFINITION D'UNE SESSION DE MISE AU POINT .............................................. 8-1
8.2 TEXTES HELP ....................................................................................................... 8-2
8.3 LANCEMENT IMMEDIAT DE PCF ......................................................................... 8-3
8.4 TRAITEMENT DES INTERRUPTIONS .................................................................. 8-3
9. Appel de PCF en télétraitement par lots ................................................. 9-1
9.1 PREPARATION D'UNE SESSION DE MISE AU POINT EN TELETRAITEMENTPAR LOTS ............................................................................................................. 9-1
9.1.1 Ordre CONSOLE ................................................................................................... 9-1
9.2 LANCEMENT DE LA SESSION ............................................................................. 9-3
9.3 DEROULEMENT DE LA SESSION ........................................................................ 9-4
9.4 TEXTES HELP ....................................................................................................... 9-4
Table des matières
47 F2 15UP Rev02 xi
9.5 LANCEMENT IMMEDIAT DE PCF ......................................................................... 9-5
9.6 TRAITEMENT DES INTERRUPTIONS .................................................................. 9-5
10. Appel de PCF en traitement transactionnel ........................................... 10-1
10.1 MISE AU POINT LOCALE ..................................................................................... 10-1
10.1.1 Appel par TRACE PRINT ...................................................................................... 10-110.1.2 APPEL PAR TRACE SEND .................................................................................... 10-2
10.2 MISE AU POINT A DISTANCE .............................................................................. 10-3
10.2.1 Préalables .............................................................................................................. 10-310.2.2 Procédure .............................................................................................................. 10-310.2.2.1 Connexion au terminal IOF ..................................................................................... 10-310.2.2.2 Activation du mode mise au point ........................................................................... 10-310.2.2.3 Activation de la transaction ..................................................................................... 10-310.2.2.4 Réponse dans le délai imparti ................................................................................. 10-410.2.2.5 Entrée des commandes PCF .................................................................................. 10-4
10.2.3 Restrictions ........................................................................................................... 10-410.2.4 Exemple de mise au point transactionnelle à distance ...................................... 10-5
11. Mise au point de programmes COBOL .................................................... 11-1
11.1 TYPES DE VARIABLES ......................................................................................... 11-1
11.2 LITTERAUX ........................................................................................................... 11-3
11.3 REFERENCE AUX INSTRUCTIONS ...................................................................... 11-4
11.4 EXEMPLE DE SESSION DE MISE AU POINT COBOL ......................................... 11-5
11.4.1 Exemple de commandes PCF de mise au point d'un programme COBOL ....... 11-611.4.2 Exemple de liste de programme COBOL ............................................................. 11-611.4.3 Exemple de compte rendu d'exécution de PCF pour un programme COBOL .. 11-8
Aide à la mise au point (PCF)
xii 47 F2 15UP Rev02
12. Mise au point de programmes FORTRAN .............................................. 12-1
12.1 TYPES DE VARIABLES ......................................................................................... 12-1
12.2 CONSTANTES ....................................................................................................... 12-2
12.3 REFERENCE AUX INSTRUCTIONS ...................................................................... 12-3
12.4 EXEMPLE DE SESSION DE MISE AU POINT FORTRAN ..................................... 12-4
12.4.1 Exemple de liste de programme FORTRAN ........................................................ 12-512.4.2 Exemple de commandes PCF de mise au point d'un programme FORTRAN ... 12-612.4.3 Exemple de compte rendu d'exécution de PCF pour
un programme FORTRAN .................................................................................... 12-7
13. Mise au point de programmes GPL .......................................................... 13-1
13.1 TYPES DE VARIABLES ......................................................................................... 13-1
13.2 CONSTANTES ....................................................................................................... 13-2
13.3 NOTION DE BLOC ................................................................................................. 13-3
13.4 REFERENCE AUX INSTRUCTIONS ...................................................................... 13-4
13.5 VARIABLES BASEES ............................................................................................ 13-5
13.6 EXEMPLE DE SESSION DE MISE AU POINT ....................................................... 13-6
13.6.1 Exemple de commandes PCF de mise au point d'un programme GPL ............. 13-613.6.2 Exemple de liste de programme GPL .................................................................. 13-713.6.3 Exemple de compte rendu d'exécution de PCF pour un programme GPL ....... 13-8
Table des matières
47 F2 15UP Rev02 xiii
14. Mise au point en adressage effectif ......................................................... 14-1
14.1 RELEVES D'IMPLANTATION DES OBJETS DE PROGRAMME .......................... 14-1
14.1.1 Relevé de données et d'instructions COBOL ...................................................... 14-214.1.2 Relevé de données et d'instructions FORTRAN ................................................. 14-214.1.3 Relevé de données et d'instructions GPL ........................................................... 14-314.1.4 Relevé de données et d'instructions en C ........................................................... 14-4
14.2 NOTATION "ISN:O FFSET" ................................................................................... 14-10
14.3 EXEMPLE DE MISE AU POINT EN ADRESSAGE EFFECTIF .............................. 14-11
14.3.1 Compte rendu d'édition de liens .......................................................................... 14-11
15. Mise au point en adressage semi-symbolique ..................................... 15-1
15.1 RELEVES D'IMPLANTATION DES OBJETS DE PROGRAMMES ........................ 15-1
15.2 REFERENCE DE DONNEE EN ADRESSAGE SEMI-SYMBOLIQUE ..................... 15-2
15.2.1 Adressage semi-symbolique direct (isn:offset) .................................................. 15-215.2.2 Noms symboliques de données externes ........................................................... 15-215.2.2.1 Relevé de données et d'instructions COBOL........................................................... 15-315.2.2.2 Relevé de données et d'instructions FORTRAN ...................................................... 15-315.2.2.3 Relevé de données et d'instructions GPL................................................................ 15-415.2.2.4 Exemple de mise au point en adressage semi-symbolique...................................... 15-515.2.2.5 Relevé de données et d'instructions en ................................................................... 15-6
16. Compte rendu d'exécution de PCF en traitement par lots ............... 16-1
16.1 COMPTE RENDU DE TRADUCTION..................................................................... 16-2
16.1.1 Compte rendu de traduction ................................................................................ 16-2
16.2 COMPTE RENDU D'EXECUTION .......................................................................... 16-3
16.2.1 Compte rendu d'exécution sous PCF en traitement par lots ............................. 16-3
Aide à la mise au point (PCF)
xiv 47 F2 15UP Rev02
17. Compte rendu d'exécution de PCF en interactif et entélétraitement par lots ................................................................................... 17-1
17.1 MESSAGES ET PREFIXES PCF ET DIALOGUE UTILISATEUR .......................... 17-1
17.2 COMPTE RENDU D'EXECUTION .......................................................................... 17-3
17.3 MENUS GCL ET MESSAGES DE GUIDAGE ......................................................... 17-4
17.3.1 Compte rendu d'exécution de PCF en interactif ................................................. 17-4
18. Compte rendu d'exécution de PCF sous TDS ...................................... 18-1
18.1 COMPTE RENDU DE TRADUCTION..................................................................... 18-1
18.1.1 Compte rendu de traduction ................................................................................ 18-2
18.2 COMPTE RENDU D'EXECUTION .......................................................................... 18-2
18.2.1 Compte rendu d'exécution sous TDS .................................................................. 18-3
19. Mise au point de programmes en langage C ......................................... 19-1
19.1 TYPES DE VARIABLES ......................................................................................... 19-1
19.2 POINTEURS DE TYPE .......................................................................................... 19-2
19.3 CONSTANTES ....................................................................................................... 19-2
19.3.1 Entiers ................................................................................................................... 19-219.3.2 Chaînes de caractères .......................................................................................... 19-319.3.3 Enumération de variables .................................................................................... 19-319.3.4 Nombres réels ....................................................................................................... 19-319.3.5 Constantes pointeur ou entrée ............................................................................ 19-4
19.4 STRUCTURE DE BLOC ......................................................................................... 19-5
19.5 RÉFÉRENCE AUX INSTRUCTIONS ...................................................................... 19-6
Table des matières
47 F2 15UP Rev02 xv
19.6 CROCHETS ........................................................................................................... 19-6
19.7 MAJUSCULES ET MINUSCULES ......................................................................... 19-7
19.8 EXEMPLE DE SESSION DE MISE AU POINT EN C ............................................. 19-7
20. Traitement des modules chargeables de grande taille ..................... 20-1
20.1 PROBLÈMES PROPRES AUX MODULES CHARGEABLES DEGRANDE TAILLE ................................................................................................... 20-1
20.2 TRAITEMENT DES MODULES CHARGEABLES DE GRANDE TAILLE ............... 20-2
20.3 COMMANDE SPLIT_CU ........................................................................................ 20-3
20.3.1 Syntaxe GCL (domaine IOF) ................................................................................. 20-320.3.2 Syntaxe JCL .......................................................................................................... 20-3
20.4 SPECIFICATION DE LA BIBLIOTHÈQUE CU D'ORIGINE .................................... 20-4
20.4.1 Syntaxe de la commande CULIB1/2/3 .................................................................. 20-4
20.5 LIMITES DE TAILLE .............................................................................................. 20-4
20.6 EXEMPLES ............................................................................................................ 20-5
Aide à la mise au point (PCF)
xvi 47 F2 15UP Rev02
Annexes
A. Résumé de la syntaxe PCF .......................................................................... A-1
A.1 NIVEAU SYNTAXIQUE SUPERIEUR ..................................................................... A-1
A.2 COMMANDES ........................................................................................................ A-2
A.3 NIVEAU SYNTAXIQUE INTERMEDIAIRE .............................................................. A-4
A.4 POINTS D'INTERVENTION ET RÉFÉRENCES DE DONNÉES ............................. A-5
A.5 NIVEAU SYNTAXIQUE INFERIEUR ...................................................................... A-6
B. Format des données ...................................................................................... B-1
C. Constantes, affectations, comparaisons ......................................... C-1
Glossaire ............................................................................................................................. g-1
Index .............................................................................................................................. i-1
Table des matières
47 F2 15UP Rev02 xvii
Illustrations
Figures
6-1 Commande APPLY................................................................................................. 6-26-2 Commande BEGIN ................................................................................................. 6-46-3 Commande CHANGE ............................................................................................. 6-66-4 Commande CHECKPOINT ..................................................................................... 6-86-5 Commande CULIB1/2/3 .......................................................................................... 6-96-6 Commande DISPLAY ............................................................................................. 6-106-7 Commande DSR..................................................................................................... 6-116-8 Commande DUMP.................................................................................................. 6-126-9 Commande END..................................................................................................... 6-146-10 Commande EXEC................................................................................................... 6-166-11 Commande FSE ..................................................................................................... 6-186-12 Commande GOTO.................................................................................................. 6-196-13 Commande INLIB1/2/3 ........................................................................................... 6-206-14 Commande KILL..................................................................................................... 6-226-15 Commande LIB....................................................................................................... 6-246-16 Commande LIST..................................................................................................... 6-256-17 Commande OUTPUT.............................................................................................. 6-266-18 Commande PAUSE ................................................................................................ 6-286-19 Commande RECOVER........................................................................................... 6-306-20 Commandes RESUME et SUSPEND...................................................................... 6-316-21 Commande TRACE ................................................................................................ 6-336-22 Commande WHERE............................................................................................... 6-3514-1 Adressage indirect .................................................................................................. 14-614-2 Adressage indirect par registre................................................................................ 14-8
Tables
2-1 Récapitulation des commandes PCF ...................................................................... 2-32-1 Récapitulation des commandes PCF (suite)............................................................ 2-43-1 Références de données symboliques...................................................................... 3-53-2 Forme des points d'intervention symboliques .......................................................... 3-1014-1 Références de données en adressage effectif......................................................... 14-917-1 Récapitulation des messages et préfixes ................................................................ 17-2B-1 Déclarations de données......................................................................................... B-2B-2 Longueur de données ............................................................................................. B-3B-3 Syntaxe des formats ............................................................................................... B-4B-4 Codes de formats.................................................................................................... B-5C-1 Syntaxe des constantes et littéraux......................................................................... C-2
Aide à la mise au point (PCF)
18 47 F2 15UP Rev02
47 F2 15UP Rev02 1-1
1. Généralités
1.1 OBJET
Il est extrêmement rare que l'écriture d'un programme soit parfaite au premier jet. Parmiles multiples causes possibles figurent les erreurs humaines, de saisie par exemple, etles inexactitudes au niveau de la conception ou des spécifications. En général, lacorrection et l'amélioration d'un programme se font de manière interactive. Laformulation initiale du programme est ainsi corrigée et améliorée par approchessuccessives. Toutefois, cette façon de procéder n'est pas rapide et pourrait se révélertrès coûteuse en ressources humaines et informatiques, si le programmeur ne disposaitpas de moyens appropriés pour analyser et corriger les erreurs.
PCF a donc été conçu à cet effet. Il s'agit d'un programme système résidant destiné àaider le programmeur dans la mise au point des programmes écrits pour le DPS 7000.
PCF accepte des commandes utilisateur permettant d'obtenir des fonctions devérification comme celle de vidage (DUMP) et de jalonnement (TRACE). Cescommandes se réfèrent en général à des éléments de programme origine (en COBOL,FORTRAN, GPL ou C), comme des variables ou des adresses d'instructions, devantfaire l'objet d'une vérification particulière.
Les principaux avantages de PCF sont les suivants:
• réduction du nombre de passages de compilation nécessaires à l'obtention d'unprogramme exploitable,
• méthode de mise au point dotée d'outils puissants (commande TRACE) par exemple.
• élimination des erreurs humaines de transposition de notions du langage origine enconcepts machine, qui sont source de perte de temps.
• compte rendu de mise au point clair et facile à interpréter en langage origine.
Aide à la mise au point (PCF)
1-2 47 F2 15UP Rev02
1.2 DESCRIPTION GENERALE DE PCF
Le processus de fonctionnement de PCF se décompose en trois phases.
Première phase: l'utilisateur compile ses programmes avec le paramètre DEBUG dansl'ordre JCL ou la commande GCL appropriés. Cette option indique au compilateur qu'ildoit conserver les références des éléments de programme origine. En d'autres termes, lecompilateur génère des tables de correspondance entre les numéros de lignes,étiquettes et variables du programme origine et adresses mémoire; ces tables sontincorporées aux unités compilées. Le programme subit ensuite une édition de liensnormale et peut être exécuté tel quel, sans que ses performances en soient affectées.
Deuxième phase: l'utilisateur veut lancer une session de mise au point. Pour ce faire, ilpeut soit spécifier le mot-clé DEBUG dans l'ordre JCL STEP ou la commande GCLEXEC_PG et fournir la description du fichier contenant les commandes PCF, soitspécifier l'option PCF dans la commande TRACE au cours d'une session TDS. Lescommandes PCF sont lues et interprétées et des points d'interruption sont insérés dansle programme résultant au niveau de tous les points d'intervention spécifiés. Au cours decette phase, les tables constituées pendant la compilation sont utilisées pour établir unecorrespondance entre la représentation symbolique d'un point d'intervention (étiquette ounuméro de ligne par exemple) tel qu'il est défini en langage PCF, et son adressemémoire. Le programme est enfin exécuté normalement.
Un point d'interruption est un code opération particulier DPS 7000. Lorsqu'il est atteint encours de traitement, il déclenche le mécanisme DPS 7000 de gestion des exceptions quiappelle à son tour PCF.
Troisième phase: grâce aux tables constituées au cours de la première phase et àd'autres informations internes générées au cours de la deuxième phase, PCF peuteffectuer les opérations requises. L'exécution reprend chaque fois à l'instruction qui suitle point d'interruption.
Si la première phase est omise - programme compilé sans l'option DEBUG - il est toutde même possible d'utiliser PCF. Toutefois, aucune table de références origine nepouvant être construite, l'utilisateur est obligé de préciser les adresses mémoire réellesdes objets et points d'intervention auxquels il fait référence. Il s'agit d'ADRESSAGEEFFECTIF par opposition à l' ADRESSAGE SYMBOLIQUE ou SEMI-SYMBOLIQUE(voir plus loin).
Généralités
47 F2 15UP Rev02 1-3
1.3 UTILISATION DE PCF
Comme indiqué précédemment, PCF se décompose en trois phases, l'utilisateurintervenant directement aux deux premières:
• phase 1: pour demander que le compilateur construise une table d'éléments deprogramme origine incorporée à l'unité compilée.
• phase 2: pour demander que des points d'interruption soient insérés dans le moduleexécutable pour déclencher le mécanisme PCF.
1.3.1 Phase de compilation
Sous GCOS 7, les programmes COBOL, FORTRAN, GPL et C peuvent être mis aupoint en adressage symbolique ou effectif. Dans ces quatre langages, la constitutiond'une table de références des éléments du programme origine est une option decompilation pouvant être demandée au moyen du mot-clé DEBUG dans l'ordre JCL ou lacommande GCL qui lance le compilateur.
Exemples:
FOR77 SOURCE=*MONPAQ, DEBUG; COBOL SOURCE=MONPROG, INLIB=MABIB, DEBUG; GPL SOURCE=PROG2, DEBUG;
1.3.2 Phase d'exécution
Si un programme a été compilé avec l'option DEBUG, l'utilisateur n'est cependant pasobligé d'employer PCF. Inversement, même si le programme n'a pas été compilé avecDEBUG, il est possible d'utiliser PCF. Toutefois, dans ce cas, aucune table deréférences de programme origine n'ayant été constituée, le mode d'adressage effectif estseul possible.
L'introduction par PCF de points d'interruption dans un module exécutable par PCF sedemande soit au moyen du mot-clé DEBUG dans l'ordre JCL STEP ou la commandeGCL EXEC_PG qui lance l'exécution du module, soit au moyen de l'option PCF dans lacommande TRACE au cours d'une session TDS. PCF est alors appelé et prêt à accepterdes entrées. En traitement par lots, les entrées sont lues dans un fichier séquentiel,tandis qu'en interactif, transactionnel ou télétraitement par lots, elles sont introduites auterminal utilisateur.
Aide à la mise au point (PCF)
1-4 47 F2 15UP Rev02
1.4 MISE AU POINT EN TRAITEMENT PAR LOTS
En traitement par lots, les commandes PCF se trouvent dans un fichier séquentiel. Ils'agit en général du paquet de cartes d'une rubrique de description d'entrées, commedans l'exemple suivant:
+--------------------------------------------------+| STEP nom-module-chargeable,description-bib-lm, || DEBUG=*CARTES; || ENDSTEP; || $INPUT CARTES; || - || - || - commandes PCF || - || - || $ENDINPUT; |+--------------------------------------------------+
De façon plus générale, les commandes PCF peuvent être lues dans n'importe quelautre fichier séquentiel, à condition de fournir une description appropriée du fichier à lasuite du mot-clé DEBUG dans l'ordre JCL STEP. On trouvera des exemples auchapitre 7.
1.5 MISE AU POINT EN MODE INTERACTIF
PCF est également utilisable sous IOF pour aider à vérifier les programmes interactifs.Dans ce cas, les commandes peuvent s'introduire au terminal utilisateur. Le paramètreDEBUG peut avoir deux valeurs :
1. la valeur implicite "TN" pour indiquer que les commandes PCF s'introduisentdirectement au terminal,
2. le nom d'un fichier séquentiel contenant les commandes PCF à lire, avant d'enaccepter d'autres au terminal.
EXEC_PG nom-module chargeable,description-bib-lm DEBUG=TN
Il est également possible d'appeler PCF à la suite d'une interruption de l'exécution (aprèsavoir appuyé sur la touche interruption du terminal). Pour ce faire, l'utilisateur doitrépondre par le paramètre DEBUG au message de guidage en cas d'interruption. Pourplus de détails, se reporter au chapitre 8.
Généralités
47 F2 15UP Rev02 1-5
1.6 MISE AU POINT EN TELETRAITEMENT PAR LOTS
La mise au point d'un programme traitement par lots soumis à partir d'un terminal IOF oud'une station à distance peut également s'effectuer à l'aide de PCF. Dans ce cas, lescommandes s'introduisent au terminal à partir duquel a été soumis le travail. Il est doncinutile de fournir une description de fichier à la suite du mot-clé DEBUG qui reste enrevanche nécessaire pour indiquer que l'on veut utiliser PCF. Lorsque le programme enquestion est prêt pour la mise au point, le terminal utilisateur affiche un message.L'utilisateur introduit ensuite le mot-clé DEBUG suivi du numéro de passage du travail(ron) et d'un point-virgule, comme dans l'exemple suivant:
DEBUG=Xnnn;
Le dialogue est ainsi établi entre l'utilisateur et l'activité en cours d'exécution et toutes lescommandes PCF peuvent être librement utilisées comme s'il s'agissait d'une mise aupoint en mode interactif. Pour plus de détails, se reporter au chapitre 9.
Aide à la mise au point (PCF)
1-6 47 F2 15UP Rev02
1.7 MISE AU POINT EN TRAITEMENT TRANSACTIONNEL
1.7.1 Mode traitement par lots
Il est possible de mettre au point une routine TPR de traitement de transaction enspécifiant "PCF" dans la commande TRACE au cours d'une session TDS. Lescommandes PCF sont alors introduites au terminal à partir duquel est exécutée la TPR.La fin des commandes PCF est indiquée par le mot-clé "EOD" (fin de mise au point).
Exemple:
+-----------------------------------------------------+| || || TRACE PRINT PCF; || TERMINAL IN TRACE MODE OUTPUT ON XXXXX || ENTER COMMAND || commande pcf || ENTER COMMAND || commande pcf || . || . || . || ENTER COMMAND || EOD || READY || || |+-----------------------------------------------------+
Les commandes sont lues et exécutées de la même manière que pour un programme entraitement par lots.
Généralités
47 F2 15UP Rev02 1-7
1.7.2 Mode interactif
Il est possible de mettre au point en mode interactif une routine TPR de traitement detransaction en spécifiant "XPCF" dans la commande TRACE PRINT avant d'activer unetransaction. Les commandes PCF en mode interactif peuvent alors lancées à partir d'unautre terminal d'où a été établie la connexion IOF avec le même ID utilisateur que celuiutilisé sur le terminal TDS. Se reporter à l'exemple suivant :
Sur le terminal TDS Sur le terminal IOF
READYTRACE PRINT XPCFTERMINAL IN TRACE OUTPUT ON xxxxMYTX
---> MYTX READY FOR DEBUGGINGS: DEBUG TX = MYTX;>>> 15:30 DEBUG 100.00((( PCT AT LN 1 ILN 1 IN MY_TPR1.... PCF AT BEGINNING OF MY_TPR1 INMYTX.... 100 D: pcf command;... 110 D: pcf command;... 120 D: go;)))
L'utilitaire de mise au point transactionnelle en mode interactif peut être appliquéséparément en spécifiant l'identificateur marketing (MI) correspondant.
Aide à la mise au point (PCF)
1-8 47 F2 15UP Rev02
47 F2 15UP Rev02 2-1
2. Langage PCF
2.1 SYNTAXE DES COMMANDES PCF
Le langage PCF se compose d'un certain nombre de phrases fournissant une descriptioncomplète de la session de mise au point. Une phrase PCF se présente comme suit:
[numéro-commande] verbe [clause "Quoi"][clause "Quand"][clause-IF];
Le numéro de commande est facultatif. Il peut être spécifié sous la forme d'un nombredécimal compris entre 1 et 30 000. S'il est omis, un numéro implicite est attribué. Lanumérotation automatique commence à 100 et toutes les phrases sans numéro enreçoivent un, de 10 en 10, jusqu'à 30 000 maximum.
2.1.1 Commandes et abréviations
Le verbe est obligatoire dans toute phrase PCF. C'est lui qui donne à la phrase toute sasignification. Les différents verbes possibles sont:
APPLY ou A INLIB1 ou IL1 BEGIN ou B INLIB2 ou IL2 CHANGE ou C INLIB3 ou IL3 CHECKPOINT ou CKPT KILL ou K CULIB1 LIB CULIB2 LIST CULIB3 OUTPUT ou O DISPLAY PAUSE ou P DSR RECOVER DUMP ou D RESUME ou R END SUSPEND ou S EXEC ou E TRACE ou T FSE WHERE ou W GOTO ou GO
Comme le montre cette liste, la plupart des verbes peuvent être abrégés en indiquantsimplement leur première lettre. On trouvera au tableau 2-1 une récapitulation desdifférents verbes avec leur signification.
Aide à la mise au point (PCF)
2-2 47 F2 15UP Rev02
2.1.2 Clauses "Quoi", "Quand" et IF
La clause "Quoi" définit le ou les objets auxquels s'applique le verbe, c'est-à-dire lacommande. Le tableau 2-1 indique également les clauses "Quoi" pouvant être associéesaux différents verbes.
La clause "Quand" définit les endroits où sera effectuée une intervention. Il s'agit d'uneliste de points d'intervention identifiant les points du programme où l'opération spécifiéepar le verbe doit être effectuée, quand ils sont atteints en cours de traitement.
La clause "Quand" peut être qualifiée par une autre clause, la clause IF indiquant lesconditions dans lesquelles l'opération demandée par le verbe doit être exécutée ou non.
La phrase se termine par un point-virgule.
Pour plus de détails sur les différents formats des clauses "Quoi", "Quand" et IF, sereporter au chapitre 3 sur l'adressage symbolique, au chapitre 4 sur l'adressage effectifet au chapitre 5 sur l'adressage semi-symbolique. Le chapitre 6 fournit une descriptiondétaillée des commandes ainsi que des exemples d'utilisation.
2.2 SESSION PCF
On trouvera ci-dessous un exemple type de session PCF:
APPLY IN PROCEDURE-1; DUMP PRIX, COUT, TAXE AT PARAG1, PARAG2; CHANGE PRIX=100 AT SECTION-2 IF PRIX <0; APPLY IN PROCEDURE-3; DUMP TAUX-X AT EACH-REF TAUX-X; TRACE AT ETIQ-1, ETIQ-2, ETIQ-4;
• Dans la procédure PROCEDURE-1, les variables PRIX, COUT et TAXE apparaissentsur le compte rendu d'exécution à chaque étiquette PARAG1 ou PARAG2. La variablePRIX est forcée à 100 à chaque étiquette SECTION-2 si PRIX est négatif.
• Dans la procédure PROCEDURE-3, la variable TAUX-X apparaît sur le compte rendud'exécution à chaque instruction qui la cite. Le programme est "jalonné" au niveau desétiquettes ETIQ-1, ETIQ-2 et ETIQ-4.
Langage PCF
47 F2 15UP Rev02 2-3
2.3 RECAPITULATION DES COMMANDES PCF
Tableau 2-1. Récapitulation des commandes PCF
CO M M ANDE Clause "Q uoi" FO NCT IO N
idem
idem
Aff iche le program m e orig ine.
Appelle l'Editeur ple in écran FSE.
Désigne une bibliothèque d'entrée pour FSE.
Les com m andes indiquées s'appliquentà la procédure ou au bloc m entionné .
A ffecte une nouv elle v aleur aux donnéesspécif iées, aux points indiqués.
A rrête la m ise au point du program m e etrelance la session depuis le début.
Défin it un poin t de rep rise pour la sessionen cours.
Désigne une bibliothèque d'entréecontenant des CU non allégés.
A ff iche les f ichiers affectés par les com m andes PCF CULIB1/2/3, IN LIB1/2/3 et LIB .
A ff iche les données spécif iées, aux pointsindiqués.
A rrête prém aturém ent l'exécution auxpoints indiqués.
Exécute les com m andes PCF lues dans lef ichier indiqué.
E ffectue un branchem ent au point indiqué ou relance l'exécution.
Sans objet
Sans objet
Description de f ichier
idem
idem
Inutilisé
Sans objet
Description de f ichier
Sans objet
Point d 'interv en tion
Description de f ichier
Expressions de données av ecform ats facultatifs
Num éros des lignes duprogram m e orig ine
A ffecta tion de v a leur à desréférences de données
Num éros de com m andesPCF
CULIB1
CULIB2
CULIB3
DISPLAY
DSR
END
EXEC
FSE
APPLYA
BEG INB
CHANG EC
CHECK-PO INTCKPT
DUM PD
G O TOG O
INLIB1IL1
Aide à la mise au point (PCF)
2-4 47 F2 15UP Rev02
Tableau 2-1. Récapitulation des commandes PCF (suite)
CO M M AND E Clause "Q uo i" F O N CT IO N
Désigne une b ib lio thèque d 'entré e pour FSE.
Désigne une b ib lio thèque d 'entré e pour FSE.
Désigne une b ib lio thèque de sortie pour F SE.
Suspend l'exécution aux po in ts ind iqués.
Supprim e les com m and es spéci f iées, aux points indiqués.
A f fiche les com m andes spéc ifiées, aux pointsindiqués.
D irige le com pte rendu d'ex écution de P CFv ers le fich ie r indiqué.
Spécifie une action correctrice pour certainsincidents d 'exécution.
Débloque les com m andes PCF spéc if iées, auxpoints indiqués.
Débloque les com m andes PCF spéc if iées, auxpoints indiqués.
Jalonne le program m e au n iv eau des pointsindiqués.
A f fiche le contex te des points d'in terv entionindiqués.
Description de fich ie r
Description de fich ie r
Description de fich ie r
Description de fich ie r
Sans obje t
Nom s des incidents
Sans obje t
Sans obje t
Num éro s de com m andesPCF
Num éro s de com m andesPCF
Num éro s de com m andesPCF
Num éro s de com m andesPCF
LIB
RECO VER
INLIB2IL2
INLIB3IL3
KILLK
LISTL
O UTP UTO
PAU SEP
RES UM ER
SUS PEN DS
TRA CET
W HEREW
47 F2 15UP Rev02 3-1
3. Adressage symbolique
3.1 CLAUSES "QUOI" ET "QUAND"
Ce chapitre décrit la forme des clauses "Quoi" et "Quand" dans une phrase PCF enadressage symbolique. Les différents modes d'adressage (symbolique, effectif et semi-symbolique) ne sont traités séparément que dans un souci de clarification. En effet, tousles modes d'adressage peuvent être utilisés dans une même commande PCF, bien quele cas ait peu de chances de se présenter.
En adressage symbolique, un objet de programme est désigné par le nom qu'il porte enlangage origine.
La clause "Quoi" peut comporter :
• une liste de numéros de commandes PCF,• une expression contenant des références de données,• d'autres éléments particuliers, des noms de fichiers, par exemple.
La clause "Quand" est une liste de points d'intervention éventuellement qualifiée par uneclause IF. Ce chapitre indique comment spécifier des listes de numéros de commandes,des références de données, des listes de points d'intervention et des clauses IF, enadressage symbolique. Le chapitre 5 présente les autres types de clauses "Quoi", ainsique la manière de construire des phrases réelles à partir de ces concepts de base.
Aide à la mise au point (PCF)
3-2 47 F2 15UP Rev02
3.2 LISTE DE NUMEROS DE COMMANDES
Comme indiqué au chapitre 2, les commandes PCF sont identifiées par des numérosspécifiés par l'utilisateur ou fournis par le système. Pour certaines commandes PCF(APPLY, KILL, LIST, RESUME et SUSPEND), la clause "Quoi" est obligatoirement uneliste de numéros de commandes.
Une liste de numéros de commandes est constituée d'éléments séparés par des virgules,chaque élément étant un numéro de commande sous forme décimale, ou une plage denuméros de commandes indiquée sous la forme de deux nombres décimaux séparés parle mot-clé TO. La liste suivante fournit des exemples de numéros de commandescorrects:
10 10, 20 10 TO 15 10, 12, 17, 21, 32 15 TO 20, 25, 27, 35 TO 40 1 TO 10, 100 TO 127
3.3 EXPRESSIONS DE DONNEES
Dans de nombreuses commandes PCF, la clause "Quoi" exprime des opérations àeffectuer sur des expressions de données. La forme la plus simple d'expression est uneconstante ou une référence de donnée.
3.4 CONSTANTES
Tous les types de constantes possibles COBOL, FORTRAN, GPL ou C sont autorisésdans les expressions de données PCF.
Exemples:
6 "09AB"X 10.1 "CHAINE" +223 -7E8 "001"B .T. +0.006D+17 .3Q-04
3.5 REFERENCE DE DONNEE
Une référence de donnée est un objet désigné par le nom qu'il porte dans le programmeorigine. Elle peut prendre différentes formes résumées dans le tableau 3-1 et décrites ci-dessous.
Adressage symbolique
47 F2 15UP Rev02 3-3
3.5.1 Variables simples
Une variable simple (comme une donnée élémentaire COBOL ou une variable scalaireFORTRAN) est désignée par le nom sous lequel elle est déclarée ou utilisée dans leprogramme.
Si le nom est introduit par une chaîne numérique ou contient un trait d'union, il doit êtreencadrés par des apostrophes.
Exemples:
I K MAVARIABLE '10nom' INPUT-AREA X_REF PRIX
Afin de supprimer toute ambiguïté, il est parfois nécessaire de qualifier un nom devariable simple lors de la mise au point de programmes COBOL ou GPL. Une variable Xd'un sous-groupe Y du groupe Z, par exemple, désignée en COBOL par X OF Y IN Z,sera utilisée sous cette même forme sous PCF. Les utilisateurs GPL disposent d'uneconvention particulière permettant de désigner cette même variable par Z.Y.X.
Exemple:
1 GROUP1, {X, lorsqu'il n'y a pas 2 Y ... {d'ambiguïté 3 ST ... {ou ST.X 4 X ...--->peut être désigné par {ou X IN ST 2 T ... {ou X OF ST {ou Y.ST.X {ou X IN ST IN Y {ou GROUP1.Y.ST.X {ou X OF ST IN Y OF GROUP1 {etc.
3.5.2 Eléments de tableau ou de table
Un élément de tableau ou de table est désigné par le nom du tableau ou de la table,éventuellement qualifié comme indiqué ci-dessus, et suivi d'une liste d'indices donnantles coordonnées de l'élément en question.
Le nombre d'indices est limité à 7 en COBOL et en FORTRAN et à un seul en GPL. Cesindices peuvent être des entiers ou une expression de données à valeur d'entier.Exemples de références d'éléments de table ou de tableau correctes:
A(1) XA OF B IN Z (3,2)B(2,7,3) A OF B(X OF C,2)A.B.C(3) A(A(2))
La référence à des indices désignant des éléments en dehors des limites des tables oudes tableaux donne lieu à un message de diagnostic PCF.
Aide à la mise au point (PCF)
3-4 47 F2 15UP Rev02
3.5.3 Agrégats
PCF autorise les références à des agrégats. Ils sont de deux types : groupes et tableauxou tables.
• les groupes sont désignés par un nom de sous-groupe ou de groupe COBOL ou GPL,éventuellement qualifié afin d'éviter toute ambiguïté.
Exemples:
GROUP1 ST OF Y GROUP1.Y Y IN GROUP1
• les tableaux ou tables sont désignés par leur nom qui peut être qualifié afin d'évitertoute ambiguïté.
Exemples:
A A.T.X B X OF T IN A
3.5.4 Sous-ensemble de tableau ou de table
Un sous-ensemble de tableau ou de table est désigné de la même manière qu'unélément de tableau ou de table en remplaçant un ou plusieurs indices de la liste par uneplage d'indices. Cette plage est spécifiée sous la forme de deux indices séparés par lemot-clé TO ou par deux points (:).
Exemples:
A(3 TO 7) A(3:7)B(2,1 TO 6, 2) B(2, 1:6, 2)T.X(1:5, 2 TO 7, 3:4)X OF T(1 TO 5, 2 TO 7, 3 TO 4)X OF T(1, I:J, 7)A(I:J)
3.5.5 Variables basées
PCF autorise les références à des variables basées GPL. Lorsque ces variables sontassociées à une base implicite par la déclaration suivante:
DCL X BASED (P)...
Une simple référence au nom déclaré donne accès aux données, comme c'estnormalement le cas en GPL. Lorsqu'aucune base implicite n'est déclarée ou lorsqu'ils'agit d'une expression, il faut spécifier une base explicite sous la forme:
expression de données -> nom
Le premier terme peut être n'importe quelle expression de données fournissant unevaleur de pointeur et le second, une référence à une variable basée. Il peut y avoirplusieurs niveaux d'adressage indirect.
Adressage symbolique
47 F2 15UP Rev02 3-5
Exemples:
P->XP.Q(2)->X.YP->Q->S(2)
Avec PCF, il est également possible de lire une variable non basée à une adressespécifiée par l'utilisateur, au moyen d'une expression pointant sur cette variable, sous laforme:
expression de données -> nom
"expression de données" est un pointeur et "nom", une variable non basée.
Tableau 3-1. Références de données symboliques
REFERENCEDE DO NN EE
FO RM E EXEM PLES
Variable sim ple
Agrégat
Variables basées
E lém ent de tab leou de tableau
Sous-ensem b le detableau ou de table
Nom d'une v ariable scalaire ou du de rnierélém ent d 'un groupe, év entuellem en t quali f ié af in d 'év iter toute am biguïté.
Nom de la table ou du tableau, év entuellem ent qualif ié,et suiv i d 'une liste d 'indices entre parenthèses.
Nom d'un groupe ou d 'un sous-groupe , ou bien d 'untableau ou d 'une table, év entuellem ent qualif ié et sansindices
Com m e pour la référence à un élém ent de tableau oude table, en rem plaçant un ou plusieurs indices par uneplage d'indices séparés par deux po ints ( :) ou TO .
Toute form e ci-dessus, précédée d'une référence dedonnée fournissant un pointeur et du sym bole -> .
AX.Y .Z .Z IN Y O F X
B (3,2)C O F X(3,7)A .B.C (I,J)
C O F XG RO UP1TABLE IN G RO UP
B(1 TO 8)B O F C(1 TO 8)C .D(1:8,2,I:J)H IN TB(1:2, I)
PT ->APT->Q T->A .BQ ->B(1)
Aide à la mise au point (PCF)
3-6 47 F2 15UP Rev02
3.5.6 Affichage de variables locales
L'argument "LOCAL_VARIABLES" (ou L_V) de la commande DUMP permet d'affichertoutes les variables locales de la procédure courante, la syntaxe utilisée étant :
DUMP {LOCAL_VARIABLES } {L_V }
Si une procédure contient une variable dont le nom est LOCAL_VARIABLES ou L_V,toute référence à ce nom doit être protégée par des guillemets.
Exemples :
DUMP L_V; Affiche toutes les variables locales de la procédure courante.
DUMP "L_V"; Affiche la variable locale appelée L_V.
3.6 OPERATEURS
3.6.1 Parenthèses
Toutes les expressions de données peuvent être mises entre parenthèses.
Exemples:
(A)(P->Q)(B(2,3)) (GROUP1.X.Y)
3.6.2 Formats
Un format peut être spécifié à la suite d'une expression de données pour indiquer qu'elledoit être interprétée comme étant d'un type et, éventuellement, d'une longueur différentsde ceux déclarés dans le programme origine. Un format consiste en une chaîne decaractères précédée du symbole numéro (#). Cette chaîne commence par un codealphabétique éventuellement suivi de qualificateurs (nombres décimaux et points). Parexemple, X est le code correspondant à une chaîne hexadécimale; si #X4 suit uneréférence de donnée dans une commande DUMP, la variable indiquée doit être affichéesous la forme d'une chaîne hexadécimale de quatre octets. Les codes applicables et lasignification des qualificateurs associés sont répertoriés à l'annexe B.
Adressage symbolique
47 F2 15UP Rev02 3-7
3.6.3 Opérateurs arithmétiques
Les opérateurs "+" et "-" peuvent apparaître dans une expression de données de formemonadique ou dyadique.
Exemples:
X+1 A(I+J,7) ((P#LB)+("AAAA"#LB))#P->Q Y-5 B(2:5)+C(3:6)
Remarque : Afin d'éviter tout risque de confusion entre signe moins et traitd'union, la variable peut être mise entre guillemets et/ou le signemoins entre espaces.
Exemple:
A - B ( pour A moins B) et "A-B" (pour la variable "A-B")
3.6.4 Opérateurs logiques
Une expression de données peut contenir les opérateurs logiques suivants:
NOT, ^, =, >< ,<=, >=, EQ, NE, GT, LT, GE, LE, AND, OR, &, !
Exemples:
A&B NOT(X_COND!Y_COND) X>4 Y^=(A+10)
3.6.5 Opérateur adresse
L'opérateur adresse & permet d'obtenir l'adresse réelle d'une référence de donnéesymbolique, la syntaxe étant :
& référence-symbolique
Cette référence ne prend pas en compte l'anneau ou l'étiquette qui dépendent ducontexte de la référence de donnée et non pas de la donnée proprement dite.
Cette méthode ne permet pas d'obtenir l'adresse réelle de variables basées, de littérauxou d'expressions de données qui ont été calculées au moyen d'opérateurs arithmétiquesou logiques.
Aide à la mise au point (PCF)
3-8 47 F2 15UP Rev02
Exemple :
DUMP &NOM_LOCAL;
3.7 LISTE DE POINTS D'INTERVENTION
Une liste de points d'intervention sert à spécifier la clause "Quand" d'une commandePCF. Cette clause est introduite par le mot-clé AT et peut être qualifiée par une clauseIF (voir ci-dessous). Une liste de points d'intervention se compose de plusieurs pointsséparés par des virgules. Ils peuvent prendre l'une des quatre formes suivantes:
• étiquettes,• numéros de ligne,• plage d'instructions,• noms symboliques.
Ces formes sont résumées par le tableau 3-2.
3.7.1 Etiquettes
Une étiquette sert à identifier une partie de code exécutable. Cette notion correspondaux concepts de section et de paragraphe en COBOL et aux étiquettes en FORTRAN,GPL et en C. Les étiquettes sont désignées par le nom qu'elles portent dans leprogramme origine. Il s'agit donc d'une combinaison de lettres, chiffres, traits d'union,soulignés et, éventuellement, d'autres caractères spéciaux tels qu'ils sont définis dansles langages origine correspondants.
Exemples:
ETIQ-1 ETIQ99 12-OUVERTURE 100 9999
Adressage symbolique
47 F2 15UP Rev02 3-9
3.7.2 Numéros de lignes
Il y a deux manières de spécifier une ligne par son numéro : en utilisant soit le numérode ligne externe, soit le numéro de ligne interne généré par le compilateur. Le numérode ligne interne a la forme suivante :
ILN numéro
Le format général d'un numéro de ligne externe est:
| LINE || | numéro-ligne [* rang]| LN |
Le numéro de ligne est précédé du mot-clé LINE ou de sa forme abrégée LN.
• numéro-ligne identifie une ligne du programme origine. Il s'agit généralement d'unnombre décimal, mais il existe également des représentations plus complexes avecpoints et nombres décimaux. Celles-ci sont décrites aux chapitres 11 pour le COBOL,12 pour le FORTRAN, 13 pour le GPL et 20 pour le langage C.
• le rang peut être utilisé avec des langages autorisant plusieurs instructions par ligne. Ils'agit d'un nombre décimal indiquant le rang de l'instruction désirée sur la lignedésignée.
Exemples :
LINE 10 LN 1000*2 LN 100.2 LINE 1000..2*2
3.7.3 Plage d'instructions
Une plage d'instructions est spécifiée au moyen de deux étiquettes ou de deux numérosde lignes séparés par le mot-clé TO.
Exemples :
100 TO 200 PARAG-1 TO PARAG-3 LINE 1110 TO 1200 LN 1000*1 TO 1100*5 LN 11200..10 TO LN 11200..20*6 ILN 100 TO ILN 110 LINE 10.1 TO ILN 210
Aide à la mise au point (PCF)
3-10 47 F2 15UP Rev02
3.7.4 Noms de points d'intervention symboliques
Il est possible d'utiliser des noms symboliques pour spécifier des clauses "Quand"spéciales :
• ALL-LABELS (synonymes : A-L, ALL_LABELS et A_L) pour désigner toutes lesinstructions portant une étiquette.
• POST-MORTEM (synonymes : P-M, POST_MORTEM et P_M) pour désigner la finnormale ou anormale de l'exécution.
• EACH-REF (synonymes : E-R, EACH_REF et E_R) pour désigner toutes lesinstructions citant une variable donnée ou une étiquette. Par exemple, la commandeDUMP A AT E-R X; affiche la variable A à toutes les instructions citant la variable X.
Tableau 3-2. Forme des points d'intervention symboliques
FO RME EXEMPLESPOINTD 'INT ERVENT IO N
Etiquette
Ligne interne
Num éro de ligne
Plage d'instructions
ALL-LABELS
PO ST-M ORTEM
EACH-REF
Instruction sur uneligne
Synonym es : A -L, ALL_LABELS et A_L.
Synonym es : P -M , POST_MOR TEM et P_M.
Synonym es : E -R , EACH_REF et E_R. Le m ot-cléest suiv i d'un nom de donnée ou d 'étiquette.
Deux étiquettes ou num éros de lignes (avec rangév entuel d'instruction) , séparés par le m ot-clé TO.
Num éro de ligne , com m e ci-dessus, suiv i d'unastérisque et du rang de l'instruction sur la ligne.
Mot-clé LINE ou LN suiv i d'un num éro de lignereprésenté par des nom bres décim aux et des points.
Mot-clé ILN su iv i d'un num éro de ligne interne généré par le com pilateur, sous form e de nom bre décim al.
Nom d'étiquette en langage origine, de paragrapheou de section.
_
_
SECTIO N-1999988-PARAG
ILN 200ILN 121
LINE 1000LN110..20LN10.10.20
LINE 1000*2LN110..20*2LN100.10.20*3
120 TO 125LAB-1 TO LAB-3LN 100 TO LN 110
E_RXE-R A O F BE-R ETIQ-FIN
Adressage symbolique
47 F2 15UP Rev02 3-11
3.7.5 Mise au point pas à pas
Une syntaxe particulière de la liste des points d'intervention permet d'effectuer une miseau point pas à pas en adressage symbolique :
AT {EACH_LINE } {E_L }
L'action spécifiée s'effectue pour chaque ligne du programme origine.
3.8 CLAUSE IF
La clause IF sert à qualifier une liste de points d'intervention. Lorsque le traitementatteint un de ces points, la condition spécifiée est examinée. Si elle est satisfaite,l'opération indiquée est exécutée. Sinon, il ne se passe rien.
L'exemple suivant illustre le format de la clause IF en adressage symbolique.
Exemple :
IF expression_logique
"expression_logique" est une expression de données de type logique.
L'expression /SEV indique le code système de gravité d'erreur. Elle s'utilise en particulierpour les vidages post mortem, où des variables ne seront affichées qu'en cas d'arrêtanormal pour raison grave.
Exemple :
DUMP X, Y, Z AT P-M IF /SEV > 2;
L'expression /COUNT indique qu'un compteur est associé au point d'intervention. Il estinitialement positionné à zéro, puis progresse de 1 chaque fois que le traitement atteintce point d'intervention. Il peut, par exemple, servir à n'exécuter une commande qu'àpartir de la énième exécution d'une instruction:
DUMP X AT ETIQ-1 IF /COUNT > 15;
Aide à la mise au point (PCF)
3-12 47 F2 15UP Rev02
47 F2 15UP Rev02 4-1
4. Adressage effectif
Ce chapitre décrit la forme des clauses "Quoi" et "Quand" d'une commande PCF enadressage effectif.
4.1 ADRESSES MEMOIRE
En adressage effectif, un objet de programme origine est désigné par une adresseindiquant sa position en mémoire virtuelle. Cette adresse se présente sous la formesuivante :
?stn.ste.sra
où
• stn représente le numéro de la table de segments, sous forme de nombrehexadécimal d'un caractère,
• ste représente la rubrique de la table de segments, sous forme de nombrehexadécimal d'un ou deux caractères,
• sra représente l'adresse relative par rapport au début du segment, sous forme denombre hexadécimal d'un à six caractères.
Pour indiquer une adresse mémoire, stn peut être omis, seul ou en même temps que ste.Dans ce cas, c'est la dernière valeur utilisée dans ce contexte qui s'applique.
Exemples :
?8.18.374 ?19.274 équivaut à ?8.19.274 ?43E équivaut à ?8.19.43E
Avec PCF, la clause "Quoi" peut comporter:
• une liste de numéros de commandes PCF,• une expression contenant des références de données,• d'autres éléments particuliers comme des noms de fichiers, de commandes, etc.
La clause "Quand" est une liste de points d'intervention éventuellement qualifiée par uneclause IF.
Aide à la mise au point (PCF)
4-2 47 F2 15UP Rev02
Ce chapitre indique les formes utilisées pour spécifier une liste de numéros decommandes, des références de données, une liste de points d'intervention et une clauseIF, en adressage effectif.
Le chapitre 5 présente les autres types de clauses "Quoi" et la manière de construire desphrases réelles à partir de ces concepts de base.
4.2 LISTE DE NUMEROS DE COMMANDES
Comme on l'a vu au chapitre 2, les commandes PCF sont identifiées par un numérospécifié par l'utilisateur ou fourni par le système. Pour certaines commandes PCF(APPLY, KILL, LIST, RESUME et SUSPEND), la clause "Quoi" est obligatoirement uneliste de numéros de commandes.
Une liste de numéros de commandes est constituée d'éléments séparés par des virgules,chaque élément étant un numéro de commande sous forme de nombre décimal ou uneplage de numéros de commandes sous la forme de deux nombres décimaux séparés parle mot-clé TO. La liste suivante fournit des exemples de numéros de commandescorrects:
10 10, 20 10 TO 15 10, 12, 17, 21, 32 15 TO 20, 25, 27, 35 TO 40 1 TO 10, 100 TO 127
4.3 EXPRESSIONS DE DONNEES
Dans de nombreuses commandes PCF, la clause "Quoi" exprime des opérations àeffectuer sur des expressions de données. La forme la plus simple d'expression est uneconstante ou une référence de donnée.
4.4 CONSTANTES
Tous les types de constantes possibles en COBOL, FORTRAN, GPL ou C sont autorisésdans les expressions de données PCF.
Exemples :
6 "09AB"X 10.1 "CHAINE" +223 -7E8 "001"B .T. +0.006D+17 .3Q-04
Adressage effectif
47 F2 15UP Rev02 4-3
4.5 REFERENCE DE DONNEE
En adressage effectif, une référence de donnée est l'adresse de la première position dela donnée. Le type et la longueur de la donnée sont déduits du format spécifié aprèsl'adresse. Ce format consiste en une chaîne de caractères précédée du symbole numéro(#). Cette chaîne commence par un code éventuellement suivi de qualificateurs(nombres décimaux). Par exemple, le code C indique une chaîne de caractères, C123une chaîne de 123 caractères, #C123 le format d'édition d'une zone mémoire àconsidérer comme une chaîne de 123 caractères. Les codes applicables et lasignification des qualificateurs sont répertoriés à l'annexe A.
En adressage effectif, une référence de donnée peut avoir l'une des formes suivantes:
• une adresse mémoire, par exemple : ?8.13.47F• une adresse indirecte, par exemple : ?8.21.2F->7->3F• un registre, par exemple : ?GR5• un élément de pile, par exemple : ?STK0• une adresse indirecte par l'intermédiaire d'un registre, par exemple : ?BR5.0->F
Chacune de ces formes est expliquée plus en détail au chapitre 14. Il est très facile detrouver une adresse mémoire à partir des listes de compilation et d'édition de liensappropriées. L'adresse est indiquée de différentes manières, selon le langage deprogrammation utilisé (pour plus de détails, se reporter aux exemples du chapitre 14).
4.6 OPERATEURS
4.6.1 Parenthèses
Toutes les expressions de données peuvent être mises entre parenthèses.
Exemples :
(?8.10.4E) (?BR1.0->10) (?9.17.AA)#C12 (?1C#X4)
4.6.2 Opérateurs arithmétiques
Les opérateurs "+" et "-" peuvent apparaître dans une expression de données de formemonadique ou dyadique.
Exemples :
(?8.12.CE3#FB15)+17 (?8.17.A8#FB31)-(?BR7.9->0#FB31) -(?8.10.9A#DPS8)
Aide à la mise au point (PCF)
4-4 47 F2 15UP Rev02
4.6.3 Opérateurs logiques
Une expression de données peut contenir les opérateurs logiques suivants:
NOT, ^, =, ><, <=, >=, EQ, NE, GT, LT, GE, LE, AND, OR, &, !
Exemples :
?8.12.56#X2 = "4040"X (8.17.10#B1)AND(?BR1.17->5#B1)
4.7 LISTE DE POINTS D'INTERVENTION
Une liste de points d'intervention sert à spécifier la clause "Quand" d'une commandePCF. Cette clause est introduite par le mot-clé AT et peut être qualifiée par une clauseIF (voir ci-dessous). Une liste de points d'intervention se compose de plusieurs pointsd'intervention séparés par des virgules. Ils peuvent prendre l'une des deux formessuivantes :
• une adresse mémoire• le nom symbolique POST-MORTEM (synonymes : POST_MORTEM, P-M et P_M)
pour désigner la fin normale ou anormale de l'exécution.
4.7.1 Mise au point pas à pas
Une syntaxe particulière de la liste des points d'intervention permet d'effectuer une miseau point pas à pas en adressage symbolique :
AT {EACH_INSTR } {E_I }
L'action spécifiée s'effectue pour chaque instruction machine détectée.
Adressage effectif
47 F2 15UP Rev02 4-5
4.8 CLAUSE IF
La clause IF sert à qualifier une liste de points d'intervention. Lorsque le traitementatteint un de ces points, la condition spécifiée est examinée. Si elle est satisfaite,l'opération indiquée est exécutée; sinon il ne se passe rien.
L'exemple suivant illustre la forme d'une clause IF en adressage effectif :
Exemple :
IF expression_logique
"expression_logique" étant une expression de données de type logique.
L'expression /SEV indique le code système de gravité d'erreur. Elle s'utilise en particulierpour les vidages post mortem où des variables ne seront affichées qu'en cas d'arrêtanormal pour raison grave.
Exemple :
DUMP ?8.18.362#X4 AT P-M IF /SEV > 2;
L'expression /COUNT indique qu'un compteur est associé au point d'intervention. Il estinitialement positionné à zéro et progresse de 1 chaque fois que le traitement atteint cepoint d'intervention. Il peut servir par exemple à n'exécuter une commande qu'à partir dela énième exécution d'une instruction.
Exemple :
DUMP ?8.18.32#F2,?36#F2,?C1#C1 AT ?8.12.4E5 IF /COUNT=12;
4.9 DESASSEMBLAGE
PCF comporte un "désassembleur" qui transforme dynamiquement une instructionmachine en son équivalent en langage non assembleur (NAL). La commande DUMPavec l'argument #NAL permet d'obtenir l'impression de l'équivalent NAL d'une ouplusieurs instructions machine, la syntaxe étant :
DUMP adresse-effective #NAL(nombre);
où
adresse-effective adresse de la première instruction à imprimernombre nombre d'instructions à imprimer, la valeur implicite étant
l'instruction courante.
Aide à la mise au point (PCF)
4-6 47 F2 15UP Rev02
Exemples :
DUMP ?IC ->0 #NAL; impression de l'équivalent NAL del'instruction machine courante
DUMP ?8.15.4F2 #NAL(45); impression de l'équivalent NAL des 45instructions machine suivant l'adressespécifiée
DUMP ?8.14.4A #NAL32; impression de l'équivalent NAL des 32instructions machine suivant l'adressespécifiée
DUMP Ptr1 #NAL; impression de l'équivalent NAL del'instruction désignée par le pointeur Ptr1.
Voici un exemple de l'état PCF :
(((PCF AT * LINE 10 ILN 1 IN FEF001...PCF AT BEGINNING OF MAIN PROCEDURE....100 D: DUMP ?IC->0#NAL;... ?8.20.CC 0000CC 82000130 LGI2 G0,304...100 D: DUMP ?8.20.CC#NAL9;... ?8.20.CC 0000CC 82000130 LGI2 G0,304... 0000D0 1801 AGT G0... 0000D2 0510 LBG B1,G0... 0000D4 C201012E0000 MVI 302(B1),"00000000"B... 0000DA C201012D0000 MVI 301(B1),"00000000"B... 0000E0 C201012C0000 MVI 300(B1),"00000000"B... 0000E6 C201012B0000 MVI 299(B1),"00000000"B... 0000EC C201012A0000 MVI 298(B1),"00000000"B... 0000F2 82100017 LGI2 G1,23...100 D:DUMP ?8.20.1C0#NAL(3);... ?8.20.1C0 0001C0 C201012A0080 MVI 298(B1), "10000000"B... 0001C6 1800 EXIT... 0001C8 0000 ?????? ILLEGAL OPCODE...100 D:
47 F2 15UP Rev02 5-1
5. Adressage semi-symbolique
Ce chapitre décrit la forme des clauses "Quoi" et "Quand" en adressage semi-symbolique.
Conditions d'utilisation
Lorsqu'un programme fait l'objet d'une édition de liens avec l'option SYMBMAP=YES, ilest possible d'utiliser le mode d'adressage semi-symbolique. Celui-ci permet égalementde désigner des "données externes".
5.1 ADRESSES MEMOIRE
En adressage semi-symbolique, un objet de programme origine peut être désigné parson adresse mémoire. Celle-ci se présente sous la forme isn suivi de offset :
• isn représente le numéro de segment interne, en décimal,
• offset représente l'adresse relative de l'objet dans le segment désigné par isn enhexadécimal.
Le numéro isn est une valeur fixée par le compilateur et spécifié dans une liste denuméros de segments qu'il génère. En adressage semi-symbolique, isn et/ou offsetpeuvent être omis. Dans ce cas, ce sont les dernières valeurs utilisées qui s'appliquent.Lorsque le numéro isn est spécifié seul (sans offset), le segment est concerné en totalité.
Aide à la mise au point (PCF)
5-2 47 F2 15UP Rev02
Exemples :
:1.E4 équivaut à isn = 1, offset = E4
:.B7 équivaut à 1.B7, la dernière valeur spécifiée pour isn étant 1.
: équivaut à 1.B7, dernières valeurs spécifiées pour isn etoffset.
:2 signifie la totalité du segment numéro 2
La clause "Quoi" peut comporter:
• une liste de numéros de commandes PCF,• une expression contenant des références de données,• d'autres éléments particuliers comme des noms de fichiers, de commandes etc.
La clause "Quand" est une liste de points d'intervention éventuellement qualifiée par uneclause IF.
Ce chapitre indique les formes utilisées pour spécifier une liste de numéros decommandes, des références de données, une liste de points d'intervention et une clauseIF, en adressage semi-symbolique.
5.2 LISTE DE NUMEROS DE COMMANDE
Comme on l'a vu au chapitre 2, les commandes PCF sont identifiées par un numérospécifié par l'utilisateur ou fourni par le système. Pour certaines commandes PCF(APPLY, KILL, LIST, RESUME et SUSPEND), la clause "Quoi" est obligatoirement uneliste de numéros de commandes.
Une liste de numéros de commandes est constituée d'éléments séparés par des virgules,chaque élément étant un numéro de commande sous forme décimale, ou une plage denuméros de commandes sous la forme de deux nombres décimaux séparés par le mot-clé TO. La liste suivante fournit des numéros de commandes corrects:
10 10, 20 10 TO 15 10, 12, 17, 21, 32 15 TO 20, 25, 27, 35 TO 40 1 TO 10, 100 TO 127
5.3 EXPRESSIONS DE DONNEES
Dans de nombreuses commandes PCF, la clause "Quoi" exprime des opérations àeffectuer sur des expressions de données. La forme la plus simple d'expression est uneconstante ou une référence de donnée.
Adressage semi-symbolique
47 F2 15UP Rev02 5-3
5.4 CONSTANTES
Tous les types de constantes possibles en COBOL, FORTRAN, GPL ou C sont autorisésdans les expressions de données PCF.
Exemples :
6 "09AB"X 10.1 "CHAINE" +223 -7E8 "001"B .T. +0,006D+17 .3Q-04
5.5 REFERENCE DE DONNEE
En adressage semi-symbolique, il existe deux méthodes pour désigner les données:adressage semi-symbolique direct (avec isn et offset), ou (dans le cas de donnéesexternes) désignation par un nom symbolique.
5.5.1 Adressage semi-symbolique direct
Les données peuvent être désignées par leur adresse dans le programme, au moyen desvaleurs isn et offset fournies par la table de correspondances (références croisées) duprogramme compilé. Le type et la longueur de la référence sont indiqués par un formatspécifié après l'adresse. Il consiste en une chaîne de caractères précédée du symbolenuméro (#). Cette chaîne commence par un code (B, C ou P, par exemple) suivi dequalificateurs (nombres décimaux séparés par des points). Les codes applicables et lasignification des qualificateurs associés sont répertoriés à l'annexe B.
Exemples :
:1.10#B8 Chaîne de 8 bits à l'adresse isn 1, offset 10.
:1.10#C12 Chaîne de 12 caractères à l'adresse 1.10.
:1.10#DPS3.2 Nombre décimal condensé signé à trois positions pour lapartie entière et 2 décimales.
Pour plus de détails sur l'adressage semi-symbolique direct, se reporter au chapitre 15.
Aide à la mise au point (PCF)
5-4 47 F2 15UP Rev02
5.5.2 Nom symbolique
Certaines données de programme sont déclarées comme externes. L'adresse de ce typede données peut être indiquée par le nom symbolique qu'elles portent dans leprogramme origine, précédé du caractère @. Ce nom peut être éventuellement suivid'un point (.) et d'une valeur hexadécimale indiquant une adresse relative par rapport audébut de la donnée externe. La syntaxe est la suivante:
@ [nom-donnée-externe][.offset]
Si le nom de donnée externe est omis, c'est le dernier nom utilisé dans ce contexte quis'applique. Le type et la longueur de la donnée sont déduits du format indiqué aprèsl'adresse. Ce format consiste en une chaîne de caractères précédée du symbole numéro(#). Cette chaîne commence par un code éventuellement suivi de qualificateurs(nombres décimaux et points). Le code C, par exemple indique une chaîne decaractères, C123 une chaîne de 123 caractères, et #C123 le format d'édition d'une zonemémoire à considérer comme une chaîne de 123 caractères. Les codes applicables et lasignification des qualificateurs sont répertoriés à l'annexe B.
Exemples :
@A Adresse de la donnée externe dont l'adresse externe est A
@B.10 Adresse de B plus 10
@C.10#P Adresse de C plus 10 où se situe un pointeur.
Pour plus de détails sur les références de données externes en adressage semi-symbolique, se reporter au chapitre 15.
5.6 OPERATEURS
5.6.1 Parenthèses
Toutes les expressions de données peuvent être mises entre parenthèses.
Exemples:
(:0.E4) (:1.08#C3) (@X_VAR) (@B.12#X8)
Adressage semi-symbolique
47 F2 15UP Rev02 5-5
5.6.2 Opérateurs arithmétiques
Les opérateurs "+" et "-" peuvent apparaître dans une expression de données sous formemonadique ou dyadique.
Exemples :
:2.3A#FB15+12 (@NUM#FB31)-(:0.AA#FB31) -(@ZONE.10#DPS8)
5.6.3 Opérateurs logiques
Une expression de données peut comporter les opérateurs logiques suivants:
NOT, ^, =, ><, <=, >=, EQ, NE, GT, LT, GE, LE, AND, OR, &, !
Exemples :
:0.24#FB15=-3(@TEST#B1) ou (@SONDE.8#B1)
5.7 LISTE DE POINTS D'INTERVENTION
Une liste de points d'intervention sert à spécifier la clause "Quand" d'une commandePCF. Cette clause est introduite par le mot-clé AT et peut être qualifiée par une clauseIF (voir ci-dessous). Une liste de points d'intervention se compose de plusieurs pointsd'intervention séparés par des virgules. Ils peuvent prendre l'une des deux formessuivantes:
• une adresse mémoire• le nom symbolique POST-MORTEM (synonymes: POST_MORTEM, P-M ou P_M)
pour désigner la fin normale ou anormale de l'exécution.
5.7.1 Mise au point pas à pas
Une syntaxe particulière de la liste des points d'intervention permet d'effectuer une miseau point pas à pas en adressage symbolique :
AT {EACH_LINE} {E_L }
L'action spécifiée s'effectue pour chaque ligne du programme origine.
Aide à la mise au point (PCF)
5-6 47 F2 15UP Rev02
5.8 CLAUSE IF
La clause IF sert à qualifier une liste de points d'intervention. Lorsque le traitementatteint un de ces points, la condition est examinée. Si elle est satisfaite, l'opérationindiquée est exécutée; sinon il ne se passe rien.
L'exemple suivant illustre la forme d'une clause IF en adressage semi-symbolique :
IF expression_logique
"expression_logique" étant une expression de données de type logique.
L'expression /SEV indique le code système de gravité d'erreur. Elle s'utilise en particulierpour les vidages post-mortem où des variables ne seront affichées qu'en cas d'arrêtanormal pour raison grave.
Exemple :
DUMP :1.12#C20 AT P_M IF /SEV > 2;
L'expression /COUNT indique qu'un compteur est associé au point d'intervention. Il estinitialement positionné à zéro et progresse de 1 chaque fois que le traitement atteint cepoint d'intervention. Il peut servir par exemple à n'exécuter une commande qu'à partir dela énième exécution d'une instruction:
Exemple :
DUMP :2.C0A#FB15,@INDEX#FB31 AT :0.CDE IF/COUNT=10;
47 F2 15UP Rev02 6-1
6. Les commandes PCF
Le présent chapitre décrit les commandes PCF en détail. Elles se présentent par ordrealphabétique, en format standard. Aucune distinction n'est faite entre adressagesymbolique, effectif et semi-symbolique, la différence ayant été clairement exposée auxchapitres précédents.
Se reporter au chapitre 3 (adressage symbolique), au chapitre 4 (adressage effectif) ouau chapitre 5 (adressage semi-symbolique), pour obtenir la définition des conceptssuivants:
• référence de donnée,• liste de numéros de commandes,• liste de points d'intervention,• clause IF.
Remarque : Une forme particulière de la liste des points d'intervention (ATEACH_INSTR ou AT EACH_LINE) permet la mise au point pas àpas. Bien que cette syntaxe ne soit expliquée que dans lacommande PAUSE, elle est utilisable avec d'autres commandesPCF.
Aide à la mise au point (PCF)
6-2 47 F2 15UP Rev02
6.1 APPLY
Fonction
Indique à quelle procédure ou à quel bloc s'appliquent des commandes PCF.
Format
A[.bloc];
APPLY [liste-numéros-commandes] IN nom-procédure
Figure 6-1. Commande APPLY
Remarque : La commande APPLY ne doit pas être numérotée.
Description
Un élément donné de programme origine, par exemple une étiquette, un numéro deligne ou une variable, peut figurer sous le même nom dans plusieurs procédures. Demême, en adressage semi-symbolique, le même numéro isn peut apparaître dansplusieurs procédures. Il est donc nécessaire de préciser à quelle procédure s'applique unjeu donné de commandes PCF, ce que fait la commande APPLY en adressagesymbolique ou semi-symbolique. Cette commande peut être omise lorsque leprogramme résultant ne contient qu'une seule procédure compilée avec l'option DEBUG.
En adressage effectif, le problème ne se pose pas, puisque les éléments de programmesont désignés par leur adresse et qu'à une adresse donnée correspond un seul élément.
La liste de numéros de commandes identifie l'objet de la commande APPLY.Lorsqu'aucune liste n'est spécifiée, toutes les commandes sont applicables jusqu'à laprochaine commande APPLY accompagnée d'une liste de numéros de commandes.
En GPL, où un même nom peut figurer plusieurs fois dans une procédure externe, lenom de procédure peut avoir besoin d'être qualifié par un nom de bloc ou de procédureinterne afin d'éviter toute ambiguïté au niveau des références de données. (Voirchapitre 13.)
Les commandes PCF
47 F2 15UP Rev02 6-3
Exemples :
* APPLY IN PROG.P1.P2; DUMP X AT L1;
Implique que X et L1 spécifiées dans la commande DUMP soient celles du bloc P2dans le bloc P1 de la procédure GPL PROG.
* APPLY IN PROGA; 10... 20... 30... APPLY 60 TO 70 IN PROGB; 40... 50... 60... 70... 80... 90... 100... APPLY IN PROGC; 61... 62... 130... 54...
Les commandes 10, 20, 30, 40, 50, 80, 90 et 100 s'appliquent à PROGA, tandis queles commandes 60 et 70 s'appliquent à PROGB et 61, 62, 130 et 54 à PROGC.
Aide à la mise au point (PCF)
6-4 47 F2 15UP Rev02
6.2 BEGIN
Fonction
Annule la session de mise au point en cours et la relance depuis le début.
Format
BEGIN
B [clause-IF];
[AT liste-points-intervention][n° -commande]
Figure 6-2. Commande BEGIN
Description
La commande BEGIN annule la session de mise au point en cours lorsque le traitementatteint l'un des points d'intervention spécifiés dans la liste. En d'autres termes,l'exécution du programme s'arrête prématurément et reprend soit au début duprogramme, soit au dernier point de reprise. Tous les points d'interruption spécifiés sontirrémédiablement perdus, sauf si un point de reprise a été défini. Dans ce cas, seuls lespoints d'interruption situés après le point de reprise sont perdus.
Si la clause AT est omise, l'opération est exécutée au moment suivant :
• en traitement par lots, lors du lancement du programme; mais cela ne présente aucunintérêt et provoquerait une itération sans fin sur une boucle,
• en interactif et en télétraitement par lots, immédiatement,
• en traitement transactionnel, la commande BEGIN n'est pas autorisée.
Si la clause IF est mentionnée, la commande n'est exécutée que si la condition estremplie.
Les commandes PCF
47 F2 15UP Rev02 6-5
Exemple :
* BEGIN;
La commande BEGIN s'utilise essentiellement en interactif et en télétraitement parlots. Elle permet la relance d'un programme depuis le début quand, par exemple, unpoint d'interruption a été mal défini ou que le programme est parvenu à un stade tropavancé de son exécution.Cette commande est plus facile à utiliser que son équivalent, la commande END, quioblige à réintroduire ou resoumettre ensuite l'activité.
Aide à la mise au point (PCF)
6-6 47 F2 15UP Rev02
6.3 CHANGE
Fonction
Modifie une ou plusieurs données.
Format
CHANGE
C
[ AT liste-points-intervention] [clause-IF]
[n° -commande] affectation [ ,affectation]...
;
Figure 6-3. Commande CHANGE
Description
La commande CHANGE sert à affecter une nouvelle valeur à une ou plusieursréférences de donnée au cours de l'exécution du programme. Elle se présente sous laforme d'une série d'affectations séparées par des virgules. Dans une affectation, ladonnée à modifier se situe à gauche du signe égal (=) et la valeur affectée à sa droite.Cette valeur peut être une constante ou une autre expression de données. Il faut que lavaleur affectée et la donnée réceptrice soient de types compatibles. Les combinaisonsde types de données et de constantes, ainsi que la syntaxe des constantes, sontindiquées à l'annexe B. Il est possible d'imposer un type aux deux termes de l'affectationau moyen d'opérateurs de format.
Si la clause AT est omise, l'opération est exécutée au moment suivant :
• en traitement par lots, lors du lancement du programme,
• en interactif et en télétraitement par lots, immédiatement,
• en traitement transactionnel, au début de la routine TPR.
Quand la clause IF est mentionnée, la commande n'est exécutée que si la condition estremplie.
Les commandes PCF
47 F2 15UP Rev02 6-7
Exemples :
* CHANGE NOM="INCONNU" AT ETIQ-1 IF NOM=" ";
Une nouvelle valeur est affectée à la variable NOM chaque fois que le traitementdétecte l'étiquette ETIQ-1 alors que NOM est à espace. La valeur affectée dans cecas à NOM est la chaîne de caractères "INCONNU".
* CHANGE X=0, Y=0, Z=0;
En interactif ou en télétraitement par lots, les variables X,Y et Z sont immédiatementforcées à zéro. En traitement par lots, ces variables sont initialisées lors du lancementdu programme; cette méthode peut servir à donner une valeur à des variables quandleur initialisation a été accidentellement omise dans le programme.
* CHANGE CHAR_VAR#X8="4040404040404040"X AT ETIQ_DEBUT;
La zone mémoire adressée par la variable CHAR_VAR est forcée à une valeurhexadécimale de 8 octets chaque fois que le programme rencontre l'étiquetteETIQ_DEBUT. Cette affectation est possible puisque la variable CHAR_VAR a unformat hexadécimal de 8 octets.
Aide à la mise au point (PCF)
6-8 47 F2 15UP Rev02
6.4 CHECKPOINT
Fonction
Définit un point de reprise dans la session de mise au point en cours.
Format
CHECKPOINT
CKPT
[AT liste-points-intervention] [clause-IF];
[n° -commande]
Figure 6-4. Commande CHECKPOINT
Description
La commande CHECKPOINT sert à définir un point de reprise dans la session de miseau point en cours. La spécification d'un point de reprise entraîne toujours l'annulation duprécédent. Si la session de mise au point s'arrête prématurément, que ce soit à caused'une erreur dans le programme, ou à la suite d'une commande BEGIN ou END, lesystème demande à l'utilisateur s'il souhaite relancer la session au dernier point dereprise. Dans l'affirmative, le programme est relancé au dernier point de reprise à l'étatexact dans lequel il se trouvait; toutes les commandes PCF présentes à ce stade sont enparticulier reconstituées. Pour effectuer une relance sur point de reprise, il fautmentionner l'option REPEAT dans la commande lançant l'exécution du programme misau point.
Si la clause AT est omise, l'opération est exécutée au moment suivant :
• en traitement par lots, lors du lancement du programme,• en interactif et en télétraitement par lots, immédiatement,• en transactionnel, la commande CHECKPOINT n'est pas autorisée.
Quand la clause IF est mentionnée, la commande n'est exécutée que si la condition estremplie.
Exemple :
* CHECKPOINT;
En interactif ou en télétraitement par lots, le point de reprise est immédiatementconstitué. Si le programme se trouve à ce stade dans une phase de mise au point trèscomplexe, la relance sur ce point de reprise permettra d'en optimiser la ré-exécutionen cas de besoin.
Les commandes PCF
47 F2 15UP Rev02 6-9
6.5 CULIB1/2/3
Fonction
Spécifie en dynamique des bibliothèques CU où se trouvent des unités compiléescomportant des informations de gestion nécessaires à la mise au point en modesymbolique.
Format
[AT liste-points-intervention] [clause-IF];
CULIB1 CULIB2 CULIB3
[n° -commande] nom-bib CU
Figure 6-5. Commande CULIB1/2/3
Description
Cette commande ne s'utilise qu'en cas d'édition de liens d'un module chargeableconstitué de CU "allégés", en utilisant des unités compilées générées par la commandeSPLIT_CU (voir chapitre 21). Il faut spécifier dans ce cas une bibliothèque CU au moins,et trois au plus, contenant les unités compilées d'origine (non "allégées") qui comportenttoutes les informations de gestion nécessaires à la mise au point en mode symbolique.
La recherche se fait dans l'ordre suivant : CULIB1, CULIB2 et CULIB3.
Les dates de création des CU sont vérifiées afin de s'assurer que les opérationsd'"allègement" et d'édition de liens ont bien été effectuées pour chacun des nouveauxCU.
L'utilisation des commandes CULIB1/2/3 n'est pas autorisée si l'édition de liens dumodule chargeable a été faite avec l'option SYMBMAP=NO. Utiliser alors la commandeIOF MWINLIB CU pour spécifier l'itinéraire de recherche, avant d'exécuter le modulechargeable (voir chapitre 21).
Exemple :
CULIB1 SD3.CULIB;
Aide à la mise au point (PCF)
6-10 47 F2 15UP Rev02
6.6 DISPLAY
Fonction
Affiche les bibliothèques allouées par PCF.
Format
DISPLAY ;
Figure 6-6. Commande DISPLAY
Description
La commande DISPLAY sert à afficher sur le support de sortie en cours la liste desbibliothèques spécifiées sous PCF par les commandes LIB, INLIB1, INLIB2, INLIB3,CULIB1, CULIB2 et CULIB3.
La commande DISPLAY ne peut être ni numérotée, ni différée (avec une clause AT).
Exemple :
DISPLAY;
Les commandes PCF
47 F2 15UP Rev02 6-11
6.7 DSR
Fonction
Affiche des lignes du programme source directement sur le support de sortie courant,sans passer par l'éditeur FSE.
Format
LINEDSR
LN
[AT liste-points-intervention] [clause-IF];
LINE
LN
numéro-ligne numéro-ligne[n° -commande] TO
Figure 6-7. Commande DSR
Description
Utilisée sans paramètres, la commande DSR affiche la ligne courante du code origine. Sile paramètre LINE est fourni, il y a affichage de la ligne spécifiée ou de toutes les lignescomprises entre le premier et le second numéros de ligne spécifiés. Si le numéro deligne fourni n'est pas trouvé, la ligne portant le numéro le plus proche est affichée.
Particularité
Pour que la commande DSR puisse s'exécuter, la bibliothèque origine doit être affectéepar la commande PCF LIB ou INLIBi. Le programme origine est d'abord recherché dansLIB, puis dans INLIB1, INLIB2 et enfin INLIB3. Le CU doit porter le même nom quel'unité de bibliothèque origine.
La commande DSR permet d'afficher du code origine, du code origine étendu (macro-instructions GPL, COPY en COBOL, etc.) ou le listage de compilation. Pour obtenir lecode source étendu et déterminer les options nécessaires, se reporter à ladocumentation correspondant au compilateur considéré.
Exemples :
DSR (affichage de la ligne courante)
DSR LINE 100 (affichage de la ligne 100)
DSR LN 100 TO LN 170 (affichage des lignes 100 à 170)
Aide à la mise au point (PCF)
6-12 47 F2 15UP Rev02
6.8 DUMP
Fonction
Imprime une ou plusieurs données.
Format
DUMP
D
expression-données [ ,expression-données]..
[AT liste-points-intervention] [clause-IF];
[n° -commande]
Figure 6-8. Commande DUMP
Description
La commande DUMP sert à imprimer la valeur de données en cours d'exécution. Lesopérandes des références de données de cette commande spécifient les données àimprimer. La liste de points d'intervention indique quand il faut imprimer ces valeurs.
Si la clause AT est omise, l'opération est exécutée au moment suivant:
• en traitement par lots, lors du lancement du programme,
• en interactif ou en télétraitement par lots, immédiatement,
• en transactionnel, au début de la routine TPR.
Quand la clause IF est mentionnée, la commande n'est exécutée que si la condition estremplie.
Le format des données affichées dépend de leur type, tel qu'il a été déclaré dans leprogramme origine ou tel qu'il est spécifié par le format explicite pouvant apparaître à lasuite de l'expression de données (voir chapitres 4 et 5).
Les groupes et tableaux s'impriment tels quels, avec les renfoncements et en-têtesappropriés qui en indiquent la structure.
Les commandes PCF
47 F2 15UP Rev02 6-13
Exemples :
* DUMP RESULTAT1, RESULTAT2, X AT LOC1;
imprime la valeur des variables RESULTAT1, RESULTAT2 et X chaque fois que letraitement détecte LOC1.
* DUMP V1,V2;
en interactif ou en télétraitement par lots, imprime la valeur en cours des variables V1et V2.
* DUMP ?SR0#X4;
imprime le contenu du registre scientifique numéro 0 sous la forme d'une chaînehexadécimale de quatre octets.
* DUMP ?IC ->0 #NAL;
imprime l'équivalent NAL de l'instruction machine courante.
* DUMP ?8.15.4F2 #NAL(45);
imprime l'équivalent NAL des 45 instructions machine suivant l'adresse indiquée.
* DUMP &LOCAL_NAME;
imprime l'adresse effective correspondant à la référence symbolique indiquée.
* DUMP L_V; (ou DUMP LOCAL_VARIABLES;)
imprime toutes les variables locales de la procédure courante.
Aide à la mise au point (PCF)
6-14 47 F2 15UP Rev02
6.9 END
Fonction
Arrête le programme en cours de mise au point
Format
[DUMP]END[n° -commande] AT liste-points-intervention
clause-IF ;
Figure 6-9. Commande END
Description
La commande END arrête le programme mis au point lorsque le traitement atteint l'undes points d'intervention spécifiés. Si DUMP est spécifié, un vidage des données duprogramme a lieu par l'intermédiaire du mécanisme standard SYSOUT.
Si le programme a été lancé avec l'option REPEAT, il est possible de relancer leprogramme au dernier point de reprise, ou à partir du début, si aucun point de reprise n'aété constitué.
Si la clause AT est omise, l'opération est exécutée au moment suivant:
• en traitement par lots, lors du lancement du programme,• en interactif ou en télétraitement par lots, immédiatement,• en transactionnel, au début de la routine TPR.
Quand la clause IF est mentionnée, la commande n'est exécutée que si la conditionspécifiée est remplie.
Les commandes PCF
47 F2 15UP Rev02 6-15
Exemples :
* END DUMP AT LN 200 IF A=0;
dans le cas où une analyse de résultats de vidage est nécessaire pour résoudre unproblème, permet d'obtenir un vidage des données du programme si la valeur de Aest égale à 0 à la ligne 200.
* END DUMP;
en interactif ou en télétraitement par lots, provoque un vidage des données duprogramme au stade en cours de l'exécution et y met fin.
* END;
s'utilise en interactif ou en télétraitement par lots, lorsque l'utilisateur a rassemblésuffisamment d'informations pour résoudre le problème et n'a pas besoin depoursuivre l'exécution du programme.
Aide à la mise au point (PCF)
6-16 47 F2 15UP Rev02
6.10 EXEC
Fonction
Exécute les commandes PCF contenues dans un fichier donné.
Format
EXEC
E"description-fichier"
[AT liste-points-intervention] [clause-IF];
[n° -commande]
Figure 6-10. Commande EXEC
Description
La commande EXEC sert à indiquer que les commandes PCF doivent être lues dans lefichier indiqué lorsque le traitement atteint l'un des points d'intervention. Le fichier peutcontenir n'importe quelle commande PCF. Lorsqu'il est épuisé, la suite des commandesest lue dans le fichier d'origine ou à partir du terminal.
Le format complet d'une description de fichier figure dans le manuel de référence del'utilisateur IOF (21UJ).
Les guillemets qui encadrent la description de fichier peuvent être omis si les clauses ATet IF ne sont pas spécifiées et que la description ne comprend ni "AT", ni "IF".
Si la clause AT est omise, l'opération est exécutée au moment suivant:
• en traitement par lots, lors du lancement du programme,• en interactif ou en télétraitement par lots, immédiatement,• en transactionnel, au début de la routine TPR.
Si la clause IF est mentionnée, la commande n'est exécutée que si la condition spécifiéeest remplie.
Les commandes PCF
47 F2 15UP Rev02 6-17
Exemples :
* EXEC"BDFIC1" AT L1, L2 IF Z>0 AND X<0;
provoque l'exécution des commandes enregistrées dans le fichier catalogué BDFIC1chaque fois que l'étiquette L1 ou L2 est détectée et que Z est supérieur à 0 et Xinférieur à 0. Si BDFIC1 contient des commandes sans clause AT, elles sontimmédiatement exécutées; dans le cas contraire, de nouveaux points d'interruptionsont créés conformément à la clause AT.
* EXEC FILE1:K999:MS/M452;
en traitement par lots, cette commande permet l'insertion d'une séquence standard decommandes PCF dans le train de commandes. FIC1 est un fichier non catalogué duvolume K999 sur une unité MSU 452. En interactif ou en télétraitement par lots, lamême phrase provoque l'exécution immédiate des commandes enregistrées dans lefichier, comme si elles avaient été introduites au terminal. Ce procédé permet d'éviterla répétition fastidieuse de la même séquence de commandes.
Aide à la mise au point (PCF)
6-18 47 F2 15UP Rev02
6.11 FSE
Fonction
Appelle l'éditeur plein écran FSE.
Format
[AT liste-points-intervention]
[n° -commande] FSE
[clause-IF];
Figure 6-11. Commande FSE
Description
La commande FSE appelle l'éditeur plein écran (Full Screen Editor) qui permet d'afficherou de modifier n'importe quelle unité de bibliothèque origine. Cette commande n'est pasautorisée en transactionnel ou en traitement par lots. Si la clause AT est omise, l'éditeurplein écran est immédiatement appelé en interactif ou en télétraitement par lots. Lorsquela clause IF est mentionnée, FSE n'est appelé que si la condition indiquée est remplie.
Exemple :
* FSE;
en interactif ou en télétraitement par lots, l'éditeur plein écran est appelé pourpermettre de consulter le programme origine, le compte rendu de compilation ou lerelevé des liens.
Les commandes PCF
47 F2 15UP Rev02 6-19
6.12 GOTO
Fonction
Provoque un branchement dans le programme mis au point ou relance l'exécution aprèsune commande PAUSE.
Format
GOTO point - intervention
GO/
[n° -commande] FSE [AT liste-points-intervention]
[clause-IF];
Figure 6-12. Commande GOTO
Description
La forme GO ou / sert en interactif ou en télétraitement par lots à relancer unprogramme après une commande PAUSE. L'exécution reprend à l'instruction duprogramme origine qui suit la pause. En traitement par lots ou en transactionnel, cettecommande n'est pas prise en compte. La première forme GO point-intervention sert àmodifier l'ordre d'exécution. Le traitement passe au point d'intervention indiqué quand ilatteint l'un des points d'intervention spécifiés dans la liste.
Si la clause AT est omise, l'opération est exécutée au moment suivant:
• en traitement par lots, lors du lancement du programme,• en interactif ou en télétraitement par lots, immédiatement,• en transactionnel, au début de la routine TPR.
Quand la clause IF est mentionnée, la commande n'est exécutée que si la conditionspécifiée est remplie.
Exemples :
* GOTO L1 AT ETIQ-DEBUT;
lance l'exécution du programme à partir d'un point différent du point d'entrée normal.
* GOTO ETIQ-2 AT LINE 100 IF X<0 OR X>255;
Cette commande peut servir à valider une éventuelle correction de programme sansavoir à le recompiler, ou à effectuer une nouvelle édition de liens. Quand le traitementatteint la ligne 100, la valeur de X est testée. Si la condition est remplie, lebranchement a lieu.
Aide à la mise au point (PCF)
6-20 47 F2 15UP Rev02
6.13 INLIB1/2/3
Fonction
Spécifie les bibliothèques d'entrée pour la commande FSE ou DSR.
Format
INLIB/1/2/3
IL1/2/3
[AT liste-points-intervention] [clause-IF];
["description - bibliothèque"][n° -commande]
Figure 6-13. Commande INLIB1/2/3
Description
Les commandes INLIB1, INLIB2 et INLIB3 spécifient les bibliothèques d'entrée à utiliserpar FSE ou DSR. Si le paramètre "description-bibliothèque" est omis, toute bibliothèqued'entrée spécifiée par une commande INLIB1 (ou INLIB2 ou INLIB3) antérieure estannulée. Ces commandes ne peuvent s'utiliser qu'en interactif ou en télétraitement parlots. Si aucune bibliothèque d'entrée n'est précisée, les règles GCL de recherche sontappliquées (les bibliothèques d'entrée implicites sont celles mentionnées dans le profild'utilisateur). En l'absence de clause AT, ces commandes sont immédiatementexécutées.
Quand la clause IF est mentionnée, elles ne le sont que si la condition indiquée estremplie.
Le format complet de la description de bibliothèque figure au chapitre 7 du manuel deréférence de l'utilisateur IOF (21UJ). En résumé, pour une bibliothèque cataloguée, ladescription se réduit au nom de bibliothèque. Pour une bibliothèque non cataloguée, ellea la forme suivante:
nom-bibliothèque:nom-volume:classe-appareil
Les guillemets qui encadrent la description de bibliothèque peuvent être omis si lesclauses AT et IF ne sont pas spécifiées et que la description ne comprend ni "AT", ni"IF".
Les commandes PCF
47 F2 15UP Rev02 6-21
Exemple:
* INLIB1 MABIB.ORIGINE;
La bibliothèque cataloguée MABIB.ORIGINE est désignée comme premièrebibliothèque d'entrée.
Aide à la mise au point (PCF)
6-22 47 F2 15UP Rev02
6.14 KILL
Fonction
Supprime les points d'interruption associés à une ou plusieurs commandes.
Format
KILL
K
[liste-numéros-commande]
[AT liste-points-intervention] [clause-IF];
[n° -commande]
Figure 6-14. Commande KILL
Description
La commande KILL supprime les commandes spécifiées lorsque le traitement atteint l'undes points d'intervention indiqués dans la clause AT. Les commandes supprimées parKILL sont définitivement perdues, contrairement à celles bloquées par SUSPEND quipermet de les revalider, au moyen d'une commande RESUME appropriée. Si aucuneclause "Quoi" n'est spécifiée, toutes les commandes validées ou bloquées sontsupprimées.
Si la clause AT est omise, l'opération est exécutée au moment suivant:
• en traitement par lots, lors du lancement du programme,• en interactif ou en télétraitement par lots, immédiatement,• en transactionnel, au début de la routine TPR.
Quand la clause IF est mentionnée, les commandes sont supprimées si la conditionspécifiée est remplie.
Les commandes PCF
47 F2 15UP Rev02 6-23
Exemples :
* L'utilisateur doit contrôler l'ordre d'exécution de deux opérations précises :
SUSPEND 10; 10 TRACE AT ALL-LABELS; RESUME 10 AT L1 IF Z<0; KILL AT L2 IF Z NOT EQ 0;
La commande TRACE (portant le numéro 10) est bloquée (momentanémentinvalidée) au lancement du programme. Quand le traitement rencontre l'étiquette L1et que Z est inférieur à 0, le jalonnement est déclenché. Lorsqu'il rencontre l'étiquetteL2 et que Z est différent de 0, toutes les commandes sont supprimées et lejalonnement est arrêté.
* KILL;
En interactif ou en télétraitement par lots, cette commande supprime tous les pointsd'interruption existants du programme, qu'ils soient validés ou bloqués.
Aide à la mise au point (PCF)
6-24 47 F2 15UP Rev02
6.15 LIB
Fonction
Spécifie une bibliothèque de sortie pour une commande FSE ou DSR.
Format
[AT liste-points-intervention]
LIB[n° -commande] ["description-bibliothèque"]
[clause-IF];
Figure 6-15. Commande LIB
Description
La commande LIB spécifie la bibliothèque de sortie à utiliser par une commande FSE ouDSR. Si le paramètre "description-bibliothèque" est omis, la bibliothèque de sortiespécifiée par une commande LIB antérieure est annulée. Lorsqu'aucune bibliothèque desortie n'est précisée, les règles GCL de recherche sont appliquées. C'est la bibliothèquementionnée dans le profil d'utilisateur qui est utilisée, si ce dernier existe; sinon, onutilise une bibliothèque SL temporaire. En l'absence de clause AT, la commande estimmédiatement exécutée. Quand une clause IF est mentionnée, la commande n'estexécutée que si la condition spécifiée est remplie.
Le format complet de la description de bibliothèque figure au chapitre 7 du manuel deréférence de l'utilisateur IOF (21UJ). En résumé, pour une bibliothèque cataloguée, ladescription se réduit au nom de bibliothèque. Pour une bibliothèque non cataloguée, ellea la forme suivante:
nom-bibliothèque:nom-volume:classe-appareils
Les guillemets qui encadrent la description de bibliothèque peuvent être omis si lesclauses AT et IF n'ont pas été spécifiées et que la description ne comprend ni "AT", ni"IF".
Exemple :
LIB MABIB.OR;
La bibliothèque MABIB.OR est désignée comme bibliothèque de sortie de FSE ou DSR.
Les commandes PCF
47 F2 15UP Rev02 6-25
6.16 LIST
Fonction
Affiche des commandes validées ou bloquées.
Format
LIST
L
[liste-numéros-commandes]
[AT liste-points-intervention] [clause-IF];
[n° -commande]
Figure 6-16. Commande LIST
Description
La commande LIST affiche les commandes PCF spécifiées, quand le traitement atteintl'un des points d'intervention indiqués dans la clause AT. Les commandes bloquées parla commande SUSPEND sont signalées, celles supprimées par une commande KILL nes'affichent pas. Lorsqu'aucune clause "Quoi" n'est spécifiée, toutes les commandesvalidées ou bloquées sont listées.
Si la clause AT est omise, l'opération est exécutée au moment suivant:
• en traitement par lots, lors du lancement du programme,• en interactif ou en télétraitement par lots, immédiatement,• en transactionnel, au début de la routine TPR.
Quand la clause IF est mentionnée, l'affichage n'a lieu que si la condition spécifiée estremplie.
Exemples :
* LIST;* LIST 100 TO 200 AT L1 IF Z<0;* LIST AT POST MORTEM;
Aide à la mise au point (PCF)
6-26 47 F2 15UP Rev02
6.17 OUTPUT
Fonction
Dirige le compte rendu d'exécution de PCF vers le fichier indiqué.
Format
OUTPUT
O
["description-fichier"][n° -commande]
[AT liste-points-intervention] [clause-IF];
Figure 6-17. Commande OUTPUT
Description
La commande OUTPUT sert à demander que le compte rendu d'exécution de PCF soitdirigé vers le fichier indiqué lorsque le traitement atteint l'un des points d'interventionspécifiés dans la clause AT. Le format complet d'une description de fichier figure auChapitre 6 du manuel de référence de l'utilisateur IOF (21UJ). En résumé, pour un fichiercatalogué, la description se réduit au nom du fichier. Pour un fichier non catalogué, ellea la forme suivante:
nom-fichier:nom-volume:classe-appareils
Si la description de fichier est omise, les sorties sont à nouveau dirigées vers le fichierspécifié initialement (par l'intermédiaire du mécanisme SYSOUT ou vers le terminalutilisateur).
Quand la clause AT est omise, l'opération est exécutée au moment suivant:
• en traitement par lots, lors du lancement du programme,• en interactif et en télétraitement par lots, immédiatement,• en transactionnel, au début de la routine TPR.
Quand la clause IF est mentionnée, la commande n'est exécutée que si la conditionspécifiée est remplie.
Les commandes PCF
47 F2 15UP Rev02 6-27
Exemples :
* OUTPUT "FICRES" AT L1, L2 IF Z<0;
dirige le compte rendu d'exécution de PCF vers un fichier catalogué FICRES chaquefois qu'est rencontrée l'étiquette L1 ou L2 et que Z est inférieur à 0. Une sortienormale par l'intermédiaire du mécanisme SYSOUT ou sur le terminal utilisateurs'obtient à l'aide de la commande suivante:
OUTPUT AT L3;
elle a lieu chaque fois qu'est rencontrée l'étiquette L3.
* OUTPUT "FIC2:K999:MS/M452";
En traitement par lots ou en transactionnel, le compte rendu d'exécution est dirigévers le fichier FIC2 dans le volume K999 sur une unité MSU 452. En interactif ou entélétraitement par lots, le même exemple provoque le transfert immédiat du compte:rendu d'exécution vers le fichier indiqué.
Aide à la mise au point (PCF)
6-28 47 F2 15UP Rev02
6.18 PAUSE
Fonction
Demande l'arrêt du programme à certains points.
Format
PAUSE
P[AT liste-points-intervention]
[clause-IF];
[n° -commande]
Figure 6-18. Commande PAUSE
Description
La commande PAUSE n'a de signification qu'en interactif ou en télétraitement par lots.Elle n'est prise en compte ni en traitement par lots, ni en transactionnel. Cettecommande sert à donner le contrôle du programme à l'utilisateur chaque fois que letraitement atteint l'un des points d'intervention spécifiés. Le système demande alors àl'utilisateur d'introduire des commandes PCF qui sont ensuite traitées. Elles peuvent êtreimmédiates (sans clause AT) ou différées (avec clause AT). L'exécution du programmeest relancée au moyen de la commande GO (ou /) ou d'une commande GOTOimmédiate. Quand la clause IF est mentionnée, le contrôle n'est donné à l'utilisateur quesi la condition spécifiée est remplie.
Mise au point pas à pas
Une forme particulière de la clause AT permet la mise au point pas à pas d'unprogramme. L'arrêt peut se faire à chaque instruction (en adressage effectif) ou àchaque ligne (en adressage symbolique) La syntaxe complète de la commande PAUSEen cas d'utilisation de cette clause est la suivante :
{ PAUSE } AT { EACH_INSTR }{ P } { E_I } { EACH_LINE } { E_L }
Lors de la mise au point pas à pas au moyen de PAUSE, les commandes KILL,SUSPEND ou RESUME sont utilisables normalement.
Les commandes PCF
47 F2 15UP Rev02 6-29
Exemples :
* L'utilisateur souhaite une pause conditionnelle pour consulter l'environnement duprogramme:
PAUSE AT LINE 200 IF K<0 AND P>255;
Dans cet exemple, le contrôle est donné à l'utilisateur à la ligne 200, si K est inférieurà 0 et P supérieur à 255. Il peut alors utiliser une commande DUMP ou CHANGEimmédiate pour afficher ou modifier des variables. L'exécution sera relancée aumoyen d'une commande GO.
* PAUSE AT ALL-LABELS;
Chaque fois qu'une instruction avec étiquette est détectée, le contrôle est donné àl'utilisateur qui peut afficher et modifier le contexte comme il l'entend.
* PAUSE AT E_I;
permet une mise au point pas à pas. A chaque instruction machine, l'utilisateur reçoitle contrôle et peut afficher et modifier le contexte à son gré.
* PAUSE AT E_L;
permet une mise au point pas à pas. A chaque ligne de code origine, l'utilisateur reçoitle contrôle et peut afficher et modifier le contexte à son gré.
Aide à la mise au point (PCF)
6-30 47 F2 15UP Rev02
6.19 RECOVER
Fonction
Spécifie une action correctrice implicite à effectuer en cas d'anomalie dans ledéroulement du programme. Elle est signalée dans le compte rendu d'exécution.
Format
RECOVER condition[n° -commande]
[AT liste-points-intervention] [clause-IF];
Figure 6-19. Commande RECOVER
Description
Le paramètre "condition" peut prendre l'une des formes suivantes:
ILLDEC pour des données décimales incorrectes,SUBSCRIPT pour toute désignation d'élément en dehors des limites d'un tableau.
Les actions correctrices associées sont les suivantes :
• pour ILLDEC : en cas de signe incorrect, forçage au signe +; en cas de chiffreincorrect, remplacement par zéro.
• pour SUBSCRIPT : forçage de l'indice erroné à la valeur de de l'indice du premierélément de la table ou du tableau.
Exemples :
* 13 RECOVER ILLDEC;* RECOVER SUBSCRIPT;
Remarque : La commande RECOVER ne doit s'utiliser que lors de la mise aupoint, pour corriger les deux anomalies signalées et rattraper ainsides incidents plus graves. Les anomalies doivent toutefois êtrecorrigées et il ne faut pas compter sur RECOVER pour les sauter.En production, un TDS ne doit comporter aucune anomalie et nedoit pas s'exécuter sous PCF, sous peine de peser lourdement surles performances.
Les commandes PCF
47 F2 15UP Rev02 6-31
6.20 RESUME ET SUSPEND
Fonction
Bloque (SUSPEND) ou débloque (RESUME) une ou plusieurs commandes PCF, lorsquele traitement atteint un des points d'intervention. Ces commandes servent à limiter lamise au point à une section de programme.
Format
RESUME
R
SUSPEND
S
[liste-numéros-commandes]
[AT liste-points-intervention]
[clause-IF];
[n° -commande]
Figure 6-20. Commandes RESUME et SUSPEND
Description
La commande SUSPEND bloque les commandes PCF dont le numéro est indiqué,lorsque le traitement atteint l'un des points d'intervention spécifiés.
La commande RESUME débloque une commande précédemment bloquée par unecommande SUSPEND. Appliquée à des commandes n'ayant pas été bloquées, elle n'aaucun effet.
La ou les commande(s) restent bloquées jusqu'à ce qu'une commande RESUME soitspécifiée. Les commandes en question peuvent être à nouveau bloquées au moyend'une nouvelle commande SUSPEND en mentionnant leur numéro.
Une commande SUSPEND peut elle-même faire l'objet d'une autre commandeSUSPEND ou d'une commande RESUME. Il est en revanche impossible de bloquer unecommande RESUME par SUSPEND.
Si la clause AT est omise, l'opération est exécutée au moment suivant:
• en traitement par lots, lors du lancement du programme,• en interactif et en télétraitement par lots, immédiatement,• en transactionnel, au début de la routine TPR.
Aide à la mise au point (PCF)
6-32 47 F2 15UP Rev02
Quand une clause IF est mentionnée, la commande n'est exécutée que si la conditionspécifiée est remplie.
Si aucune clause "Quoi" n'est précisée, toutes les commandes sont bloquées oudébloquées.
Les commandes SUSPEND et RESUME permettent d'économiser du papier et du tempsen évitant des répétitions inutiles.
Exemples :
La mise au point du programme doit se limiter aux cas où une variable donnée prendplusieurs valeurs à l'intérieur d'une plage définie comme par exemple,: 6<X3<8, parexemple:
SUSPEND 10 TO 100 AT BEGIN; RESUME 10 TO 100 AT ETIQ-6 IF X3<8 AND X3>6; SUSPEND 10 TO 100 AT ETIQ-6 IF X3>=8 OR X3<=6; 10... 20... . . . 100...
La première commande SUSPEND bloque les commandes PCF de mise au point. Lacommande RESUME les débloque si la condition spécifiée est remplie au niveau dupoint d'intervention indiqué [ETIQ-6. La commande SUSPEND suivante bloque lescommandes, si la valeur de la variable X3 se situe en dehors de la plage définie.Viennent ensuite les instructions de mise au point (10 à 100).
* 1 DUMP A AT L1; 2 DUMP B AT L1; 3 SUSPEND 1, 2 AT L3;
Si le traitement détecte l'étiquette L3 avant L1, les commandes 1 et 2 ne sont pasexécutées. Si L1 est détectée en premier, ces commandes sont réexécutées chaquefois que L1 est détectée, sauf si L3 a été détectée entretemps.
* 1 DUMP TABLEAU-1 AT ALL-LABELS; 2 SUSPEND 1 AT ETIQ-6; 3 RESUME 1 AT L20, LOC23;
L'affichage de la variable TABLEAU-1 est bloqué lorsqu'est détectée l'étiquetteETIQ-6. Il reprend au niveau de L20 ou LOC23.
Les commandes PCF
47 F2 15UP Rev02 6-33
6.21 TRACE
Fonction
Jalonne le programme au cours de son exécution.
Format
TRACE
T
[NOT]
[MAP]
[n° -commande] [AT liste-points-intervention]
[clause-IF];
Figure 6-21. Commande TRACE
Description
L'utilisateur spécifie une liste d'un ou plusieurs points d'intervention. Lorsque letraitement atteint l'un de ces points, PCF prend le contrôle et en garde trace. Lejalonnement peut s'effectuer selon trois modes :
1. Si ni MAP, ni NOT ne sont spécifiés, PCF imprime une ligne sur le compte rendud'exécution chaque fois que l'un des points d'intervention est atteint. Elle identifie lepoint d'intervention (étiquette, numéro de ligne ou adresse effective).
2. Si MAP est spécifié, il ne se passe rien au moment où le point d'intervention estatteint. C'est seulement à la fin normale ou anormale de l'exécution du programmequ'est imprimé un relevé des points d'intervention avec le nombre de fois où letraitement est passé par chacun d'eux.
3. Si NOT est spécifié, le jalonnement se déroule comme dans le deuxième mode,mais c'est un relevé de tous les points d'intervention par lesquels le traitement n'estpas passé qui s'imprime.
Si la clause IF est mentionnée, la condition est examinée chaque fois que le traitementatteint l'un des points d'intervention. Il faut qu'elle soit remplie pour que le pointd'intervention soit relevé.
Comme indiqué précédemment, la commande TRACE permet à l'utilisateur de localisertrès rapidement les parties critiques d'un programme. Les commandes TRACE sontappliquées à des parties de plus en plus petites à mesure que la vérification duprogramme avance.
Dans le premier mode, l'utilisateur a trace des points d'intervention avec l'ordre danslequel ils ont été rencontrés, ce qui rend très facile la localisation des erreurs dedéroulement du programme.
Aide à la mise au point (PCF)
6-34 47 F2 15UP Rev02
Dans le deuxième mode, le relevé fourni indique les points rencontrés et combien de foisils l'ont été, ce qui facilite la vérification de traitements itératifs à la suite de l'instructionPERFORM en COBOL ou DO en FORTRAN, par exemple.
Dans le troisième mode, tous les points non rencontrés sont relevés. Cette fonction sertà déterminer quelles sont les branches d'un programme qui n'ont pas été exécutées. Elleest particulièrement utile dans les programmes de test, pour vérifier que le traitementpasse bien par toutes les branches du programme.
Exemples :
* Un programme utilisateur effectue un branchement sur un des sous-programmes enfonction de la valeur d'une zone donnée d'un article d'entrée. L'utilisateur peut fournirpour commencer des valeurs de test provoquant un branchement sur chacun dessous-programmes, puis soumettre la commande PCF suivante:
TRACE AT SP1,...... SPn;
Si l'exécution du programme est correcte, ces différents points de branchementapparaissent bien sur le relevé, dans le même ordre que dans la commande. S'il n'y apas trace de l'un d'entre eux, ou si ce n'est pas dans le bon ordre, cela signifie qu'il y aune erreur dans le programme ou les données fournies. L'utilisateur pourra alorslimiter son travail de vérification sur une partie encore plus petite du programme.
* La commande:
TRACE MAP AT SP1,.... SPn;
permet une approche plus globale du problème. Il est ainsi possible de vérifier quechaque sous-programme s'est bien déroulé le nombre de fois voulu, conformémentaux données correspondantes.
* Lors d'essais plus approfondis, la commande PCF:
TRACE NOT AT ALL-LABELS;
relève toutes les instructions avec étiquettes du programme qui n'ont pas étéexécutées, ce qui signifie qu'il faut effectuer un essai avec de nouvelles donnéesd'entrée.
* La commande PCF:
TRACE MAP AT IMP-ERREUR IF XERR>50;
relève le nombre de fois où l'étiquette IMP-ERREUR est rencontrée alors que lavariable XERR est supérieure à 50.
Les commandes PCF
47 F2 15UP Rev02 6-35
6.22 WHERE
Fonction
Affiche le contexte d'exécution.
Format
WHERE
W
[TRACK]
[TK]
[AT liste-points-intervention]
[n° -commande]
[clause-IF];
Figure 6-22. Commande WHERE
Description
La commande WHERE affiche la valeur du compteur d'instruction lorsque le traitementatteint l'un des points d'intervention spécifiés dans la liste. Chaque fois que c'estpossible, la valeur de ce compteur apparaît sous forme symbolique (nom de procédure,étiquette, numéro de ligne origine). La spécification de TRACK ou TK entraînel'affichage de la chaîne complète d'appels de procédure du programme. La valeur ducompteur d'instruction et le nom de la procédure d'appel s'affichent pour chaque appel.Avec ou sans option TRACK, si la procédure concernée par la commande APPLY encours fait partie de la chaîne de procédures appelées, elle est affichée et signalée parune flèche.
Si la clause AT est omise, l'opération est exécutée au moment suivant:
• en traitement par lots ou en transactionnel, lors du lancement du programme, maiscela ne présente aucun intérêt,
• en interactif et en télétraitement par lots, immédiatement.
Quand la clause IF est mentionnée, la commande n'est exécutée que si la conditionspécifiée est remplie.
Aide à la mise au point (PCF)
6-36 47 F2 15UP Rev02
Exemples :
* La commande WHERE est essentielle pour la mise au point en interactif et entélétraitement par lots. Après qu'il ait reçu le contrôle du programme à la suite d'unecommande PAUSE, ou introduit une commande PCF à la suite d'une interruption, lapremière commande lancée par l'utilisateur sera vraisemblablement WHERE TRACKpour connaître le contexte exact du point d'interruption.
* En traitement par lots, la phrase :
WHERE TRACK AT ETIQ-6;
génère un relevé complet de tous les contextes dans lesquels est détectée l'étiquetteETIQ-6. Toutes les procédures d'appel de la procédure contenant l'étiquette ETIQ-6sont affichées chaque fois qu'ETIQ-6 est détectée.
Les commandes PCF
47 F2 15UP Rev02 6-37
47 F2 15UP Rev02 7-1
7. Appel de PCF en traitement par lots
Lorsqu'il soumet un travail à exécuter avec PCF, l'utilisateur doit fournir un fichiercontenant les commandes de mise au point. Pour ce faire, il spécifie une description defichier à la suite du mot-clé DEBUG dans l'ordre JCL STEP, comme suit:
STEP nom-module-chargeable, description-bibliothèque-modules-chargeables, DEBUG=description-fichier-entrée-séquentiel-PCF;
Le fichier d'entrée PCF peut être n'importe quel fichier séquentiel. Les exemples quisuivent illustrent les cas d'emploi les plus courants.
7.1 COMMANDES SUR CARTES
STEP.....DEBUG=*CARTES;...ENDSTEP;$INPUT CARTES;.. commandes PCF sur cartes.$ENDINPUT;
Le nom de la rubrique de description d'entrées contenant les cartes de commandess'indique, précédé d'un astérisque, à la suite du mot-clé DEBUG. La rubrique même estdélimitée par les ordres INPUT et ENDINPUT.
Aide à la mise au point (PCF)
7-2 47 F2 15UP Rev02
7.2 COMMANDES DANS UN FICHIER DISQUE SEQUENTIEL NONCATALOGUE
STEP.....DEBUG=(MONFIC,DVC=MS/M452,MD=K999);...ENDSTEP;
La description du fichier s'indique entre parenthèses. Elle comprend le nom du fichier(MONFIC dans le cas présent), le volume sur lequel il se trouve (K999) et le type devolume (une unité de disques MSU 452).
7.3 COMMANDES DANS UN FICHIER SEQUENTIEL CATALOGUE
STEP.....DEBUG=DEPT1.JEAN.BDFIC;...ENDSTEP;
On n'indique que le nom du fichier. Sa structure (combinaison de noms simples et depoints) reflète l'organisation arborescente du catalogue d'où seront extraites lescaractéristiques du fichier.
7.4 COMMANDES DANS UNE UNITE DE BIBLIOTHEQUE ORIGINE NONCATALOGUEE
Les commandes PCF peuvent avoir été préparées à l'aide de l'éditeur de textes etenregistrées dans une bibliothèque SL.
STEP.....DEBUG=(MABIBLI,DVC=MS/M452,MD=K999, SUBFILE=BD);...ENDSTEP;
La description de l'unité de bibliothèque contenant les commandes s'indique entreparenthèses. Elle comprend la description complète de la bibliothèque (nom, volume ettype de volume), ainsi que le nom de l'unité à la suite du mot-clé SUBFILE (BD dans lecas présent).
Appel de PCF en traitement par lots
47 F2 15UP Rev02 7-3
7.5 COMMANDES DANS UNE UNITE DE BIBLIOTHEQUE ORIGINECATALOGUEE
STEP.....DEBUG=(DEPT1.JEAN.PROPBIB, SUBFILE=BDCOMDS);...ENDSTEP;
La description des entrées de PCF se limite au nom de la bibliothèque cataloguée (quireflète la structure arborescente du catalogue) et à celui de l'unité contenant le texte descommandes (BDCOMDS dans le cas présent).
Aide à la mise au point (PCF)
7-4 47 F2 15UP Rev02
47 F2 15UP Rev02 8-1
8. Appel de PCF en interactif
Il est possible d'utiliser PCF sous IOF pour la mise au point de programmes COBOL,FORTRAN, GPL ou C, en adressage symbolique, effectif ou semi-symbolique. Leproduit est pratiquement le même qu'en traitement par lots. En effet, les fonctionsoffertes, la syntaxe des commandes et le comportement du système sont identiquesdans ces deux modes. Certaines commandes sont plus particulièrement utiles eninteractif. Egalement disponibles en traitement par lots, elles n'offrent toutefois qu'unintérêt limité dans ce cas. Toutes les commandes ayant été décrites au chapitre 6, leprésent chapitre traite seulement du lancement de PCF sous IOF. Le chapitre 17 fournitune description plus détaillée du dialogue établi entre PCF et l'utilisateur IOF.
8.1 DEFINITION D'UNE SESSION DE MISE AU POINT
PCF est appelé si le paramètre DEBUG est spécifié dans la commande GCL EXEC_PG.Ce paramètre peut avoir deux valeurs:
• la valeur implicite TN pour indiquer que toutes les commandes PCF s'introduisentdirectement au terminal,
• le nom d'un fichier séquentiel dans lequel sont lues les commandes PCF. D'autrescommandes peuvent ensuite s'introduire au terminal.
Aide à la mise au point (PCF)
8-2 47 F2 15UP Rev02
Exemples :
Commandes introduites directement au terminal :
EXEC_PG...DEBUG=TN;
Commandes dans un fichier séquentiel non catalogué :
EXEC_PG...DEBUG=BDFIC:K999:MS/M452;
Commandes dans un fichier séquentiel catalogué :
EXEC_PG...DEBUG=REP_PRINC.FICPCF;
Commandes dans une unité de bibliothèque origine non cataloguée :
EXEC_PG...DEBUG=MABIB..BDBM:MS/M452;
Commandes dans une unité de bibliothèque origine cataloguée :
EXEC_PG...DEBUG=REP_PRINC.BIBSL..MBPCF;
Pour s'exécuter, PCF exige l'introduction de commandes au terminal utilisateur ou àpartir d'un fichier. C'est la seule différence avec le lancement de PCF en traitement parlots, la syntaxe et la signification des commandes restant les mêmes. Celles comportantune clause "Quand" sont exécutées lorsque le traitement atteint le(s) point(s)d'intervention spécifié(s), les autres le sont immédiatement. L'exécution du programmeest lancée au moyen d'une commande GO (ou /) immédiate.
Le programme utilisateur s'exécute alors jusqu'à ce que l'un des points d'interventionspécifiés soit atteint. Si une commande PAUSE est associée à ce point, l'exécution estsuspendue dans l'attente de commandes de mise au point. Là encore, tous les types decommandes, avec ou sans clause "Quand", sont autorisés. L'exécution reprend à la suited'une commande GO (ou /) ou GOTO. En l'absence de commande PAUSE, l'opérationrequise au point d'intervention est effectuée, les résultats sont affichés et l'exécutionreprend immédiatement.
8.2 TEXTES HELP
En GCL, on dispose en interactif d'un système de documentation en ligne permettantd'accéder à des menus, messages de guidage et textes HELP relatifs aux commandesPCF. Toutes les directives GCL, ainsi que toutes les procédures GCL compilées dans ledomaine PCF, sont exécutables avec PCF en interactif. Pour plus de détails sur GCL, sereporter au manuel de référence de l'utilisateur IOF (22UJ).
Remarque : Il est impossible d'accéder au texte HELP relatif à un paramètrede commande PCF en frappant "?" après cette commande enmode ligne.
Appel de PCF en interactif
47 F2 15UP Rev02 8-3
8.3 LANCEMENT IMMEDIAT DE PCF
Il existe une autre façcon de lancer PCF, même si le paramètre DEBUG n'a pas étéspécifié dans la commande EXEC_PG lançant le programme utilisateur. Pendantl'exécution d'un programme interactif, l'utilisateur peut appuyer à tout moment sur latouche Interruption du terminal pour suspendre l'exécution. En ce qui concerne lesterminaux non pourvus de ce type de touche, on obtient le même effet en introduisant laséquence de caractères $*$BRK en début de ligne. IOF réagit à l'interruption enenvoyant trois points d'interrogation (???), puis attend une réponse de l'utilisateur. Si laréponse est DEBUG, PCF est lancé. Tout se passe ensuite comme si l'utilisateur avaitdemandé une PAUSE au point d'interruption.
PCF exige donc l'introduction de commandes, qui peuvent être immédiates oucomporter une clause "Quand", et l'exécution reprend sur une commande GO (ou /) ouGOTO immédiate.
Cette méthode est particulièrement intéressante pour la mise au point de programmesprésentant des anomalies ou se bloquant sur une boucle. Dans ce cas, l'appel de PCFpermet de rechercher les conditions dans lesquelles ce comportement imprévu apparaîtet, éventuellement, d'y remédier. En général, la première commande que l'utilisateurintroduit après une interruption et DEBUG est WHERE avec l'option TRACK (voirChapitre 6), afin de déterminer le contexte exact dans lequel le programme estsuspendu. L'utilisateur peut entreprendre une mise au point pas à pas en émettant unesérie de commandes PAUSE à intervalles réguliers aux alentours du point d'arrêt duprogramme, puis relancer l'exécution au moyen d'une commande GO (ou /).
8.4 TRAITEMENT DES INTERRUPTIONS
L'utilisateur peut également utiliser la touche Interruption en cours d'exécution de PCFen interactif, et non pas de l'exécution du programme utilisateur. Le traitement desinterruptions est toutefois différent dans ce cas. PCF réagit à une interruption enenvoyant trois points d'interrogation (???), puis attend une réponse.
1. Si la réponse est RS ou RESUME, l'exécution de PCF reprend au pointd'interruption comme si rien ne s'était passé.
2. Si la réponse est QUIT, PCF et le programme en cours de mise au point s'arrêtenttous deux prématurément.
3. Si la réponse est IT (ou /), les commandes PCF prévues sont abandonnées et PCFest relancé au point d'intervention en cours.
4. Si la réponse est DEBUG, toutes les commandes PCF prévues pour s'exécuter à cepoint sont menées à terme et PCF est relancé au point d'intervention en cours.
Aide à la mise au point (PCF)
8-4 47 F2 15UP Rev02
47 F2 15UP Rev02 9-1
9. Appel de PCF en télétraitement par lots
PCF permet la mise au point interactive de programmes en traitement par lots, à partird'un terminal IOF ou RBF. Les programmes peuvent être en COBOL, FORTRAN, GPLou C, le mode d'adressage étant symbolique, effectif, ou semi-symbolique. Le produitPCF en télétraitement par lots est pratiquement le même qu'en traitement par lots ou eninteractif. En effet, les fonctions offertes, la syntaxe des commandes et le comportementdu système sont identiques dans ces trois modes. Seule la méthode de lancement dePCF est différente et fait donc l'objet du présent chapitre.
9.1 PREPARATION D'UNE SESSION DE MISE AU POINT ENTELETRAITEMENT PAR LOTS
Les travaux à exécuter en traitement par lots peuvent être soumis:
• à partir du site central,
• à partir d'une station à distance,
• à partir d'un terminal IOF.
Dans tous les cas, un terminal, dit console implicite, est associé au travail soumiscomme terminal de dialogue. Dans le premier cas, la console implicite est la consolesystème du site central; dans le deuxième, c'est la console système de la station àdistance; dans le troisième, c'est le terminal IOF à partir duquel les travaux sont soumis.L'ordre JCL CONSOLE permet de ne pas utiliser la console implicite et de spécifier leterminal de dialogue pour la totalité ou une partie d'un travail.
9.1.1 Ordre CONSOLE
{ CONSOLE }{ } [identification-utilisateur]{ CNSL }
Les messages seront dans ce cas envoyés au terminal connecté au système sousl'identification utilisateur indiquée. En l'absence d'identification dans l'ordre, la consolesystème du site central est implicite.
Tous les travaux auxquels est associée une console autre que la console système dusite central ont accès à PCF en télétraitement par lots. Il s'agit donc des travaux suivants:
Aide à la mise au point (PCF)
9-2 47 F2 15UP Rev02
• travaux soumis à partir du site central, avec un ordre JCL CONSOLE explicitespécifiant un terminal utilisateur IOF,
• travaux soumis à partir d'une station à distance, sans affectation explicite desmessages à la console système du site central,
• travaux soumis à partir d'un terminal IOF sans affectation explicite des messages à laconsole système du site central.
Comme en traitement par lots, PCF en télétraitement par lots est appelé si le mot-cléDEBUG est spécifié dans l'ordre JCL STEP lançant le programme à mettre au point. Lescommandes devant être introduites à partir d'un terminal IOF qui est le terminal dedialogue du travail, il n'y a pas à mentionner de description de fichier à la suite deDEBUG. Le format de l'ordre STEP est donc le suivant:
STEP nom-module-chargeable, description-bibliothèque-modules-chargeables, DEBUG;
Appel de PCF en télétraitement par lots
47 F2 15UP Rev02 9-3
9.2 LANCEMENT DE LA SESSION
Il y a plusieurs manières de soumettre un travail à exécuter :
• ordre JCL RUN,
• commande GCL ENTER_JOB_REQ
• commandes opérateur sur le site central ou à distance.
Dans tous les cas, ces travaux ont en commun de ne pas être immédiatement exécutésmais d'abord "planifiés". Cet état peut durer de quelques secondes à plusieurs heures.Comme ce délai est difficilement prévisible et dépend de divers facteurs (nombred'utilisateurs du système, conflits au sujet des ressources système ou décisions del'opérateur), il est impossible de laisser un terminal attendre que le travail soit prêt à êtremis au point. En fait, dès que le travail a été soumis, le terminal utilisateur est libéré pourd'autres tâches. Une fois le travail planifié et l'activité à mettre au point prête à êtreexécutée, un message apparaît au terminal de dialogue :
-->Xnnn READY FOR DEBUGGING
Xnnn est le numéro de passage (RON) du travail soumis. Si le terminal de dialogue n'estpas en communication avec le système à ce moment-là, le travail soumis s'arrêteprématurément avec le code retour TERNAV (Terminal Not Available- Terminal nondisponible).
Informé que le travail soumis est prêt à être mis au point, l'utilisateur dispose encore detemps pour achever l'activité en cours (environ 5 minutes, au-delà desquelles, faute deréponse, le travail soumis s'arrête prématurément et le message Xnnn DEBUGGING TIMEOUT - fin du temps imparti pour mise au point - apparaît auterminal utilisateur). Une fois l'activité terminée, il indique qu'il est prêt à effectuer lamise au point de la manière suivante :
DEBUG Xnnn;
Xnnn est le numéro de passage du travail mis au point, tel qu'il figurait dans le premiermessage. A partir de cet instant, le terminal utilisateur est réservé à la mise au point del'activité soumise, jusqu'à ce que l'exécution de cette dernière soit terminée.
Aide à la mise au point (PCF)
9-4 47 F2 15UP Rev02
9.3 DEROULEMENT DE LA SESSION
Une fois que DEBUG est introduit, PCF exige que des commandes soient fournies auterminal et non lues dans un fichier. C'est la seule différence avec les autres modes. Lasyntaxe et la signification des commandes restent les mêmes. Celles comportant uneclause "Quand" sont exécutées lorsque le programme atteint le(s) point(s) d'interventionspécifié(s); les autres le sont immédiatement. L'exécution du programme est lancée aumoyen d'une commande GO (ou /) immédiate.
Le programme utilisateur s'exécute alors jusqu'à ce que l'un des points d'interventionspécifiés soit atteint. Si une commande PAUSE est associée à ce point, l'exécution estsuspendue dans l'attente de commandes de mise au point. Là encore, tous les types decommandes, avec ou sans clause "quand", sont autorisés. L'exécution reprend à la suited'une commande GO ou GOTO immédiate. En l'absence de commande PAUSE,l'opération requise au point d'intervention est exécutée, les résultats sont affichés etl'exécution reprend immédiatement.
Si la mise au point est interrompue par un incident, que l'utilisateur demande la fin de lasession de mise au point ou qu'il y ait fin anormale de la session IOF (incident de ligne,d'alimentation, etc.) par exemple, l'activité en traitement par lots s'arrête prématurément.
9.4 TEXTES HELP
Sous IOF, on dispose en télétraitement par lots d'un système de documentation en lignepermettant d'accéder à des menus, messages de guidage et textes HELP relatifs auxcommandes PCF. Toutes les directives GCL, ainsi que les procédures GCL compiléesdans le domaine PCF, sont exécutables avec PCF en télétraitement par lots. Pour plusde détails sur GCL, se reporter au manuel de référence de l'utilisateur IOF (22UJ).
Remarque : Il est impossible d'accéder au texte HELP relatif à un paramètred'une commande PCF en frappant "?" après cette commande enmode ligne.
Appel de PCF en télétraitement par lots
47 F2 15UP Rev02 9-5
9.5 LANCEMENT IMMEDIAT DE PCF
Il existe une autre façon de lancer PCF en télétraitement par lots. Pendant l'exécutiond'un programmme dans ce mode, l'utilisateur peut appuyer à tout moment sur la toucheInterruption du terminal pour suspendre l'exécution. En ce qui concerne les terminauxnon pourvus de ce type de touche, on obtient le même effet en introduisant la séquencede caractères $*$BRK en début de ligne. IOF réagit en envoyant trois pointsd'interrogation (???), puis attend une réponse de l'utilisateur. Si la réponse est DEBUG,PCF est lancé. Tout se passe ensuite comme si l'utilisateur avait demandé une PAUSEau point d'interruption. PCF exige donc l'introduction de commandes, qui peuvent êtreimmédiates ou comporter une clause "Quand", et l'exécution reprend sur une commandeGO (ou /) ou GOTO immédiate.
Cette méthode est particulièrement intéressante pour la mise au point de programmesprésentant des anomalies ou se bloquant sur une boucle. Dans ce cas, l'appel de PCFpermet de rechercher les conditions dans lesquelles ce comportement imprévu apparaîtet, éventuellement, d'y remédier. En général, la première commande que l'utilisateurintroduit après une interruption et DEBUG est WHERE avec l'option TRACK (voirchapitre 6), afin de déterminer le contexte exact dans lequel le programme estsuspendu. L'utilisateur peut entreprendre une mise au point pas à pas en émettant unesérie de commandes PAUSE à intervalles réguliers aux alentours du point d'arrêt duprogramme, puis en relancer l'exécution au moyen d'une commande GO (ou /).
9.6 TRAITEMENT DES INTERRUPTIONS
L'utilisateur peut également utiliser la touche Interruption en cours d'exécution de PCFen télétraitement par lots et non pas de l'exécution du programme utilisateur. Letraitement des interruptions est toutefois différent dans ce cas de celui en interactif. Lesinterruptions de PCF en télétraitement par lots sont en effet ignorées, sauf en coursd'impression de résultats. Dans ce cas, PCF réagit en envoyant trois pointsd'interrogation (???), puis attend une réponse.
1. Si la réponse est RS ou RESUME, l'impression reprend au point d'interruption,comme si rien ne s'était passé.
2. Si la réponse est QUIT, la session de mise au point est terminée et le travail entraitement par lots s'arrête prématurément.
3. Si la réponse est IT (ou /), toutes les commandes PCF prévues pour s'exécuter à cepoint sont abandonnées et PCF est relancé au point d'intervention en cours.
4. Si la réponse est DEBUG, toutes les commandes PCF prévues pour s'exécuter à cepoint sont menées à terme et PCF est relancé au point d'intervention en cours.
Aide à la mise au point (PCF)
9-6 47 F2 15UP Rev02
47 F2 15UP Rev02 10-1
10. Appel de PCF en traitement transactionnel
10.1 MISE AU POINT LOCALE
Connecté à une session TDS, l'utilisateur peut appeler PCF au moyen de la commandeTRACE.
Ce mode de mise au point est essentiellement statique car les commandes PCF doiventêtre entrées avant le lancement de la routine TPR et n'offrent ensuite aucune possibilitéd'intéraction avec l'utilisateur.
10.1.1 Appel par TRACE PRINT
Avant de lancer une application TDS, il faut affecter le nom de fichier interne (nfi)DBUGFILE à la bibliothèque devant recevoir les sorties de PCF. A la réception dumessage READY en cours de session TDS, taper :
TRACE PRINT PCF
Le message suivant apparaît :
TERMINAL IN TRACE MODE OUTPUT ON xxxxENTER COMMAND
(Terminal en mode jalonnement. Sorties dans xxxx. Introduire la commande)
xxxx est le nom de l'unité de bibliothèque (dans DBUGFILE) devant recevoir les sortiesde PCF.
Il est maintenant possible d'introduire une commande PCF au clavier. Chaquecommande est suivie du message "ENTER COMMAND" pour indiquer à l'utilisateur qu'ilpeut en introduire une autre. Une fois toutes les commandes introduites, il faut taperEOD (End Of Debugging, fin de mise au point), qui sera suivi du message "READY". Ilest alors possible d'exécuter une nouvelle routine TPR.
Aide à la mise au point (PCF)
10-2 47 F2 15UP Rev02
10.1.2 APPEL PAR TRACE SEND
Il est possible de recevoir les sorties PCF sur imprimante, si le terminal connecté à lasession TDS en comporte une. A la réception du message "READY" en cours de sessionTDS, taper:
TRACE SEND PCF
Le message suivant apparaît:
TERMINAL IN TRACE MODE OUTPUT ON yyyyENTER COMMAND
(Terminal en mode jalonnement. Sorties dans yyyy. Introduire la commande)
yyyy est le nom de l'imprimante associée au terminal. L'utilisateur peut introduire unenouvelle commande PCF après chaque message "ENTER COMMAND". Pour mettre finau jalonnement de la routine TPR, taper "EOD". A la réception du message "READY", ilest possible d'exécuter une nouvelle routine TPR. Si PCF est lancé, ses sorties serontdirigées vers l'imprimante.
Appel de PCF en traitement transactionnel
47 F2 15UP Rev02 10-3
10.2 MISE AU POINT A DISTANCE
Ce mode de mise au point est interactif, les commandes PCF étant appliquées durantl'exécution de la routine TPR de traitement transactionnel. PCF marque une pause àchaque première ligne d'une routine TPR de la transaction et des pausessupplémentaires peuvent être imposées aux endroits souhaités via la commandePAUSE.
10.2.1 Préalables
Les terminaux requis pour la mise au point à distance d'une transaction sont les suivants:
• Un terminal connecté au TDS, pour activer les commandes et écrans de la TPR.
• Un terminal connecté à IOF (avec le même ID utilisateur que celui utilisé pour TDS),pour entrer les commandes PCF.
• Un terminal-X avec multi-fenêtrage exécutant AFFINITY.
10.2.2 Procédure
10.2.2.1 Connexion au terminal IOF
La connexion au terminal IOF doit être établie avant de lancer la transaction, faute dequoi le travail transactionnel de mise au point à distance s'arrêtera prématurément avecle code retour TERNAV.
10.2.2.2 Activation du mode mise au point
Cette activation se fait à partir du terminal TDS en tapant, à la suite du message deguidage "READY" :
TRACE PRINT XPCFLe message ci-après s'affichera sur l'écran TDS :
TERMINAL IN TRACE MODE OUTPUT ON xxxx
10.2.2.3 Activation de la transaction
Entrer le nom de la transaction à mettre au point.
Aide à la mise au point (PCF)
10-4 47 F2 15UP Rev02
Le message ci-après s'affiche sur l'écran IOF :
- - > TX_NOM READY FOR DEBUGGING
TX_NOM est le nom de la transaction spécifié précédemment.
10.2.2.4 Réponse dans le délai imparti
Une fois que la transaction soumise a été déclarée prête à la mise au point, un délaisuffisant (cinq minutes environ) est laissé à l'utilisateur pour mener à bien son activité encours. Si, passé ce délai, l'utilisateur n'a pas envoyé de réponse, la transaction estarrêtée prématurément et le message "Xnnn DEBUGGING TIMEOUT" s'affiche auterminal.
10.2.2.5 Entrée des commandes PCF
Une fois prêt à communiquer avec le programme mis au point, taper :
DEBUG TX=TX_NOM
TX_NOM est le nom de la transaction tel qu'il est apparu dans le premier message denotification de PCF. Dès lors et jusqu'à la fin de la transaction, le terminal de l'utilisateurse consacre à la mise au point de la transaction. Chaque commande PCF peut êtreentrée à la suite du caractère de guidage "D". Les deux premières doivent être :
SM nom-module-partageable;
IN nom-tpr;
10.2.3 Restrictions
La mise au point est soumise aux restrictions suivantes :
• Aucune interruption ne peut être émise.
• Une commande "APPLY SM nom-module-partageable" doit obligatoirement êtreémise avant tout autre commande PCF, pour chaque TPR, même si la même TPR estappelée plusieurs fois dans une transaction. En effet, les commandes PCF appliquéesà une TPR sont perdues en fin d'exécution de la routine à la fin TPR.
• PCF ne peut être activé que par un utilisateur à la fois pour une application TDSdéterminée.
• Les commandes ci-après ne peuvent pas être utilisées :
- BEGIN
- CHECKPOINT
Appel de PCF en traitement transactionnel
47 F2 15UP Rev02 10-5
10.2.4 Exemple de mise au point transactionnelle à distance
Dans cet exemple, les entrées de l'utilisateur apparaissent en gras.
Sur le terminal TDS Sur le terminal IOF
READYTRACE PRINT XPCFTERMINAL IN TRACE OUTPUT ON xxxxMYTX
---> MYTX READY FOR DEBUGGINGS: DEBUG TX = MYTX;>>> 15:30 DEBUG 100.00((( PCT AT LN 1 ILN 1 IN MY_TPR1.... PCF AT BEGINNING OF MY_TPR1 INMYTX.... 80 D: A SM SMTPR;... 90 D: A IN MYTPR1;... 100 D: p at In 22;... 110 D: go;)))((( PCT AT LN 22 ILN 20 IN MY_TPR1.... 80 D: A SM SMTPR;... 90 D: A IN MYTPR1;... 100 D: d stat;... STAT " "... 110 D: go;)))((( PCT AT LN 1 ILN 1 IN MY_TPR1.... PCF AT BEGINNING OF MY_TPR1 INMYTX.... 80 D: A SM SMTPR;... 90 D: A IN MYTPR2;... 100 D: ...;... 110 D:...;... 120 D: go;)))>>> 15:40>>> 15:40
Aide à la mise au point (PCF)
10-6 47 F2 15UP Rev02
47 F2 15UP Rev02 11-1
11. Mise au point de programmes COBOL
Ce chapitre traite exclusivement des caractéristiques de PCF relatives à la mise au pointde programmes COBOL.
11.1 TYPES DE VARIABLES
Les différents types de variables COBOL sont :
• booléen (BIT PIC 1...)• booléen (BIT DISPLAY PIC 1...)• entiers demi-mot (COMP-1)• entiers mot (COMP-2)• nombres réels en simple précision (COMP-9)• nombres réels en double précision (COMP-10)• nombres réels en quadruple précision (COMP-15)• nombres en décimal condensé signés (COMP-3 ou COMP-8 PIC S99..)• nombres en décimal condensé non signés (COMP3 ou COMP-8 PIC 99..)• nombres en décimal éclaté avec signe séparé à gauche (DISPLAY PIC S99..
LEADING SEPARATE)• nombres en décimal éclaté avec signe séparé à droite (DISPLAY PIC S99.. TRAILING
SEPARATE)• nombres en décimal éclaté avec signe superposé à gauche (DISPLAY PIC S99..
LEADING)• nombres en décimal éclaté avec signe superposé à droite (DISPLAY PIC S99..
TRAILING)• nombres en décimal éclaté non signés (DISPLAY PIC 99..)• nombres ASCII en décimal condensé signés (COMP-5)• nombres en virgule flottante en décimal éclaté non signés.
Tous les autres types de données sont considérés comme des chaînes de caractères. Anoter que COMP équivaut à COMP-3, sauf si le format a été modifié en DEFAULTSECTION de la CONTROL DIVISION.
Aide à la mise au point (PCF)
11-2 47 F2 15UP Rev02
Les variables peuvent être des variables scalaires simples ou des agrégats (groupes ouarticles) pouvant comporter jusqu'à trois clauses OCCURS emboîtées. Les limites d'uneclause OCCURS peuvent être soit fixes, soit variables (DEPENDING ON), ce qui permetla définition de tables de dimension variable.
Il existe trois modes d'affectation mémoire:
• statique (variables "normales")• externe (avec clause EXTERNAL)• par paramètres (définis en LINKAGE SECTION)
Les noms utilisés dans les groupes et les articles peuvent être qualifiés, afin d'évitertoute ambiguïté. Les noms qualifiés sont cités en PCF sous leur nom COBOL, avec lesmêmes règles de qualification.
Exemple :
GHI IN DEF IN ABC
Remarque : IN et OF s'utilisent indifféremment comme conjonction pour desnoms qualifiés.
PCF peut accéder à tous ces types de variables de forme symbolique en faisantsimplement référence au nom qu'elles portent dans le programme origine (voirconventions au Chapitre 3).
Mise au point de programmes COBOL
47 F2 15UP Rev02 11-3
11.2 LITTERAUX
Tous les littéraux COBOL sont autorisés en PCF pour modifier la valeur d'une variable(CHANGE) ou effectuer des comparaisons (clause IF). Exemples :
• entiers sous forme de nombres en décimal éventuellement signés : 10 +20 -20
• nombres fractionnaires décimaux en virgule fixe : 10.20 -0.70 172.321
• chaînes de caractères sous forme de série de caractères entre guillemets :
"CECI EST UN EXEMPLE DE CHAINE DE LITTERAL"
"""BONJOUR"""
Aide à la mise au point (PCF)
11-4 47 F2 15UP Rev02
11.3 REFERENCE AUX INSTRUCTIONS
Les instructions COBOL peuvent être désignées par :
• un nom de paragraphe ou de section, ou
• un numéro de ligne
Les noms de section et de paragraphes COBOL sont une combinaison de lettres, chiffreset traits d'union. Ils sont désignés de la même façon en PCF.
Exemple :
DUMP PR AT PARAG-1, SECT-1;
Cette commande demande l'affichage de la variable PR chaque fois que le traitementatteint un début de paragraphe ou de section portant l'étiquette PARAG-1 ou SECT-1.
Les numéros de ligne internes COBOL figurent sur la liste de compilation (voir en 11.4.2)sous l'en-tête ILN de la première colonne et les numéros de ligne externes sous l'en-têteXLN de la deuxième colonne (voir en 11.4.2). Les numéros de ligne externes peuventprendre trois formes:
• les numéros de lignes d'origine apparaissent sous la forme de nombres en décimal etpeuvent être cités tels quels.
• les lignes ayant été insérées par l'éditeur de textes ou modifiées par l'instructionALTER sont précédées d'un point. Elles doivent être désignées comme suit :
n1.n2
n1 est le numéro de la ligne d'origine précédant immédiatement celle à laquelle il estfait référence, et n2 le numéro de la ligne désignée (précédée d'un point sur la liste;n2 est égal à zéro si le point figure seul sur la ligne).
• les lignes copiées à l'aide de l'instruction COPY sont précédées de deux points. Ellesdoivent être désignées comme suit:
n1..n3
n1 est le numéro de la ligne d'origine précédant immédiatement celle à laquelle il estfait référence, et n3 le numéro de la ligne désignée (précédée de deux points sur laliste). Si la ligne précédant le texte copié a été modifiée par l'éditeur de textes, laréférence se présente de la façon suivante:
n1.n2.n3
n1.n2 identifie la ligne précédant le texte copié et n3 est le numéro de la lignedésignée.
L'exemple de session de mise au point (voir en 11.4) comporte des références. Il estpossible par ailleurs de citer une instruction figurant sur une ligne comprenant plusieursinstructions en spécifiant son rang précédé d'un astérisque, juste après le numéro deligne.
Mise au point de programmes COBOL
47 F2 15UP Rev02 11-5
Exemples :
LINE 100*2
LN 1000.30*3
LINE 120..20*2
LN 130.10.30*4
Lorsqu'aucun rang n'est indiqué, la première instruction de la ligne est implicite.
11.4 EXEMPLE DE SESSION DE MISE AU POINT COBOL
Les paragraphes 11.4.1 à 11.4.3 illustrent un exemple de session de mise au pointCOBOL. Le programme origine est listé tel qu'il apparaît sur le compte rendu decompilation (11.4.2), avec les commandes PCF utilisées (11.4.1) et les résultats de lasession (11.4.3).
Les commandes utilisées sont les suivantes :
• Une commande APPLY spécifiant à quel programme s'appliquent les commandes quisuivent. Elle peut être omise, si le module chargeable ne comprend qu'un seulprogramme,
• Une commande TRACE avec option MAP (commande 1) demandant la générationd'une table de toutes les étiquettes avec le nombre de fois où elles ont été détectés,
• Une commande DUMP (commande 2) demandant l'affichage de l'élément COST(coût) du groupe STRUC à la ligne 20 du texte inséré par l'instruction COPY qui suit laligne 170,
• Une commande DUMP (commande 3) demandant l'affichage des éléments COST etRATE (taux) et lorsque le traitement atteint la deuxième instruction de la ligne 210,
• Une commande CHANGE (commande 4) demandant la modification de la variableRATE lorsque le traitement atteint la ligne 210,
• Une commande DUMP (commande 5) demandant l'affichage de la variable TITRElorsque le traitement atteint le paragraphe FIN.
Aide à la mise au point (PCF)
11-6 47 F2 15UP Rev02
11.4.1 Exemple de commandes PCF de mise au point d'un programmeCOBOL
+--------------------------------------------------------------+| || APPLY IN PROCCOB; || 1 TRACE MAP AT ALL-LABELS; || 2 DUMP COST IN STRUC AT || ILN 20; || 3 DUMP COST,RATE AT LINE 210*2; || 4 CHANGE RATE=0.32 AT LINE 210; || 5 DUMP TITRE AT FIN; || |+--------------------------------------------------------------+
11.4.2 Exemple de liste de programme COBOL
+--------------------------------------------------------------+| || 1 10 IDENTIFICATION DIVISION. || 2 20 PROGRAM-ID. PROCCOB || 3 30 ENVIRONMENT DIVISION. || 4 40 CONFIGURATION SECTION || 5 50 SOURCE-COMPUTER. LEVEL-64. || 6 60 OBJECT-COMPUTER. LEVEL-64. || 7 70 DATA DIVISION. || 8 80 WORKING-STORAGE SECTION. || 9 90 01 STRUC. || 10 100 02 PRICE PIC 9(6)V99. || 11 110 02 COST PIC S9(6)V99. || 12 120 02 RATE PIC 99999V99 USAGE IS COMP-3.|| 13 130 02 NEWPRICE PIC **99999V99. || 14 140 02 POURC PIC S9(5)V99 USAGE IS COMP-3.|| 15 150 01 TITRE PIC X(8). || 16 160 PROCEDURE DIVISION. || 17 170 DEBUT. || 18 . . COPY INC1. || 19 ..10 MOVE 18.4 TO COST. || 20 ..20 MOVE "PCF-TEST" TO TITRE. || 21 190 COPY INC2. || 22 ..10 MOVE 0.75 TO RATE. || 23 . COMPUTE PRICE = COST * RATE. || 24 210 ADD 1 TO PRICE. ADD 2 TO COST. MOVE PRICE TO|| NEWPRICE. || 25 220 MULTIPLY RATE BY 100 GIVING POURC. || 26 230 FIN. || 27 240 STOP RUN. |+--------------------------------------------------------------+
Mise au point de programmes COBOL
47 F2 15UP Rev02 11-7
Les résultats (en 11.4.3) apparaissent dans l'ordre d'exécution des commandes, soit :
commande 2commande 4commande 3commande 5
et, en dernier, ceux de la commande 1, du fait de sa nature (commande POST-MORTEM), les statistiques d'utilisation des paragraphes et sections ne pouvant s'afficherqu'après la fin du programme.
Chaque fois qu'un point d'intervention est atteint, le nom de section ou de paragraphe(s'il y en a un) s'affiche avec le numéro de ligne correspondant. Puis viennent lesnuméros des commandes applicables, avec le verbe et les résultats et/ou opérationseffectuées.
Aide à la mise au point (PCF)
11-8 47 F2 15UP Rev02
11.4.3 Exemple de compte rendu d'exécution de PCF pour un programmeCOBOL
******************************************************************************************************************************************** GCOS7 ******** P C F ( D E B U G ) ******** VERSION: 90.00 DATED: SEP 01, 1989 *********DOC_COBOL_RES*"*************************************************************************"******************************************
(((PCF AT PROCCOB(-32) LINE 10 ILN 1 IN PROCCOB...PCF AT BEGINNING OF MAIN PROCEDURE....100 APPLY IN PROCCOB;... * APPLY IN PROCCOB , COMPILE UNIT COBOL1.58, CREATED ON 15:11:24... MAR 29, 1991$ DATA BASE O0 8.10.006C ....1 1 TRACE MAP AT ALL-LABELS;...2 2 DUMP COST IN STRUC AT ILN 20;...3 3 DUMP COST, RATE AT LINE 210*2;...4 4 CHANGE RATE=0.32 AT LINE 210;...5 5 DUMP TITRE AT FIN;)))(((PCF AT * LINE 170.10.20 ILN 20 IN PROCCOB...2 DUMP... COST +000018.40)))(((PCF AT * LINE 210 ILN 24 IN PROCCOB...4 CHANGE... RATE 00000.32 (00000.75 ))))(((PCF AT * LINE 210*2 ILN 24 IN PROCCOB...3 DUMP... COST +000018.40... RATE 00000.32)))(((PCF AT FIN LINE 230 ILN 26 IN PROCCGB...5 DUMP... TITRE "PCF-TEST")))(((PCF AT POST MORTEM....1 TRACE... 1 DEBUT LINE 170 ILN 17 IN PROCCOB... 1 FIN LINE 230 ILN 26 IN PROCCOB)))
47 F2 15UP Rev02 12-1
12. Mise au point de programmes FORTRAN
Ce chapitre traite exclusivement des caractéristiques de PCF relatives à la mise au pointde programmes FORTRAN.
12.1 TYPES DE VARIABLES
Les différents types de variables FORTRAN sont :
• entiers mot (INTEGER)
• nombres réels en simple précision (REAL)
• nombres réels en double précision (DOUBLE PRECISION)
• nombres réels en quadruple précision (QUADRUPLE PRECISION)
• nombres complexes en simple précision (COMPLEX)
• nombres complexes en double précision (COMPLEX DOUBLE PRECISION)
• chaînes de caractères (CHARACTER)
• valeurs logiques (LOGICAL)
Les variables peuvent être des variables scalaires simples ou des agrégats (tableaux).Les tableaux peuvent avoir une à sept dimensions. Lorsqu'un tableau est utilisé commeparamètre de sous-programme ou de fonction, ses dimensions peuvent être variables(définies à l'aide d'une variable). Dans tous les autres cas, elles sont fixes.
Il existe trois modes d'affectation mémoire :
• statique (variables "normales"),
• COMMON,
• par paramètres dans des fonctions ou sous-programmes.
PCF peut accéder à tous ces types de variables de forme symbolique en faisantsimplement référence au nom qu'elles portent dans le programme origine (voirconventions au chapitre 3).
Aide à la mise au point (PCF)
12-2 47 F2 15UP Rev02
12.2 CONSTANTES
Toutes les constantes FORTRAN sont autorisées en PCF pour modifier la valeur d'unevariable (CHANGE) ou effectuer des comparaisons (clauses IF). Exemples :
• entiers sous forme de nombres en décimal éventuellement signés :
10 +2 -999
• nombres réels en virgule fixe ou flottante :
+17.3 -1.2E-4 6.2D8 -7.345678Q-12
• nombres complexes sous forme de deux nombres réels ou entiers séparés par unevirgule, le tout entre parenthèses :
(17.2, 21.3) (1.6E27,1.7E-12) (-6.2,0)
• chaînes de caractères sous forme de série de caractères entre guillemets :
"CECI EST UNE CHAINE" """BONJOUR"""
(A noter que la notation Hollerith FORTRAN n'est pas autorisée en PCF et que lesapostrophes doivent être remplacées par des guillemets.)
• constantes logiques exprimées par les lettres T et F entre deux points :
.T. .F.
Mise au point de programmes FORTRAN
47 F2 15UP Rev02 12-3
12.3 REFERENCE AUX INSTRUCTIONS
Les instructions FORTRAN peuvent être désignées par:
• une étiquette ou
• un numéro de ligne
Les étiquettes FORTRAN sont numériques et désignées sous cette forme en PCF.
Exemple :
DUMP P AT 100, 200, 9999;
Cette commande demande l'affichage de la variable P chaque fois que le traitementatteint le début d'une instruction portant l'étiquette 100, 200 ou 9999.
Les numéros de ligne internes FORTRAN figurent en première colonne de la liste decompilation (voir en 12.4.1), et les numéros de ligne externes en deuxième colonne (voiren 12.4.1). Les numéros de ligne externes peuvent prendre l'une des formes suivantes :
• Les numéros de lignes d'origine apparaissent sous forme de nombres en décimal etpeuvent être cités tels quels,
• Les lignes ayant été insérées par l'éditeur de textes sont précédées d'un point. Ellessont désignées comme suit :
n1.n2
n1 est le numéro de la ligne d'origine précédant immédiatement celle à laquelle il estfait référence et n2 le numéro de la ligne désignée (précédée d'un point sur la liste).
L'exemple de session de mise au point au paragraphe suivant comporte des références.Il est possible par ailleurs de citer une instruction figurant sur une ligne comprenantplusieurs instructions en spécifiant son rang précédé d'un astérisque, juste après lenuméro de ligne.
Exemples :
LINE 1020*2
LN 1100.0*3
Lorsqu'aucun rang n'est indiqué, la première instruction de la ligne est implicite.
Aide à la mise au point (PCF)
12-4 47 F2 15UP Rev02
12.4 EXEMPLE DE SESSION DE MISE AU POINT FORTRAN
Les paragraphes 12.4.1 à 12.4.3 illustrent un exemple de session de mise au pointFORTRAN. Le programme origine est listé tel qu'il apparaît dans le compte rendu decompilation, (en 12.4.1), avec les commandes PCF utilisées (en 12.4.2) et les résultatsde la session (en 12.4.3).
Les commandes utilisées sont les suivantes :
• une commande APPLY spécifiant à quelle procédure s'appliquent les commandes quisuivent. Elle peut être omise, si le programme ne comprend qu'une seule procédure,
• une commande TRACE avec option MAP (commande 1) demandant la générationd'une table de toutes les étiquettes avec leur nombre d'occurrences,
• une commande DUMP (commande 2) demandant l'affichage de la variable R lorsquele traitement atteint l'étiquette 10,
• une commande DUMP (commande 3) demandant l'affichage de la variable C lorsquele traitement atteint la ligne 130,
• une commande CHANGE (commande 4) demandant la modification de la valeur de lavariable Q lorsque le traitement atteint l'étiquette 10. La nouvelle valeur affectée à Qest 10.0,
• une commande DUMP (commande 5) demandant l'affichage des variables C, R, Q etCH lorsque le traitement atteint la ligne 140,
• une commande DUMP (commande 6) demandant l'affichage d'un sous-ensemble dutableau INT lorsque le traitement atteint la ligne éditée juste après la ligne 200,
• enfin, une commande DUMP (commande 7) demandant l'affichage de la variable Clorsque le traitement atteint la deuxième instruction de la ligne 120.
Mise au point de programmes FORTRAN
47 F2 15UP Rev02 12-5
12.4.1 Exemple de liste de programme FORTRAN
+--------------------------------------------------------------+| || 1 10 PROGRAM MYPROC || 2 20 LOGICAL L || 3 30 REAL R || 4 40 QUADRUPLE PRECISION Q || 5 50 COMPLEX DOUBLE PRECISION C || 6 60 CHARACTER*16 CH || 7 70 DIMENSION INT(2,2,2) || 8 80 L=.TRUE. || 9 90 R=1.7 || 10 100 Q=R || 11 110 10 C=(1.62D4,18.4D-5) || 12 120 C=C+C; C=C+C || 13 130 CH="THIS IS A STRING" || 14 140 GOTO 13 || 15 150 C NEVER REACHED || 16 160 11 C=C-C || 17 170 13 DO 14 I=1,2 || 18 180 DO 14 J=1,2 || 19 190 DO 14 K=1,2 || 20 200 14 INT(I,J,K)=I+2*J+4*K || 21 . 0 STOP || 22 220 END || |+--------------------------------------------------------------+
Aide à la mise au point (PCF)
12-6 47 F2 15UP Rev02
12.4.2 Exemple de commandes PCF de mise au point d'un programmeFORTRAN
+--------------------------------------------------------------+| || APPLY IN MYPROC; || 1 TRACE MAP AT ALL-LABELS; || 2 DUMP R AT 10; || 3 DUMP C AT LINE 130; || 4 CHANGE Q = 10.0 AT 10; || 5 DUMP C, R, Q, CH AT LN 140; || 6 DUMP INT(1,1:2,2) AT LINE 200.0; || 7 DUMP C AT LINE 120*2; || |+--------------------------------------------------------------+
Les résultats (voir en 12.4.3) apparaissent dans l'ordre d'exécution des commandes, soit:
commande 2commande 4commande 7commande 3commande 5commande 6
et, en dernier, ceux de la commande 1 du fait de sa nature (commande POST-MORTEM), les statistiques d'utilisation des paragraphes et sections ne pouvant s'afficherqu'après la fin du programme.
Chaque fois qu'un point d'intervention est atteint, l'étiquette (s'il y en a une) s'afficheavec le numéro de ligne correspondant. Puis viennent les numéros des commandesavec le verbe et les résultats et/ou opérations effectuées.
Mise au point de programmes FORTRAN
47 F2 15UP Rev02 12-7
12.4.3 Exemple de compte rendu d'exécution de PCF pour un programmeFORTRAN
*********************************************************"*****************************************************"****************************** GCOS7 ******** P C F ( D E B U G ) *******" VERSION: 90.00 DATED: SEP 01, 1989 *********DOC_FORTRAN_RES**********************************************************************************************************************(((PCF AT MYPROC(-8) LINE 80 ILN 8 IN MYPROC...PCF AT BEGINNING OF MAIN PROCEDURE....100 APPLY IN MYPROC;... * APPLY IN MYPROC, COMPILE UNIT FORTRAN74.22, CREATED ON 17:29:24... MAR 29, 1991, DATA BASE P7 8.10.0068 ....1 1 TRACE MAP AT ALL-LABELS;...2 2 DUMP R AT 10;...3 3 DUMP C AT LINE 130;...4 4 CHANGE Q=10.0 AT 10;...5 5 DUMP C, R, Q, CH AT LN 140;...6 6 DUMP INT(1,1:2,2) AT LINE 200.0...7 7 DUMP C AT LINE 120*2;)))(((PCF AT 10 LINE 110 ILN 11 IN MYPROC...2 DUMP... R +1.699999E+ 0...4 CHANGE... Q +1.000000000000000000000000000000000Q+ 1... (+1.69999900926513671875000000000000Q+ 0 ))))(((PCF AT * LINE 120*2 ILN 12 IN MYPROC...7 DUMP... C (+3.2400000000000000D+ 4 ,+3.679999999999999D- 4 ))))(((PCF AT * LINE 130 ILN 13 IN MYPROC...3 DUMP... C (+6.4800000000000000D+ 4 ,+7.359999999999990D- 4 ))))(((PCF AT * LINE 140 IDN 14 IN MYPROC...5 DUMP... C (+6.4800000000000000D+ 4 ,+7.359999999999998D- 4 )... R +1.699999E+ 0... Q +1.000000000000000000000000000000000Q+ 1... CH "THIS IS A STRING")))(((PCF AT * LINE 200.0 ILN 21 IN MYPROC...6 DUMP... INT(1,1,2)... 11... INT(1,2,2)... 13)))@((PCF AT POST MORTEM....1 TRACE... 1 10 LINE 110 ILN 11 IN MYPROC... 0 11 LINE 160 ILN 16 IN MYPROC... 1 13 LINE 170 ILN 17 IN MYPROC... 8 14 LINE 200 ILN 20 IN MYPROC)))
Aide à la mise au point (PCF)
12-8 47 F2 15UP Rev02
47 F2 15UP Rev02 13-1
13. Mise au point de programmes GPL
Ce chapitre traite exclusivement des caractéristiques de PCF relatives à la mise au pointde programmes GPL.
13.1 TYPES DE VARIABLES
Les différents types de variables GPL sont :
• entiers demi-mot (FIXED BIN (15))
• entiers mot (FIXED BIN (31))
• chaînes de caractères (CHARACTER (n), CHAR(n))
• chaînes de bits (BIT(n))
• pointeurs (POINTER, PTR)
• entrées (ENTRY)
• valeurs binaires logiques (LOGBIN(n))
Les variables peuvent être des variables scalaires simples ou des agrégatscorrespondant à des structures plus complexes. Les agrégats peuvent contenir desdéfinitions de tableaux. Les tableaux sont unidimensionnels et peuvent être à limitesvariables (définies par une expression calculée à l'entrée dans le bloc où le tableau estdéclaré). L'utilisateur peut définir les limites supérieures et inférieures d'un tableau.
Il existe quatre modes d'affectation mémoire ou classes mémoire:
• statique avec champ d'application interne ou externe (STATIC, CONSTANT),• automatique (AUTOMATIC),• par paramètres (dans une instruction PROC),• basée (BASED).
Les noms utilisés dans les structures peuvent être qualifiés, afin d'éviter toute ambiguïté.Les noms qualifiés sont cités en PCF sous leur nom GPL, avec les mêmes règles dequalification.
Exemple :
ABC.DEF.GHI
Aide à la mise au point (PCF)
13-2 47 F2 15UP Rev02
PCF peut accéder à tous ces types de variables de forme symbolique en faisantsimplement référence au nom qu'elles portent dans le programme origine (voirconventions au chapitre 3).
13.2 CONSTANTES
Toutes les constantes GPL sont autorisées en PCF pour modifier la valeur d'une variable(CHANGE) ou effectuer des comparaisons (clauses IF).
Exemples :
• entiers sous forme de nombres en décimal éventuellement signés :
10 -12 +30
• chaînes de caractères sous forme de série de caractères entre guillemets :
"CECI EST UN LITTERAL" """BONJOUR"""
• chaînes de bits sous forme de série de bits entre guillemets, suivie de la lettre B, oubien de série de caractères hexadécimaux entre guillemets, suivie de la lettre X ou H :
"01010011"B "FFF"X "F2"H
En plus de ces constantes, il existe une fonction PCF permettant de définir desconstantes pointeur ou entrée. La syntaxe d'une constante de ce type est la suivante :
{ [/DIRECT] } {[/R0]} { [/DT] } {[/R1]} { } { } /stn.ste.sra { [/INDIRECT] } {[/R2]} { [/IT] } {[/R3]}
DIRECT ou DT indique un pointeur direct, INDIRECT ou IT un pointeur indirect. Lepointeur implicite est DIRECT. R0, R1, R2 ou R3 sont des indicateurs d'anneaux,l'indicateur implicite étant R3.
stn, ste et sra indiquent une adresse segmentée de mémoire virtuelle.
Exemples :
/8.12.3FF/R2/8.16.42/IT/9.7.372/DT/R3/8.12.0
13.3 NOTION DE BLOC
Un bloc commence par une instruction PROC ou par une instruction BEGIN et setermine par une instruction END. Les noms doivent être uniques à l'intérieur d'un bloc.Toutefois, dans un programme GPL, même s'ils sont correctement qualifiés, ils peuvent
Mise au point de programmes GPL
47 F2 15UP Rev02 13-3
ne pas être uniques dans un programme. Par conséquent, PCF a besoin d'informationscomplémentaires sur les variables citées dans une série de commandes. Un paramètrede la commande APPLY permet de qualifier le nom de procédure à l'aide du nom d'unou plusieurs blocs :
nom-procédure . nom-bloc [. nom-bloc]...
Lorsque les blocs de début (BEGIN) ne portent pas d'étiquette, le numéro de la lignecontenant l'instruction BEGIN voulue peut remplacer la série de noms de blocqualificateurs.
Exemples :
APPLY IN MAIN.INNER.INNERMOST;
APPLY IN MAIN.LINE 1234;
Toutes les étiquettes ou variables citées dans une commande s'appliquant à un bloc sontd'abord recherchées à l'intérieur du champ d'application de ce bloc (champ d'applicationétant pris dans son sens GPL normal). En cas d'échec, elles sont recherchées dans lesautres blocs du programme. La recherche échoue lorsqu'aucune variable n'a été trouvéeou que le résultat est douteux. Ces cas sont signalés par des messages d'erreur oud'avertissement.
Toutes les commandes s'appliquant à un bloc peuvent uniquement faire référence à desnoms d'étiquettes ou de variables dont le champ inclut ce bloc. Toute tentative pour faireréférence à une variable dont le champ ne couvre pas le bloc indiqué dans la commandeAPPLY donne lieu à un diagnostic, comme si la variable était non définie ou inconnue.
Aide à la mise au point (PCF)
13-4 47 F2 15UP Rev02
13.4 REFERENCE AUX INSTRUCTIONS
Les instructions GPL peuvent être désignées par:
• une étiquette, ou
• un numéro de ligne
Les noms d'étiquette sont une combinaison de lettres, chiffres et caractères soulignés. Ilssont désignés sous cette forme en PCF.
Exemple :
DUMP P.X(2) AT L1,L2;
demande l'affichage du second élément de P.X chaque fois que le programme atteint L1ou L2.
Les numéros de lignes internes GPL figurent en deuxième colonne de la liste decompilation (voir en 13.6.2) et les numéros de ligne externes en première colonne (voiren 13.6.2). Les numéros de lignes externes peuvent avoir une des formes suivantes:
• les numéros de lignes d'origine apparaissent sous forme de nombres en décimal etpeuvent être cités tels quels.
• les lignes ayant été insérées par l'éditeur de textes sont précédées d'un point. Ellesdoivent être désignées comme suit:
n1.n2
n1 est le numéro de la ligne d'origine précédant immédiatement celle à laquelle il estfait référence et n2 le numéro de la ligne désignée (précédée d'un point dans la liste).
Mise au point de programmes GPL
47 F2 15UP Rev02 13-5
13.5 VARIABLES BASEES
En GPL, il existe le concept de variables "basées". Une déclaration de variable basée neréserve pas de place à proprement parler, mais définit plus exactement une structure dedonnées pouvant être implantées à diverses adresses mémoire. L'association d'uneadresse mémoire à une variable basée est effectuée au moyen d'un pointeur. Pour PCF,il existe deux types de variables basées :
• celles auxquelles une variable pointeur est explicitement associée lors de ladéclaration :
DCL PQ BASED(P)...
• celles auxquelles aucune variable pointeur n'est explicitement associée ou cellesassociées à une expression pointeur:
DCL Z BASED...
DCL W BASED (ADDR(PX))...
Il est possible de citer le premier type de variable basée sans pointeur explicite (PQsignifiant P -> PQ) ou avec pointeur (Q -> PQ ou H -> HQ -> PQ). Pour le second type,toutes les références PCF doivent avoir un pointeur explicite (P -> Z, P -> Q -> W sontdes références correctes, tandis que Z ou W ne le sont pas). PCF est en effet en mesurede mémoriser une base implicite associée à une variable basée, à condition que cettebase soit une variable GPL simple. Il est également possible de faire référence à unevariable non basée par l'intermédiaire d'une variable ou d'une constante pointeur enprenant soin, si nécessaire, de protéger le nom de la variable pour éviter toute confusionavec un déplacement en hexadécimal.
Exemples :
DCL ABC CHAR(10);
DCL Q PTR;
DCL STR FB15;
en PCF:
Q -> STR
/18.10.2A4 -> 'ABC'
Aide à la mise au point (PCF)
13-6 47 F2 15UP Rev02
13.6 EXEMPLE DE SESSION DE MISE AU POINT
Les paragraphes 13.6.1 à 13.6.3 illustrent un exemple de session de mise au point GPL.Le programme origine est listé tel qu'il apparaît sur le compte rendu de compilation(figure 13.6.2), avec les commandes PCF utilisées (figure 13.6.1) et les résultats de lasession (figure 13.6.3).
Les commandes utilisées sont les suivantes :
• une première commande APPLY spécifiant que les commandes qui suivents'appliquent à la procédure P,
• une commande DUMP (commande 1) demandant l'affichage de la variable CH100lorsque le traitement atteint la ligne 130,
• une commande DUMP (commande 2) demandant l'affichage de la variable I lorsquele traitement atteint l'étiquette L,
• une seconde commande APPLY spécifiant que les commandes qui suivents'appliquent au bloc portant l'étiquette R (procédure interne) de la procédure P,
• une commande DUMP (commande 3) demandant l'affichage de la variable I lorsquele traitement atteint la ligne 270,
• une commande CHANGE (commande 4) demandant l'affectation d'une nouvellevaleur au premier élément du tableau caractères T lorsque le traitement atteint laligne 270.
13.6.1 Exemple de commandes PCF de mise au point d'un programme GPL
+--------------------------------------------------------------+| || APPLY IN P; || 1 DUMP CH100 AT LINE 130; || 2 DUMP I AT L; || APPLY IN P.R; || 3 DUMP I AT 270; || 4 CHANGE T(O)="*" AT LN 270; || |+--------------------------------------------------------------+
Les résultats (voir en 13.6.3) apparaissent dans l'ordre d'exécution des commandes, soit:
commande 2commande 1commande 3commande 4
Chaque fois qu'un point d'intervention est atteint, l'étiquette (s'il y en a une) est affichéeavec le numéro de ligne correspondant. Puis viennent les numéros des commandes,avec le verbe et les résultats, et/ou opérations effectuées.
Mise au point de programmes GPL
47 F2 15UP Rev02 13-7
13.6.2 Exemple de liste de programme GPL
+--------------------------------------------------------------+| || SOURCE || || 10 1 P: PROC; || 20 2 DCL' I FIXED BIN (15); || 30 3 I = 0; || 40 4 L:; || 50 5 DCL' T (0:10) CHAR (12); || 60 6 DCL' CH13 CHAR (13); || 70 7 DCL' CH10 CHAR (10); || 80 8 DCL' 1 S13, || 90 9 2 C CHAR (13); || 100 10 DCL' 1 S10, || 110 11 2 C CHAR (10); || 120 12 CH13 = " "; || 130 13 CH10 = " "; || .0000 14 S13.C = " "; || 150 15 S10.C = " "; || 160 16 CALL R (CH13, CH10, S13, S10); || 170 17 R: PROC (CH13, CH10, S13, S10); || 180 18 DCL' CH13 CHAR (13) ; || 190 19 DCL' CH10 CHAR (10); || 200 20 DCL' 1 S13, || 210 21 2 C CHAR (13); || 220 22 DCL' 1 S10, || 230 23 2 C CHAR (10); || 240 24 DO I = 0 TO 10; || 250 25 T (I) = " "; || 260 26 END; || 270 27 END; || 280 28 END; || |+--------------------------------------------------------------+
Aide à la mise au point (PCF)
13-8 47 F2 15UP Rev02
13.6.3 Exemple de compte rendu d'exécution de PCF pour un programmeGPL
***"****************************************************************************************************************************************** GCOS7 ******** P C F ( D E B U G ) ******** VERSION: 90.00 DATED: SEP 01, 1989 *********DOC_GPL_RES************************************************************"*************************************************************
(((PCF AT P LINE 10 ILN 1 IN P...PCF AT BEGINNING OF MAIN PROCEDURE....100 APPLY IN P;... * APPLY IN P , COMPILE UNIT GPL81.0, CREATED ON 18:04:48... MAR 29, 1991, DATA BASE P7 8.10.001D ....1 1 DUMP CH100 AT LINE 140;...2 2 DUMP I AT L;...100 APPLY IN P.R;... * APPLY IN P , COMPILE UNIT GPL81.0, CREATED ON 18:04:48... MAR 29, 1991, DATA BASE P7 8.10.001D ....4 4 DUMP I AT LN 270;...5 5 CHANGE T(0)="*" AT LN 270;...6 6 TRACE MAP AT ALL-LABELS;)))(((PCF AT L LINE 120 ILN 12 IN P...2 DUMP... I 0)))(((PCF AT * LINE 140 ILN 14 IN P...1 DUMP...1 CH100 "")))(((PCF AT * LINE 270 ILN 27 IN P...4 DUMP... I 11...5 CHANGE... T(0) 0 "* " ( " " )... 20 " " ( " " )... 40 ===============================================)))(((PCF AT POST MORTEM....6 TRACE... 1 L LINE 120 ILN 12 IN P... 1 R LINE 240 ILN 24 IN P)))
47 F2 15UP Rev02 14-1
14. Mise au point en adressage effectif
La méthode de mise au point en adressage effectif s'utilise pour des programmesCOBOL, FORTRAN, GPL et C compilés sans l'option DEBUG. Dans ce cas, aucunetable de références origine n'ayant été générée dans le programme résultant, l'utilisateurdoit spécifier les adresses réelles des éléments des clauses "Quoi" et "Quand" descommandes PCF. Pour ce faire, il doit avoir conservé les listes suivantes :
• liste de compilation des programmes, chacun devant avoir été compilé avec l'optionMAP,
• compte rendu d'édition de liens du programme.
Ce chapitre explique comment utiliser ces deux types de listes pour obtenir l'adresseréelle des objets du programme origine et fournit des informations supplémentaires surle format et la signification des adresses effectives.
14.1 RELEVES D'IMPLANTATION DES OBJETS DE PROGRAMME
L'option MAP permet d'obtenir les relevés d'implantation des objets du programmeorigine lors de la compilation. Ces relevés varient légèrement d'un langage à un autre etsont décrits plus loin en détail. On distingue :
• le relevé de données fournissant l'adresse des variables, et• le relevé d'instructions fournissant l'adresse des instructions origine.
Les adresses peuvent être spécifiées de deux façons :
• par des références de données PCF correctes en adressage effectif,• en utilisant la notation "ISN:offset".
Aide à la mise au point (PCF)
14-2 47 F2 15UP Rev02
14.1.1 Relevé de données et d'instructions COBOL
COBOL-85 01.68-10 X219.8 DUPONT COBL COBL--V6 15.11.24 MAR 29, 1991 PAGE 4
PROCCOB PROGRAM-NAME 10 NOREF SEPARATELY-COMPILED
01 STRUC 1:000058 GROUP X(33) 90 NOREF02 PRICE(+ 0) 1:000058 DISPLAY 9(6)V99 100 190.0* 210+*02 COST(+ 8) 1:000060 DISPLAY S9(6)V99 110 170.0.10* 190.0 210*02 RATE(+ 16) 1:000060 COMP-3 9(5)V99 120 190..10* 190.0 22002 NEWPRICE(+ 20) 1:00006C DISPLAY NUM-EDT(9) 130 210*02 POURC(+ 29) 1:000075 COMP-3 S9(5)V99 140 220*
01 TITRE 1:000079 DISPLAY X(8) 150 170.0.20*
DEBUT PARAGRAPH-NAME 170 NOREF FIN PARAGRAPH-NAME 230 NOREF3:00034 170.0.10 3:0003C .0.20 3:00044 190..10 3:00056 .0 3:00086 2103:0008E 210 3:00096 210 3:000A6 220 3:000CE 240
14.1.2 Relevé de données et d'instructions FORTRAN
FOR77 74.22 X22.5 IOF DUPONT FORT FORT--V6 17.30.03 MAR 29, 1991 PAGE 3
10 ISN 0.94 LITERAL_CST LABEL 1111 ISN 0.D0 LITERAL_CST LABEL 1613 ISN 0.D8 LITERAL_CST LABEL 14 1714 ISN 0.FA LITERAL_CST LABEL 17 18 19 20C ?BR1.1C NO_SAVE VARIABLE(16) COMPLEX*16 5 11 12 12 12 12 12 12 16 16 16CH ?BR1.2C NO_SAVE VARIABLE(16) CHARACTER 6 13I ?BR1.5C NO_SAVE VARIABLE(4) ?INTEGER 17 20 20INT ?BR1.3C NO_SAVE ARRAY(32) ?INTEGER 7 20J ?BR1.60 NO_SAVE VARIABLE(4) ?INTEGER 18 20 20K ?BR1.64 NO_SAVE VARIABLE(4) ?INTEGER 18 20 20L ?BR1.4 NO_SAVE VARIABLE(4) LOGICAL 2 8MYPROC EXT_ENTRY PROGRAM 1Q ?BR1.C NO_SAVE VARIABDE(16) QPLE PREC 4 10R ?BR1.8 NO_SAVE VARIABLE(4) REAL 3 9 10
ISN: 0 8278 9:7E 10:86 11:94 12:9C 12:B0 13:C4 14:CC 16:D0 17:D8 18:E2 19:EE 20:FA 21:150
ISN: 0 78:8 7E:9 86:10 94:11 9C:12 B0:12 C4:13 CC:14 D0:16 D8:17 E2:18 EE:19 FA:20 150:21
Mise au point en adressage effectif
47 F2 15UP Rev02 14-3
14.1.3 Relevé de données et d'instructions GPL
GPL 81.00 X28.3 IOF DUPONT GPL GPL--V6 13.31.12 MAR 29,.1991 PAGE 3
ISN: 0 10:70 30:96 120:9C 130:AA 140:B6 150:BE 160:C6 240:28 250:42 260:5A270:68 280:EA
ISN: 0 28:240 42:250 5A:260 68:270 70:10 96:30 9C:120 AA:130 B6:140 BE:150 C6:160 EA:280
P ?BR7.0 PROCEDURE RECURSIVE EXT DCL: 10 NO REF I ?BR1.F8 FIXED BIN(15) AUTO DCL: 20 30m 240m 250 L LABEL DCL: 40 NO REF T ?BR1.4->0 ARRAY CHAR(120) AUTO DCL: 50 250m CH1030 ?BR1.8->0 CHAR(1030) AUTO DCL: 60 120m 160r CH100 ?BR1.90 CHAR(100) AUTO DCL: 70 130m 160r1 S1030 ?BR1.C->0 STRUCTURE AUTO DCL: 80 160r2 C(S1030) ?BR1.C->0 CHAR(1030) AUTO DCL: 90 140m1 S100 ?BR1.28 STRUCTURE AUTO DCL: 100 160r2 C(S100) ?BR1.28 CHAR(100) AUTO DCL: 110 150m R ?BR2 PROCEDURE INT DCL: 170 160 CH1030 ?BR1.14->0 CHAR(1030) PARAM DCL: 180 NO REF CH100 ?BR1.18->0 CHAR(100) PARAM DCL: 190 NO REF1 S1030 ?BR1.1C->0 STRUCTURE PARAM DCL: 200 NO REF2 C(S1030) ?BR1.1C->0 CHAR(1030) PARAM DCL: 210 NO REF1 S100 ?BR1.20->0 STRUCTURE PARAM DCL: 220 NO REF2 C(S100) ?BR1.20->0 CHAR(100) PARAM DCL: 230 NO REF
Aide à la mise au point (PCF)
14-4 47 F2 15UP Rev02
14.1.4 Relevé de données et d'instructions en C
C PROGRAMCLANG 40.01 X28.3 IOF DUPONT STATEMENT MAP
CL CL--V6 13.31.12 MAR 29,1991 CLANG 40.01 X28.3 IOF DUPONTPAGE 2 CL CL--V6 13.31.12 MAR 29,1991 PAGE 3 1 main () 2 { ISN: 0 3 2:28 20:3C 21:44 22:4A 23:50 4 enum GREC {alpha, beta, 5 gamma}; ISN: 0 6 union 28:2 3C:20 44:21 4A:22 50:23 7 { 8 struct alpha enum value enum GREC 9 { 0 4 NO REF10 enum GREC x; alpha enum value enum GREC11 int size; 0 4 NO REF12 } I; alpha enum value enum GREC13 struct 0 4 NO REF14 { alpha enum value enum GREC15 enum GREC y; 0 4 NO REF16 float size; beta enum value enum GREC17 } F; 1 4 NO REF18 } U_grec , *p; beta enum value enum GREC19 1 4 NG REF20 p = &U_grec; beta enum value enum GREC21 U_grec.I.x = 2; 1 4 NO REF22 U_grec.I.size = 3; beta enum value enum GREC23 } 1 4 NO REF gamma enum value enum GREC 2 4 NO REF gamma enum value enum GREC 2 4 NO REF gamma enum value enum GREC 2 4 NO REF gamma enum value enum GREC 2 4 NO REF 1 p ?BR1.10 union * auto 4 18 REF: 20* 3 size(*) ***** not allocated int based 4 11 NO REF 3 size(U_grec) ?BR1.1C int auto 4 11 REF: 22* 3 size(U_grec) ?BR1.1C float auto 4 16 NG REF 3 size(*) ***** not allocated float based 4 16 NO REF 3 x(U_grec) ?BR1.18 enum GREC auto 4 10 REF: 21* 3 x(*) ***** not allocated enum GREC based 4 10 NO REF 3 y(*) ***** not allocated enum GREC based 4 15 NO REF 3 y(U_grec) ?BR1.18 enum GREC auto 4 15 NO REF CEXAMPLE ?BR7.0 int () extern 1 REF: 1 2 F(*) ***** not allocated struct based 8 17 NO REF 2 F(U_grec) ?BR1.18 struct autg 8 17 NO REF GREC union tag 4
Mise au point en adressage effectif
47 F2 15UP Rev02 14-5
REF: 10 15 2 I(U_grec) ?BR1.18 struct auto 8 12 REF: 21* 22* 2 I(*) ***** not allocated struct based 8 12 NO REF 1 U_grec ?BR1.18 union auto 8 18
En adressage effectif, une référence de donnée indique l'adresse début de la donnée enmémoire virtuelle. Son type et sa longueur sont définis par le format spécifié juste aprèsl'adresse, précédé du symbole numéro (#). Les codes applicables pour la définition desformats sont répertoriés à l'annexe A.
Une adresse peut prendre plusieurs formes (voir ci-dessous et le tableau 14-1.)
• Une adresse mémoire désigne une position dont l'adresse est connue:
?8.13.4F 12.FF 73F
• Une adresse indirecte indique un ou plusieurs niveaux d'adressage indirect. Sonformat est le suivant:
position -> déplacement [-> déplacement]...
déplacement est un nombre hexadécimal de 6 caractères maximum.
Aide à la mise au point (PCF)
14-6 47 F2 15UP Rev02
Exemple :
?8.21.3F
7
F
donnée adressée
?8.21.3F -> 7 -> F
Figure 14-1. Adressage indirect
• Il est également possible d'adresser des registres. Ils sont identifiés par le caractère ?suivi d'un nom mnémonique. La syntaxe est la suivante:
?GRi ou ?GR(i) avec i = 0 à 15 pour des registres généraux
?BRi ou ?BR(i) avec i = 0 à 7 pour les registres de base
?XRi ou ?XR(i) avec i = 0 à 7 pour les registres d'index
?SRi ou ?SR(i) avec i = 0 à 3 pour les registres scientifiques
?ST pour les registres d'état
?TR pour le registre haut de pile
?IC pour le registre compteur d'instruction
• Il est aussi possible de citer des éléments de pile en utilisant la notation ?STKi ou?STK(i), i = 0 désignant l'élément de pile en cours, i = 1, celui qui précède, et ainsi desuite. ?STKi n'est autorisé que dans la commande DUMP.
• Certaines zones d'éléments de pile peuvent être citées, mais uniquement dans lacommande DUMP. La syntaxe et la signification des références de zones de l'élémentde pile en cours sont les suivantes :
?SAM pour le masque de zone de sauvegarde (Saving Area Mask)
?PSA pour le pointeur sur le masque de zone de sauvegarde(Pointer to Saving Area mask)
?PTV pour la valeur haut de pile précédente (Previous Top ofstack Value)
?NBP pour le nombre d'octets de l'espace paramètres (Number ofBytes in Parameter space)
Mise au point en adressage effectif
47 F2 15UP Rev02 14-7
?LOC pour la zone de manoeuvre (LOCal variables)
?PAR pour le contenu de l'espace paramètres (PARameter space)
?COM pour la zone de communication (COMmunications)
?SAV pour la zone de sauvegarde du registre (register SAVingarea)
• l'adressage indirect par l'intermédiaire d'un registre peut également être spécifié sousla forme:
{ ?BRi } { ?BR(i) } .déplacement { ?IC }
ou
{ ?BRi } [.déplacement] -> déplacement { ?BR(i) } [-> déplacement]... { ?IC }
déplacement est un nombre hexadécimal de 6 caractères maximum.
Aide à la mise au point (PCF)
14-8 47 F2 15UP Rev02
Exemples :
?BR5.6F -> F -> 42
?BR3
3F
donnée adressée
?BR5
6F
F
42
donnée adressée
?BR0 -> 2F
?BR0
2F
donnée adressée
?BR3.3F
Figure 14-2. Adressage indirect par registre
Mise au point en adressage effectif
47 F2 15UP Rev02 14-9
• il est possible d'adresser une plage de registres de la façon suivante :
{ TO } ? mnémonique-registre (i { } j), avec i<j { : }
Exemples :
?BR(3 TO 7) désigne tous les registres de base de BR3 à BR7.
?XR(2:3) désigne les registres d'index XR2 et XR3.
• une plage d'éléments de pile peut être adressée de la façon suivante:
{ TO } ? STK (i { } j), avec i<j { : }
Tableau 14-1. Références de données en adressage effectif
REFERENCE DEDONNEE FORM E EXEM PLES
position m é m oire
adresse ind irec te
reg istres
é lém ents de p ile
p lage de reg istres
Zo nes d e l 'é lém e n tde p ile en cours
adressage ind irec tpar reg istre
p lage d 'é lém entsde p ile
? [[stn. ] ste .] sra
position -> dé p l.[-> d ép la .] ...
?ST K i ? ST K (i)
T O?m né m onique-reg [i j)] :
T O?ST K (i j) :
?BR i?BR (i) [.dép l] [-> dép l[-> dépl ]...]? IC
?SA M ?P SA ? PT V ? NB P?LO C ?PAR ?C O M ?SAV
?G Ri ?G R (i) ? BR i ?B R (i)?XR i ? X R (i) ?S R i ? SR (i)?ST ?T R ?IC
?8.1 2 .3 F?12.3 F?3F
?8.1 2 .3 F->3B?21.4 F->F->22B
?BR 3?SR 0?T R
?STK 0?STK (1 )
?PSA?N BP
?BR 3 .3 F?BR 5 -> 123D?BR 0 .3 F->12A
?BR (1:7)?ST?XR (0:7)
?STK (0 :99 )?STK (1 TO 3 )
Aide à la mise au point (PCF)
14-10 47 F2 15UP Rev02
14.2 NOTATION "ISN:OFFSET"
ISN est un numéro de segment interne (Internal Segment Number). Il s'agit d'un nombreen décimal identifiant un segment généré par le compilateur. Ce dernier ne peut pasaffecter de numéros de segments réels; ce n'est pas son rôle. C'est l'éditeur de liens quiétablit la correspondance entre numéros de segment internes et segments réels. Cettecorrespondance apparaît sur le compte rendu d'édition de liens. Il est ainsi possible dereconstituer l'adresse des références données sous la forme "ISN:offset", comme lemontre l'exemple qui suit.
Si un segment est lié, comme suit :
Unité compilée Offset de segmentsMY_CU1/0 B.10.0MY_CU2/0 B.11.0MY_CU1/1 B.11.1000
D: A IN MY_CU1/0C: P AT :0.3F4
La pause se fait sur B.10.3F4.
D: A IN MY_CU1/1C: P AT :0.4F0
La pause se fait sur B.11.14C0.
Mise au point en adressage effectif
47 F2 15UP Rev02 14-11
14.3 EXEMPLE DE MISE AU POINT EN ADRESSAGE EFFECTIF
Supposons que l'utilisateur ait à mettre au point l'exemple du programme COBOL duchapitre 11 en adressage effectif. Le paragraphe 11.4.2 représente la liste duprogramme origine. L'utilisateur veut afficher la variable RATE à la ligne 210 (numéro deligne interne du compilateur: 24). L'expression de cette commande sous formesymbolique est:
DUMP RATE AT LINE 210;
Il faut donc trouver les adresses de RATE et de la ligne 210 (ILN 24). Pour ce faire, onutilise les relevés de données et d'instructions (voir 14.1.1) qui indiquent:
RATE ISN1 OFFSET 68LINE 210 ISN 3 OFFSET 76
Le paragraphe 14.3.1 fournit un compte rendu d'édition de liens de ce programme.
14.3.1 Compte rendu d'édition de liens
10 SEGMENT LIST11 SEG. IN CU.ISN TYPE SH RF RD WR EX WP EP G S SIZE MAXSIZE CONT.P.12 8.10 PROCCOB.0 ..L 3 3 3 3 3 144 013 8.11 PROCCOB.1 .D. 3 3 3 3 3 WP 144 014 8.12 PROCCOB.3 C.. 3 3 3 3 3 EP 240 015 8.13 H_CBL_DRTP .D. 3 3 3 3 3 WP 608 8192 016 .....17 9. 0 PGCR CD. 2 3 3 0 3 WP EP 457618 9. 4 TERMINATION .D. 2 3 3 0 0 WP S 9619 9. A PROCCOB.2 .D. 2 3 3 3 107220 9. E SEMPH. POOL .D. 2 3 3 1 1 WP S 3360
ISN 1 de PROCCOB correspond au segment 8.11 et ISN 3 au segment 8.12. Lesadresses respectives des éléments recherchés sont donc:
RATE ?8.11.68LINE 210 ?8.12.76
Il est nécessaire de spécifier un format pour l'affichage de la variable RATE. RATE estde type COMP-1, le format approprié est donc #FB31 (voir annexe A). La commandePCF correcte est donc:
DUMP ?8.11.68 #FB31 AT ?8.12.76;
La mise au point en adressage effectif des programmes FORTRAN, GPL et C est un peuplus simple. Les adresses des variables listées sur le relevé de données sontdirectement exploitables par PCF. Le compte rendu d'édition des liens n'est doncnécessaire que pour déterminer l'adresse effective du point d'intervention. La méthodeest la même que celle décrite ci-dessus.
Aide à la mise au point (PCF)
14-12 47 F2 15UP Rev02
47 F2 15UP Rev02 15-1
15. Mise au point en adressagesemi-symbolique
La méthode de mise au point en adressage semi-symbolique s'utilise pour desprogrammes COBOL, FORTRAN, GPL ou C dont l'édition de liens a été effectuée avecl'option SYMBMAP=YES. En général, ce mode d'adressage est accompagnéd'adressage effectif, mais les seules listes nécessaires pour les deux sont les listes decompilation avec l'option MAP.
Ce chapitre montre comment mettre au point un programme en adressage semi-symbolique. Rappelons que certaines données ne peuvent toutefois être citées qu'enmode d'adressage effectif.
15.1 RELEVES D'IMPLANTATION DES OBJETS DE PROGRAMMES
L'option MAP permet d'obtenir les relevés d'implantation des objets du programmeorigine lors de la compilation. Ces relevés varient légèrement d'un langage à un autre etsont décrits plus loin en détail. On distingue:
• le relevé de données fournissant l'adresse des variables, et
• le relevé d'instructions fournissant l'adresse des instructions origine.
Les adresses peuvent être spécifiées de deux façons:
• par des références de données PCF correctes en adressage effectif, ou
• en utilisant la notation "ISN:offset".
Ces deux formes sont décrites en détail plus loin dans ce chapitre.
Aide à la mise au point (PCF)
15-2 47 F2 15UP Rev02
15.2 REFERENCE DE DONNEE EN ADRESSAGE SEMI-SYMBOLIQUE
Il y a deux méthodes de désignation des données en adressage semi-symbolique:
• l'adressage direct par ISN et offset, ou
• par nom symbolique, dans le cas de données externes.
15.2.1 Adressage semi-symbolique direct (isn:offset)
En mode d'adressage semi-symbolique, la commande APPLY reste valable. Elle permetd'identifier la procédure à laquelle s'appliquent les commandes PCF. L'utilisateur peutensuite désigner du code ou des données qu'elle contient, par isn et offset. Le type et lalongueur de la donnée sont définis par une chaîne de caractères codée, précédée dusymbole numéro (#), juste après la référence. Tous les formats autorisés, avec leursignification, sont répertoriés à l'annexe B.
Exemple :
APPLY IN MAPROC;
DUMP: 0.AA#C8
CHANGE: 1.18#FB15 = 10;
15.2.2 Noms symboliques de données externes
Certaines données sont déclarées comme données externes. Leur adresse estseulement fixée à l'édition de liens. Si l'option SYMBMAP=YES a été spécifiée, l'éditeurde liens conserve le nom symbolique de cette donnée externe avec le code duprogramme. L'adresse peut être indiquée par le nom symbolique qu'elle porte dans leprogramme origine, précédé du caractère "@". Ce format est précédé du symbole "#" :
@NOM#C12
Il est possible de spécifier un déplacement en hexadécimal par rapport au début de ladonnée externe, juste après le nom symbolique, les deux séparés par un point ".".
Exemple :
@EXT_VAR.B6#FB31
Mise au point en adressage semi-symbolique
47 F2 15UP Rev02 15-3
15.2.2.1 Relevé de données et d'instructions COBOL
COBOL 85 01.68-10 X219.8 IOF DUPONT COBL COBL--V6 15:11:24 MAR 29, 1991 PAGE4
PROCCOB PROGRAM-NAME 10 NOREF SEPARATELY-COMPILED
01 STRUC 1:000058 GROUP X(33) 90 NOREF02 PRICE(+0) 1:000058 DISPLAY 9(6)V99 100 190.0* 210+*02 COST(+8) 1:000060 DISPLAY S9(6)V99 110 170.0.10* 190.0 210*02 RATE(+16) 1:000068 COMP-3 9(5)V99 120 190..10* 190.0 22002 NEWPRICE(+20) 1:00006C DISPLAY NUM-EDT(9) 130 210*02 POURC(+29) 1:000075 COMP-3 S9(5)V99 140 220*
01 TITRE 1:000079 DISPLAY X(8) 150 170.0.20*
DEBUT PARAGRAPH-NAME 170 NOREF FIN PARAGRAPH-NAME 230 NOREF3:00034 170.0.10 3:0003C .0.20 3:00044 190..10 3:00056 .0 3:00086 2103:0008E 210 3:00096 210 3:000A6 220 3:000CE 240
15.2.2.2 Relevé de données et d'instructions FORTRAN
FOR77 74.22 X22.5 IOF DUPONT FORT FORT--V6 17.30.03 MAR 29, 1991 PAGE 3
10 ISN 0.94 LITERAL_CST LABEL 1111 ISN 0.D0 LITERAL_CST LABEL 1613 ISF 0.D8 LITERAL_CST LABEL 14 1714 ISN 0.FA LITERAL_CST LABEL 17 18 19 20C ?BR1.1C NO_SAVE VARIABLE(16) COMPLEX*16 5 11 12 12 12 12 12 12 16 16 16CH ?BR1.2C NO_SAVE VARIABLE(16) CHARACTER 6 13I ?BR1.5C NO_SAVE VARIABLE(4) ?INTEGER 17 20 20INT ?BR1.3C NO_SAVE ARRAY(32) ?INTEGER 7 20J ?BR1.60 NO_SAVE VARIABLE(4) ?INTEGER 18 20 20K ?BR1.64 NO_SAVE VARIABLE(4) ?INTEGER 18 20 20L ?BR1.4 NO_SAVE VARIABLE(4) LOGICAL 2 8MYPROC EXT_ENTRY PROGRAM 1Q ?BR1.C NO_SAVE VARIABLE(16) QPLE PREC 4 10R ?BR1.8 NO_SAVE VARIABLE(4) REAL 3 9 10
ISN: 0 8:78 9:7E 10:86 11:94 12:9C 12:B0 13:C4 14:CC 16:D0 17:D8 18:E2 19:EE 20:FA 21:150
ISN: 0 78:8 7E:9 86:10 94:11 9C:12 B0:12 C4:13 CC:14 D0:16 D8:17 E2:18 EE:19 FA:20 150:21
Aide à la mise au point (PCF)
15-4 47 F2 15UP Rev02
15.2.2.3 Relevé de données et d'instructions GPL
GPL 81.00 X28.3 IOF DUPONT GPL GPL--V6 13.31.12 MAR 29,.1991 PAGE 3
ISN: 0 10:70 30:96 120:9C 130:AA 140:B6 150:BE 160:C6 240:28 250:42 260:5A270:68 280:EA
ISN: 0 28:240 42:250 5A:260 68:270 70:10 96:30 9C:120 AA:130 B6:140 BE:150 C6:160 EA:280
P ?BR7.0 PROCEDURE RECURSIVE EXT DCL: 10 NO REF I ?BR1.F8 FIXED BIN(15) AUTO DCL: 20 30m 240m 250 L LABEL DCL: 40 NO REF T ?BR1.4->0 ARRAY CHAR(120) AUTO DCL: 50 250m CH1030 ?BR1.8->0 CHAR(1030) AUTO DCL: 60 120m 160r CH100 ?BR1.90 CHAR(100) AUTO DCL: 70 130m 160r1 S1030 ?BR1.C->0 STRUCTURE AUTO DCL2 80 160r2 C(S1030) ?BR1.C->0 CHAR(1030) AUTO DCL: 90 140m1 S100 ?BR1.28 STRUCTURE AUTO DCL: 100 160r2 C(S100) ?BR1.28 CHAR(100) AUTO DCL: 110 150m R ?BR2 PROCEDURE INT DCL: 170 160 CH1030 ?BR1.14->0 CHAR(1030) PARAM DCL: 180 NO REF CH100 ?BR1.18->0 CHAR(100) PARAM DCL: 190 NO REF1 S1030 ?BR1.1C->0 STRUCTURE PARAM DCL: 200 NO REF2 C(S1030) ?BR1.1C->0 CHAR(1030) PARAM DCL: 210 NO REF1 S100 ?BR1.20->0 STRUCTURE PARAM DCL: 220 NO REF2 C(S100) ?BR1.20->0 CHAR(100) PARAM DCL: 230 NO REF
Mise au point en adressage semi-symbolique
47 F2 15UP Rev02 15-5
15.2.2.4 Exemple de mise au point en adressage semi-symbolique
+----------------------------------------------------------------+| ||(((PCF AT /8.12.0000 :3.0 IN PROCCOB ||...PCF AT BEGINNING OF MAIN PROCEDURE. ||...100 D: APPLY IN PROCCOB; ||... * APPLY IN PROCCOB, NO COMPILE UNIT MAP. ||...100 D: P AT :3.2A; ||...110 D: P AT :3.74; ||...120 D: GO; ||))) ||(((PCF AT /8.12.002A :3.2A IN PROCCOB ||...100 PAUSE ||...120 D: D :1.68#X6; ||... ?8.11.68 08100000 0000 ||...120 D: GO; ||))) ||(((PCF AT /8.12.0074 :3.74 IN PROCCOB ||...110 PAUSE ||...120 D: L; ||... CURRENT APPLY : PROCCOB $LM ||... 100 P AT :3.2A; ||... 110 P AT :3.74; ||...120 D: P AT POST_MORTEM; ||...130 D: GO; ||))) ||(((PCF AT POST MORTEM. ||...120 PAUSE ||...130 D: GO; ||))) || |+----------------------------------------------------------------+
Aide à la mise au point (PCF)
15-6 47 F2 15UP Rev02
15.2.2.5 Relevé de données et d'instructions en
CLANG 40.01 X28.3 IOF DUPONT CL CL--V6 13.31.12 MAR 29, 1991 PAGE 3
ISN: 0 2:28 20:3C 21:44 22:4A 23:50
ISN: 0 28:2 3C:20 44:21 4A:22 50:23
alpha efum value enum GREC 0 4 NO REF alpha enum value enum GREC 0 4 NO REF alp`a enum value enum GREC 0 4 NO REF alpha enum value enum GREC 0 4 NO REF beta enum value enum GREC 1 4 NO REF beta enum value enum GREC 1 4 NO REF beta enum value enum GREC 1 4 NO REF beta enum value enum GREC 1 4 NO REF gamma enum value enum GREC 2 4 NO REF gamma enum value enum GREC 2 4 NO REF gamma enum value enum GREC 2 4 NO REF gamma enum value enum GREC 2 4 NO REF1 p ?BR1.10 union * auto 4 18 REF: 20*3 size(*) ***** not allocated int based 4 11 NO REF3 size(U_grec) ?BR1.1C int auto 4 11 REF: 22*3 size(U_grec) ?BR1.1C float auto 4 16 NO REF3 size(*) ***** not allocated float based 4 16 NO REF3 x(U_grec) ?BR1.18 enum GREC auto 4 10 REF: 21*3 x(*) ***** not allgcated enum GREC based 4 10 NO REF3 y(*) ***** not allocated enum GREC based 4 15 NO REF3 y(U_grec) ?BR1.18 enum GREC auto 4 15 NO REF CEXAMPLE ?BR7.0 int () extern 1 REF: 12 F(*) ***** not allocated struct based 8 17 NO REF2 F(U_grec) ?BR1.18 struct auto 8 17 NO REF GREC union tag 4 REF: 10 152 I(U_grec) ?BR1.18 struct auto 8 12 REF: 21* 22*2 I(*) ***** not allocated struct based 8 12 NO REF1 U_grec ?BR1.18 union auto 8 18 REF: 20* 21* 22*
CLANG 40.01 X28.3 IOF DUPONT CL CL--V6 13.31.12 MAR 29, 1991 PAGE 2
1 main () 2 { 3 4 enum GREC {alpha, beta, gamma}; 5 6 union 7 { 8 struct 9 { 10 enum GREC x; 11 int size; 12 } I; 13 struct 14 { 15 enum GREC y; 16 float size; 17 } F; 18 } U_grec , *p; 19 20 p = &U_grec; 21 U_grec.I.x = 2; 22 U_grec.I.size = 3; 23 }
47 F2 15UP Rev02 16-1
16. Compte rendu d'exécution de PCFen traitement par lots
Ce chapitre décrit le compte rendu d'exécution de PCF en traitement par lots. Il sort engénéral sur imprimante par l'intermédiaire du mécanisme SYSOUT. Cependant, il peutêtre dirigé vers n'importe quel fichier séquentiel; il suffit d'affecter le fichier voulu au nomde fichier interne (nfi) H_DBPR.
Exemple :
ASSIGN H_DBPR, MONFIC, DVC = MT/T9/D800, MD = T99;
enregistre les sorties dans un fichier non catalogué sur bande 9 pistes, 800 bits/pouce.
De plus, la commande OUTPUT (voir Chapitre 6) permet à l'utilisateur de diriger unepartie du compte rendu d'exécution vers n'importe quel fichier séquentiel.
Le compte rendu d'exécution PCF se divise en deux parties :
• compte rendu de traduction, et
• compte rendu d'exécution proprement dit
La première partie est précédée de la bannière GCOS standard. Le contenu des deuxparties est analysé ci-après.
Aide à la mise au point (PCF)
16-2 47 F2 15UP Rev02
16.1 COMPTE RENDU DE TRADUCTION
Le compte rendu de traduction comporte deux types de zones:
• zone diagnostic• zone commande
La zone diagnostic contient tous les diagnostics relatifs à la commande imprimée au-dessus. Ils correspondent à différents degrés de gravité d'erreur indiqués par le nombred'astérisques et le texte en anglais. Les diagnostics peuvent indiquer le rejet de lacommande ou une action correctrice implicite.
La zone commande contient le texte de la commande tel qu'elle a été soumise parl'utilisateur. A l'affichage, les espaces non significatifs sont remplacés par un seulespace. Un exemple de compte rendu de traduction PCF figure en 16.1.1.
16.1.1 Compte rendu de traduction
****************************************************************************************************************************** GCOS7 ******** P C F ( D E B U G ) ******** VERSION: 90.00 DATED: SEP 01, 1989 *********DOC_COBOL_RES********************************************************************************************************
(((PCF AT PROCCOB(-32) LINE 10 ILN 1 IN PROCOB...PCF AT BEGINNING OF MAIN PROCEDURE....1 1 TRACE MAP AT ALL-LABELS;...2 2 DUMP COST IN STRUC AT ILN 20;...3 3 DUMP COST, RATE AT LINE 210*2;...4 4 CHANGE RATE=0.32 AT LINE 210;...5 5 DUMP TITRE AT FIN;
Remarque : La première ligne du compte rendu de traduction indique le pointd'intervention à la première instruction du programme utilisateur.Elle est immédiatement suivie de la ligne ... PCF AT BEGINNINGOF MAIN PROCEDURE indiquant que la traduction a lieu aulancement du programme. Le nom de procédure éventuellementspécifié pour le point d'intervention sur la première ligne est lenom de procédure implicite (APPLY implicite).
Compte rendu d'exécution de PCF en traitement par lots
47 F2 15UP Rev02 16-3
16.2 COMPTE RENDU D'EXECUTION
Le compte rendu d'exécution comprend une rubrique par point d'intervention atteintpendant l'exécution. Chaque rubrique comprend :
• l'identification du point d'intervention précédée de ...PCF AT,• les résultats obtenus pour chaque commande applicable à ce point d'intervention.
Le point d'intervention peut être identifié par :
• un numéro de ligne externe; un numéro de ligne interne (ILN); une étiquette, s'il y en aune, ou sinon un astérisque et, éventuellement, un déplacement en hexadécimal parrapport à l'étiquette; le nom de la procédure contenant le point d'intervention.
• une position mémoire spécifiée par son adresse effective.• une position mémoire spécifiée par une adresse semi-symbolique, avec le nom de la
procédure contenant le point d'intervention.• le nom symbolique POST-MORTEM pour les commandes exécutées en fin de
programme.• BEGINNING OF MAIN PROCEDURE pour les commandes fournissant des résultats
au lancement du programme.
La présentation des résultats dépend de la commande, mais, dans tous les cas, unrésultat est précédé du numéro et du verbe de la commande. Un exemple de compterendu d'exécution de PCF en traitement par lots figure en 16.2.1.
16.2.1 Compte rendu d'exécution sous PCF en traitement par lots
+----------------------------------------------------------------+| || (((PCF AT * LINE 170.10.20 ILN 20 IN PROCCOB || ...2 DUMP || ... COST +000018.40 || ))) || (((PCF AT * LINE 210 ILN 24 IN PROCCOB || ...4 CHANGE || ... RATE 00000.32 (00000.75 ) || ))) || (((PCF AT * LINE 210*2 ILN 24 IN PROCCOB || ...3 DUMP || ... COST +000018.40 || ... RATE 00000.32 || ))) || (((PCF AT FIN LINE 230 ILN 26 IN PROCCOB || ...5 DUMP || ... TITRE "PCF-TEST" || ))) || (((PCF AT POST MORTEM. || ...1 TRACE || ... 1 DEBUT LINE 170 ILN 17 IN PROCCOB || ... 1 FIN LINE 230 ILN 26 IN PROCCOB || ))) |+----------------------------------------------------------------+
Aide à la mise au point (PCF)
16-4 47 F2 15UP Rev02
47 F2 15UP Rev02 17-1
17. Compte rendu d'exécution de PCF eninteractif et en télétraitement par lots
Ce chapitre décrit le compte rendu d'exécution de PCF en interactif et en télétraitementpar lots. Il sort en général sur terminal, mais peut être dirigé vers un fichier séquentielindiqué au moyen de la commande OUTPUT (voir chapitre 6).
Les comptes rendus d'exécution de PCF en interactif et en télétraitement par lots sontidentiques, à cette différence près que le compte rendu de PCF en télétraitement par lotscommence par la bannière GCOS standard en interactif, juste après que l'utilisateur aitintroduit la commande DEBUG Xnnn. La présentation des comptes rendus est décrite ci-après.
17.1 MESSAGES ET PREFIXES PCF ET DIALOGUE UTILISATEUR
Le dialogue entre PCF et l'utilisateur se fait au moyen de messages et de préfixes. Ils'agit d'une chaîne de caractères apparaissant dans les colonnes de gauche des sortiessur terminal, réservées à cet effet. On distingue deux catégories :
• messages demandant à l'utilisateur d'introduire du texte qui sera interprété enconséquence.
• préfixes de sortie indiquant la signification d'une ligne de compte rendu PCF.
Les différentes formes de messages et préfixes PCF, avec leur signification, sontrépertoriées dans le tableau 17-1.
Aide à la mise au point (PCF)
17-2 47 F2 15UP Rev02
Tableau 17-1. Récapitulation des messages et préfixes
M ESSAG ES ET PR EFIXES SIG NIFICAT IO N
******
. . .nnnnn-D:
. . .nnnnn-:
???
...
(((
)))
>>>
<<<
-->
Ligne précéden te incom plète. A com pléter.
Em is à la suite d 'une interruption.
Indiquent le niv eau de grav ité d 'un diagnostic lors de latraduction ou de l'exécution d 'une com m ande PCF.
Précède les lignes de résultats de PCF.
Indique l'entrée dans le processeur PCF.
Indique la sortie du processeur PCF.
Dem ande à l'utilisateur d 'introduire une com m ande PCF,im m édia te (sans clause "Q uand" ou dif férée (av ec clause"Q uand"). Dans le second cas, le num éro de com m andeim plic ite est nnnnn.
DEM ANDESD 'ENT REE
PREFIXESDE SO RTIE
Précède la bannière G C O S pour une session PCF entélétraitem ent par lots.
Indique la f in d 'une session PCF en té létraitem ent par lots.
P récède le m essage indiquant qu'un trav ail est prêt à être m is au point en té létraitem ent par lots.
Remarque : Ces indications permettent à l'utilisateur de savoir immédiatementce qu'il doit faire ou ce que signifie une ligne donnée de compterendu de PCF.
Compte rendu d'exécution de PCF en interactif et en télétraitement par lots
47 F2 15UP Rev02 17-3
17.2 COMPTE RENDU D'EXECUTION
En interactif ou en télétraitement par lots, le compte rendu d'exécution est pratiquementidentique à celui généré en traitement par lots. Il comprend une rubrique par pointd'intervention atteint pendant l'exécution. La première ligne de chaque rubrique identifiele point d'intervention par :
• un numéro de ligne externe; un numéro de ligne interne; une étiquette, s'il y en a une,ou sinon un astérisque et, éventuellement, un déplacement en hexadécimal parrapport à l'étiquette; le nom de la procédure contenant le point d'intervention.
• une position mémoire spécifiée par son adresse effective.
• une position mémoire spécifiée par une adresse semi-symbolique, avec le nom de laprocédure contenant le point d'intervention.
• le nom symbolique POST-MORTEM pour les commandes exécutées en fin deprogramme.
• BEGINNING OF MAIN PROCEDURE pour les commandes fournissant des résultatsau lancement du programme.
Les lignes suivantes de chaque rubrique indiquent, pour chaque commande applicable àce point d'intervention, son nom et, le cas échéant, les résultats. Dans le cas d'unePAUSE, le message ...nnnnn D: indique que l'utilisateur doit introduire une commande.Un exemple de compte rendu d'exécution de PCF en interactif figure en 17.3.1.
Aide à la mise au point (PCF)
17-4 47 F2 15UP Rev02
17.3 MENUS GCL ET MESSAGES DE GUIDAGE
Si l'utilisateur commet une erreur de syntaxe, un menu s'affiche pour l'aider à la corriger.Il peut consulter les menus GCL et les textes HELP sous PCF, en interactif ou entélétraitement par lots. Pour plus de détails sur GCL, se reporter au manuel de référencede l'utilisateur IOF (22UJ).
Remarque : Il est impossible d'accéder à un texte HELP concernant unparamètre de commande PCF en tapant "?" après la commandeen mode ligne.
17.3.1 Compte rendu d'exécution de PCF en interactif
+----------------------------------------------------------------+| (((PCF AT * LINE 10 ILN 1 IN P || ...PCF AT BEGINNING OF MAIN PROCEDURE. || ...100 D: TRACE MAP AT A_L; || ...110 D: PAUSE AT LN 260 ; || ...120 D: GO; || ))) || (((PCF AT * LINE 260 ILN 26 IN P || ...110 PAUSE || ...120 D: D I; || ... I 0 || ...120 D: GO; || ))) || (((PCF AT * LINE 260 ILN 26 IN P || ...110 PAUSE || ...120 D: K 110 || ... KILLED COMMANDS ARE 110 || ...110 D: GO; || ))) || (((PCF AT POST MORTEM. || ...100 TRACE || ... 1 * LINE 40 ILN 4 IN P || ... 1 P LINE 10 ILN 1 IN P || ))) |+----------------------------------------------------------------+
47 F2 15UP Rev02 18-1
18. Compte rendu d'exécution de PCFsous TDS
Ce chapitre décrit le compte rendu d'exécution de PCF sous TDS. Lorsque PCF estlancé par la commande TRACE PRINT PCF, le compte rendu est rangé en format SARFdans une bibliothèque qui a été affectée au nom de fichier interne DBUGFILE aumoment du lancement de la session TDS.
Exemple :
ASSIGN DBUGFILE,MABIB,DVC=MS/M452,MD=K999;
Lorsque PCF est lancé par la commande TRACE SEND PCF, le compte rendud'exécution sort sur l'imprimante connectée au terminal utilisateur. De plus, lacommande OUTPUT (voir Chapitre 6) permet de diriger la totalité ou une partie ducompte rendu vers un fichier séquentiel donné.
Le compte rendu d'exécution de PCF sous TDS se divise en deux parties :
• le compte rendu de traduction
• le compte rendu d'exécution proprement dit.
18.1 COMPTE RENDU DE TRADUCTION
Le compte rendu de traduction comporte deux types de zones:
• zone diagnostic
• zone commande
La zone diagnostic contient tous les diagnostics relatifs à la commande imprimée au-dessus. Ils correspondent à différents degrés de gravité d'erreur indiqués par le nombred'astérisques et le texte en anglais. Les diagnostics peuvent indiquer le rejet de lacommande ou une action correctrice implicite.
La zone commande contient le texte de la commande tel qu'il est donné par l'utilisateur.A l'affichage, les espaces non significatifs sont remplacés par un seul espace. Unexemple de compte rendu de traduction figure en 18.1.1.
Aide à la mise au point (PCF)
18-2 47 F2 15UP Rev02
18.1.1 Compte rendu de traduction
+----------------------------------------------------------------+| || (((PCF AT PROCCOB (-42) LINE 10 ILN 1 IN PROCOB || ...PCF AT BEGINNING OF MAIN PROCEDURE. || ...1 1 TRACE MAP AT ALL-LABELS; || ...2 2 DUMP COST IN STRUC AT ILN 20; || ...3 3 DUMP COST, RATE AT LINE 210*2; || ...4 4 CHANGE RATE=0.32 AT LINE 210; || ...5 5 DUMP TITRE AT FIN; || |+----------------------------------------------------------------+
Remarque : La première ligne du compte rendu de traduction indique le pointd'intervention à la première instruction du programme utilisateur.Elle est immédiatement suivie de la ligne ... PCF AT BEGINNINGOF MAIN PROCEDURE indiquant que la traduction a lieu aulancement du programme. La procédure éventuellement spécifiéepour le point d'intervention sur la première ligne est le nom deprocédure implicite (APPLY implicite).
18.2 COMPTE RENDU D'EXECUTION
Le compte rendu d'exécution comprend une rubrique par point d'intervention atteintpendant l'exécution. Chaque rubrique comprend :
• l'identification du point d'intervention précédée de (((PCF AT,• les résultats obtenus pour chaque commande applicable à ce point d'intervention.
Le point d'intervention peut être identifié par :
• un numéro de ligne externe; un numéro de ligne interne; une étiquette s'il y en a une,ou sinon un astérisque, et éventuellement, un déplacement en hexadécimal parrapport à l'étiquette; le nom de la procédure contenant le point d'intervention.
• une position mémoire spécifiée par son adresse effective.
• une position mémoire spécifiée par une adressse semi-symbolique, avec le nom de laprocédure contenant le point d'intervention.
• le nom symbolique POST-MORTEM pour les commandes exécutées en fin deprogramme.
• BEGINNING OF MAIN PROCEDURE pour les commandes fournissant des résultatsau lancement du programme.
La présentation des résultats dépend de la commande, mais, dans tous les cas, unrésultat est précédé du numéro et du verbe de la commande. Un exemple de compterendu d'exécution de PCF sous TDS figure en 18.2.1.
Compte rendu d'exécution de PCF sous TDS
47 F2 15UP Rev02 18-3
18.2.1 Compte rendu d'exécution sous TDS
+----------------------------------------------------------------+| || (((PCF AT * LINE 170..20 ILN 20 IN PROCCOB || ...2 D || ... COST +000018.40 || ))) || (((PCF AT * LINE 210 ILN 24 IN PROCCOB || ...4 C || ... RATE 00000.32 (00000.75 ) || ))) || (((PCF AT * LINE 210*2 ILN 24 IN PROCCOB || ...3 D || ... COST +000018.40 || ... RATE 00000.32 || ))) || (((PCF AT FIN LINE 230 ILN 26 IN PROCCOB || ...5 D || ... TITRE "PCF-TEST" || ))) || (((PCF AT POST MORTEM. || ...1 T || ... 1 DEBUT LINE 170 ILN 17 IN PROCCOB || ... 1 FIN LINE 230 ILN 26 IN PROCCOB || ))) || |+----------------------------------------------------------------+
Aide à la mise au point (PCF)
18-4 47 F2 15UP Rev02
47 F2 15UP Rev02 19-1
19. Mise au point de programmesen langage C
Ce chapitre traite exclusivement des caractéristiques PCF se rapportant à la mise aupoint de programmes en langage C.
19.1 TYPES DE VARIABLES
Les différents types de variables du langage C sont :
• entiers demi-mot (short int),
• entiers mot (int, long int),
• chaînes de caractères (char),
• chaîne de bits (zones bit),
• pointeurs (pointer)
• entrée (fonction externe)
• valeurs binaires logiques (short unsigned, unsigned, long unsigned),
• nombres réels en simple précision (float),
• nombres réels en double précision (double).
Les variables peuvent être des variables scalaires simples ou des agrégatscorrespondant à des structures plus complexes. Les agrégats peuvent contenir desdéfinitions de tableaux. Les tableaux sont multidimensionnels (nombre de dimensionsillimité), la limite inférieure étant 0 et la limite supérieure étant constante.
Il existe deux modes d'affectation de classe mémoire :
• statique avec champ d'application interne ou externe (static),• automatique (auto, register).
Les noms utilisés dans les structures peuvent être qualifiés, afin d'éviter toute ambiguité.Les noms qualifiés sont cités en PCF sous leur nom en C, avec les mêmes règles dequalification; toutefois tous les indices doivent être regroupés à la fin d'un nom detableau qualifié.
Aide à la mise au point (PCF)
19-2 47 F2 15UP Rev02
Exemple :
" AA.bb.cc[n][m] "
(au lieu de " AA[n].bb[m].cc " en C)
19.2 POINTEURS DE TYPE
Une variable peut se référencer au moyen d'un pointeur d'indirection. L'opérateur "*"indique une indirection (adressage indirect) vers une variable de type. La syntaxe est lasuivante :
* expression-données [.expression-données]
Ce type de référence ne peut s'utiliser qu'avec le langage C et les opérationsarithmétiques sur les pointeurs ne sont pas permises.
Exemples :
Déclarations en C: int *pt;struct S {int a; char b;} v;struct S *p;
Commandes PCF: DUMP *ptCHANGE (*p).a = 2
19.3 CONSTANTES
Certaines constantes en C peuvent être utilisées sous PCF soit pour modifier la valeurd'une variable (CHANGE), soit dans des comparaisons (clauses IF). Les diverses formesde constantes admissibles sont précisées ci-après.
19.3.1 Entiers
Les entiers s'expriment sous forme de nombres décimaux éventuellement signés.
Exemples :
10 -12 +30
Mise au point de programmes en langage C
47 F2 15UP Rev02 19-3
19.3.2 Chaînes de caractères
Les chaînes de caractères s'expriment sous forme d'une série de caractères entreguillemets.
Exemples :
"CECI EST UN LITTERAL""""BONJOUR""".
19.3.3 Enumération de variables
Une variable faisant partie d'une énumération se présente sous la forme d'une série decaractères placée entre guillemets. Elle a une valeur symbolique correspondant à unevaleur numérique interne à partir de laquelle PCF peut retrouver la valeur symbolique.La syntaxe est la suivante :
référence-énumérée
Un message d'erreur s'affiche si une valeur énumérée inconnue est citée lors del'exécution d'une commande :
"INVALID REFERENCE TO ENUM VARIABLE"(Référence incorrecte à une variable énumérée)
Exemples :
Déclaration en C: énum feux (vert,orange,rouge);énum feux carrefour1,carrefour2;carrefour1 = rouge;carrefour2 = vert;
Commandes PCF: DUMP carrefour2carrefour2 vertCHANGE carrefour1 = "vert"(rouge) vert
19.3.4 Nombres réels
Les nombres réels sont exprimés en notation virgule fixe ou exponentielle :
Exemples :
+17.3, -124E-4, 1.2e4
Aide à la mise au point (PCF)
19-4 47 F2 15UP Rev02
19.3.5 Constantes pointeur ou entrée
Outre les formes de constantes citées ci-dessus, PCF offre la possibilité de définir desconstantes pointeur ou entrée. La syntaxe de ces constantes est la suivante:
|[/DIRECT] | |[/R0]||[/DT] | |[/R1]|| | | | /stn.ste.sra|[/INDIRECT] | |[/R2]||[/IT] | |[/R3]|
DIRECT ou DT indique un pointeur direct, INDIRECT ou IT un pointeur indirect. Unpointeur direct constitue la valeur implicite. R0, R1, R2 ou R3 sont de indicateursd'anneau, R3 étant la valeur implicite.sta, ste et sra définissent une adresse segmentée de mémoire virtuelle.
Exemples :
/8.12.3FF /R2/8.16.42 /IT/9.7.372 /DT/R3/8.12.0
Exemples:
Déclarations C
int i,j,*ip;ip=&i;i=22;j=11;
Commandes PCF
C: DUMP ip ip /DT/R3/8.12.000F
C: DUMP *ip i 22
C: DUMP &j /DT/R3/8.12.0015
C: CHANGE ip=8.12.0015 ip /DT/R3/8.12.15(DT/R3/8.12.F)
C: DUMP *ip i 11
Mise au point de programmes en langage C
47 F2 15UP Rev02 19-5
19.4 STRUCTURE DE BLOC
En C, les noms, même correctement qualifiés, peuvent ne pas être uniques dans uneunité de compilation. Il leur suffit d'être uniques dans un bloc qui est une entitécommençant par un caractère "{" et se terminant par un caractère "}" correspondant.
PCF a donc besoin de renseignements complémentaires sur les variables citées dansune série de commandes. Un paramètre de la commande APPLY permet de qualifier lenom de l'unité de compilation à l'aide du nom d'un ou plusieurs blocs, sous la formesuivante :
nom-unité-compilation.nom-fonction
Certains blocs ne correspondant pas à une fonction, "nom-fonction" peut être remplacépar le numéro de la ligne contenant le caractère "{" voulu, ou par le numéro de ligne dela première instruction exécutable du bloc.
Exemples :
APPLY IN MAINCV.chaîne-caractères;APPLY IN MAINCV.LINE 230;
Toutes les étiquettes ou variables citées dans une commande s'appliquant à un bloc sontd'abord recherchées à l'intérieur du champ d'application de ce bloc (champ d'applicationétant pris dans son sens normal en langage C). En cas d'échec, elles sont recherchéesdans les autres blocs du programme. La recherche échoue lorsqu'aucune variable n'aété trouvée ou lorsque le résultat est douteux. Ces cas sont signalés par des messagesd'erreur ou d'avertissement.
Toutes les commandes s'appliquant à un bloc peuvent uniquement faire référence à desnoms d'étiquettes ou de variables dont le champ inclut ce bloc. Toute tentative deréférence à une variable dont le champ ne couvre pas le bloc indiqué dans la commandeAPPLY donne lieu à un diagnostic, comme si la variable était non définie ou inconnue.
Aide à la mise au point (PCF)
19-6 47 F2 15UP Rev02
19.5 RÉFÉRENCE AUX INSTRUCTIONS
Les instructions en langage C peuvent être désignées par :
• une étiquette, ou
• un numéro de ligne.
En C, les noms d'étiquettes sont une combinaison de lettres, de chiffres et de caractèresde soulignement. Ils sont désignés sous cette forme en PCF.
Exemple :
DUMP P.X[2] AT L1,L2;
demande l'affichage du second élément de P.X chaque fois que le programme atteint L1ou L2.
En C, les numéros de lignes internes figurent en deuxième colonne de la liste decompilation, sauf si l'option XLN du compilateur a été utilisée, et les numéros de lignesexternes dans la première colonne (voir plus loin). Les numéros de lignes externespeuvent avoir l'une des deux formes suivantes :
• les numéros des lignes d'origine apparaissent sous forme de nombres en décimal etpeuvent être cités tels quels;
• les lignes ayant été insérées par l'éditeur de texte sont précédées d'un point. Ellesdoivent être désignées comme suit :
n1.n2
n1 est le numéro de la ligne d'origine précédant immédiatement celle à laquelle il est faitréférence et n2 le numéro de la ligne désignée (précédée d'un point dans la liste).
19.6 CROCHETS
En C, les crochets permettent de citer un index, contrairement au GPL qui utilise lesparenthèses. Les crochets ne sont acceptés qu'en C.
Exemples :
Déclarations en C: short AA[10];
Commande PCF: DUMP AA[7];
Mise au point de programmes en langage C
47 F2 15UP Rev02 19-7
19.7 MAJUSCULES ET MINUSCULES
En C, un nom symbolique peut être constitué de minuscules ou d'un mélange demajuscules et de minuscules. PCF fait la différence, mais uniquement pour le langage C.
Exemples :
Déclarations en C: int XX, xx, xX;
Pour PCF "XX", "xx" et "xX" sont trois noms symboliques différents.
Commande PCF: DUMP XX, xx, xX;
19.8 EXEMPLE DE SESSION DE MISE AU POINT EN C
Les commandes utilisées sont les suivantes :
• affectation de la bibliothèque LIB,
• affichage des bibliothèques affectées,
• édition des lignes 10 à 230 du programme origine,
• vidage de la valeur du pointeur de type p (commande différée 100),
• vidage de la valeur de la structure pointée par p (commande différée 110),
• vidage de l'union U_grec, sur laquelle pointe p (commande différée 120),
• vidage de l'élément x de l'union U_grec (commande différée 130),
• vidage de la sous-structure I de l'union U_grec (commande différée 140),
• modification de la valeur de la variable énum x (commande différée 150),
• arrêt à la ligne 230 (commande différée 160),
Quand le programme atteint la ligne 230, il y a exécution de commandes immédiatessuivantes :
• tentative d'attribution d'une valeur incorrecte à une variable énum,
• modification conditionnelle de la variable énum,
• vidage du pointeur de type p,
• vidage de l'adresse de U_grec (même valeur que p),
• validation du mode pas à pas au niveau instruction machine (commande 170)
• après deux instructions, invalidation du mode pas à pas.
Aide à la mise au point (PCF)
19-8 47 F2 15UP Rev02
L'exemple ci-dessous illustre la liste des commandes, leur fonction ainsi que la listeobtenue en sortie. Il présente également les lignes du programme origine (affichées parla commande DSR).
S: EXEC_PG CL012DOC LIB=PCF.XLM DEBUG=TN;
(((PCF AT CL012DOC LINE 20 ILN 2 IN CL012DOC...PCF AT BEGINNING OF MAIN PROCEDURE....100 D: lib pcf.xsl...100 D: display... LIB : pcf.xsl...100 D: dsr line 10 to line 230... 10 main()... 20 {... 30... 40 enum GREC {alpha , beta , gamma};... 50... 60 union... 70 {... 80 struct... 90 {... 100 enum GREC x;... 110 int size;... 120 } I;... 130 struct... 140 {... 150 enum GREC y;... 160 float size;... 170 } F;... 180 } U_grec , *p;... 190... 200 p = &U_grec;... 210 U_grec.I.x = 2;... 220 U_grec.I.size = 3;... 230 }...100 D: dump p at line 230...110 D: d *p at line 230...120 D: d U_grec at ln 230...130 D: d U_grec.I.x at line 230...140 D: d (*p).I at line 230...150 D: change (*p).I.x = "alpha" at line 230...160 D: pause at line 230...170 D: list... CURRENT APPLY : CL012DOC LINE 20 ILN 2 IN CL012DOC $LM... 100 dump p at line 230;... 110 d *p at line 230;... 120 d U_grec at ln 230;... 130 d U_grec.I.x at line 230;... 140 d (*p).I at line 230;... 150 c (*p).I.x = "alpha" at line 230;... 160 pause at line 230;...170 D: go)))(((PCF AT * LINE 230 ILN 23 IN CL012DOC...100 DUMP... p /DT/R0/8.2A.00EC...110 DUMP... I... x gamma... size 3... F... y gamma... size *00000003*...120 DUMP... U_grec... I... x gamma... size 3... F... y gamma... size *00000003*...130 DUMP... x gamma...140 DUMP... I... x gamma
Mise au point de programmes en langage C
47 F2 15UP Rev02 19-9
... size 3
...150 CHANGE
... x alpha
...
... (gamma)
...160 PAUSE
...170 D: change (*p).I.x = "ALPHA "
... *** ERRONEOUS VALUE FOR ENUM
... *** CHANGE OF x INTERRUPTED BY PRECEDING ERROR, NOTHING MODIFIED.
... *** ERROR DURING COMMAND EXECUTION.
...170 D: change (*p).I.x = "beta" if U_grec.I.size = 3
... x beta
...
... (alpha)
...170 D: dump p
... p /DT/R0/8.2A.00EC
...170 D: dump &U_grec
... /DT/R1/8.2A.00EC
...170 D: p at e_i
...180 D: go)))(((PCF AT *(+8) LINE 230 ILN 23 IN CL012DOC...170 PAUSE...180 D: go)))(((PCF AT *(+C) LINE 230 ILN 23 IN CL012DOC...170 PAUSE...180 D: kill 170... KILLED COMMANDS ARE 170...170 D: go)))S:
Aide à la mise au point (PCF)
19-10 47 F2 15UP Rev02
47 F2 15UP Rev02 20-1
20. Traitement des modules chargeablesde grande taille
Ce chapitre détaille le traitement spécifique qu'implique la mise au point en modesymbolique des modules chargeables de grande taille.
20.1 PROBLÈMES PROPRES AUX MODULES CHARGEABLES DE GRANDETAILLE
La compilation d'un programme avec l'option DEBUG permet de le mettre au point enmode symbolique. Cela multiplie cependant par 4 à 10 le volume des CU générés parrapport à celui des CU obtenus sans mise en oeuvre de l'option DEBUG. Lorsqu'unmodule chargeable comporte un trop grand nombre de CU (plus de cent), lesinformations de gestion nécessaires à la mise au point en mode symbolique prennenttrop de place et l'éditeur de liens LINKER ne peut constituer le module chargeabledéfinitif.
On peut éviter cette contrainte en pratiquant l'édition de liens sur des CU de tailleréduite, dans lesquels ont été supprimées les informations de gestion. Pendantl'exécution, PCF peut charger en dynamique ces informations à partir des CU initiauxrangés dans diverses bibliothèques.
Aide à la mise au point (PCF)
20-2 47 F2 15UP Rev02
20.2 TRAITEMENT DES MODULES CHARGEABLES DE GRANDE TAILLE
Phase 1 : Compilation
La compilation avec l'option DEBUG se fait selon la procédure normale et permetd'obtenir des CU complets contenant les informations de gestion nécessaires à la miseau point en mode symbolique.
Phase 2 : "Allègement"
Les CU résultant de la première phase sont ensuite "allégés", autrement dit il y asuppression des informations de gestion nécessaires à la mise au point en modesymbolique. Les CU "allégés" sont à peu près de la même taille que ceux obtenus sansl'option DEBUG, autrement dit avant optimisation. Il faut disposer d'une secondebibliothèque d'unités compilées pour y ranger les CU "allégés" qui ont les mêmes nomsque ceux d'origine. Il peut s'agir d'une bibliothèque temporaire si la phase d'édition deliens suit immédiatement la recherche des CU. Un utilitaire appelé SPLIT_CU se chargede l'opération d'"allègement" et peut être lancé en JCL en mode traitement par lots ou enGCL sous IOF.
Phase 3 : Edition de liens
Il faut ensuite effectuer l'édition de liens des CU allégés qui sont à présent assez petitspour permettre la création d'un module chargeable. Cette phase doit disposer dans sonitinéraire de recherche de la bibliothèque de CU "allégés", qui doit précéder cellecontenant les CU d'origine (si cette bibliothèque figure elle aussi dans l'itinéraire derecherche). Par exemple, si nom-bib-cu1 existe dans l'itinéraire de recherche deLINKER, elle doit faire suite à nom-bib-cu2, faute de quoi LINKER travaillera sur les CUd'origine et non pas sur les CU "allégés".
Phase 4 : Mise au point
Le module chargeable s'exécute normalement. Quand il a besoin d'informations degestion nécessaires à la mise au point en mode symbolique, PCF recherche les CUcorrespondants dans nom-bib-cu1 qui contient les CU d'origine. Cette bibliothèque doittoutefois être spécifiée dans l'itinéraire de recherche du CU au moment de l'exécution(ou juste avant) soit par les commandes CULIB1/2/3 de PCF, soit par la commande IOFMWINLIB CU.
Traitement des modules chargeables de grande taille
47 F2 15UP Rev02 20-3
20.3 COMMANDE SPLIT_CU
20.3.1 Syntaxe GCL (domaine IOF)
+----------------------------------------------------------------+| || {SPLIT_CU | SCU } MEMBER= nom-cu || INLIB = nom-bib-cu1 || OUTLIB= nom-bib-cu2 || |+----------------------------------------------------------------+
Paramètres
MEMBER Nom du CU à "alléger". La convention astérisque peut êtreutilisée.
INLIB Nom de la bibliothèque dans laquelle l'utilitaire doit chercherles CU à "alléger".
OUTLIB Nom de la bibliothèque dans laquelle doivent être rangés lesCU "allégés".
20.3.2 Syntaxe JCL
+----------------------------------------------------------------+| || STEP H_SCU SYS.HLMLIB OPTIONS= 'nom-cu'; || ASG IN_FD nom-bib-cu1 SHARE=DIR; || ASG OUT_FD nom-bib-cu2 SHARE=DIR; || ENDSTEP; || |+----------------------------------------------------------------+
Paramètres :
nom-cu Nom du CU à "alléger". La convention astérisque peut êtreutilisée.
nom-bib-cu1 Nom de la bibliothèque dans laquelle l'utilitaire doit chercherles CU à "alléger".
nom-bib-cu2 Nom de la bibliothèque dans laquelle doivent être rangés lesCU "allégés".
Aide à la mise au point (PCF)
20-4 47 F2 15UP Rev02
20.4 SPECIFICATION DE LA BIBLIOTHÈQUE CU D'ORIGINE
Lors de l'exécution, PCF doit pouvoir localiser la bibliothèque contenant les CU d'origine(avant "allègement") selon l'une des méthodes ci-dessous :
(i) Avant exécution du module chargeable, par la commande IOF MWINLIB, parexemple :
S:MWINLIB CU nom-bib-cu1;
(ii) Au cours de la session PCF, par les commandes PCF CULIB1/2/3, par exemple :
D: CULIB1 nom-bib-cu1;
20.4.1 Syntaxe de la commande CULIB1/2/3
+----------------------------------------------------------------+| || {CULIB1 | CULIB2 | CULIB3 } nom-bib-cu; || |+----------------------------------------------------------------+
On peut spécifier jusqu'à 3 bibliothèques contenant des informations de gestionnécessaires à la mise au point en mode symbolique, l'ordre de recherche étant CULIB1,CULIB2, CULIB3. Il y a un contrôle de cohérence, fondé sur les dates de création, afinde ne pas oublier de renouveler les phases d'"allègement" et d'édition des liens en casde recompilation d'un CU dans la bibliothèque nom-bib-cu1; PCF peut ainsi utiliser lesnouvelles informations de gestion pour la mise au point en mode symbolique.
Si l'édition de liens du module chargeable s'est faite avec l'option SYMBMAP=NO, lacommande IOF MWINLIB CU doit spécifier l'itinéraire de recherche. Il n'est pas possible,dans ce cas, d'utiliser les commandes PCF CULIB1/2/3. Cette option de LINKER n'estpas conseillée, mais peut cependant s'avérer nécessaire pour des programmes de trèsgrande taille.
20.5 LIMITES DE TAILLE
PCF ne peut pas charger en mémoire plus de 32 segments d'informations. Il existecependant un mécanisme d'échange permettant de lever cette restriction, sauf si unecommande unique a besoin de plus de 32 segments en même temps.
La procédure décrite ici permet la mise au point en mode symbolique d'un modulechargeable comportant jusqu'à 2000 CU.
Pour un module chargeable de très grande taille (plus de 800 CU), il faudraprobablement réserver plus de mémoire pour PCF. Ceci peut se faire au moment del'édition de liens au moyen de la commande SEGTAB1 (voir Exemple 5 ci-dessous).
Traitement des modules chargeables de grande taille
47 F2 15UP Rev02 20-5
20.6 EXEMPLES
Dans les exemples suivants, les CU d'origine sont rangés dans une bibliothèque appeléeBIBCU.ORIG. On suppose que tous les noms de CU commencent par 'MON'. Il faut toutd'abord "alléger" les CU et ranger les segments "allégés" dans BIBCU.ALL. Il y a ensuiteédition de liens du module chargeable en utilisant les CU "allégés". Avant ou pendantl'exécution du module chargeable, il faut définir la bibliothèque des CU d'origine dansl'itinéraire de recherche de PCF, ce qui permet de récupérer les informations de gestionnécessaires à la détection d'une commande demandant un mise au point en modesymbolique.
Exemple 1 :
Cet exemple est en mode interactif et utilise des commandes GCL. La bibliothèque deCU d'origine est définie avant l'exécution du module chargeable.
SPLIT_CU MEMBER= MON* INLIB= BIBCU.ORIG OUTLIB= BIBCU.ALL;LINK_PG MON INLIB= BIBCU.ALL;MWINLIB CU BIBCU.ORIG;EXEC_PG MON, DEBUG=TN;
Exemple 2 :
Cet exemple est en mode traitement par lots et utilise des commandes JCL. Labibliothèque CU d'origine a été définie avant l'exécution du module chrgeable.
STEP H_SCU SYS.HLMLIB OPTIONS='MON*';ASG IN_FD BIBCU.ORIG SHARE=DIR;ASG OUT_FD BIBCU.ALL SHARE=DIR;$ENDSTEP;LINKER MON INLIB= BIBCU.ALL OUTLIB=MON.LMLIB;LIB CU INLIB1= BIBCU.ORIG;STEP MON, MON.LMLIB,DEBUG=*IN;$ENDSTEP;$INPUT IN...$ENDINPUT IN;
Exemple 3 :
Cet exemple est en mode interactif et utilise des commandes GCL. La bibliothèque CUd'origine est définie avant l'exécution du module chargeable.
SPLIT_CU MEMBER= MON*INLIB= BIBCU.ORIGOUTLIB= BIBCU.ALL;LINK_PG MON INLIB= BIBCU.ALL;EXEC_PG MON DEBUG=TN;.CULIB1 BIBCU.ORIG;..
Aide à la mise au point (PCF)
20-6 47 F2 15UP Rev02
Exemple 4 :
Cet exemple est en mode par lots et utilise des commandes JCL. La bibliothèque CUd'origine est définie lors de l'exécution du module chargeable.
STEP H_SCU SYS.HLMLIB OPTIONS='MON*';ASG IN_FD BIBCU.ORIG SHARE=DIR;ASG OUT_FD BIBCU.ALL SHARE=DIR;$ENDSTEP;LINKER MON INLIB= BIBCU.ALL OUTLIB=MON.LMLIB;STEP MON, MON.LMLIB,DEBUG=*IN;$ENDSTEP;$INPUT IN.CULIB1 BIBCU.ORIG;..$ENDINPUT IN;
Exemple 5 :
Cet exemple est en mode interactif et utilise des commandes GCL. Lors de l'édition deliens, un segment de grande taille est affecté pour utilisation par PCF. La bibliothèqueCU d'origine est définie avant l'exécution du module chargeable.
SPLIT_CU MEMBER= MON* INLIB= BIBCU.ORIG OUTLIB= BIBCU.ALL;LINK_PG MON INLIB= BIBCU.ALL, COMMAND=(ENTRY MON,SEGTAB1=(SHRLEVEL=2, VSEG=1));MWINLIB CU BIBCU.ORIG;EXEC_PG MON, DEBUG=TN;
47 F2 15UP Rev02 A-1
A. Résumé de la syntaxe PCF
Ce chapitre fournit une description complète de la syntaxe PCF, selon la hiérarchie deséléments syntaxiques.
A.1 NIVEAU SYNTAXIQUE SUPERIEUR
Session-mise-au-point-PCF ::= commande-PCF [commande-PCF]...
commande-PCF ::= {commande-APPLY |commande-BEGIN |commande-CHANGE |commande-CHECKPOINT |commande-CULIB1 |commande-CULIB2 |commande-CULIB3 |commande-DISPLAY |commande-DSR |commande-DUMP |commande-END |commande-EXEC |commande-FSE |commande-GOTO |commande-GO |commande-INLIB1 |commande-INLIB2 |commande-INLIB3 |commande-KILL |commande-LIB |commande-LIST |commande-OUTPUT |commande-PAUSE |commande-RECOVER |commande-RESUME |commande-SUSPEND |commande-TRACE |commande-WHERE }
Aide à la mise au point (PCF)
A-2 47 F2 15UP Rev02
A.2 COMMANDES
APPLY ::= {APPLY | A} [liste-numéros-commande] IN nom-procédure [.bloc];
BEGIN ::= [numéro-commande] {BEGIN | B} [AT liste-points-intervention][clause-IF];
CHANGE ::= [numéro-commande] {CHANGE | C} affectation [,affectation]... [AT liste-points-intervention][clause-IF];
CHECKPOINT ::= [numéro-commande] {CHECKPOINT | CKPT} AT [liste-points-intervention][clause-IF];
CULIB1 ::= [numéro-commande] CULIB1 ["description-bibliothèque"] [AT liste-points-intervention][clause-IF];
CULIB2 ::= [numéro-commande] CULIB2 ["description-bibliothèque"] [AT liste-points-intervention][clause-IF];
CULIB3 ::= [numéro-commande] CULIB3 ["description-bibliothèque"] [AT liste-points-intervention][clause-IF];
DISPLAY ::= DISPLAY;
DSR ::= [numéro-commande] DSR [ {LINE | LN} numéro-ligne [ TO {LINE | LN} numéro-ligne]]
DUMP ::= [numéro-commande] {DUMP | D} expression-données [,expression-données]... [AT liste-points-intervention][clause-IF];
END ::= [numéro-commande] END [DUMP] [AT liste-points-intervention][clause-IF];
EXEC ::= [numéro-commande] {EXEC | E} "description-fichier" [AT liste-points-intervention][clause-IF];
FSE ::= [numéro-commande] FSE [AT liste-points-intervention][clause-IF];
GOTO ::= [numéro-commande] GOTO point-intervention [AT liste-points-intervention][clause-IF];
GO ::= {[/ | [numéro-commande] GO} [AT liste-points-intervention][clause-IF];
INLIB1 ::= [numéro-commande] {INLIB1 | IL1} ["description-bibliothèque"] [AT liste-points-intervention][clause-IF];
Résumé de la syntaxe PCF
47 F2 15UP Rev02 A-3
INLIB2 ::= [numéro-commande] {INLIB2 | IL2} ["description-bibliothèque"] AT liste-points-intervention][clause-IF];
INLIB3 ::= [numéro-commande] {INLIB3 | IL3} ["description-bibliothèque"] [AT liste-points-intervention][clause-IF];
KILL ::= [numéro-commande] {KILL | K} [liste-numéros-commandes] [AT liste-points-intervention][clause-IF];
LIB ::= [numéro-commande] {LIB} "description-bibliothèque"] [AT liste-points-intervention][clause-IF];
LIST ::= [numéro-commande] {LIST | L} [liste-numéros-commandes] [AT liste-points-intervention][clause-IF];
OUTPUT ::= [numéro-commande] {OUTPUT | O} ["description-fichier"] [AT liste-points-intervention][clause-IF];
PAUSE ::= [numéro-commande] {PAUSE | P} AT [liste-points-intervention][clause-IF];
RECOVER ::= [numéro-commande] RECOVER {ILLDEC | SUBSCRIPT} [AT liste-points-intervention][clause-IF];
RESUME ::= [numéro-commande] {RESUME | R} [liste-numéros-commandes] [AT liste-points-intervention][clause-IF];
SUSPEND ::= [numéro-commande] {SUSPEND | S} [liste-numéros-commandes] [AT liste-points-intervention][clause-IF];
TRACE ::= [numéro-commande] {TRACE | T} [NOT | MAP] [AT liste-points-intervention][clause-IF];
WHERE ::= [numéro-commande] {WHERE | W} [TRACK | TK] [AT liste-points-intervention][clause-IF];
Aide à la mise au point (PCF)
A-4 47 F2 15UP Rev02
A.3 NIVEAU SYNTAXIQUE INTERMEDIAIRE
liste-points-intervention ::= point-intervention [TO point-intervention] [,point-intervention [TO point-intervention]]...
affectation ::= référence-donnée = {expression-donnée | constante}
liste-numéros-commandes ::= numéro-commande [TO numéro-commande] [,numéro-commande [TO numéro-commande]]...
description-fichier ::= littéral-fichier (Pour une description complète de la syntaxe de ce paramètre, se reporter au manuel de référence IOF (21UJ))
description-bibliothèque ::= bib-78 (Pour une description complète de la syntaxe de ce paramètre, se reporter au manuel de référence IOF (21UJ))clause-IF ::= IF {expression-données | /SEV | /COUNT} [{NOT | ^ }] {=| < | > | <= | >= | EQ | NE | GT | LT | GE | LE} expression-données [{AND | & | OR ||} {expression-données | /SEV | /COUNT} [{NOT | ^}] {=| < | > | <= | >= | EQ | NE | GT | LT | GE | LE} expression-données]...
constante ::= {constante-numérique |constante-caractères |constante-hexadécimale |constante-chaine-bits |constante-pointeur |constante-complexe | .T. | .F.}
bloc ::= {{LINE | LN} numéro-ligne |ILN numéro |nom-procédure [.nom-procédure]...}
Résumé de la syntaxe PCF
47 F2 15UP Rev02 A-5
A.4 POINTS D'INTERVENTION ET RÉFÉRENCES DE DONNÉES
expression-données ::= {(expression-données) [indice-langage-C] |constante |[opérateur-adresse] référence-symbolique} |[opérateur-adresse] référence semi-symbolique} |opérateur-d'indirection expression-données-type |LOCAL_VARIABLES | L_V |référence-effective [opérateur-expression-données]...[format]...
indice-langage-C ::= "["expression-données [,expression-données]"]"
expression-données-typée ::= {(expression-données) [référence-symbolique]/ [indice-langage-C]|référence-symbolique [indice-langage-C]
référence-symbolique ::= {fom[.nom]...[(indice[,indice]...)] ::= |nom[.nom]...[indice-langage-C [andice-langage-C]...] |nom[{OF | IN} nom]... [(indice[,indice]...)]}
indice ::= {expression-données[{: | TO} expression-données]
référence-effective ::= {?[[stn.]ste.]sra |?STKi | ?STK(i[{: TO}j]) |?BRi | ?BR (i[{: TO}j]) |?GRi | ?GR (i[{: TO}j]) |?XRi | ?XR (i[{: TO}j]) |?SRi | ?SR (i[{: TO}j]) |?IC | ?TR | ?ST | ?SAM | ?PSA | ?PTV |?NBP|?LOC | ?PAR | ?COM | ?SAV |?{BRi|BR(i)| IC} . dépd.
point-intervention ::= {?[[stn.]ste.]sra |étiquette |{LINE | LN} numéro-ligne |numéro ILN |POST_MORTEM | POST-MORTEM | P_M | P-M |ALL_LABELS | ALL-LABELS | A_L | A-L |{EACH_REF | EACH-REF | E_R | E-R} référence-symbolique |{EACH_LINE | EACH-LINE | E_L | E-L} |{EACH_INSTR | EACH-INSTR | E_I | E-I}
numéro-ligne 2:= numéro [.[numéro]] [.numéro] [*rang]
référence-semi-symbolique ::= {@[nom[.dépl.]] | :[isn][.offset]}
opérateur ::= { + | - | -> | {[^|NOT] {= | <= | >=|EQ|NE|LE|GE|LT|GT|}}}
format ::= # codef [p [.q]]
codef ::= B | C | DPS | DPU | DUSLO | DUSLS | DUSTS | DUSTO | DUU | EFB | FB | H | L | LB | LFB | | P | RC | SFB | X | NAL | LN
Aide à la mise au point (PCF)
A-6 47 F2 15UP Rev02
A.5 NIVEAU SYNTAXIQUE INFERIEUR
nombre ::= chiffres
nom ::= { caractères | 'caractères' }
stn ::= hexa1
ste ::= hexa2
sra ::= hexa6
déplacement ::= hexa6
nom-procédure ::= nom
étiquette ::= nom
numéro-commande ::= numéro
rang ::= nombre
constante-numérique ::= [+ | -][nombre][.nombre] [{E | D | Q}[+ | -] nombre]
constante-caractères ::= "chaîne" [C]
constante-hexadécimale ::= "hexa"{X | H}
constante-chaîne-bits ::= "bits" B
constante-complexe ::= (constante-numérique,constantenumérique)
constante-pointeur ::= [/{DIRECT | DT | INDIRECT | IT}] [/{RO | R1 | R2 | R3}] / [[stn.]ste.]sra
opérateur-adresse ::= &
opérateur-d'indirection ::= *
47 F2 15UP Rev02 B-1
B. Format des données
Cette annexe comprend quatre tableaux:
Tableau B-1:DECLARATIONS DEDONNEES
Tableau indiquant la méthode de déclaration desdifférents types de variables en COBOL, FORTRAN etGPL.
Tableau B-2: LONGUEURDE DONNEES
Tableau indiquant la longueur maximum autorisée pourtous les types de données en COBOL, FORTRAN et GPL.
Tableau B-3: SYNTAXEDES FORMATS
Tableau récapitulatif de la syntaxe et de la significationdes formats PCF.
Tableau B-4: CODES DEFORMATS
Tableau indiquant le format associé à chaque type dedonnée.
Aide à la mise au point (PCF)
B-2 47 F2 15UP Rev02
Tableau B-1. Déclarations de données
T YPES DE DO N NEES
CHAINE
CO B OL FO R T RAN GPL
VALEU RBO OLEEN NE
DO NNEE DELO CALISAT IO N
BIN AIREFIXE
VIRGULEFLOTTANTE
DONNEES
ARITHMETIQUES
DECIMAL
CO ND ENSE
C A R A C T E R E S
BITS
LOGIQUE
POINTEUR
M O T
DEMI-MOT
SIMPLE
D O U B L E
Q U A D R U P L E
SIGNE
NON SIGNE
SIGNESEPARE AG A U C H E
SIGNESUPERPOSEA GAUCHE
SIGNESEPARE ADROITE
SIGNESUPERPOSEA DROITE
NON SIGNE
PICX (n)
néant
néant
néant
COMP-2
COMP-1
COMP-9
COMP-10
COMP-15
COMP-3 ou COMP-8
COMP-3 ou COMP-8
PIC S99.. LEADINGSEPARATE
PIC S99.. LEADING
PIC S99.. TRAILING
C H A R A C T E R * n
néant
LOGICAL
néant
INTEGER
néant
REAL
D O U B L EPRECISION
Q U A D R U P L EPRECISION
néant
néant
néant
néant
CHAR(n)
BIT(n)
néant
POINTER
FIXEDBIN(31)
FIXEDBIN(15)
néant
néant
néant
néant
néant
néant
néant
néantSEPARATE
PIC S99.. T RAILING
PIC 99..
néant
néant
néant néant
néant
ECLATE
PIC S99..
P IC S99..
Format des données
47 F2 15UP Rev02 B-3
Tableau B-2. Longueur de données
TYPES DE DO NN EE S
CHAINE
COBO L FO RT RAN G PL
V ALEURB OOLEENNE
DONNE E DELO CALISATIO N
BINAIREFIXE
V IR GULEFLOTTANTE
DONNEES
ARITHMETIQUES
DECIMAL
CON DE NS E
C A R A C T E R E S
BITS
LOGIQUE
M O T
DEMI-MOT
SIMPLE
D O U B L E
Q U A D R U P L E
SIGNE
NON SIGNE
SIGNESEPARE AG A U C H E
SIGNESUPERPOSEA GAUCHE
SIGNESEPARE ADROITE
SIGNESUPERPOSEA DROITE
NON SIGNE
néant
néant
néant
néant
néant
néant
néant
néant
néant
néant
néant
néant
néantnéant
néant
néant néant
néant
ECLATE
POINTEUR
INDEX
1 à 32767 car.
néant
6 octets
1 à 255 car.
1 à 4 oc tets
néant
1 à 32767 car.
1 à 64 bits
4 octets
néant
4 octe ts
2 octe ts
4 octets 4 octets
2 octets
4 octe ts
8 octe ts
néant
4 octets
8 octets
néant
16 octets
1 à 30 ch if .
1 à 30 chif .
néant
néant
néant
néant
2 à 31 oc te ts
1 à 30 octets
2 à 31 oc te ts
1 à 30 octets
1 à 30 oc te ts
La syntaxe d'un format PCF est :
# code [p [.q]]
"code" est une chaîne alphabétique correspondant au type de donnée, et p et q sont desqualificateurs numériques. Les valeurs applicables sont indiquées ci-dessous.
Aide à la mise au point (PCF)
B-4 47 F2 15UP Rev02
Tableau B-3. Syntaxe des formats
CO D E TYPE DE DO NN EE p q
B
C
DPS
DPU
DU SLO
DUSLS
DUSTO
DUSTS
DUU
EFB
FB
H
L
LB
LFB
P
RC
SFB
X
NAL
chaîne de bits
chaîne de ca ractères
décim al condensé signé
décim al condensé non signé
décim al écla té non s igné
binaire flottant sur 16 octets
binaire fixe
logique
binaire logique
pointeur
code retour
hexadécim al
instruction m achine
nom bre de b its
nom bre de ca rac tères
nom bre de position num ériques
nom bre de p ositions num ériques
nom bre de p ositions num ériques
nom bre de p ositions num ériques
nom bre de p ositions num ériques
nom bre de p ositions num ériques
nom bre de p ositions num ériques
nom b re de b its après le signe
nom bre d'octets
nom bre de b its
nom bre d'octets
sans objet
_
_
nom bre de décim ales
nom bre de décim ales
nom bre de décim ales
nom bre de décim ales
nom bre de décim ales
nom bre de décim ales
nom bre de décim ales
sans objet
déc im al écla té s ignesuperposé à gauche
déc im al écla té s igneséparé à gauche
déc im al écla té s ignesuperposé à droite
déc im al écla té s igneséparé à d roite
hexadécim a l et cha îne de caractè res
1 = valeu r logique sur 1 bit4 = valeu r logique sur 4 bits
binaire flottant à doub leprécision su r 8 o ctets
binaire flottant à sim pleprécision su r 4 octets
Format des données
47 F2 15UP Rev02 B-5
Tablau B-4. Codes de formats
TYPES DE DO NNEES
CHAINE
CO DES FO RM AT (*)
VALEURBO OLEENNE
DO NNEE D ELO CALISATIO N
BINAIREFIXE
VIRGULEFLOTTANTE
DECIMAL
CONDENSE
C A R A C T E R E S
BITS
LOGIQUE
SIMPLE
D O U B L E
Q U A D R U P L E
SIGNE
NON SIGNE
NON SIGNE
B1 à B64
P
DUSLS1 à DUSLS30.q (**)
ECLATE
POINTEUR
INDEX
C1 à C32767
L1 à L4
pas de form at
FB1 à FB31
SFB
DFB
EFB
DPS1-DPS31.q (**)
DPU1-DPU 31.q (**)
CARACTERE HEXADECIMAL
HEXADECIM AL
H1 à H32767
X1 à X32767
SIGN E SEPARE A GAUCHE
SIGNE SUPERPO SE A GAUCHE
SIGNE SEPARE A DROITE
SIGN E SUPERPO SE A DRO ITE
DUSLO 1 à D USLO30.q (**)
DUSTS1 à DUSTS30.q (**)
DUSTO 1 à D USTO 30.q (**)
DUU1 à DUU30.q (**)
DONNEES
ARITHMETIQUES
CO DE RETOUR RC
Le form at X (hexadécim al) peut s'utiliser pour tous les types de données, sous la form e Xn, n étant un nom bre d'octets.
(*)
(**) q est le nom bre de chiff res après la m arque décim ale im plicite.
Aide à la mise au point (PCF)
B-6 47 F2 15UP Rev02
47 F2 15UP Rev02 C-1
C. Constantes, affectations, comparaisons
Cette annexe explique les comparaisons et affectations entre données de typesdifférents. Elle comprend également un tableau indiquant la syntaxe des constantes etdes littéraux en PCF.
Aide à la mise au point (PCF)
C-2 47 F2 15UP Rev02
Table C-1. Syntaxe des constantes et littéraux
(*) le nom bre de ca ractères he xadécimaux d'une c onstante hexadécim ale doit être pair.
T YPE DE CO NS T AN TE S SYNT AXE
|||
EDQ
|||
|||
|||
|||
[+ ]
[-]
entie rnb. fract.à virgulef lot tan te
en tie rnb. f rac t.à virguleflottante
||||
||||
||||
||||
( ),
XH
||
||
||||
||||
||||
||||
"carhexa[carhexa]..."
0 [0]" ..."B 1 [1]
| [ + ]
| [-]
[entier] . [chiffre] ...
nombre chiffre ... fractionnaire
| ch iff re [ch if fre] ...
EXEM PLE S
0 -10 +7 3
17.3 -0 .7 .42
1.32E2 1.28Q-2
(1 .2,2 )(1 .45 ,-2E 4 )(0 ,-1 )
"ABC " "XYZ"C
ENTIER
EN VIRGULE FLOTTANTE
COMPLEXE
CARACTERES
HEXADECIMAL
CHAINE DE BITS
POINTEUR
LOGIQUE
"F 2"X"1 234AB"H
0 "B " 10 1 "B
/8 .12 .3F/DT/R3 /8.12 .3F/IT/9.8 .7FF F/R2/8 .12 .67A/R1/9 .12 .F FF F
.T . .F .
NOM BRE F RACTIONNAIREDECIM AL
||||||
||||||
[ /DIRECT][/DT]
[ / INDIRECT][/IT]
||||||
||||||
[/R1]
[/R1][/R3]
[/R0]
/stn .ste .sra
"caractère-quelconque[caractère-quelconque]..."[C ]
. .||||
||||
T
F
Constantes, affectations, comparaisons
47 F2 15UP Rev02 C-3
AFFECTATIONS ET COMPARAISONS ENTRE DONNEES DE TYPES DIFFERENTS
Les affectations et les comparaisons s'utilisent dans la commande CHANGE, dans laclause IF et dans les expressions de données de type logique. En général, lesaffectations et comparaisons ne sont autorisées qu'entre données de même type.Toutefois, dans le cas de données numériques, toutes les comparaisons sont possibles.Les affectations ont lieu quant à elles conformément à la hiérarchie suivante (de haut enbas):
• binaire logique
• décimal non signé
• décimal signé
• binaire en virgule flottante
Il faut tenir compte du fait que certaines incompatibilités peuvent provoquer des erreurs.Il est toujours possible d'affecter ou de comparer des variables incompatibles enimposant un format. Toutefois, le résultat n'est pas garanti.
Exemple:
DUMP ("CHAINE"#LB24)=32;
CHANGE DONNEE1#X8=DONNEE2#X8;
Aide à la mise au point (PCF)
C-4 47 F2 15UP Rev02
47 F2 15UP Rev02 g-1
Glossaire
Allègement (Stripping)
L'"allègement" d'un CU consiste à en supprimer les informations de gestion nécessairesà sa mise au point en mode symbolique. La commande SPLIT_CU permet cet"allègement" sous IOF.
Commande (Command)
Une commande est une requête soumise au processeur PCF au moment de l'exécution.
CU (Compile Unit)
Unité de compilation.
CU MAP
Liste des informations nécessaires à la mise au point en mode symbolique. Cette listeest générée au moment de la compilation et utilisée par PCF lors de l'exécution.
Désassemblage (Disassembly)
Indique la conversion d'une instruction en code machine en instruction non assembleuréquivalente (NAL). PCF peut convertir des instructions machine en leur équivalent NAL.
Liste des points d'intervention (Action point list)
Elle précise le moment où une commande PCF sera mise en oeuvre.
Mode pas à pas (Stepping)
Dans ce mode, le programme peut être analysé à chaque "pas" de son exécution. Pourla mise au point en adressage effectif, le "pas" se situe au niveau de chaque instruction;pour la mise au point en mode symbolique ou semi-symbolique, il se situe au niveau dechaque ligne. Sous PCF, la commande PAUSE permet d'obtenir la mise au point pas àpas.
Aide à la mise au point (PCF)
g-2 47 F2 15UP Rev02
Opérateur adresse (Address Operator)
L'opérateur adresse se présente sous la forme d'un & et permet de trouver l'adresseréelle d'une référence symbolique ou semi-symbolique.
Opérateur d'indirection (Typed point operator)
L'opérateur d'indirection (adressage indirect) se présente sous la forme d'un "*" et signaleun adressage indirect vers une variable de type.
Variables locales (Local variables)
Des variables locales sont internes à une procédure déterminée et sont rangées dans lapile. PCF peut afficher les valeur courantes de toutes les variables locales de laprocédure en cours.
47 F2 15UP Rev02 i-1
Index
A
Abréviationcommandes PCF 2-1
Adressageeffectif 4-1indirect 14-5indirect par registre 14-7semi-symbolique 5-1semi-symbolique direct 5-3, 15-2symbolique 3-1
Adressage effectifexemple de mise au point 14-10mise au point en~ 14-1
Adresse mémoire 4-1, 5-1Agrégats 3-4Allègement
de CU 20-2Appel de PCF
par TRACE PRINT 10-1par TRACE SEND 10-2
B
Bloc (en langage C) 19-6
C
ClauseIF 3-11, 4-6, 5-7Quand 3-1Quoi 3-1
COBOLexemple de session de mise au point 11-6littéraux 11-4référence aux instructions ~ 11-5types de variables 11-1
Commande
~s dans fichier disqueséquentiel catalogué 7-2~s dans fichier disque séquentiel noncatalogué 7-2~s dans unité SL cataloguée 7-3~s dans unité SL non cataloguée 7-2~s sur cartes 7-1SPLIT_CU 20-3
Commande PCFliste de numéros 3-2, 4-2, 5-2
Commande PCFAPPLY 6-2Commande PCFBEGIN 6-4Commande PCFCHANGE 6-6Commande PCFCHECKPOINT 6-8Commande PCFCULIB1/2/3 6-9Commande PCFDISPLAY 6-10Commande PCFDSR 6-11Commande PCFDUMP 6-12Commande PCFEND 6-14Commande PCFEXEC 6-16Commande PCFFSE 6-18Commande PCFGOTO 6-19Commande PCFINLIB1/2/3 6-20Commande PCFKILL 6-21Commande PCFLIB 6-23Commande PCFLIST 6-24Commande PCFOUTPUT 6-25Commande PCFPAUSE 6-27Commande PCFRECOVER 6-29Commande PCFRESUME 6-30Commande PCFSUSPEND 6-30Commande PCFTRACE 6-32Commande PCFWHERE 6-34Commandes PCF
abréviations 2-1syntaxe 2-1
Compilation 1-3Compte rendu
d'exécution 18-2de traduction 18-1
Aide à la mise au point (PCF)
i-2 47 F2 15UP Rev02
Compte rendu d'exécution 16-3, 17-3~ sous TDS 18-1en interactif 17-1en télétraitement par lots 17-1traitement par lots 16-1
Compte rendu de traduction 16-2Constante 3-2, 4-2, 5-3
~s FORTRAN 12-2~s GPL 13-2
D
Déclaration de données B-1Désassemblage 4-6Désassembleur NAL 4-6Dialogue utilisateur
messages et préfixes PCF 17-1
E
Effectifadressage 4-1
Etiquette 3-8Exécution 1-3Expression
/COUNT 3-11, 4-6, 5-7/SEV 3-11, 4-6, 5-7
Expression de donnée 3-2, 5-2Expression de données 4-2
F
Format 3-6code des ~s B-1syntaxe des ~s B-1
FORTRANconstantes 12-2exemple de session de mise au point 12-4référence aux instructions ~ 12-3types de variables 12-1
G
GPLconstantes 13-2exemple de session de mise au point 13-6référence aux instructions ~ 13-4types de variables 13-1
I
Interactifappel de PCF 8-1
Interruptiontraitement des ~s (en interactif) 8-4traitement des ~s (en télétraitement parlots) 9-5
L
Langage Cchaînes de caractères 19-4constantes 19-2constantes pointeur ou entrée 19-5crochets 19-7entiers 19-2énumération de variables 19-4exemple de session de mise au point 19-8nombres réels 19-4notion de bloc 19-6pointeur d'indirection 19-2référence aux instructions en ~ 19-7types de variables 19-1utilisation de majuscules et minuscules19-8variables énumérées 19-4
Littéraux~ COBOL 11-4
Longueur de données B-1
Index
47 F2 15UP Rev02 i-3
M
Menus GCL~ et messages de guidage 17-4
Messages de guidagemenus GCL et ~ 17-4
Messages et préfixes PCF~ et dialogue utilisateur 17-1
Mise au point~ en adressage effectif 14-1~ en adressage semi-symbolique 15-1définition d'une session (interactif) 8-1déroulement de la session (interactif) 8-2déroulement de la session(télétraitement par lots) 9-4exemple de ~ enadressage effectif 14-10exemple de session COBOL 11-6exemple de session en langage C 19-8exemple de session FORTRAN 12-4exemple de session GPL 13-6lancement de lasession (télétraitement par lots) 9-3mode interactif 1-4pas à pas 3-11, 4-4, 5-6préparation d'unesession (télétraitement par lots) 9-1programmes COBOL 11-1programmes FORTRAN 12-1programmes GPL 13-1télétraitement par lots 1-5traitement par lots 1-4traitement transactionnel 1-6
Mode interactifmise au point 1-4
Module chargeableproblèmes particuliersaux ~s de grande taille 20-1traitement des ~s de grande taille 20-2
N
Nom symbolique 5-5Notation ISN
offset 14-9
O
Opérateur 3-6, 4-3, 5-5adresse 3-7arithmétique 3-7, 4-4, 5-6logique 3-7, 4-4, 5-6
Option MAPvoir Relevé d'implantation: 14-1, 15-1Ordre CONSOLE 9-1
P
Parenthèses 3-6, 4-3, 5-5PCF
affectations C-1appel en interactif 8-1appel en télétraitement par lots 9-1appel en traitement par lots 7-1appel en traitement transactionnel 10-1comparaisons C-1description générale 1-2lancement immédiat (interactif) 8-4lancement immédiat(télétraitement par lots) 9-5limites de taille 20-4syntaxe de constantes C-2syntaxe des littéraux C-2utilisation 1-3
Phase~ d'exécution 1-3~ de compilation 1-3
Plage d'instructions 3-9Point d'intervention
liste des ~ 3-8liste des ~s 4-4, 5-6nom de ~ symbolique 3-10
Pointeur d'indirectionen langage C 19-2
Programmes COBOLmise au point 11-1
Programmes FORTRANmise au point 12-1
Programmes GPLmise au point 13-1
R
Référenceaux instructions COBOL 11-5aux instructions en langage C 19-7aux instructions FORTRAN 12-3aux instructions GPL 13-4
Référence de donnée 3-2, 4-3, 5-3Relevé d'implantation 14-1, 15-1
Aide à la mise au point (PCF)
i-4 47 F2 15UP Rev02
S
Semi-symboliqueadressage 5-1mise au point en mode ~ 15-1
Symboliqueadressage 3-1
Syntaxecommandes PCF 2-1
Syntaxe PCFcommandes A-2niveau inférieur A-6niveau intermédiaire A-4niveau supérieur A-1points d'intervention A-5récapitulatif A-1références de données A-5
T
Tableélément 3-3sous-ensemble 3-4
Tableauélément 3-3sous-ensemble 3-4
TDScompte rendu d'exécution sous ~ 18-1
Télétraitement par lotsappel de PCF 9-1mise au point 1-5
Textes HELPen interactif 8-2en télétraitement par lots 9-4
Traitement par lotsappel de PCF 7-1compte rendu d'exécution 16-1mise au point 1-4
Traitement transactionnelappel de PCF 10-1mise au point 1-6
Type de variables~ COBOL 11-1~ FORTRAN 12-1~ GPL 13-1
Types de variablesen langage C 19-1
V
Variableaffichage de ~s locales 3-6basée (GPL) 3-5non basée 3-5simple 3-3
Variable basée 13-5