Hola invitado         02 Sep, 2010 - 04:39
Menú principal
 
Ads
 
Patrocinadores
 
Anuncios
 
© 2009 PortalFox
Validar un código ISBN lecturas 4391
 Enviado por Luis María Guayán en Miércoles, 04 Agosto, 2004
Rutinas Función que valida un ISBN (International Standard Book Number ó Código Internacional Normalizado para Libros).

Validar un código ISBN

Luis María Guayán Por Luis María Guayán, Tucumán, Argentina



Actualmente un ISBN consta de 10 caracteres (9 caracteres del número de libro, mas 1 caracter de control).

La función que valida un ISBN es la siguiente:

? Val_ISBN("0-534-35964-7")
? Val_ISBN("84-89660-00-X")

FUNCTION Val_ISBN(tcISBN)
LOCAL ln, lnSuma, lnDigito, lcDigito
tcISBN = ALLTRIM(CHRTRAN(tcISBN,"- ",""))
IF LEN(tcISBN) # 10
RETURN .F.
ENDIF
lnSuma = 0
FOR ln = 1 TO 9
lnSuma = lnSuma + VAL(SUBSTR(tcISBN,ln,1))*(11-ln)
ENDFOR
lnDigito = 11-MOD(lnSuma,11)
lcDigito = IIF(lnDigito=10,"X",STR(lnDigito,1))
RETURN lcDigito = SUBSTR(tcISBN,10,1)
ENDFUNC


A partir del 1° de enero de 2007 todos los ISBN se normalizarán a 13 caracteres (Bookland EAN).

Los ISBN de 10 caracteres ya existentes, se convertiran anteponiendo el prefijo "978", mas los 9 caracteres del número de libro, mas 1 digito de control que se calculará con mismo el algoritmo de los códigos EAN13.

Los ISBN de nuevas publicaciones se generarán anteponiendo el prefijo "979", mas los 9 caracteres del número de libro, mas 1 digito de control que se calculará con mismo el algoritmo de los códigos EAN13.

Por ejemplo el ISBN 84-89660-00-X se convertirá como se muestra a continuación:

Prefijo "978" + 9 digitos del ISBN + 1 dígito de control.
Nuevo ISBN = 978 848966000 7

La función para validar un código EAN13 es la siguiente:

? Val_EAN13("9788489660007")
? Val_EAN13("7798007220004")

FUNCTION Val_EAN13(tcEAN13)
LOCAL ln, lnSuma, lnDigito, lcDigito
tcEAN13 = ALLTRIM(CHRTRAN(tcEAN13,"- ",""))
IF LEN(tcEAN13) # 13
RETURN .F.
ENDIF
lnSuma = 0
FOR lnI = 1 TO 12
IF MOD(lnI,2) = 0
lnSuma = lnSuma + VAL(SUBS(tcEAN13,lnI,1)) * 3
ELSE
lnSuma = lnSuma + VAL(SUBS(tcEAN13,lnI,1)) * 1
ENDIF
ENDFOR
lnDigito = 10-MOD(lnSuma,10)
lcDigito = IIF(lnDigito=10,"0", STR(lnDigito,1))
RETURN lcDigito = SUBSTR(tcEAN13,13,1)
ENDFUNC

 Versión imprimible  
Validar un código ISBN | Entrar/Crear una cuenta | 0 Comentarios
Los comentarios son propiedad de sus respectivos autores.
No somos responsables de su contenido.



Todas las marcas y los logos utilizados en este sitio son propiedad de sus respectivos dueños.
Los artículos, noticias y comentarios son propiedad y responsabilidad de sus respectivos autores.
Copyright © 2000-2010 PortalFox. Todos los derechos reservados.