Task

Validate the check digit of an ISBN-13 code:

   Multiply every other digit by  3.
   Add these numbers and the other digits.
   Take the remainder of this number after division by  10.
   If it is  0,   the ISBN-13 check digit is correct.


Use the following codes for testing:

   978-1734314502       (good)
   978-1734314509         (bad)
   978-1788399081       (good)
   978-1788399083         (bad)


Show output here, on this page



See also

   for details:   13-digit ISBN method of validation.       (installs cookies.)


include xpllib;         \contains StrLen function
 
proc ISBN13(Str);       \Show if International Standard Book Number is good
char Str;
int Sum, Cnt, Dig, I;
[Sum:= 0;  Cnt:= 0;
for I:= 0 to StrLen(Str)-1 do
    [Dig:= Str(I) - ^0;
    if Dig>=0 & Dig<=9 then
        [Sum:= Sum + Dig;
         Cnt:= Cnt + 1;
         if (Cnt&1) = 0 then
                Sum:= Sum + Dig + Dig;
        ];
    ];
Text(0, Str);
Text(0, if rem(Sum/10)=0 & Cnt=13 then ": good" else ": bad");
CrLf(0);
];
 
[ISBN13("978-1734314502");
 ISBN13("978-1734314509");
 ISBN13("978-1788399081");
 ISBN13("978-1788399083");
 ISBN13("978-1-59327-220-3");
 ISBN13("978-178839918");
]