home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / chkdigit / chkdgt.pas
Pascal/Delphi Source File  |  1986-04-02  |  3KB  |  77 lines

  1. program chkdgt;                    (* Computes MOD 9 Check Digit - Example *)
  2.  
  3.  (* Program - CHKDGT.PAS
  4.  
  5.       This is an example routine that demonstrates how a simple CHECK DIGIT
  6.     routine can be done. In this example, a charge account number of fifteen
  7.     digits with a sixteenth digit being the check digit is used. To put it
  8.     simply, the sum of the first fifteen digits when divided by the check
  9.     digit value should give a remainder that is equal to the sixteenth digit
  10.     in value.
  11.  
  12.       In this example I have used a check digit of 9.
  13.  
  14.             SAMPLE 15 DIGIT NUMBER - 123456789012345   SIXTEENTH DIGIT 6
  15.  
  16.             This number if entered as input should print out as an answer
  17.             the check digit value 6 which is equal to the sixteenth digit
  18.             in value so the charge number probably valid.
  19.  
  20.                                       ENJOY,
  21.  
  22.                                       Bob Palla
  23.  
  24.   *)
  25.  
  26.  
  27.  var
  28.      charge_num               : string[20];
  29.      nxt_digit                : integer;
  30.      sum_of_digits            : integer;
  31.      place_of_digit           : integer;
  32.      result                   : integer;
  33.      check_digit              : integer;
  34.  
  35.   begin
  36.  
  37.       sum_of_digits:=0;            (* zero counters    *)
  38.  
  39.       clrscr;                      (* prepare screen   *)
  40.       gotoxy(10,10);
  41.  
  42.       write(' Input a 15 digit number. ');     (* prompt for charge number *)
  43.         readln(charge_num);                    (* get it                   *)
  44.  
  45.       for place_of_digit:=1 to 15 do           (* loop to compute sum of   *)
  46.                                                (* digits                   *)
  47.         begin
  48.           val (copy(charge_num, place_of_digit, 1), nxt_digit, result);
  49.           sum_of_digits := sum_of_digits + nxt_digit;
  50.         end;
  51.  
  52.       check_digit := sum_of_digits mod 9;      (* compute CHECK DIGIT      *)
  53.                                                (* Modulo 9                 *)
  54.  
  55.     writeln('Check Digit  (Modulo 9) =  ',check_digit:4);
  56.       readln;                                  (* wait for user to press   *)
  57.                                                (* a key - then go on       *)
  58.  
  59.   end.                             (* end of chkdgt.pas routine *)counters    *)
  60.  
  61.       clrscr;                      (* prepare screen   *)
  62.       gotoxy(10,10);
  63.  
  64.       write(' Input a 15 digit number. ');     (* prompt for charge number *)
  65.         readln(charge_num);                    (* get it                   *)
  66.  
  67.       for place_of_digit:=1 to 15 do           (* loop to compute sum of   *)
  68.                                                (* digits                   *)
  69.         begin
  70.           val (copy(charge_num, place_of_digit, 1), nxt_digit, result);
  71.           sum_of_digits := sum_of_digits + nxt_digit;
  72.         end;
  73.  
  74.       check_digit := sum_of_digits mod 9;      (* compute CHECK DIGIT      *)
  75.                                                (* Modulo 9                 *)
  76.  
  77.     writeln('Check Digit  (Mod