====== Validierung mit std.validate ====== 25 Units für die Prüfung von Identifikatoren, Nummern und Codes aus Finanz, Logistik, Medien, Behörden und Wissenschaft. Alle Units sind zustandslos und benötigen keine externen Datenbanken — reine Algorithmen. → [[lyx_-_programmiersprache:guides|Guides]] · [[lyx_-_programmiersprache:units:validate|std.validate Referenz]] ---- ===== Schnellauswahl nach Bereich ===== ==== Finanzen & Bankwesen ==== ^ Unit ^ Importpfad ^ Hauptfunktion ^ Beschreibung ^ | IBAN | ''std.validate.iban'' | ''IBANValidate(iban)'' | IBAN nach ISO 13616 (Modulo-97) | | BIC/SWIFT | ''std.validate.bic'' | ''BICValidate(bic)'' | BIC-11 / BIC-8 nach ISO 9362 | | ISIN | ''std.validate.isin'' | ''ISINValidate(isin)'' | International Securities Identification Number | | LEI | ''std.validate.lei'' | ''LEIValidate(lei)'' | Legal Entity Identifier (ISO 17442) | | US CUSIP | ''std.validate.us_cusip'' | ''USCUSIPValidate(cusip)'' | US-Wertpapierkennnummer | | Luhn | ''std.validate.luhn'' | ''LuhnCheckDigit(number)'' | Luhn-Algorithmus (Kreditkarten, IMEI) | ==== Produkt- & Handelskennzeichnung ==== ^ Unit ^ Importpfad ^ Hauptfunktion ^ Beschreibung ^ | EAN | ''std.validate.ean'' | ''EAN13CheckDigit(code)'' | EAN-13 und EAN-8 Barcode | | ISBN | ''std.validate.isbn'' | ''ISBN13ValidateFull(isbn)'' | ISBN-10 und ISBN-13 (Bücher) | | ISMN | ''std.validate.ismn'' | ''ISMNValidate(ismn)'' | International Standard Music Number | | ISSN | ''std.validate.issn'' | ''ISSNValidate(issn)'' | International Standard Serial Number | | VIN | ''std.validate.vin'' | ''VINValidate(vin)'' | Fahrzeug-Identifizierungsnummer | ==== Logistik & Transport ==== ^ Unit ^ Importpfad ^ Hauptfunktion ^ Beschreibung ^ | ISO 6346 | ''std.validate.iso6346'' | ''ContainerValidate(id)'' | Container-ID (Schifffahrt) | | UIC | ''std.validate.uic'' | ''UICVehicleValidate(nr)'' | Eisenbahn-Fahrzeugnummer (UIC) | | MMSI | ''std.validate.mmsi'' | ''MMSIValidate(mmsi)'' | Maritime Mobile Service Identity | | IATA | ''std.validate.iata'' | ''IATATicketValidate(ticket)'' | IATA-Ticketnummer | ==== Medien & Kultur ==== ^ Unit ^ Importpfad ^ Hauptfunktion ^ Beschreibung ^ | ISRC | ''std.validate.isrc'' | ''ISRCValidate(isrc)'' | International Standard Recording Code | ==== Wissenschaft & Chemie ==== ^ Unit ^ Importpfad ^ Hauptfunktion ^ Beschreibung ^ | CAS | ''std.validate.cas'' | ''CASValidate(cas)'' | Chemical Abstracts Service Registry Number | | ORCID | ''std.validate.orcid'' | ''ORCIDValidate(orcid)'' | Open Researcher and Contributor ID | | EWC | ''std.validate.ewc'' | ''EWCValidate(code)'' | European Waste Catalogue (Gefahrgut) | ==== Behörden & Personendaten ==== ^ Unit ^ Importpfad ^ Hauptfunktion ^ Beschreibung ^ | US SSN | ''std.validate.us_ssn'' | ''USSSNValidate(ssn)'' | US Social Security Number | | NL BSN | ''std.validate.nl_bsn'' | ''NLBSNValidate(bsn)'' | Niederländische Bürgerservicenummer | | CH AHV | ''std.validate.ch_ahv'' | ''CHAHVValidate(ahv)'' | Schweizer AHV-Nummer | | DE Nummern | ''std.validate.de_numbers'' | ''DEPZNValidate(pzn)'' | Deutsche PZN (Pharmazentralnummer) | | DE Personal | ''std.validate.de_personal'' | ''DEIDCardValidate(mrz1, mrz2)'' | Deutscher Personalausweis (MRZ) | | VAT | ''std.validate.vat'' | ''VATValidate(vat)'' | Europäische Umsatzsteuer-ID | ---- ===== Verwendungsbeispiele ===== ==== IBAN prüfen ==== import std.validate.iban; fn checkIBAN(iban: pchar): int64 { // Normalisiert automatisch (Leerzeichen entfernen, Großbuchstaben): var normalized: int64 := IBANNormalize(iban as int64); var rc: int64 := IBANValidate(normalized); // rc: 0 = gültig, -1 = ungültig return rc; } ==== EAN-13 Prüfziffer berechnen ==== import std.validate.ean; var barcode: pchar := "590123412345"c; // 12 Stellen ohne Prüfziffer var check: int64 := EAN13CheckDigit(barcode as int64); // check = erwartete Prüfziffer (0–9) ==== VIN (Fahrzeug-Identifizierungsnummer) ==== import std.validate.vin; import std.alloc; var vin: pchar := "1HGCM82633A004352"c; var rc: int64 := VINValidate(vin as int64); if rc == 0 { // Hersteller ausgeben: var mfr: int64 := alloc(64); VINGetManufacturer(vin as int64, mfr); free(mfr, 64); } ==== Luhn (Kreditkarten, IMEI) ==== import std.validate.luhn; var number: pchar := "4532015112830366"c; var check: int64 := LuhnCheckDigit(number as int64); // Vollständige Karte: Nummer + Prüfziffer muss Luhn-konform sein var valid: int64 := LuhnValidate(number as int64); ==== Mehrere Validierungen in einem Formular ==== import std.validate.iban; import std.validate.bic; import std.validate.vat; fn validateBankForm(iban: pchar, bic: pchar, vat: pchar): int64 { var ibanOK: int64 := IBANValidate(IBANNormalize(iban as int64)); var bicOK: int64 := BICValidate(bic as int64); var vatOK: int64 := VATValidate(vat as int64); if ibanOK != 0 { return -1; } // IBAN ungültig if bicOK != 0 { return -2; } // BIC ungültig if vatOK != 0 { return -3; } // VAT ungültig return 0; } ---- ===== Rückgabewerte ===== Alle Validate-Funktionen folgen der Lyx-Fehlerkonvention: ^ Rückgabe ^ Bedeutung ^ | 0 | Gültig | | -1 | Ungültig (Prüfsumme falsch, falsches Format) | ''CheckDigit''-Funktionen geben die berechnete Prüfziffer zurück (0–9 oder 0–35 je nach Standard). ---- ===== Welche Validator-Funktion für welchen Zweck? ===== ^ Ich will … ^ Funktion ^ | IBAN strukturell + Prüfsumme prüfen | ''IBANValidate'' (Modulo-97) | | Kreditkartennummer prüfen | ''LuhnValidate'' | | Barcode generieren/prüfen | ''EAN13CheckDigit'' / ''EAN8CheckDigit'' | | Fahrzeughersteller aus VIN | ''VINGetManufacturer'' + ''VINValidate'' | | Chemische Substanz identifizieren | ''CASValidate'' | | Personalausweis (DE) MRZ prüfen | ''DEIDCardValidate'' | | Containernummer auf Schiff prüfen | ''ContainerValidate'' | | Europäische USt-ID prüfen | ''VATValidate'' | Letzte Aktualisierung: 2026-06-08