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