Manuel d'exemples > Définir un statut de fin à cause du contenu d'un rapport

Définir un statut de fin selon le contenu du rapport

Objectif : Le contenu précis d'un rapport de Job doit être analysé lorsque le statut final est défini en fonction du résultat.

Objets utilisés : Job

Eléments de script utilisés : :CLOSE_PROCESS, :ENDPROCESS, GET_PROCESS_LINE, :MODIFY_STATE, PREP_PROCESS_REPORT, :PRINT et :PROCESS


Exemple

Dans certaines situations, le job est traité dans le système AE sans problème (l'agent est actif, les données de connexion sont correctes, ...). Le but du traitement n'est cependant pas réalisé (erreur dans le JCL par exemple). L'onglet Post-traitement peut être utilisé pour lire le rapport et d'adapter le statut final en fonction des résultats.

Job

Dans l'exemple présenté ici, un Job sert à transférer des fichiers utilisés par FTP. L'onglet Traitement contient la ligne suivante :

ftp -s:branch15.ftp

Le fichier FTP "zweigstelle15.ftp" contient les commandes pour les fichiers à transférer. Il peut bien sûr arriver qu'un ou plusieurs fichiers soient introuvables. Dans ce cas-là, il est donc utile d'utiliser le script PREP_PROCESS_REPORT pour rechercher d'éventuels messages d'erreur FTP enregistrés dans le rapport.

Le résultat de la fonction PREP_PROCESS_REPORT comporte toutes les lignes du rapport auxquelles le filtrage défini s'adapte et doit donc être évalué ligne par ligne dans une boucle PROCESS. Vous obtenez le contenu d'une ligne avec GET_PROCESS_LINE.

Si aucune ligne n'est trouvée dans le rapport, la boucle PROCESS n'est pas non plus exécutée.

Si le rapport contient un message d'erreur (par ex. fichier introuvable), vous pouvez y réagir en définissant, à l'aide de MODIFY_STATE, le texte de statut qui s'affiche dans la fenêtre de détails des statistiques et en modifiant le code retour du job (ce qui influence le statut final).

Attention : dans l'onglet Exécution du job, l'intervalle pendant lequel le job doit se terminer avec le statut ENDED_OK est défini pour le code retour.  

Exemple :
Définition pour ENDED_OK : Code retour <= 0

:MODIFY_STATE RETCODE = 0

Le Job se termine avec ENDED_OK

:MODIFY_STATE RETCODE = 5

Le Job se termine avec ENDED_NOT_OK

Le script qui exécute le processus expliqué précédemment se présente comme suit :

!Checking the report for one or more files that were to be transferred but not found.

!Searching for lines containing the text "File not found".

:
SET &hnd# = PREP_PROCESS_REPORT(,,REP, '*File not found*')

!Each retrieved line is written in the post-processing report.

:
PROCESS &hnd#
:  
SET &line# = GET_PROCESS_LINE(&hnd#)
:  
PRINT '&line#'
!Additionally, the end status of the job is modified.

:  
MODIFY_STATE RETCODE = 11
:  
MODIFY_STATE STATUS_TEXT = 'File(s) not found!'
:
ENDPROCESS

Si certains fichiers à transférer sont absents, les statistiques se présentent comme suit. Le Job se termine avec "ENDED_NOT_OK-interrompu" et présente le code retour défini 11.