====== std.validate.lei ======
LEI (Legal Entity Identifier, ISO 17442) identifiziert juristische Personen im globalen Finanzmarkt eindeutig. Die Prüfung erfolgt über den Mod-97-Algorithmus wie bei IBAN. Das Format ist 20 alphanumerische Zeichen: 4 LOU-Präfix + 14 Entitätscode + 2 Prüfziffern.
→ [[lyx_-_programmiersprache:units:validate|std.validate]] · [[lyx_-_programmiersprache:units:validate:iban|std.validate.iban]] · [[lyx_-_programmiersprache:units:validate:isin|std.validate.isin]]
----
===== Konstanten =====
^ Name ^ Wert ^ Bedeutung ^
| ''LEI_OK'' | ''0'' | Gültig |
| ''LEI_ERR_INVALID_LENGTH'' | ''1'' | Länge ≠ 20 |
| ''LEI_ERR_INVALID_CHAR'' | ''2'' | Ungültiges Zeichen |
| ''LEI_ERR_INVALID_CHECK'' | ''3'' | Mod-97-Prüfung fehlgeschlagen |
----
===== Verwendung =====
import std.io;
import std.alloc;
import std.validate.lei;
fn main(): int64 {
var lei: pchar := "5299000J2N45DDNE4Y28";
var buf: int64 := alloc(32);
Print("rc="); PrintLn(IntToStr(LEIValidate(lei as int64)));
LEIGetLOU(lei as int64, buf);
Print("LOU: "); Print(buf as pchar); Print("\n");
return 0;
}
rc=0
LOU: 5299
Alle 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**: Wer ein Ergebnis braucht, übergibt einen eigenen Puffer als ''out_buf''; der Rückgabewert ist ein Fehlercode (''0'' = in Ordnung).
> **''LEIValidate'' arbeitet** ([[https://github.com/SEOLizer/LyX-Compiler/issues/1689|#1689]] behoben, mit ''lyxc 1.1.11B'' nachgemessen): eine gültige LEI liefert ''0'', eine an der letzten Stelle verfälschte ''3'' (''LEI_ERR_CHECKSUM''). Die Mod-97-Rechnung stimmt wieder.
----
===== Funktionen =====
^ Signatur ^ Sichtbarkeit ^ Beschreibung ^
| ''LEIValidate(lei: int64): int64'' | pub | LEI prüfen; ''LEI_OK'' oder Fehlercode (siehe Kasten) |
| ''LEIGetLOU(lei: int64, out_buf: int64): int64'' | pub | LOU-Präfix (4 Stellen) nach ''out_buf'' |
Nicht vorhanden: ''LEICalculateCheck'', ''LEIGetEntity'' und ''LEINormalize''.
Letzte Aktualisierung: 2026-08-19 — Seite gegen die echten Signaturen berichtigt; Beispiel mit ''lyxc 1.1.3I'' übersetzt und ausgeführt. Fehlerhafte Prüfsumme als #1689 gemeldet.
Letzte Aktualisierung: 2026-08-27 — ''LEIValidate'' gegen ''lyxc 1.1.11B'' nachgemessen: #1689 ist behoben, die Beispielausgabe steht jetzt auf ''rc=0'' (vorher ''rc=3'').
Codebeispiele geprüft: gegen **lyxc 1.2.5C** übersetzt (Prüflauf 2026-09-08 über die gesamte Doku: 574 Vollprogramme, 0 echte Fehler; zusätzlich 5159 Aufrufe gegen die ''pub fn''-Signaturen in ''aurum/std'' gehalten, 0 Abweichungen).