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.

std.validate


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.