====== std.validate.orcid ======
ORCID iD (Open Researcher and Contributor ID) identifiziert Wissenschaftler und Autoren weltweit eindeutig. Format: 4×4 Ziffern mit Bindestrichen (''0000-0002-1825-0097''). Die Prüfziffer an der letzten Stelle wird nach ISO/IEC 7064 MOD 11-2 berechnet (mögliche Werte: 0–9 und X für 10).
→ [[lyx_-_programmiersprache:units:validate|std.validate]]
----
===== Konstanten =====
^ Name ^ Wert ^ Bedeutung ^
| ''ORCID_OK'' | ''0'' | Gültig |
| ''ORCID_ERR_INVALID_LENGTH'' | ''1'' | Länge ≠ 16 (ohne Bindestriche) |
| ''ORCID_ERR_INVALID_CHAR'' | ''2'' | Ungültige Zeichen |
| ''ORCID_ERR_INVALID_CHECK'' | ''3'' | Falsche MOD-11-2-Prüfziffer |
----
===== Verwendung =====
import std.io;
import std.alloc;
import std.validate.orcid;
fn main(): int64 {
var orcid: pchar := "0000-0002-1825-0097";
var buf: int64 := alloc(32);
Print("rc="); PrintLn(IntToStr(ORCIDValidate(orcid as int64))); // 0 = ORCID_OK
ORCIDNormalize(orcid as int64, buf);
Print("normalisiert: "); Print(buf as pchar); Print("\n");
// Rueckgabe ist der Zeichencode: 55 = '7', 88 = 'X'
Print("Pruefzeichen: "); PrintLn(IntToStr(ORCIDCheckDigit("0000-0002-1825-009" as int64)));
return 0;
}
rc=0
normalisiert: 0000000218250097
Pruefzeichen: 55
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 ^
| ''ORCIDValidate(orcid: int64): int64'' | pub | ORCID iD prüfen; ''ORCID_OK'' oder Fehlercode |
| ''ORCIDNormalize(orcid: int64, out_buf: int64): int64'' | pub | Bindestriche entfernen, Ergebnis nach ''out_buf'' |
| ''ORCIDCheckDigit(orcid: int64): int64'' | pub | MOD-11-2-Prüfzeichen als **Zeichencode** (''55'' = ''7'', ''88'' = ''X'') |
Nicht vorhanden: ''ORCIDFormat''.
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.