Brian Dunning's FileMaker Custom Functions

CheckdigitDamm ( digitSequence )

Calculates a check digit using the Damm algorithm

  Average rating: 4.8 (22 votes) Log in to vote

Jeremy Bante   Jeremy Bante
Beezwax Datatools, Inc.
http://beezwax.net

Share on Facebook Share on Twitter

  Sample input:
List (
CheckdigitDamm ( 12345 ) ;
12345 & CheckdigitDamm ( 12345 ) ;
CheckdigitDamm ( 12345 & CheckdigitDamm ( 12345 ) )
)
  Sample output:
9
123459
0

  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.

 

Comments

Mark Scott   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!

Mark
 

Log in to post comments.

 

Note: these functions are not guaranteed or supported by BrianDunning.com. Please contact the individual developer with any questions or problems.

Under construction. Email me your wish list for improvements.