====== std.validate.issn ====== ISSN (International Standard Serial Number, ISO 3297) identifiziert periodische Veröffentlichungen (Zeitschriften, Zeitungen, Schriftenreihen) weltweit eindeutig. Format: 4 Ziffern + Bindestrich + 3 Ziffern + 1 Prüfzeichen (0–9 oder X). Die Prüfziffer wird über ein gewichtetes Mod-11-Verfahren berechnet. → [[lyx_-_programmiersprache:units:validate|std.validate]] · [[lyx_-_programmiersprache:units:validate:isbn|std.validate.isbn]] ---- ===== Konstanten ===== ^ Name ^ Wert ^ Bedeutung ^ | ''ISSN_OK'' | ''0'' | Gültig | | ''ISSN_ERR_INVALID_LENGTH'' | ''1'' | Länge ≠ 8 (ohne Bindestrich) | | ''ISSN_ERR_INVALID_CHAR'' | ''2'' | Ungültiges Zeichen | | ''ISSN_ERR_INVALID_CHECK'' | ''3'' | Falsche Prüfziffer | ---- ===== Verwendung ===== import std.io; import std.alloc; import std.validate.issn; fn main(): int64 { var buf: int64 := alloc(16); var rc: int64 := ISSNValidate("0378-5955"); Print("rc="); PrintLn(IntToStr(rc)); // 0 = ISSN_OK ISSNNormalize("0378-5955" as int64, buf); Print("normalisiert: "); Print(buf as pchar); Print("\n"); // Rueckgabe ist der Zeichencode des Pruefzeichens: 53 = '5', 88 = 'X' Print("Pruefzeichen: "); PrintLn(IntToStr(ISSNCheckDigit("0378-595"))); return 0; } rc=0 normalisiert: 03785955 Pruefzeichen: 53 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). > **Prüfziffer ''1'' und ''X'' sind vertauscht** ([[https://github.com/SEOLizer/LyX-Compiler/issues/1690|#1690]]): ''ISSNValidate("0317-8471")'' liefert ''ISSN_ERR_CHECK'', obwohl die ISSN gültig ist, und ''ISSNCheckDigit'' gibt dort ''X'' statt ''1''. Betroffen ist jede ISSN, deren Rest ''1'' oder ''10'' ist. ---- ===== Funktionen ===== ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''ISSNValidate(issn: pchar): int64'' | pub | ISSN prüfen; ''ISSN_OK'' oder Fehlercode | | ''ISSNNormalize(issn: int64, out_buf: int64): int64'' | pub | Bindestrich und Leerzeichen entfernen, Ergebnis nach ''out_buf'' | | ''ISSNCheckDigit(issn: pchar): int64'' | pub | Prüfzeichen als **Zeichencode** (''48''–''57'', ''88'' = ''X'') | Nicht vorhanden: ''ISSNFormat'' und ''ISSNToEAN13''. Letzte Aktualisierung: 2026-08-19 — Seite gegen die echten Signaturen berichtigt (''out_buf'' statt Rückgabe, Zeichencode statt Zeichenkette); Beispiel mit ''lyxc 1.1.3I'' übersetzt und ausgeführt. Vertauschte Prüfziffern als #1690 gemeldet.