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.
→ std.validate · 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 (#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üfziffer1undXsind vertauscht (#1690):ISSNValidate(„0317-8471“)liefertISSN_ERR_CHECK, obwohl die ISSN gültig ist, undISSNCheckDigitgibt dortXstatt1. Betroffen ist jede ISSN, deren Rest1oder10ist.
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.
