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üfziffer 1 und X sind vertauscht (#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 (4857, 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.