VIN (Vehicle Identification Number) / FIN (Fahrzeugidentifikationsnummer) nach FMVSS 565 — der weltweite Standard zur eindeutigen Fahrzeugidentifikation (ISO 3779). Die Prüfziffer an Position 9 wird über ein Mod-11-Verfahren mit Transliterationstabelle (A=1, B=2 … Z=9) und Positionsgewichten berechnet.
| Name | Wert | Bedeutung |
|---|---|---|
VIN_OK | 0 | Gültig |
VIN_ERR_INVALID_LENGTH | 1 | Länge ≠ 17 |
VIN_ERR_INVALID_CHAR | 2 | Ungültiges Zeichen (I, O, Q verboten) |
VIN_ERR_INVALID_CHECK | 3 | Falsche Prüfziffer |
VIN_ERR_INVALID_YEAR | 4 | Ungültige Modelljahrkennung |
| Stellen | Bezeichnung | Bedeutung |
|---|---|---|
| 1–3 | WMI | World Manufacturer Identifier (Hersteller) |
| 4–8 | VDS | Vehicle Descriptor Section (Modell, Typ) |
| 9 | Check | Prüfziffer (nur US-Norm) |
| 10 | Modelljahr | Buchstaben/Ziffern-Code für Produktionsjahr |
| 11 | Werk | Produktionswerk |
| 12–17 | Seriennummer | Fortlaufende Seriennummer |
import std.validate.vin;
var vin: pchar := "WBA3A5G59DNP26082"; // BMW
var result: int64 := VINValidate(vin);
if (result = VIN_OK) {
log_info(VINGetWMI(vin)); // "WBA" (BMW AG)
log_info(VINGetModelYear(vin)); // "2013"
log_info(VINGetSerial(vin)); // "DNP26082"
}
// Prüfziffer berechnen
var check: pchar := VINCheckDigit("WBA3A5G5_DNP26082"); // "_" = Prüfziffer-Position
| Signatur | Sichtbarkeit | Beschreibung |
|---|---|---|
VINValidate(vin: pchar): int64 | pub | VIN/FIN vollständig validieren |
VINCheckDigit(vin: pchar): pchar | pub | Prüfziffer berechnen („0“–„9“ oder „X“) |
VINGetWMI(vin: pchar): pchar | pub | World Manufacturer Identifier (3 Zeichen) extrahieren |
VINGetVDS(vin: pchar): pchar | pub | Vehicle Descriptor Section (Stellen 4–8) extrahieren |
VINGetModelYear(vin: pchar): pchar | pub | Modelljahr als vierstellige Jahreszahl zurückgeben |
VINGetSerial(vin: pchar): pchar | pub | Seriennummer (Stellen 12–17) extrahieren |
VINNormalize(vin: pchar): pchar | pub | VIN normalisieren (Leerzeichen entfernen, Großbuchstaben) |
Letzte Aktualisierung: 2026-05-23