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