Kbase 20549: How to calculate a "mod 10 check digit", Sample
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  10/16/2008 |
|
Status: Unverified
GOAL:
How to calculate a "mod 10 check digit".
FIX:
The following user defined function calculates a "mod 10 check digit".
FUNCTION Mod10CheckDigit RETURNS INTEGER (cInputData AS CHARACTER):
DEFINE VARIABLE iEven AS INTEGER NO-UNDO INITIAL 0.
DEFINE VARIABLE iOdd AS INTEGER NO-UNDO INITIAL 0.
DEFINE VARIABLE iLength AS INTEGER NO-UNDO.
DEFINE VARIABLE iLoop AS INTEGER NO-UNDO.
DEFINE VARIABLE iTemp AS INTEGER NO-UNDO.
/*---------------------------------------------------------*/
/* This function assumes that the input string contains */
/* only numeric data. You may want to modify this routine */
/* to enforce what we are assuming. */
/*---------------------------------------------------------*/
ASSIGN cInputData = TRIM(cInputData)
iLength = LENGTH(cInputData).
DO iLoop = 1 TO iLength:
ASSIGN iTemp = INTEGER(SUBSTRING(cInputData,iLoop,1)).
IF iLoop MOD 2 = 0 THEN
ASSIGN iEven = iEven + iTemp.
ELSE
ASSIGN iOdd = iOdd + iTemp.
END.
ASSIGN iTemp = 10 - (((iOdd * 3) + iEven) MOD 10).
RETURN (IF iTemp <> 10 THEN iTemp ELSE 0).
END FUNCTION.
MESSAGE Mod10CheckDigit("0000000000") VIEW-AS ALERT-BOX.
MESSAGE Mod10CheckDigit("0123456789") VIEW-AS ALERT-BOX.