Hola Roberto aca te paso una gran ayuda que averigue con movistar y que esta a la vista pero nunca me di cuen ta.
Sim de inicio: 8954071100438791503
Y el
Sim de Final: 8954071100438791990
Es eso?
Como ves en el ejemplo inicio y fin si le sacas el digito verificador te das cuenta que vas de a 50 ¿lo ves???, solo resta hacer un bucle con un for o algo similar y agregarle a cada numero el digito verificador, ¿es asi???, puede ser, por lo que me dijeron es asi de simple usando el codigo que me enviaste o que yo publique en python que en caso de no tener el digito verificador le agregar 18 digitos y el verificador te lo dice solo. Avisame si entes, aca abajo te publico como es obtener o que te diga cual es el digito verificador que me tradujo Victor Hugo desde Mexico.,
FUNCTION Calculate_Luhn( tcPartial_Card_Number AS STRING )
LOCAL lnCheck_Digit As INTEGER
LOCAL lcCheck_Digit As CHARACTER
lnCheck_Digit = Luhn_CheckSum( tcPartial_Card_Number + "0" )
IF lnCheck_Digit > 0
lnCheck_Digit = 10 - lnCheck_Digit
ENDIF
lcCheck_Digit = TRANSFORM( lnCheck_Digit, "@L 9" )
RETURN lcCheck_Digit
*
en otro prg colocas lo siguiente y te lo muestra
SET PROCEDURE TO DigVerNroTarjeta
? Is_Luhn_Valid("8954071100438791503")
? Calculate_Luhn("895407110043879150")
Ahi ves como seria con tu ejemplo en VFP y con este te dice que seria "3" el digito verificador con el Calculate e ingresando solo 18 digitos.
Ahora tendria que hacer un bucle con un for o algo asi en el cual yo ingrese el numero de inicio y el numero de fin de la caja y me vaya sumando de a uno y agregando el digito verificador a cada numero y listo ¿no??? que te parece, como lo harias???. Saludos
Pablo