std.validate.mmsi
MMSI (Maritime Mobile Service Identity) — 9-stellige Nummer zur Identifikation von Seefunkstationen und Schiffen (ITU-Regulierung). Die Validierung ist strukturell: Die ersten 1–3 Stellen kodieren den MID (Maritime Identification Digits) — den nationalen Bereich. Es gibt keine Prüfziffer; Gültigkeit wird über die MID-Tabelle geprüft.
Konstanten
| Name | Wert | Bedeutung |
|---|---|---|
MMSI_OK | 0 | Strukturell gültig |
MMSI_ERR_INVALID_LENGTH | 1 | Länge ≠ 9 |
MMSI_ERR_INVALID_CHAR | 2 | Nur Ziffern erlaubt |
MMSI_ERR_INVALID_MID | 3 | Unbekannter MID |
MMSI-Typen
| Präfix | Typ |
|---|---|
0 | Gruppenruf-MMSI |
00 | Küstenfunkstelle |
111 | SAR-Luftfahrzeug |
970 | EPIRB (Seenotbake) |
972 | MOB-Gerät |
974 | SART (Suche & Rettung) |
| Sonstige | Schiffs-MMSI |
Verwendung
import std.io;
import std.alloc;
import std.validate.mmsi;
fn main(): int64 {
var buf: int64 := alloc(32);
Print("rc="); PrintLn(IntToStr(MMSIValidate("211234560" as int64))); // 0 = MMSI_OK
// out_buf bekommt die MID-Ziffern, keinen Laendernamen
MMSIGetCountry("211234560" as int64, buf);
Print("MID: "); Print(buf as pchar); Print("\n");
Print("Typ Schiff: "); PrintLn(IntToStr(MMSIGetType("211234560" as int64)));
Print("Typ SAR: "); PrintLn(IntToStr(MMSIGetType("970234560" as int64)));
return 0;
}
rc=0
MID: 211
Typ Schiff: 1
Typ SAR: 4
Der Typ kommt als Zahl: MMSI_TYPE_UNKNOWN (0), MMSI_TYPE_SHIP (1), MMSI_TYPE_COAST (2), MMSI_TYPE_GROUP (3), MMSI_TYPE_SAR (4).
Die 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: Das Ergebnis landet in einem selbst übergebenen Puffer (out_buf), der Rückgabewert ist ein Fehlercode (0 = in Ordnung).
Funktionen
| Signatur | Sichtbarkeit | Beschreibung |
|---|---|---|
MMSIValidate(mmsi: int64): int64 | pub | MMSI prüfen; MMSI_OK oder Fehlercode |
MMSIGetCountry(mmsi: int64, out_buf: int64): int64 | pub | MID-Ziffern nach out_buf (kein Ländername) |
MMSIGetType(mmsi: int64): int64 | pub | Typ als MMSI_TYPE_*-Konstante |
Nicht vorhanden: MMSIGetMID — dafür ist MMSIGetCountry zuständig.
Letzte Aktualisierung: 2026-08-19 — Seite gegen die echten Signaturen berichtigt (int64-Eingaben, out_buf statt Rückgabe); Beispiel mit lyxc 1.1.3I übersetzt und ausgeführt.
