====== std.validate.vin ====== 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. → [[lyx_-_programmiersprache:units:validate|std.validate]] ---- ===== Konstanten ===== ^ 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 | ---- ===== VIN-Struktur ===== ^ 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 | ---- ===== Verwendung ===== 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 ---- ===== Funktionen ===== ^ 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