====== std.validate.isrc ======
ISRC (International Standard Recording Code, ISO 3901) identifiziert einzelne Tonaufnahmen und Musikvideos weltweit eindeutig. Das Format ist strukturell (keine Prüfziffer): ''CC-XXX-YY-NNNNN'' — 2-Buchstaben-Ländercode + 3-Buchstaben-Registranten + 2-stelliges Jahr + 5-stellige Sequenz. Gesamt 12 alphanumerische Zeichen.
→ [[lyx_-_programmiersprache:units:validate|std.validate]]
----
===== Konstanten =====
^ Name ^ Wert ^ Bedeutung ^
| ''ISRC_OK'' | ''0'' | Strukturell gültig |
| ''ISRC_ERR_INVALID_LENGTH'' | ''1'' | Länge ≠ 12 (ohne Bindestriche) |
| ''ISRC_ERR_INVALID_CHAR'' | ''2'' | Ungültige Zeichen |
| ''ISRC_ERR_INVALID_COUNTRY'' | ''3'' | Ungültiges Länderkürzel |
----
===== Verwendung =====
import std.io;
import std.alloc;
import std.validate.isrc;
fn main(): int64 {
var isrc: pchar := "USRC17607839";
var buf: int64 := alloc(32);
Print("rc="); PrintLn(IntToStr(ISRCValidate(isrc as int64))); // 0 = ISRC_OK
ISRCGetCountry(isrc as int64, buf);
Print("Land: "); Print(buf as pchar); Print("\n");
// Jahr als Zahl, nicht als Zeichenkette
Print("Jahr: "); PrintLn(IntToStr(ISRCGetYear(isrc as int64)));
ISRCNormalize("US-RC1-76-07839" as int64, buf);
Print("normalisiert: "); Print(buf as pchar); Print("\n");
return 0;
}
rc=0
Land: US
Jahr: 76
normalisiert: USRC17607839
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 ^
| ''ISRCValidate(isrc: int64): int64'' | pub | ISRC prüfen; ''ISRC_OK'' oder Fehlercode |
| ''ISRCNormalize(isrc: int64, out_buf: int64): int64'' | pub | Bindestriche entfernen, Ergebnis nach ''out_buf'' |
| ''ISRCGetCountry(isrc: int64, out_buf: int64): int64'' | pub | Ländercode nach ''out_buf'' |
| ''ISRCGetYear(isrc: int64): int64'' | pub | Referenzjahr als **Zahl** (''76'' für 1976) |
Nicht vorhanden: ''ISRCFormat'', ''ISRCGetRegistrant'' und ''ISRCGetSequence''.
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.