Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Calculate check digit
Message
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Divers
Thread ID:
00611887
Message ID:
00611922
Vues:
26
Hello Peter
>Does anyone know of a program written in forxpro that calculates a check digit?

Here's one I did several years ago (in dBase IV no less!). The code is not particularly tight, or beautiful, but it works!
FUNCTION ck_digit
PARAMETERS nNum
*---------------------------------------------------------------
*  Programmer..: R. Bosma       Date:  2.Mar.1995
*  Description.: Calculates and appends Modulus 10 checkdigit
*              : to any number (up to 9,999,999)
*  Written for.: dB4 v1.1
*  Called by:..: Any               Calls: None
*  Usage.......: ck_digit(<expN>)
*  Parameters..: nNum: Numeric input (maximum 7 digits)
*  Returns.....: Numeric (or -1 if input was too large)
*  Example.....: STORE ck_digit(nVar)  TO newVar
*---------------------------------------------------------------
IF nNum > 9999999
   RETURN -1
ENDIF
DECLARE digits[11]
STORE -1  TO nTmp
STORE RIGHT("0000000"+LTRIM(STR(nNum)),7)  TO cNum
nTmp = VAL(SUBSTR(cNum,1,1))*2
digits[1] = LEFT(STR(nTmp,2),1)
digits[2] = RIGHT(STR(nTmp,2),1)
digits[3] = SUBSTR(cNum,2,1)
nTmp = VAL(SUBSTR(cNum,3,1))*2
digits[4] = LEFT(STR(nTmp,2),1)
digits[5] = RIGHT(STR(nTmp,2),1)
digits[6] = SUBSTR(cNum,4,1)
nTmp = VAL(SUBSTR(cNum,5,1))*2
digits[7] = LEFT(STR(nTmp,2),1)
digits[8] = RIGHT(STR(nTmp,2),1)
digits[9] = SUBSTR(cNum,6,1)
nTmp = VAL(SUBSTR(cNum,7,1))*2
digits[10] = LEFT(STR(nTmp,2),1)
digits[11] = RIGHT(STR(nTmp,2),1)
nTmp = 1
STORE 0  TO nDigSum
DO WHILE nTmp < 12
   nDigSum = nDigSum + VAL(digits[nTmp])
   nTmp = nTmp + 1
ENDDO
RELEASE digits
nTmp = CEILING(nDigSum/10) * 10
RETURN VAL(STR(nNum)+STR(nTmp-nDigSum,1))
*
*  EOFunc  ck_digit
*--
Hope that helps!
Randy Bosma
VFP - Because life is too short to code in something else...
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform