Accueil du site > Les articles > Debug d’un programme batch avec STRSRVJOB
Version à imprimer Enregistrer au format PDF

Debug d’un programme batch avec STRSRVJOB

mercredi 1er septembre 2004, par David Malle, Serge Gomes Visites  6549 Première mise en ligne le lundi 10 novembre 2003.

Vous souhaitez debugger un programme batch lors de sa mise au point ou un job est planté en production (attente de reponse de message).

Voici la méthode, à l’aide de la commande STRSRVJOB.


Un job est planté, que faire ?

Lorsqu’un job est planté, il est possible bien souvent soit de l’arrêter (Cancel) ou de faire un dump (Dump).

Il existe pourtant un moyen de visualiser directement le source (exactement à l’endroit ou le programme se plante), voir de corriger directement les valeurs erronées et de continuer le programme.

Pour cela vous devez tout d’abord récupérer le N°, le USER et le NOM du job planté ainsi que le programme en erreur (utiliser par exemple la commande WRKUSRJOB).

Une fois ces information récupérées vous pouvez lancer la maintenance de travail grace à la commande suivante :

STRSRVJOB JOB(042565/SGS/DSPC0004) soit N°/USER/NOM.

Ensuite il vous suffit de lancer le debuggeur sur le programme récalcitrant avec la commande STRDBG PGM(ProgrammeQuiPlante).

Vous vous retrouvez devant le source du programme grace au debuggeur vous pouvez modifier la valeur de certaines variables et le cas échéant continuer l’exécution du programme.

Cela présente aussi l’avantage de ne pas chercher la ligne en erreur. Le debuggeur se positionne directement dessus.

Après le debuggage, il faut arrêter la maintenance du travail par la commande ENDSRVJOB.

Comment debugger un programme batch ?

  1. Suspendre la jobq par la commande HLDJOBQ NomJOBQ.
  2. Soumettre le programme en batch.
  3. Noter le N°, le USER et le NOM du job soumis (par la commande WRKUSRJOB par exemple)
  4. exécuter la commande STRSRVJOB JOB(N°/USER/NomJOB)
  5. exécuter la commande STRDBG NomProgramme puis F12 pour revenir en ligne de commande.
  6. Libérer la jobq par la commande RLSJOBQ NomJOBQ
  7. Lorsque le programme démarre le système vous signale que le traitement a été libéré : écran "démarrage d’un travail en maintenance".
  8. Sur cet écran, faites F10 pour passer en ligne de commande.
  9. exécuter la commande DSPMODSRC. Elle provoque l’affichage du source du programme. Indiquez tous les points d’arrêts voulus.
  10. Faites une fois F12 pour revenir en ligne de commande.
  11. Faites une fois F12 pour revenir à l’écran "démarrage d’un travail en maintenance".
  12. Faites Entrée pour lancer l’exécution du programme. Le débug se positionne au premier point d’arrêt que vous avez définit.
  13. A la fin du debug (ENDDBG), n’oubliez pas d’arrêter la maintenance du travail par la commande ENDSRVJOB.

 [1]

Une autre possibilité :
- sur une session STRDBG + nom de programme
- placer un point d’arrêt avec SBREAK + N° de ligne
- un message apparait sur la session dès qu’un job accède au programme, on peut alors lancer un STRSRVJOB + DEBUG.

P.-S.

Un peu compliqué à retenir, mais au combien efficace.

Bravo à serge qui arrive à retenir la manip par coeur. Moi je n’y arrive pas !