.版本 2
.子程序 校验社会统一代码, 逻辑型
.参数 统一代码, 文本型
.局部变量 分割代码, 文本型, , "17"
.局部变量 字符集分割, 文本型, , "21"
.局部变量 i, 整数型
.局部变量 j, 整数型
.局部变量 tmp, 整数型
.局部变量 Sum, 整数型, 静态
.局部变量 CHNo, 文本型
.局部变量 加权因子, 整数型, , "17"
.如果真 (取文本长度 (删全部空 (统一代码)) ≠ 18)
返回 (假)
.如果真结束
统一代码 = 到大写 (统一代码)
字符集分割 = 分割文本 (#字符集, “,”, )
加权因子 = { 1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28 }
.计次循环首 (17, i)
分割代码 [i] = 取文本中间 (统一代码, i, 1)
.计次循环尾 ()
' A=65 Z=90 0=48 9=57
.计次循环首 (17, i)
tmp = 取代码 (分割代码 [i], )
.如果真 (tmp < 48 或 tmp > 57)
.计次循环首 (取数组成员数 (字符集分割), j)
.如果真 (分割代码 [i] = 字符集分割 [j])
分割代码 [i] = 到文本 (j + 9) ' 调试输出 (字符集分割 [j], 分割代码 [i])
跳出循环 ()
.如果真结束
.计次循环尾 ()
.如果真结束
.计次循环尾 ()
.计次循环首 (17, i)
Sum = Sum + 到整数 (分割代码 [i]) × 加权因子 [i]
.计次循环尾 ()
CHNo = 到文本 (31 - Sum % 31)
.如果真 (到整数 (CHNo) > 9)
CHNo = 字符集分割 [到整数 (CHNo) - 9]
.如果真结束
返回 (取文本右边 (统一代码, 1) = CHNo)
易语言社会统一信用代码