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