====== 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.
→ [[lyx_-_programmiersprache:units:validate|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 ([[https://github.com/SEOLizer/LyX-Compiler/issues/1613|#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.