请高手慈悲,救小弟我.

请高手慈悲,救我.............
aa.dbf中有两个字符型字段:xh和sfzh,表单的按钮中有如下验证函数:请问如何调用?添加什么代码?

FUNCTION sfzyn  
  LPARAMETERS lstr &&参数:lstr 传入的号码  
  LOCAL lstr,relyn,tsfz  
  LOCAL m1,m2,m3,m4,m,i,r,c,ai,wi  
  SET TALK OFF  
  SET DATE TO ANSI  
  SET CENT ON  
  relyn=.F. &&返回值  
  tsfz=ALLT(lstr)  
  *分别用m1,m2,m3,m4表示四个条件是否成立  
  STOR .T. TO m1,m2,m3,m4  
   
  *条件1:只能是15或18位  
  m1=IIF(LEN(tsfz)=15 OR LEN(tsfz)=18,.T.,.F.)  
  IF LEN(tsfz)=15 && 15位的号码  
  FOR i=1 TO 15 &&检查每一位是否为数字  
  m=ASC(SUBS(tsfz,i,1))  
  IF m<48 OR m>57 &&数字  
  m2=.F. &&若有一位不是就不再查  
  EXIT  
  ENDIF  
  ENDFOR  
  m="19" +SUBS(tsfz, 7,2) &&早期的号都是上个世纪的  
  m=m+"."+SUBS(tsfz, 9,2)  
  m=m+"."+SUBS(tsfz,11,2)  
  m=CTOD(m)  
  IF ISNULL(m) OR isblank(m)  
  m3=.F. &&生日不正确  
  ENDIF  
  ENDIF  
  IF LEN(tsfz)=18 && 18位的号码  
  FOR i=1 TO 17  
  m=ASC(SUBS(tsfz,i,1))  
  IF m<48 OR m>57  
  m2=.F.  
  EXIT  
  ENDIF  
  ENDFOR  
  m=SUBS(tsfz,7,4)  
  m=m+"."+SUBS(tsfz,11,2)  
  m=m+"."+SUBS(tsfz,13,2)  
  m=CTOD(m)  
  IF ISNULL(m) OR isblank(m)  
  m3=.F.  
  ENDIF  
  r=0 &&计算校验位  
  FOR i=18 TO 2 STEP -1  
  ai=VAL(SUBS(tsfz,19-i,1))  
  wi=MOD(2^(i-1),11)  
  r=r+ai*wi  
  NEXT  
  r=MOD(r,11)  
  DO CASE  
  CASE r=0  
  c="1"  
  CASE r=1  
  c="0"  
  CASE r=2  
  c="X"  
  OTHER  
  c=ALLTRIM(STR(12-r))  
  ENDCASE  
  IF UPPE(SUBS(tsfz,18,1))<>c  
  m4=.F. &&校验位与原码最末位不同  
  ENDIF  
  ENDIF  
  *四个条件全成立,则返回.t.  
  relyn=IIF(m1 AND m2 AND m3 AND m4,.T.,.F.)  
  RETU relyn  
ENDFUN  



------解决方案--------------------
探讨
非常感谢两位大版主,但我初次接触,试了很长时间还弄不好,如果能详细些,将感激不尽!如果您忙的话,我随后慢慢试,再次感谢!

------解决方案--------------------
你的表单方法已经会添加了吧,但要保留 RETU relyn,只去掉FUNCTION sfzyn 和 ENDFUN

然后你的 校验 按钮的 Click 事件代码: