Por luisq , Jueves 12 de junio de 2008 a las 23:55
hola porfavor necesito ayuda con un algoritmo. Tengo este algoritmo pero no logro que me funcione, tengo que ponerlo en algun lugar en espacial?....por favor necesito de su ayuda.
***************************************************
FUNCTION Nit_DV(_Nit)
LOCAL _TipoRet, lnRetorno, Arreglo_PA, WSuma, WDato, WDig_Ver, I
_TipoRet = VARTYPE(_Nit)
DO CASE
CASE _TipoRet == "C"
_Nit = ALLTRIM(_Nit)
CASE _TipoRet == "N" OR _TipoRet == "Y"
_Nit = ALLTRIM(STR(_Nit))
OTHERWISE
=MESSAGEBOX("El valor de entrada NIT no se ha podido procesar.",0+48,_SCREEN.cNomApp)
RETURN
ENDCASE
DIMENSION Arreglo_PA(15)
Arreglo_PA(1) = 71
Arreglo_PA(2) = 67
Arreglo_PA(3) = 59
Arreglo_PA(4) = 53
Arreglo_PA(5) = 47
Arreglo_PA(6) = 43
Arreglo_PA(7) = 41
Arreglo_PA(8) = 37
Arreglo_PA(9) = 29
Arreglo_PA(10) = 23
Arreglo_PA(11) = 19
Arreglo_PA(12) = 17
Arreglo_PA(13) = 13
Arreglo_PA(14) = 7
Arreglo_PA(15) = 3
lnRetorno = 0
WDato=RIGHT(SPACE(15)+ALLTRIM(_Nit),15)
WSuma=0
WDig_Ver=0
FOR I = 1 TO 15
WSuma=WSuma+(VAL(SUBSTR(WDato,I,1))*Arreglo_PA(I))
ENDFOR
WSuma=MOD(WSuma,11)
IF(WSuma=0 .OR. WSuma=1)
lnRetorno = WSuma
ELSE
lnRetorno = 11 - WSuma
ENDIF
IF _TipoRet == "C"
RETURN ALLTRIM(STR(lnRetorno))
ELSE
RETURN lnRetorno
ENDIF
ENDFUNC
****************************************************
gracias por la ayuda que me puedan prestar