VINChecker.frink

View or download 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]]


View or download 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 was born 17927 days, 13 hours, 38 minutes ago.