Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Calculate check digit
Message
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00611887
Message ID:
00611922
Views:
25
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...
Previous
Reply
Map
View

Click here to load this message in the networking platform