Le reformatage des messages : exitmqc.c

Restriction : Cet exit n’est disponible qu’en mode JMS ou MQSeries et en langage C.

Caractéristiques

L'utilisation de cet exit est double et permet :

  • En entrée : juste après la réception du message, et avant tout traitement associé aux CRE :
  • d’ajouter l'entête technique des messages attendu par la vacation
    • de décrypter, décompresser et restructurer les données
    • En cas de besoin, de valoriser éventuellement les identifiants associés aux CRE
  • En sortie : juste avant l'émission des messages, et après tout traitement associé aux ME :
    • de crypter, compresser et restructurer les données
    • de supprimer l'en-tête technique des messages généré par la vacation

Il est l’équivalent des exits de recomposition des CRE et des ME fournis avec les vacations en mode fichier.

Principe de fonctionnement

L'exit est appelé :

  • En entrée, pour chaque message lu dans la file d'attente
  • En sortie, pour chaque message préparé, juste avant son écriture dans la file d’attente

Particularités

Si une anomalie survient dans cet exit, la vacation est arrêtée.

Les données figurant dans le CRE rejeté sont les données reformatées. Par conséquent, lors de la programmation de cet exit, il faut donc prévoir l'éventualité de devoir traiter des CRE déjà reformatés.

Les données échangées

Trois points d'entrée sont disponibles :

  • Initialisation : Sert à initialiser le module et est appelé au démarrage de la vacation
  • Traitement : Le code produit fourni en entrée du module permet de connaître le type de données à traiter et dans quelle instruction "Case" doivent être positionnés les traitements
    Ce point d'entrée est commun à toutes les données.
  • Close : sert à fermer le module et est appelé à l’arrêt de la vacation.

Données en ENTRÉE

Nom en C Caractéristiques/Longueur Utilisation

nTraitement

int / 1

Code du point d'entrée

szCodeEmetDest

Alphanumérique / 25

Code émetteur quand nCodeProduit = CRE

Code Destinataire quand nCodeProduit = ME ou CRE_AIGUILLE

Autrement, il est vide

nCodeProduit

int

Code produit des données transmises (les descriptions associées à chaque code produit sont définies dans le tableau ci-dessous)

lLgMaxMessage

long

Taille maximum allouée aux buffers de messages
(en entrée et en sortie)

sMessageIn

Alphanumérique

Données contenues dans le message transmis

lLgMessageIn

long

Taille du message transmis

pMessageCtx

 

Contexte du message transmis

Données en SORTIE

Nom en C Caractéristiques/Longueur Utilisation

sMessageOut

Alphanumérique

Données contenues dans le message reformaté

lLgMessageOut

long

Taille du message reformaté

pMessageCtx

 

Contexte du message reformaté

szLibelleErreur

Alphanumérique

Libellé d'erreur si erreur dans la fonction

Valeur de retour

 

  • MQS_nNO_ERREUR : reformatage OK
  • MQS_nERREUR_BLOQUANTE : erreur système, la vacation est arrêtée

Désignation des codes produits

Code produit Description du produit Type d’enregistrement du produit

1

CRE à traduire

MQS_nCRE

2

Édition du détail de la traduction

MQS_nDETAIL_TRADUCTION

3

Édition du journal des CRE

MQS_nJOURNAL_CRE

4

Édition du journal comptable

MQS_nJOURNAL_COMPTABLE

5

Édition des compteurs de traduction

MQS_nCOMPTEUR_TRADUCTION

6

Édition des compteurs par règle

MQS_nCOMPTEUR_REGLE

7

Édition du détail de l’agrégation comptable

MQS_nAGREG_COMPTABLE

8

Édition des compteurs d'exploitation

MQS_nCOMPTEUR_EXPLOITATION

9

Traces d'audit extraites des CRE traités

MQS_nTRACE_CRE

10

Traces d'audit extraites des ME générés

MQS_nTRACE_ME

11

Édition du détail de l'aiguillage

MQS_nDETAIL_AIGUILLAGE_CRE

12

CRE en anomalie de traduction

MQS_nCRE_ANOMALIE

13

CRE rejetés par la traduction

MQS_nCRE_REJECTED

14

CRE modifiés

MQS_nCRE_MODIFIED

15

Édition du détail des anomalies de traduction

MQS_nDETAIL_ANOMALIE_REJET_CRE

16

Édition spécifique

MQS_nDETAIL_EDITION_SPECIFIQUE

17

CRE redirigés par destinataire

MQS_nCRE_AIGUILLE

18

ME redirigés par destinataire

MQS_nME

 

Mise en œuvre

Conventions d’écriture

  Description

1.

Les identifiants renseignés dans la zone de communication ne peuvent pas être modifiés. Si les valeurs sont modifiées, elles ne sont pas prises en compte dans l'exécution de la vacation

2.

Par défaut, le code retour est à 0 (zéro)

3.

Par défaut, le contenu du message reporté en sortie est identique au message d'entrée

4.

Par défaut, l'ajout et la suppression de l'en-tête de message attendu par Rule Engine sont programmés dans l'exit

5.

 Si vous demandez l'arrêt de la vacation, vous devez renseigner le champ qui contient le libellé d'erreur

6.

Vous pouvez modifier toutes les données associées au contexte du message , SAUF la valeur de CorellId lorsque la gestion des lots est activées
Changer cette valeur n'a pas d'impact puisque la valeur initiale est conservée pour détecter les messages qui appartiennent au même lot.

7.

 La taille maximale allouée aux buffers de messages (lLgMaxMessage) ne doit pas être dépassée quand vous reformatez les messages

Il faut toujours respecter : lLgMessageout   <   lLgMaxMessage

Paramétrage

Le paramétrage s'effectue directement lors de la définition de la zone d'échange dans le fichier script.jms ou script.mqs :

FileAttente=MQS, , "Manager=Qmngr;File=FileName;Reformatting=Yes;Blockage=Yes;Buffer=number"

Nom des modules

Mise en œuvre

Plateforme Nom du répertoire Nom de la fonction / programme C Programme COBOL

Windows

%RDJ_EXEC%\exit

fonction MQS_EXIT_Reformatting

exitmqc.c
exitmqh.h fichier entête

N'existe pas

UNIX

$RDJ_EXEC/exit

fonction MQS_EXIT_Reformatting

exitmqc.c
exitmqh.h fichier entête

N'existe pas

MVS

&RDJEXEC..SRCLIB

fonction MQS_EXIT_Reformatting

EXITMQC
EXITMQH fichier entête

N'existe pas

 

Type de traitement Point d'entrée

Open

MQS_nEXIT_INITIALISATION

Close (Fermeture)

MQS_nEXIT_FERMETURE

Traitement d'un message

MQS_nEXIT_TRAITEMENT

Related Links