Consultor Eletrônico



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.