【聚杰网数据库编程】在PB中实现数字的英文大写和中文大写
一、 英文大写转换
以下是进行英文大写转换的函数内容,函数名为dtoe:
//****** 阿拉伯数--- $#@62;英文数 ******string aa,bb,T1,T2,T3,B,W,CC,a1decimal a=0,c=0,a2INTEGER V,Maa="ONE TWO THREE FOUR FIVE SIX SEVEN "+& "EIGHT NINE TEN ELEVEN TWELVE THIRTEEN FOURTEEN FIFTEEN "+& "SIXTEEN SEVENTEENEIGHTEEN NINETEEN " bb="TWENTY THIRTY FORTY FIFTY SIXTY SEVENTYEIGHTY NINETY " //**** 进入时 --- $#@62; tT=round(t,2)T1=STRING(T)DO WHILE POS(T1,",")$#@60; $#@62;0 V=POS(T1,",") T1=MID(T1,1,V - 1)+MID(T1,V+1)LOOPT2=" "T3=T1IF POS(T3,".")$#@60; $#@62;0 THEN V=POS(T3,".") T1=MID(T3,1,V - 1) T2=MID(T3,V+1)END IFT1=SPACE(10 - LEN(T1))+T1CC=T1B=" "W=" "M=9//*** 整数处理 ***do while m $#@62;0 if MID(cc,m+1,1)=" " then exit end if if INTEGER(MID(cc,m - 1,3))$#@60; $#@62;0 then if m=6 then W=" THOUSAND "+w else if m=3 then W=" MILLION "+w end if end if A=INTEGER(MID(cc,m,2)) //*** 小于 100 的数 *** if a$#@60; $#@62;0 then if a$#@60; 20 then B=RIGHTtrim(MID(aa,(a - 1)*9+1,9)) else A1=STRING(a,00) A2=INTEGER(MID(a1,1,1)) b=RIGHTtrim(mid(bb,(a2 - 2)*7+1,7)) a2=INTEGER(MID(a1,2,1)) if a2$#@60; $#@62;0 then B=RIGHTtrim(b+"-"+MID(aa,(a2 - 1)*9+1,9)) end if end if W=b+w end if A=INTEGER(MID(cc,m - 1,1))//*** 100--999 的数 *** if a$#@60; $#@62;0 then b=RIGHTtrim(mid(aa,(a - 1)*9+1,9))+" HUNDRED " if w$#@60; $#@62;" " and m=9 then b=b+"AND " end if w=b+w end if end if m=m - 3LOOP//*** 小数处理 ***if w=" " then w="ZERO " end ifif t2$#@60; $#@62;" " AND T2$#@60; $#@62;"00" then w=trim(w)+" & "+t2+"/100" end if//*** 结果 --- $#@62; wreturn w
二、中文大写转换
以下是进行中文大写转换的函数内容,函数名为dtormb:
decimal ystring je,x,hz1,hz2,e,h,f,mint b,ay=mjeX rim(string(Y))B = len(X)-3A = 1E = mid(X,A,1)HZ2 = 零壹贰叁肆伍陆柒捌玖HZ1 = 仟佰拾亿仟佰拾万仟佰拾元JE = do while E$#@60; $#@62;. H = mid(HZ2,integer(E)*2+1,2) F = mid(HZ1,24 - (B - A)*2 - 1,2) if E$#@60; $#@62;0 or (E=0 and (F=亿 or F=万 or F=元)) then JE = trim(JE)+H+F else JE = trim(JE)+H end if A = A+1 E = mid(X,A,1)loop A = A+1E = mid(X,A,1)H = mid(X,A+1,1)if E=0 and H=0 then JE = JE+整else if E=0 then JE = JE+零+mid(HZ2,integer(H)*2+1,2)+分 else if H=0 then JE = JE+mid(HZ2,integer(E)*2+1,2)+角整 else JE = JE+mid(HZ2,integer(E)*2+1,2) +角+mid(HZ2,integer(H)*2+1,2)+分 end if end if end if B = len(JE)A = 1do while A$#@60; B M = mid(JE,A,4) if M=零元 or M=零万 or M=零亿 or M=零零 then JE = mid(JE,1,A - 1)+trim(mid(JE,A+2,40)) A = A - 2 B = B - 2 end if A = A+2loop return JE




