* 函数功能:身份证第18位校验码验证
**********************************************************
PARAMETER SFZHM
DYZ="79X584216379X5842" &&与身份证前17位相对应的码。X代表10
YZZ="0123456789X" &&X代表10
XYM="10X98765432" &&校验码
ZH=0
FOR I=1 TO LEN(SFZHM)-1
CZF=SUBSTR(SFZHM,I,1) && 在SFZHM1中第I位取一个字符,保存在变量CZF中
DO CASE
CASE ISALPHA(SUBSTR(DYZ,I,1))=.T.
NDYZ=10
CASE ISALPHA(SUBSTR(DYZ,I,1))=.F.
NDYZ=VAL(SUBSTR(DYZ,I,1))
ENDCASE
ZH=ZH+VAL(CZF)*NDYZ
ENDFOR
NYZZ=MOD(ZH,11)
XYM=IIF(NYZZ=10,"2",SUBSTR(XYM,NYZZ+1,1))
W18=SUBSTR(SFZHM,18,1) &&提取身份证第18位校验码
IF XYM=W18
SFZQ=MESSAGEBOX("身份证第18位校验码为 "+XYM+" 正确",48,"系统信息")
ELSE
SFZQ=MESSAGEBOX("身份证第18位校验码为 "+XYM+" 不正确",48,"系统信息")
ENDIF
RETURN SFZQ