LoginSignup
1
0

IBMi V7R5 でPHP iToolkit ⇔ QXMLSERV 文字化け?

Last updated at Posted at 2023-12-21

IBMi OS V7R5 にバージョンアップして以来、PHP iToolkit のコマンドが(例えば DSPLIBL )文字化けする。
原因を調査しても、一向に分からず、IBMサポートの方と3ヶ月ほどやりとりしたが、全然解決しない。

解決

結論から言うと、原因は分からないが、TR3が利用したくて最新のPTFを当てたら文字化けしなくなった。

IBMさん側では、「解決となる様な修正はないとのこと」。釈然としないが、同じことに遭遇してしまう、運の悪い方もいるかも知れないので、現象だけ記録に残しておく。

PHP iToolkit って

-zendtech/IbmiToolkit
そもそも、「PHP iToolkit」 って何?って事ですが、PHPでXMLの入出力を介して、プログラム連携やコマンド連携を簡単に出来る便利なライブラリ。もちろんの CS^2 にもバンドルされており、新しいバージョン CS^2 がリリースされると Toolkit の動作もテストしている。そして今回は V7R5 のテストで引っ掛かた訳だ。私も敬愛する Alan もコントリビューターだ。
IBMi 側の XML 仲介役は QXMLSERV が IBMi 導入時に提供されている。 Zend Server 時代は、Zend系ライブラリに内包されていた。
てっきり、うまく行かないのは、この QXMLSERV が原因だと思っていたが、 V7R5 では特に改修が入っていないらしい。

NGだった現象

以下の例の様なソースで V7R4 では正常に動作し、V7R5 では文字化けが発生した。

DSPLIBL.php
$dbCon = db2_connect($db,$user,$pass);
$tkit = ToolkitService::getInstance($dbCon);
$tkit->setToolkitServiceParams(array('stateless'=>true, 'plug'=>"iPLUG5M"));

// *CMD
// "CLInteractiveCommand - DSPLIBL";
$output = $tkit->CLInteractiveCommand("DSPLIBL");
db2_close($dbCon);

Toolkit の XML ログ出力結果を比較すると次の様に異なっていた。

V7R4.xml
Creating new conn with database: 'Resource id #8', user or i5 naming flag: '', transport: 'ibm_db2', persistence: ''
Re-using existing db connection with schema separator: .
Exec start: 2023-09-22 18:36:32
Version of toolkit front end: 1.8.5
IPC: ''. Control key: *cdata *here *pase(1208)
Stmt: call QXMLSERV.iPLUG5M(?,?,?,?) with transport: ibm_db2
Input XML: <?xml version="1.0" encoding="UTF-8" ?>
<script>
<sh rows='on'>/QOpenSys/usr/bin/system "DSPLIBL"</sh>
</script>
Output XML: <?xml version="1.0" encoding="UTF-8" ?>
<script>
<sh rows='on'>
<row><![CDATA[  5770SS1 V7R4M0  190621                   ライブラリー・リスト                                23/09/22 18:36:32       ページ    1]]></row>
<row><![CDATA[                            ASP]]></row>
<row><![CDATA[    ライブラリー     タイプ   装置      テキスト記述]]></row>
<row><![CDATA[    QSYS        SYS                    システム・ライブラリー]]></row>
<row><![CDATA[    QSYS2       SYS                    CPI用のシステム・ライブラリー]]></row>
<row><![CDATA[    QHLPSYS     SYS]]></row>
<row><![CDATA[    QUSRSYS     SYS                    System Library for Users]]></row>
<row><![CDATA[    QGPL        USR                    GENERAL PURPOSE LIBRARY]]></row>
<row><![CDATA[    QTEMP       USR]]></row>
<row><![CDATA[                           * * * * *  リストの終わり   * * * * *]]></row>
</sh>
</script>
Exec end: 2023-09-22 18:36:32. Seconds to execute: 0.45046091079712.
V7R5.xml
Creating new toolkit conn with database: 'Resource id #1', user or i5 naming flag: '', transport: 'ibm_db2', persistence: ''
Re-using existing db connection with schema separator: .
Exec start: 2023-09-21 21:21:56
Version of toolkit front end: 1.9.3
IPC: ''. Control key: *cdata *here *pase(1208)
Stmt: call QXMLSERV.iPLUG5M(?,?,?,?) with transport: ibm_db2
Input XML: <?xml version="1.0" encoding="UTF-8" ?>
<script>
<sh rows='on'>/QOpenSys/usr/bin/system "DSPLIBL"</sh>
</script>
Output XML: <?xml version="1.0" encoding="UTF-8" ?>
<script>
<sh rows='on'>
<row><![CDATA[  5770SS1 V7R5M0  220415                                                   23/09/21 21:21:56           1]]></row>
<row><![CDATA[                            ASP]]></row>
<row><![CDATA[                  ]]></row>
<row><![CDATA[    QSYS        SYS                    ]]></row>
<row><![CDATA[    QSYS2       SYS                    CPI]]></row>
<row><![CDATA[    QHLPSYS     SYS]]></row>
<row><![CDATA[    QUSRSYS     SYS                    System Library for Users]]></row>
<row><![CDATA[    QGPL        USR                    GENERAL PURPOSE LIBRARY]]></row>
<row><![CDATA[    QTEMP       USR]]></row>
<row><![CDATA[                           * * * * *     * * * * *]]></row>
</sh>
</script>
Exec end: 2023-09-21 21:21:56. Seconds to execute: 0.22425985336304.

2023-12-13_183806.png


因みに、日本語環境や自社の環境だけに問題があるかを切り分けるため、Tech Zone の V7R5 でも行ったが同様に文字化けした。V7R4 だと日本語環境でも Tech Zone でも正常に動作。
やり取りの3ヶ月で、ジョブログ収集、ダンプ収集、MGTOOL やったりしたが、結局原因分からず。これでハマったときは、最新のPTFを当ててみて下さい。どれが効いたか分かりませんが...。
とにかく解決はしたので、IBM サポートの方、3ヶ月も訳のわからん事象にお付き合い、ありがとうございました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0