0

私はこの問題を抱えています:

CICS と統合するために、WMB7 fix 6 で開発されたメッセージ フローを取得しました。私の CICS CCSID は 037 です。ブローカーは z/Linux で、ロケール = en_US.UTF-8 およびロケール chammap = UTF-8 で実行されています。MQSeries は 1208 です。特殊文字 (ñ、Ñ、á など) で問題が発生しました。

私のメッセージ フローでは、次のコードを取得しました。

    DECLARE CICSRespMsg BLOB;
    DECLARE CICSRespChar CHARACTER;
    DECLARE MsgOut BLOB;
    DECLARE MsgOutChar CHARACTER;

    --EBCDIC TO ASCII
    SET CICSRespMsg = InputRoot.BLOB.BLOB;
    SET CICSRespChar = CAST(CICSRespMsg AS CHARACTER CCSID 037);
    SET MsgOut = CAST(CICSRespChar AS BLOB CCSID 850);
    SET MsgOutChar = CAST(MsgOut AS CHARACTER CCSID 850);

850 から 819 に変更しようとしましたが、同じ問題が発生しました。あなたが私を助けてくれることを願っています。本当にありがとう!。;(

4

1 に答える 1

0

したがって、「回答」で説明を求めることは許可されていません。提供された情報では正確な解決策を提供できないため、問題をデバッグする方法を示します。

Unicode 経由で ibm-037 から ibm-850 に変換する ESQL のスニペットを示しました。ibm-850 はサポートしていないので、変換は失敗すると思います。ただし、ibm-819、別名 latin-1、別名 iso-8859-1 は文字をサポートしており、ñ の変換は成功するはずです。

計算ノードの後で何をしているのかわかりません。入力ノードと出力ノードを見て、Properties フォルダーの CCSID を見てください。MQSeries は 1208 にあると言っていますが、これは、キュー マネージャーのデフォルト CCSID が 1208 に設定されていることを意味していると思います。これが出力ノードで使用されている場合、utf-8 (ibm-1208) はこれらの文字の latin-1。

入力ノードの後に​​トレース ノードを配置し、トレース式として ${Root} を使用してファイルにトレースし、出力ノードの前に別のトレース ノードを配置して、同じものを別のファイルにトレースします。バイトを見てください: –
037 の 0x49 –
819 の 0xf1 –
1208
の 0xc3b1 0x1a が表示された場合、それは置換文字に置き換えられています。

出力を UTF-8 にしたい場合は、上記の 850/819 ではなく 1208 を使用し、OutputRoot.Properties.CodedCharSetId が 1208 に設定されていることを確認してください。

出力を latin-1 にしたい場合は、上記の 819 を使用し、OutputRoot.Properties.CodedCharSetId が 819 に設定されていることを確認してください。

これが役に立てば幸いです、アンドレアス

于 2014-08-13T10:25:06.650 に答える