MainframeSupports
tip uge 36/2007:

At foretage tegnkonvertering i MQ fra ASCII til EBCDIC eller omvendt er faktisk så nemt, at jeg ikke umiddelbart tænkte på det som et tip, men på den anden side... Nu har jeg mest beskæftiget mig med MQ kommunikation mellem forskellige MVS systemer, så jeg har faktisk ikke haft det store behov for tegnkonvertering indtil for nylig.

Tegnkonverteringen foretager MQ i det øjeblik, man udfører en MQGET, hvis man altså beder pænt om det. Hvis man ikke gør, tja, så får man ret sjove resultater for displaybare tegn. Man skal selvfølgelig ikke konvertere, hvis man overfører binære data (eksempelvis PDF). Hvis man overfører en kombination af binære og ikke-binære data, så beder man selv om problemer. For at få gennemført tegnkonverteringen skal man benytte get message option MQGMO_CONVERT (i COBOL MQGMO-CONVERT) og det er faktisk alt.

I MQ Application programming Reference står der en masse om CodedCharSetId og Encoding, som forvirrer mere end det gavner. Det skal man efter min bedste overbevisning ignorere, med mindre man får problemer med at benytte tegnkonverteringen. Jeg har til gengæld konstateret, at hvis en MQ kø både indeholder data skabt med MQPUT fra en ASCII baseret platform og en EBCDIC baseret platform, så vil en MQGET med MQGMO_CONVERT bevirke, at data skabt i et andet format konverteres, mens data skabt i samme format som den platform, der foretager MQGET, ikke konverteres. Man skal med andre ord ikke bekymre sig om data i en kø nu er i ASCII eller EBCDIC. Man skal selvfølgelig bekymre sig om det skal konverteres eller ej af hensyn til bevarelse af binære værdier, men ellers ikke. Det synes jeg faktisk er ret elegant.

Forrige danske tip        Last tip in english        Tip oversigten