Un contenedor es un recipiente de carga para transporte marítimo, fluvial o terrestre y sus dimensiones e identificación están normalizadas.
La identificación de un contenedor consta de un código alfanumérico de 11 caracteres. Las primeras cuatro pociciones son letras y le siguen seis números. A partir de estos 10 caracteres se calcula un dígito de verificación que ocupa la posición 11°
Se puede validar esta identificación con la siguiente función:
? ValidarContenedor("HOYU7510136")
? ValidarContenedor("HOyU7510136")
FUNCTION ValidarContenedor(tcCnt)
LOCAL lnLen, lnSuma, lnCar, lcCheck
#DEFINE CHR_VALIDOS "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
m.tcCnt = ALLTRIM(m.tcCnt)
m.lnLen = LEN(m.tcCnt)
IF m.lnLen <> 11 OR NOT EMPTY(CHRTRAN(m.tcCnt, CHR_VALIDOS, ""))
*- No valido
RETURN .F.
ENDIF
m.lnSuma = 0
FOR m.lnI = 1 TO m.lnLen - 1
m.lnCar = ASC(SUBSTR(m.tcCnt, m.lnI, 1))
m.lnCar = IIF(m.lnCar < 65, m.lnCar - 48, m.lnCar - 55)
m.lnCar = m.lnCar + (INT(m.lnCar/11))
m.lnSuma = m.lnSuma + m.lnCar * 2 ^ (m.lnI-1)
ENDFOR
m.lnCar = m.lnSuma - (INT(m.lnSuma/11)*11)
*-- Digito verificador
m.lcCheck = TRANSFORM(IIF(m.lnCar < 10, m.lnCar, 0))
RETURN m.lcCheck == RIGHT(m.tcCnt, 1)
ENDFUNC
Luis María Guayán
No hay comentarios. :
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.