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