Download or view VINChecker.frink in plain text format
// Checks VIN numbers checksum using the procedure found at:
// http://www.vehicleidentificationnumber.com/NHTSA_vehicle_identification_number_content.html
class VINChecker
{
class var d = undef
class var weights = [8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2]
class calculateVINChecksum[vin] :=
{
if d==undef
initCharMap[]
sum = 0
for pos = 0 to 16
{
c = substrLen[vin, pos, 1]
println["Char at " + (pos+1) + " is $c, value is " + d@c]
sum = sum + d@c * weights@pos
}
println["Sum is $sum"]
checksum = sum mod 11
if checksum == 10
checksum = "X"
else
checksum = "$checksum"
}
class initCharMap[] :=
{
d = new dict
d@"0" = 0
d@"1" = 1
d@"2" = 2
d@"3" = 3
d@"4" = 4
d@"5" = 5
d@"6" = 6
d@"7" = 7
d@"8" = 8
d@"9" = 9
d@"A" = 1
d@"B" = 2
d@"C" = 3
d@"D" = 4
d@"E" = 5
d@"F" = 6
d@"G" = 7
d@"H" = 8
d@"I" = undef
d@"J" = 1
d@"K" = 2
d@"L" = 3
d@"M" = 4
d@"N" = 5
d@"O" = undef
d@"P" = 7
d@"Q" = undef
d@"R" = 9
d@"S" = 2
d@"T" = 3
d@"U" = 4
d@"V" = 5
d@"W" = 6
d@"X" = 7
d@"Y" = 8
d@"Z" = 9
return d
}
}
vin = trim[input["Enter VIN: "]]
checksum = VINChecker.calculateVINChecksum[vin]
println["Calculated checksum is: $checksum"]
println["Digit in original VIN is: " + substrLen[vin,8,1]]
Download or view VINChecker.frink in plain text format
This is a program written in the programming language Frink.
For more information, view the Frink
Documentation or see More Sample Frink Programs.
Alan Eliasen, eliasen@mindspring.com