Programme de vérification de validité pour une commande CL

Pour détecter les erreurs de syntaxe et envoyer des messages de diagnostic pour votre commande, écrivez un programme de contrôle de validité.

Pour écrire un programme de contrôle de validité pour votre commande, indiquez le nom du programme de contrôle de validité dans le paramètre VLDCKR de la commande Create Command (CRTCMD) .

Il n'est pas nécessaire que le programme existe lorsque la commande Create Command (CRTCMD) est exécutée. Si *LIBL est utilisé comme qualificatif de bibliothèque, la liste des bibliothèques est utilisée pour rechercher le programme de contrôle de validité lors de l'exécution de la commande créée.

Les deux considérations suivantes s'appliquent aux programmes de vérification de la validité:

  • Le programme de vérification de validité est appelé uniquement si la syntaxe de la commande est correcte. Tous les paramètres sont transmis au programme de la même manière qu'à un programme de traitement de commande.
  • Vous ne devez pas utiliser le programme de contrôle de validité pour modifier les valeurs des paramètres car les valeurs modifiées ne sont pas toujours transmises au programme de traitement des commandes.

Le reste de cette section explique comment envoyer des messages à partir d'un programme de contrôle de validité écrit en langage CL.

Si le programme de contrôle de validité détecte une erreur, il doit envoyer un message de diagnostic à l'appel précédent, puis envoyer le message d'arrêt programme CPF0002. Par exemple, si vous avez besoin d'un message indiquant qu'un numéro de compte n'est plus valide, vous ajoutez une description de message similaire à la suivante dans un fichier message:


ADDMSGD      MSG('Account number &2 no longer valid') +
             MSGID(USR0012) +
             MSGF(QGPL/ACTMSG) +
             SEV(40) +
             FMT((*CHAR 4) (*CHAR 6))

Notez que la variable de substitution & 1 ne figure pas dans le message, mais qu'elle est définie dans le paramètre FMT sous la forme de 4 caractères. & 1 est réservé au système et doit toujours comporter 4 caractères. Si la variable de substitution & 1 est la seule variable de substitution définie dans le message, vous devez vous assurer que le quatrième octet des données du message ne contient pas de blanc lorsque vous envoyez le message.

Ce message peut être envoyé au système en spécifiant les éléments suivants dans la vérification de validité:


SNDPGMMSG    MSGID(USR0012) MSGF(QGPL/ACTMSG) +
             MSGDTA('0000' || &ACCOUNT) MSGTYPE(*DIAG)

Une fois que la vérification de validité a envoyé tous les messages de diagnostic nécessaires, elle doit ensuite envoyer le message CPF0002. La commande Send Program Message (SNDPGMMSG) permettant d'envoyer le message CPF0002 se présente comme suit:


SNDPGMMSG    MSGID(CPF0002) MSGF(QCPFMSG) +
             MSGTYPE(*ESCAPE)

Lorsque le système reçoit le message CPF0002, il envoie le message CPF0001 au programme appelant pour indiquer que des erreurs ont été détectées.

Le message CPD0006 a été défini pour être utilisé par les programmes de contrôle de validité définis par l'utilisateur. Un message immédiat peut être envoyé dans les données du message. Notez dans l'exemple suivant que le message doit être précédé de zéros à quatre caractères.

Voici un exemple de programme de vérification de validité:


PGM PARM(&PARM01)
DCL VAR(&PARM01) TYPE(*CHAR) LEN(10)
IF COND(&PARM01 *EQ 'ERROR') THEN(DO)
SNDPGMMSG MSGID(CPD0006) MSGF(QCPFMSG) +
          MSGDTA('0000 DIAGNOSTIC MESSAGE FROM USER-DEFINED +
          VALIDITY CHECKER INDICATING THAT PARM01 IS IN ERROR.') +
          MSGTYPE(*DIAG)
SNDPGMMSG MSGID(CPF0002) MSGF(QCPFMSG) MSGTYPE(*ESCAPE)
ENDDO
ELSE
 .
 .
 .
ENDPGM