std.validate.cas

CAS-Nummer (Chemical Abstracts Service Registry Number) identifiziert chemische Verbindungen weltweit eindeutig. Format: bis zu 10 Ziffern in drei Gruppen (2–7 + 2 + 1, z.B. 7732-18-5 für Wasser). Die Prüfziffer wird über ein rechtsseitig gewichtetes Mod-10-Verfahren berechnet.

std.validate


Konstanten

Name Wert Bedeutung
CAS_OK 0 Gültig
CAS_ERR_INVALID_FORMAT 1 Format entspricht nicht XX-YY-Z
CAS_ERR_INVALID_CHAR 2 Ungültige Zeichen
CAS_ERR_INVALID_CHECK 3 Falsche Prüfziffer

Verwendung

import std.io;
import std.alloc;
import std.validate.cas;

fn main(): int64 {
    var buf: int64 := alloc(16);

    Print("rc="); PrintLn(IntToStr(CASValidate("7732-18-5" as int64)));   // 0 = CAS_OK

    CASNormalize("7732-18-5" as int64, buf);
    Print("normalisiert: "); Print(buf as pchar); Print("\n");

    // CASCheckDigit erwartet die VOLLSTAENDIGE Nummer und rechnet
    // die Pruefziffer aus dem Stamm nach
    Print("Pruefziffer: "); PrintLn(IntToStr(CASCheckDigit("7732-18-5" as int64)));
    return 0;
}

rc=0
normalisiert: 7732185
Pruefziffer: 5

Die Funktionen dieser Unit geben keine Zeichenketten zurück: Das Ergebnis landet in einem selbst übergebenen Puffer (out_buf), der Rückgabewert ist ein Fehlercode (0 = in Ordnung). Die Eingabe wird als int64 erwartet — der Cast wert as int64 ist nötig, weil die pchar-Bereinigung (#1613) units/validate noch nicht erreicht hat.


Funktionen

Signatur Sichtbarkeit Beschreibung
CASValidate(cas: int64): int64 pub CAS-Nummer prüfen; CAS_OK oder Fehlercode
CASNormalize(cas: int64, out_buf: int64): int64 pub Bindestriche entfernen, Ergebnis nach out_buf
CASCheckDigit(cas: int64): int64 pub Prüfziffer aus der vollständigen Nummer nachrechnen

Nicht vorhanden: CASFormat.

Letzte Aktualisierung: 2026-08-19 — Seite gegen die echten Signaturen berichtigt; Beispiel mit lyxc 1.1.3I übersetzt und ausgeführt.