CheckdigitDamm ( digitSequence )
Calculates a check digit using the Damm algorithm
Average rating: 4.8 (22 votes) Log in to vote
Beezwax Datatools, Inc.
CheckdigitDamm ( 12345 ) ;
12345 & CheckdigitDamm ( 12345 ) ;
CheckdigitDamm ( 12345 & CheckdigitDamm ( 12345 ) )
Function definition: (Copy & paste into FileMaker's Edit Custom Function window)
Calculates a check digit to append to a digit sequence that can be used to validate that the digit sequence has been transcribed correctly.
This custom function implements an algorithm described by H. Michael Damm in 2004.
Mark Scott, San Francisco
Jan 9, 2015
Excellent! The Damm algorithm is, AFAIK, the most robust one out there for a single-numeric-digit check digit scheme. It's able to detect all single-digit transcription errors (e.g., 6↔9) and all adjacent transpositions (e.g., 47↔74)—which together account for 90% of errors—and most (though not all) of the other common errors, such as jump transpositions (e.g., 358↔853), twin errors (e.g., 44↔66), and jump twins (e.g., 494↔797). Additionally, it detects all English-language phonetic errors (e.g., 16↔60).
The older and more widely known Luhn algorithm misses the transposition 09↔90—yikes! those digits are right next to one another on any keyboard without a dedicated numeric keypad (think laptop!)—as well as the twin errors 22↔55, 33↔66, and 44↔77. Yikes, again! Those three pairs are each vertically adjacent on a numeric keypad.
I was about to code this myself, then decided to check here to see if someone has saved me from reinventing the wheel. Thanks, Jeremy; good work!
Note: these functions are not guaranteed or supported by BrianDunning.com. Please contact the individual developer with any questions or problems.