[Back to MISC SWAG index]  [Back to Main SWAG index]  [Original]

{
 For you Programming librarians: the following Turbo Pascal Program
 will verify any ISBN (International Standard Book Number).
}
(*******************************************************************)
 Program VerifyISBN;    { Verify any ISBN number. Turbo Pascal      }
                        { 1992, 1993 Greg Vigneault                 }

 Var    ISBNstr                     : String[16];
        loopc, ISBNlen, M, chksm    : Byte;
 begin
    WriteLn; WriteLn( 'ISBN Verification v0.1, Greg Vigneault',#10);

    if ( ParamCount <> 1 ) then begin   { we want just 1 input parm }
        WriteLn( 'Syntax: ISBN <ISBN#>',#7 );
        Halt(1);
    end;
    ISBNstr := ParamStr(1);                     { get ISBN# String  }
    Write( 'Checking ISBN# ', ISBNstr );
    { eliminate any non-digit Characters from the ISBN String...    }
    ISBNlen := 0;
    For loopc := 1 to orD( ISBNstr[0] ) do
        if ( ISBNstr[ loopc ] in ['0'..'9'] ) then begin
            inC( ISBNlen );
            ISBNstr[ ISBNlen ] := ISBNstr[ loopc ];
        end;
    { an 'X' at the end of the ISBN affects the result              }
    if ( ISBNstr[ orD( ISBNstr[0] ) ] in ['X','x'] )
        then M := 10
        else M := orD( ISBNstr[ ISBNlen ] ) - 48;
    ISBNstr[0] := CHR( ISBNlen );           { new ISBN str length   }
    chksm := 0;
    For loopc := 1 to ISBNlen-1 do
        inC( chksm, ( orD( ISBNstr[ loopc ] ) - 48 ) * loopc );
    Write( ' <--- ' );
    if ( ( chksm MOD 11 ) = M )
        then WriteLn( 'Okay' )
        else WriteLn( 'ERRor!',#7 );
 end {VerifyISBN}.
(********************************************************************)

[Back to MISC SWAG index]  [Back to Main SWAG index]  [Original]