[原创]GB/T17710 MOD11,10国家统一校验码标准
]/*============================================================*/<BR>// 函数名: f_getGBT17710<BR>//<BR>// 作用范围: public<BR>/*------------------------------------------------------------*/<BR>// 描述: GB/T17710 MOD11,10国家统一校验码标准<BR>// 获取最后一位校验码<BR>/*------------------------------------------------------------*/<BR>// 算法:S = Mod(P,11) + a<I><BR>// P = Mod(S * 2<BR>// a = 10 - Mod(P - 1,10)<BR>// 当j=1时,p = 10<BR>/*------------------------------------------------------------*/<BR>// 返回值: LONG 返回a<BR>/*------------------------------------------------------------*/<BR>// 作者: Wangnet 日期: 2005-3-2<BR>/*============================================================*/<BR>string ls_temp<BR>long ll_a[],ll_p[],ll_s[]<BR>long ll_len,ll_i,ll_j,ll_number<BR><BR>ls_temp = as_temp<BR>ll_len = len(ls_temp)<BR>ll_j = ll_len<BR>ll_a = 0<BR>for ll_i = 2 to ll_len + 1 <BR> ll_a = long(mid(ls_temp,ll_j,1)) <BR> ll_j -- <BR>next<BR>ll_j = 0<BR>ll_len ++<BR>for ll_i = 15 to 1 step -1<BR> ll_j ++<BR> if ll_j = 1 then<BR>ll_p = 10<BR> else<BR>ll_p = mod(ll_s,10)<BR>if ll_p = 0 then ll_p = 10<BR>ll_p = ll_p * 2<BR> end if <BR> ll_s = mod(ll_p,11)<BR> if ll_s = 0 then ll_s = 10<BR> ll_s = ll_s + ll_a <BR>next<BR>ll_a = 10 - mod(ll_p - 1,10)<BR>if ll_a >= 10 then ll_a = 0<BR><BR>return ll_a</I> 附件一:<BR>中华人民共和国国家标准<BR>全国产品与服务统一标识代码<BR>Unified coding rules for products and services<BR>(征求意见稿第三稿)<BR><BR><BR><BR><BR><BR><BR>国家质量监督检验检疫总局 发布<BR>前 言<BR>信息化是推动国民经济和社会发展的动力之一,已成为世界性的不可抗拒的发展潮流。其间,对信息化涉及的对象,尤其是自然人、法人、产品、服务等实施统一代码标识,是信息化最基本的要求之一,也是确保相关信息资源共享、避免信息“孤岛”、降低成本、提高效益的重要举措。为此,本标准以建立产品与服务统一代码标识制度为核心,借鉴世情,根据国情,规定了全国产品与服务统一标识代码编制规则,以迎接信息化带来的机遇与挑战。<BR>本标准为第一次制订。<BR>本标准的附录A是规范性附录,附录B是资料性附录。<BR>本标准由中国标准研究中心提出。<BR>本标准由中国标准研究中心归口。<BR>本标准主要起草单位:中国标准研究中心、卫生部医药管理研究所、机械科学研究院、北京鑫运通信有限责任公司、中储物流在线有限责任公司、中国汽车技术研究中心、春兰(集团)公司。 <BR>本标准主要起草人: <BR> <BR>全国产品与服务统一标识代码<BR>1 范围<BR>本标准规定了全国产品与服务统一标识代码的编制规则,以使每项产品均拥有一个唯一不变的代码。<BR>本标准适用于全国产品与服务统一标识代码的编制工作,也适用于与产品和服务有关的信息处理和信息交换,如生产、流通、销售、售后服务、管理等。<BR>2 规范性引用文件<BR>下列文件中的条款通过本标准的引用而成为本标准的条款。凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本标准,然而,鼓励根据本标准达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本标准。<BR>GB/T 17710-1999 数据处理 校验码系统<BR>GB/T 19000-2000 质量管理体系标准<BR>3 产品与服务内涵的界定<BR>3.1 根据GB/T 19000的定义,产品(包含服务)指一组将输入转化为输出的相互关联或相互作用的活动所产生的结果。<BR>注: 通用的产品类别有服务(如运输)、软件(如计算机程序、数据库)、硬件(如发动机机械零件、电子元器件)、流程性材料(如润滑油)四种。其中:<BR>服务通常是无形的,并且是在供方和顾客接触面上至少需要完成一项活动的结果。服务的提供可涉及诸如:<BR>——在顾客提供的有形产品上所完成的活动(如维修汽车);<BR>——在顾客提供的无形产品上所完成的活动(如根据收益表准备税款申报书);<BR>——无形产品的交付(如授课)<BR>——为顾客创造氛围(如宾馆环境的布置)<BR>软件由信息组成,通常是无形产品,并可以方法、论文或程序的形式存在。<BR>硬件通常是有形产品,其量具有可计数的特性。<BR>流程性材料通常是有形产品,其量具有连续的特性。<BR>硬件和流程性材料通常被称之为货物。<BR>3.2 在本标准中,产品与服务的内涵也可界定为一个机构生产或提供的具有独立市场价格的单个物品或单项服务。<BR>4 代码的结构和表示形式<BR>4.1 代码的结构<BR>4.1.1 全国产品与服务统一标识代码由11位数字本体代码和1位数字校验码组成。<BR>4.1.2 本体代码采用序列码,由国家标准化行政主管部门授权的机构统一维护和管理。<BR>4.1.3 校验码采用GB/T17710中规定的“ISO 7064 MOD 11,10”校验码系统,其计算方法如下:<BR>第一步:把现有的11位不带校验码的本体码从右至左定义为a2,a3,…,a12,将要计算的校验码定义为a1;<BR>第二步:设置变量P1,P2,…,P12,变量S1,S2,…,S11和变量j,令P1=10,j=1;<BR>第三步:Sj= MOD(Pj,11)+a13-j;<BR>第四步:Pj+1=MOD(Sj,10)╳2,<BR>如果j<11,j用j+1代替,返回第三步,<BR>如果j=11,进入第五步;<BR>第五步:按下式计算出校验码a1的值:<BR>当10-MOD(P12-1,10)=10时,a1=0;<BR>当10-MOD(P12-1,10)<10时,a1=10-MOD(P12-1,10);<BR>其中:MOD表示求余函数,对10求余结果为0时用10代替,aj的值采用附录A所列的代码字符数值。<BR><BR>4.2 代码的表示形式<BR>为便于人工识别,使用一个连字符“-”分隔代码的本体代码和校验码。计算机处理时,连字符可以省略。其表示形式如图1所示:<br> <BR>附 录 A<BR>(规范性附录)<BR>校验码计算用代码字符集<BR><BR>计算校验码时使用的代码字符及代码字符数值见表A.1<BR><BR>表A.1 代码字符及代码字符数值对照表<BR>代码字符 机器处理用代码字符数值<BR>0<BR>1<BR>2<BR>3<BR>4<BR>5<BR>6<BR>7<BR>8<BR>9 0<BR>1<BR>2<BR>3<BR>4<BR>5<BR>6<BR>7<BR>8<BR>9<BR> <BR>附 录 B<BR>(资料性附录)<BR>计算校验码的实例<BR><BR><BR>B.1 以前11位代码为35821098746的产品代码为例,其校验码的计算过程示例见表B.1。<BR><BR>表B.1 校验码计算示例<BR>J a13-j Pj Sj<BR>1 a12=3 P1=10 S1= MOD(P1,11)+a12=13<BR>2 a11=5 P2= MOD(S1,10)╳2=6 S2= MOD(P2,11)+a11=11<BR>3 a10=8 P3= MOD(S2,10)╳2=2 S3= MOD(P3,11)+a10=10<BR>4 a9=2 P4= MOD(S3,10)╳2=20 S4= MOD(P4,11)+a9=11<BR>5 a8=1 P5= MOD(S4,10)╳2=2 S5= MOD(P5,11)+a8=3<BR>6 a7=0 P6= MOD(S5,10)╳2=6 S6= MOD(P6,11)+a7=6<BR>7 a6=9 P7= MOD(S6,10)╳2=12 S7= MOD(P7,11)+a6=10<BR>8 a5=8 P8= MOD(S7,10)╳2=20 S8= MOD(P8,11)+a5=17<BR>9 a4=7 P9= MOD(S8,10)╳2=14 S9= MOD(P9,11)+a4=10<BR>10 a3=4 P10= MOD(S9,10)╳2=20 S10= MOD(P10,11)+a3=13<BR>11 a2=6 P11= MOD(S10,10)╳2=6 S11= MOD(P11,11)+a2=12<BR>12 a1=7 P12= MOD(S11,10)╳2=4 <BR><BR>B.2在上表中,先由a12和P1推出S1=13,再由S1推出P2=6,再由a11和P2推出S2,依此类推出Sj和Pj,最后得到P12的值为4,从而计算出a1的值为10-MOD(P12-1,10)=7,即校验位为7。<BR>
页:
[1]