Monday, 4 June 2012

How South African ID numbers work and the problem of data capturing.


South African ID numbers are issued in the following way: An example is 890902 5012 083.
The first six digits indicate the persons date of birth in the format  YYMMDD. In the above example the person was born on 2 September 1989.
The next four digits (5012) indicate a persons gender. Values from 0001 – 4999 indicate that the person is female and the values from 5000 – 9999 indicate that the person is male. In this case the value 5012 indicates that the person is male and was the 12th person to be registered at the South African Department of Home Affairs for the person date 2 September
The  remaining digits (083) work as follows:
The ‘0’ indicates the persons citizen status. A '0' indicates the person is a local resident.  A '1' indicates the person is a foreigner with permanent working permit. A '2' indicates the person is a refugee.
The next digit ‘8’ in this example has no meaning. The values for this ‘meaningless digit’ is either 8 or 9.
The last digit ‘3’ in our example serves a very special purpose. It is called a check digit.  The purpose of this digit is to help ensure that data capturing clerks at institutions like banks, SARS and so on do not make a mistake when they have to enter a persons ID number into their computers.
The check is done as follows:
Click on the image to see enlarged view:


If the products of the digits add up to a number perfectly divisible by 10 (there is no remainder) then the ID number was captured correctly. In this example the products of the digits calculated in manner explained adds up to 50 which can be divided by 10 with no remainder.

Students in all the grades (10 - 12) all  have enough programming structures to create a program to see if an ID number is correctly entered.

The above method of checking was first done by the IBM engineer Luhn in 1954.
See:   http://en.wikipedia.org/wiki/Luhn_algorithm

No comments:

Post a Comment