RosettaCodeData/Task/ISBN13-check-digit/PureBasic/isbn13-check-digit.basic
2024-03-06 22:25:12 -08:00

21 lines
587 B
Text

Macro TestISBN13(X)
Print(X)
If IsISBN13(X) : PrintN(" good") : Else : PrintN(" bad") : EndIf
EndMacro
Procedure.b IsISBN13(ISBN13.s)
ISBN13=Left(ISBN13,3)+Mid(ISBN13,5)
If IsNAN(Val(ISBN13)) Or Len(ISBN13)<>13 : ProcedureReturn #False : EndIf
Dim ISBN.s{1}(12) : PokeS(@ISBN(),ISBN13)
For i=0 To 11 Step 2 : sum+Val(ISBN(i))+Val(ISBN(i+1))*3 : Next
sum+Val(ISBN(12))
ProcedureReturn Bool(sum%10=0)
EndProcedure
If OpenConsole()
TestISBN13("978-0596528126")
TestISBN13("978-0596528120")
TestISBN13("978-1788399081")
TestISBN13("978-1788399083")
Input()
EndIf