Volubis, le forum IBM i Index du Forum Volubis, le forum IBM i
avec les clubs Informatiques IPL et Bretagne.
 
 FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

CL - Terminer volontairement son travail en erreur

 
Poster un nouveau sujet   Répondre au sujet    Volubis, le forum IBM i Index du Forum -> langages
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
Etienne PETIT



Inscrit le: 08 Fév 2017
Messages: 5

MessagePosté le: Mar 05 Sep 2017, 16:13:48    Sujet du message: CL - Terminer volontairement son travail en erreur Répondre en citant

Bonjour à tous.

Je crée un petit programme qui lance une commande à distance par RUNRMTCMD et reste actif pour surveiller le résultat du job soumis à distance.

Tout fonctionne bien, et le travail "local" m'envoie bien OK si tout va bien, et NOK en cas d'erreur.
C'est parfait pour mes tests, mais pour qu'Automator affiche une erreur, il faut que le travail se termine de façon anormale (code 20, 50...).

Il ne faut pas arrêter le sous-système car on en aura encore besoin à la fin du job, donc on oublie le code 50.
J'ai essayé de lancer une erreur non monitorée, mais j’atterris en MSGW. En utilisant une réponse automatique, le programme l'ignore et mon job se termine en code 0.

Quelqu'un aurait-il une astuce de programmeur pour générer une erreur dans son propre programme de façon à ce que le travail issu finisse en code 20 ?

Merci d'avance!

Étienne.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
cmasse
Site Admin


Inscrit le: 14 Fév 2007
Messages: 691
Localisation: Nantes

MessagePosté le: Mar 05 Sep 2017, 16:36:16    Sujet du message: arret du job Répondre en citant

SI le pgm est le premier de la pile (dans le job soumis), ce code envoi un message d'erreur à l’interpréteur de commande qui arrête le job avec une gravité 20

Code:

PGM                                                           
     SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('arret +   
                du pgm') TOPGMQ(*PRV (*)) MSGTYPE(*ESCAPE)                     
ENDPGM                                                       

_________________
Christian Massé (Volubis.fr)
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Etienne PETIT



Inscrit le: 08 Fév 2017
Messages: 5

MessagePosté le: Mer 06 Sep 2017, 16:28:43    Sujet du message: Répondre en citant

Bonjour Christian,

Merci pour ta réponse.

Avant de clôturer cette discussion, connaîtrais-tu un moyen de monitorer la fin anormale du travail distant ?

Un message "OK" est envoyé en fin de programme si tout se passe bien, un message "NOK" est envoyé par monitoring global du programme, mais comment gérer le fait que le travail soumis sur le système distant s'arrête en cours de route?

Merci d'avance.

Étienne.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
cmasse
Site Admin


Inscrit le: 14 Fév 2007
Messages: 691
Localisation: Nantes

MessagePosté le: Mer 06 Sep 2017, 16:48:54    Sujet du message: fin de travail Répondre en citant

Ce Select SQL donne la liste des codes fin (lecture du DSPLOG) pour un travail donné (ici MYSQLD)

Code:

select substr(message_text, position('code fin' IN message_text) + 9 , 2)
 from table (HISTORY_LOG_INFO() ) as x 
where message_id = 'CPF1164' and FROM_JOB like '%MYSQLD%'


si c'est sur un autre système, il faut se connecter avant (JDBC, DRDA, etc...)
_________________
Christian Massé (Volubis.fr)
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Etienne PETIT



Inscrit le: 08 Fév 2017
Messages: 5

MessagePosté le: Jeu 07 Sep 2017, 13:45:07    Sujet du message: Répondre en citant

Merci beaucoup Christian, c'est ce type d'information que je recherchais!

Une petite correction cependant :
J'obtiens en retour de la requête un conflit de CCSID : "Conversion de caractères entre CCSID 1200 et CCSID 65535 incorrecte." (SQL0332).

En effet, j'obtiens quelque-chose d'illisible en affichant la colonne message_texte seule.

J'ai trouvé la fonction CAST pour modifier le CCSID, et la fonction position ne fonctionnait pas, j'ai utilisé la fonction INSTR.

Ma requête finale :
select substr(CAST(message_text AS char(500) CCSID 297),
instr(CAST(message_text AS char(500) CCSID 297), 'code fin') + 9, 2)
from table (HISTORY_LOG_INFO() ) as x where message_id = 'CPF1164'

Merci en tous cas pour toute l'aide apportée!
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
cmasse
Site Admin


Inscrit le: 14 Fév 2007
Messages: 691
Localisation: Nantes

MessagePosté le: Jeu 07 Sep 2017, 14:27:13    Sujet du message: CCSID Répondre en citant

Sinon,

Code:

CHGJOB CCSID(297)

_________________
Christian Massé (Volubis.fr)
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Volubis, le forum IBM i Index du Forum -> langages Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com

Anti Bot Question MOD - phpBB MOD against Spam Bots