====== 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.