PASSSTRUCT 结构定义如下:
语法
typedef struct tagPassParm {
WORD parm_length;
WORD exit_code;
WORD in_length;
LPBYTE in_addr;
WORD out_length;
LPBYTE out_addr;
WORD trns_id;
WORD in_page;
WORD out_page;
WORD option;
} PASSSTRUCT;
成员
parm_length
提供的参数。 传递的结构的长度,通常设置为 24。 如果不需要或使用 选项 成员,则可以将此参数设置为 22。
exit_code
提供并返回的参数。 在条目中,此成员必须设置为零。 返回时,此成员指示退出状态。 返回 exit_code 值的法律值如下所示:
0
指示函数成功完成的正常退出代码。
1
不支持请求的转换。
12
exit_code字段未正确初始化为零。
128
源输入字符串中的最后一个字符是 DBCS 前导字节。
256
由于生成的转换目标字符串的长度超过 65535 字节,因此无法成功完成转换。
257
尝试加载一个文件并初始化其中一个 TrnsDTx.dll 文件时出错。
in_length
提供的参数。 指定输入源字符串的长度(以字节为单位)。
in_addr
提供的参数。 指向包含要转换的源字符串的缓冲区的指针。
out_length
提供并返回的参数。 指定输出转换后的字符串可用的最大长度(以字节为单位)。 返回时,此成员设置为成功时转换的输出字符串的长度,或者如果缓冲区太小,则设置为所需的输出缓冲区长度。
out_addr
提供的参数。 指向转换后将包含输出目标字符串的缓冲区的指针。
trns_id
提供的参数。 转换标识符,始终为零。
in_page
提供的参数。 指定传入源字符串的代码页。
out_page
提供的参数。 指定输出转换字符串的代码页。
option
如果 parm_length 设置为 24,则提供并返回参数。 作为提供的参数,它指定了一组可应用于翻译过程的选项。 这些选项的可能值如下所示:
位 15-9
保留。
位 8
将 (SO) /shift (SI) 字节添加到转换后的输出字符串。
位 3-7
保留。
位 2
如果设置了此位,则使用 IBM 指定的 1 字节代码表转换输入字符串。 仅当从代码页 932 转换为以下代码页之一时,此选项才有效:037、290、930 或 931。
如果此位为零,则使用使用 SYSCTBL 实用工具创建的转换表转换输入源字符串。
对于双字节字符,请始终使用 SYSCTBL 实用工具创建的转换表。
SYSCTBL.EXE 文件是 Host Integration Server 附带的实用工具程序,它提供了一个工具,可用于创建自定义转换表以与 TrnsDT 函数一起使用。
位 1
如果设置了此位,则表示输入源字符串以 2 字节字符开头。 通常,主机数据始终成对包含 SO/SI 控制字符,但在转换部分混合数据字符串时,必须从没有 SO 控制字符的双字节字符开始转换。 在这种情况下,数据本身没有足够的信息来确定它是否为双字节,因此必须设置第 1 位。
位 0
如果设置了此位,则表示输入源字符串包含 SO/SI 控制字符。 应按如下所示设置位 8 和位 0:
从电脑转换到主机位 8=1,位 0 =0 从主机转换为电脑位 8=0,位 0=1
返回时,如果最后一个字符是双字节字符, 则选项 设置为 4。