Advertisement
Ping en batch sur AS/400

Vous avez déjà eu besoin de vérifier la disponibilité d'un host avant de lancer un FTP, un rexec, etc. En interactif c'est simple, mais en batch ?
Voici une solution simple à mettre en oeuvre :

PGM
DCL &HOST *CHAR 16
DCL &DTA *CHAR 12
DCL &DTA1 *CHAR 4
DCL &DTA2 *CHAR 4
/* TEST AVEC 3 PAQUETS SEULEMENT (5 PAR DÉFAUT) */
/* &HOST PEUT ÊTRE UNE ADRESSE IP OU UN NOM DE HOST (SI CONNU) */
PING RMTSYS(&HOST) NBRPKT(3)
/* TEST SI ERREUR DE SYNTAXE */
MONMSG MSGID(TCP0000 CPF0000) EXEC(DO)
CHGVAR &DTA1 ('0000')
CHGVAR &DTA2 ('0003')
GOTO SUITE
ENDDO
/* LECTURE DU RESULTAT */
RCVMSG PGMQ(*SAME) MSGTYPE(*LAST) RMV(*NO) +
MSGDTA(&DTA)
CHGVAR &DTA1 (%BIN(&DTA 1 4))
CHGVAR &DTA2 (%BIN(&DTA 5 4))
SUITE:
/* SUR DTA1 PAQUETS RECUS OU DTA2 PAQUETS EN ERREUR */
IF COND(&DTA1 *EQ '0003') THEN(DO)
/* TRAITEMENT SI OK */
ENDDO
ENDPGM

PLB