====== std.validate.isin ====== ISIN (International Securities Identification Number, ISO 6166) identifiziert Wertpapiere weltweit eindeutig. Die Prüfung erfolgt über den Luhn-Algorithmus auf einer erweiterten Ziffernkette, bei der Buchstaben als zweistellige Zahlen kodiert werden (A=10, B=11 …). Das Format ist: 2-Buchstaben-Länderkürzel + 9-stelliger nationaler Code + 1 Prüfziffer. → [[lyx_-_programmiersprache:units:validate|std.validate]] · [[lyx_-_programmiersprache:units:validate:luhn|std.validate.luhn]] · [[lyx_-_programmiersprache:units:validate:lei|std.validate.lei]] ---- ===== Konstanten ===== ^ Name ^ Wert ^ Bedeutung ^ | ''ISIN_OK'' | ''0'' | Gültig | | ''ISIN_ERR_INVALID_LENGTH'' | ''1'' | Länge ≠ 12 | | ''ISIN_ERR_INVALID_CHAR'' | ''2'' | Ungültiges Zeichen | | ''ISIN_ERR_INVALID_COUNTRY'' | ''3'' | Unbekanntes Länderkürzel | | ''ISIN_ERR_INVALID_CHECK'' | ''4'' | Falsche Prüfziffer | ---- ===== Verwendung ===== import std.io; import std.alloc; import std.validate.isin; fn main(): int64 { var isin: pchar := "DE0005140008"; // Deutsche Bank var buf: int64 := alloc(32); Print("rc="); PrintLn(IntToStr(ISINValidate(isin as int64))); // 0 = ISIN_OK ISINGetCountry(isin as int64, buf); Print("Land: "); Print(buf as pchar); Print("\n"); ISINNormalize("de0005140008" as int64, buf); Print("normalisiert: "); Print(buf as pchar); Print("\n"); Print("Pruefziffer: "); PrintLn(IntToStr(ISINCheckDigit("DE000514000" as int64))); return 0; } rc=0 Land: DE normalisiert: DE0005140008 Pruefziffer: 8 Die Funktionen dieser Unit nehmen die Eingabe als ''int64'' — der Cast ''%%wert as int64%%'' ist nötig, weil die ''pchar''-Bereinigung der Standardbibliothek ([[https://github.com/SEOLizer/LyX-Compiler/issues/1613|#1613]]) ''units/validate'' noch nicht erreicht hat. Zeichenketten werden **nicht zurückgegeben**: Das Ergebnis landet in einem selbst übergebenen Puffer (''out_buf''), der Rückgabewert ist ein Fehlercode (''0'' = in Ordnung). ---- ===== Funktionen ===== ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''ISINValidate(isin: int64): int64'' | pub | ISIN prüfen; ''ISIN_OK'' oder Fehlercode | | ''ISINCheckDigit(isin: int64): int64'' | pub | Prüfziffer für den 11-stelligen Stamm | | ''ISINGetCountry(isin: int64, out_buf: int64): int64'' | pub | Länderkürzel nach ''out_buf'' | | ''ISINNormalize(isin: int64, out_buf: int64): int64'' | pub | Normalisierte ISIN nach ''out_buf'' | Nicht vorhanden: ''ISINGetNasin'' und ''ISINFormat''. Letzte Aktualisierung: 2026-08-19 — Seite gegen die echten Signaturen berichtigt (''int64''-Eingaben, ''out_buf'' statt Rückgabe); Beispiel mit ''lyxc 1.1.3I'' übersetzt und ausgeführt.