FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index Utilities / Utilidades C贸digo DC DNI Espa帽ol
Posts: 498
Joined: Thu May 10, 2007 08:30 PM
C贸digo DC DNI Espa帽ol
Posted: Thu Nov 25, 2010 11:36 AM
Por si a alguin le interesa, he aqu铆 como calcular el C贸digo de Control del DNI Espa帽ol.

Code (fw): Select all Collapse
FUNCTION HallaDC(cBanco,cOficina,cCuenta) 聽 聽// 聽cBanco -> CODIGO DEL BANCO (4 Caracteres)
LOCAL aVals := {1,2,4,8,5,10,9,7,3,6} 聽 聽 聽聽 // 聽cOficina -> CODIGO OFICINA (4 Caracteres)
LOCAL nCont,nTot,nRest1,nRest2 聽 聽 聽 聽 聽 聽 聽 // 聽cCuenta -> CODIGO CUENTA  (10 Caracteres)
LOCAL cCod := "00"+cBanco+cOficina

nTot := 0
FOR nCont =1 TO 10
聽 聽 nTot += ( VAL(SUBSTR(cCod,nCont,1)) * aVals[nCont] )
NEXT
nRest1 := 11 - (nTot % 11) 聽 聽// COMPLEMENTO A 11
nRest1 := IF(nRest1=11,0,IF(nRest1=10,1,nRest1))

cCod := cCuenta
nTot := 0
FOR nCont =1 TO 10
聽 聽 nTot += ( VAL(SUBSTR(cCod,nCont,1)) * aVals[nCont] )
NEXT
nRest2 := 11 - (nTot % 11) 聽 聽// COMPLEMENTO A 11
nRest2 := IF(nRest2=11,0,IF(nRest2=10,1,nRest2))

RETURN 聽( ALLTRIM(STR(nRest1))+ALLTRIM(STR(nRest2)) ) 聽// DEVUELVE EL DC (2 Carateres)


Muy sencillo. Espero que os sirva

Un saludo
Peaaaaaso de foro...

FWH 2007 - xHarbour - BCC55
Posts: 498
Joined: Thu May 10, 2007 08:30 PM
Re: C贸digo DC DNI Espa帽ol
Posted: Thu Nov 25, 2010 11:39 AM

PERDON !!!! un pequ帽o lapsus

Ese no es el del DNI es el DC de comprobaci贸n de numero de cuenta corriente. El del DNI lo pondr茅 m谩s adelante.

Peaaaaaso de foro...

FWH 2007 - xHarbour - BCC55
Posts: 498
Joined: Thu May 10, 2007 08:30 PM
Re: C贸digo DC DNI Espa帽ol
Posted: Thu Nov 25, 2010 11:52 AM
Calclar la letra del DNI tambi茅n es muy sencillo:

Code (fw): Select all Collapse
FUNCTION DNILeter(cDni) 聽 // cDni -> DIGITOS DEL DNI (Caracteres sin puntos)
聽 聽LOCAL cClv := "TRWAGMYFPDXBNJZSQVHLCKEF"
RETURN SUBSTR(cClv,MOD(VAL(cDni),23)+1,1) 聽/ 聽DEVUELVE LA LETRA DEL DNI

Si el DNI viniera con puntos s贸lo hacer: cDni := STRTRAN(cDni,".","")
Peaaaaaso de foro...

FWH 2007 - xHarbour - BCC55
Posts: 654
Joined: Mon May 29, 2006 03:14 PM
Re: C贸digo DC DNI Espa帽ol
Posted: Fri Nov 26, 2010 09:28 PM
Code (fw): Select all Collapse
LOCAL cClv := "TRWAGMYFPDXBNJZSQVHLCKEF"

La "F" esta repetida dos veces.
Adem谩s el mayor valor del resto de dividir entre 23 es 22. Luego del 0 al 22 van 23 valores.
A la variable oClv le sobre el 煤ltimo caracter, que es una "F".

Interesantes funciones, sobre todo el del DC de las cuentas corrientes de bancos.
Mi abuelo dec铆a: Los aviones vuelan porque Dios quiere, y los helic贸pteros ni Dios sabe porque vuelan.

FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
Posts: 498
Joined: Thu May 10, 2007 08:30 PM
Re: C贸digo DC DNI Espa帽ol
Posted: Mon Nov 29, 2010 10:57 AM

Tienes razon JmGarcia. La ultima F sobra. El caso es que llevo utilizando esta funci贸n durante a帽os y no me habia dado cuenta de ese detalle. Menos mal que esa 煤ltima leta no entra en juego y no influye en el resultado.

Gracias por el apunte. Todos los dias se aprende algo nuevo.

Peaaaaaso de foro...

FWH 2007 - xHarbour - BCC55

Continue the discussion