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.