- 论坛徽章:
- 0
|
感觉有许多企业可能都会有检查数据中文字段是否有乱码的问题, 所以与大家分享这一函数:
http://www.cublog.cn/u/2405/showart.php?id=129792
检查汉字串中是否有半角或非法字符
AS400系统通过前置X’0E’字节和后置X’0F’字节来标识双字节汉字串。业务系统运行中经常情况下,因为各种原因,会造成汉字串混进非标准字符或X’0E’—X’0F’配对出现混乱,导致汉字串异常。业务员常常希望程序员能够从大量数据的表中自动检查出含有异常汉字串的记录。
这里提供一个检查汉字串中是否有半角或非法字符的函数与大家分享。
一.函数源码名CHECKCHNP,函数名C_CHECK
二.检查规则:
1。如果字符串中没有X'0E'和X'0F',则检查字符串是否全是常规半角字符,如果全是常规半角字符,则字符串有效,否则非法。
2。如果字符串中X'0E'和X'0F'不配对,则字符串非法。
3。如果X'0E'和X'0F'之间字符个数为奇数,则字符串为非法。
4。如果X'0F'在X'0E'前面,则字符串非法。
5。字符串中有X'00',则非法。
三:调用方法:
Eval WWSIGN=C_CHECK(CHNNAM)
其中CHNNAM为检查字段,WWSIGN为返回标识,如果WWSIGN不等于零,则该字段非法。
四:调用示范例子
检查TESTA文件中包含客户姓名(CHNNAM)字段是否非法,把有非法姓名的记录输出到TESTAQL文件里。
程序名TESTAPL, 用COPY方式包含过程原型说明头文件CHECKCHNH和过程源文件CHECKCHNP (也可以用module方式).编译时需选择DFTACTGRP为*NO.
CHECKCHNP, CHECKCHNH, TESTAPL打包在CHECKCHN中。
2006.6.19
[ 本帖最后由 blogliou 于 2006-6-19 12:17 编辑 ] |
|