Hola invitado         02 Sep, 2010 - 04:45
Menú principal
 
Ads
 
Patrocinadores
 
Anuncios
 
© 2009 PortalFox
Validar un código ISSN lecturas 3328
 Enviado por Luis María Guayán en Jueves, 05 Agosto, 2004
Rutinas Función que valida un ISSN (International Standard Serial Number o Código Internacional Normalizado de Series).

Validar un código ISSN

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



El ISSN (International Standard Serial Number o Código Internacional Normalizado de Series) identifica publicaciones periódicas o seriadas realizadas en cualquier país o lengua (revistas, periodocos, colecciones de libros).

Actualmente un ISSN consta de 8 caracteres (7 caracteres de número + 1 caracter de control).

La siguiente función valida un ISSN:

? Val_ISSN("1366-204X")
? Val_ISSN("1606-9536")

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


A partir del 1° de enero de 2004, todos los ISSN se normalizarán a 13 caracteres.

Los nuevos ISSN se formarán anteponiendo el prefijo "997", mas los 7 caracteres del número ISSN, mas 2 digitos para señalar un precio (casi siempre "00"), mas 1 caracter de control que se calculará con mismo el algoritmo de los códigos EAN13.

Por ejemplo el ISSN 1366-204X se convertirá como se muestra a continuación:

Prefijo "977" + 7 digitos del ISBN + 2 digitos "00" + 1 dígito de control.
Nuevo ISBN = 977 1366204 00 5

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

? Val_EAN13("9771366204005")
? 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 ISSN | 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.