$my_var = "1";
$connection = db2_connect ( "*LOCAL", "ISCSC", "ISCSC" );
$strSql = 'CALL LMTLIB.ARTEST(?)';
$stmt = db2_prepare ( $connection, $strSql );
db2_bind_param($stmt, 1, "my_var", DB2_PARAM_INOUT, DB2_CHAR);
$rc = db2_execute ( $stmt );
echo $my_var;当这个代码块执行时,$my_var的值是
正在调用的RPGLE测试程序正在返回wow
当程序改变,我得到的字符是不同的.所以我知道我从程序中得到了价值。唯一的问题是,如何将这些字符从EBCDIC转换为ASCII。
编辑
我曾尝试使用以下方法:
mb_convert_encoding($my_var, "ASCII", "cp037");
mb_convert_encoding($my_var, "ASCII", "EBCDIC");
iconv("cp037", "ASCII", $my_var);
iconv("EBCDIC", "ASCII", $my_var);但是我得到了这样的错误:“错误的字符集,从”ebcdic到ascii“的转换是不允许的。”
而且,“错误的字符集,从”cp037到ascii“的转换是不允许的”
发布于 2012-05-08 15:46:23
在语句上,使用与语言匹配的CCSID。对于美国英语来说,是37。示例:
CREATE PROCEDURE buck.phptest(
inout parm_inout varchar (5) ccsid 37)
LANGUAGE RPGLE
NOT DETERMINISTIC
CALLED ON NULL INPUT
EXTERNAL NAME buck.phptest
PARAMETER STYLE GENERAL 发布于 2014-02-14 17:29:44
这在几个系统(IBM v7r1,PHPVersion5.4.16)上适用于我们:
$ascii_value =iconv(“IBM1047”,"ISO8859-1",$ebcdic_value);// EBCDIC->ASCII转换
发布于 2012-05-08 13:42:33
使用以下PHP函数:
$recoded = recode_string ('EBCDIC..ASCII', $my_var);https://stackoverflow.com/questions/10499656
复制相似问题