RPGLE Free Format: Der komplette Umstieg
Fixed-Format war gestern. Wie du deinen bestehenden Code schrittweise auf modernes Free-Format migrierst — ohne das System lahmzulegen.
RPGLE Free Format: Der komplette Umstieg
Fixed-Format RPGLE hat jahrzehntelang funktioniert. Aber wer heute neuen Code schreibt, sollte Free-Format nutzen — lesbarer, wartbarer, und vollständig kompatibel mit altem Code.
Was ist überhaupt der Unterschied?
Fixed-Format bedeutet: Jede Spalte hat eine feste Bedeutung. C-Specs beginnen in Spalte 5 mit dem Buchstaben `C`, der Faktor 1 steht in Spalte 12–25, der Opcode in 26–35. Das Ergebnis: Code, den man ohne Lineal kaum lesen kann.
C EVAL RESULT = A + B C IF RESULT > 0 C EXSR SUBROUTINE C ENDIF
Free-Format braucht keine Spaltenpositionen. Die einzige Regel: Zeilen starten mit `/free` (vor IBM i 7.4) oder gar nicht (ab 7.4 vollständiges Free-Format ohne Markierung nötig).
dcl-s result int(10); dcl-s a int(10) inz(5); dcl-s b int(10) inz(3); result = a + b; if result > 0; exsr subroutine; endif;
Der Migrationspfad — Schritt für Schritt
Schritt 1: Neue Files komplett in Free-Format
Misch keine neuen Programme in Fixed-Format. Alles Neue: Free-Format.
H-Spec wird zu `**FREE` oder `ctl-opt`:
**FREE
ctl-opt option(*nodebugio: *srcstmt) dftactgrp(*no) actgrp(*caller);Schritt 2: Bestehende Programme — D-Specs zuerst
D-Specs (Definitionen) lassen sich oft 1:1 übersetzen:
| Fixed | Free |
|---|---|
| `D myVar S 10A` | `dcl-s myVar char(10);` |
| `D myDs DS` | `dcl-ds myDs;` |
| `D field1 5P 0` | ` field1 packed(5:0);` |
Schritt 3: C-Specs migrieren
Die meisten Opcodes bleiben identisch, nur die Syntax ändert sich:
// Alt (Fixed) C key CHAIN myFile 99 // Neu (Free) chain key myFile; if %error(); // Fehlerbehandlung endif;
Wichtige Änderungen:
- Kein Resultatfeld mehr — stattdessen BIFs wie `%found()`, `%error()`, `%eof()`
- `EVAL` entfällt — einfach direkte Zuweisung
- `CALLP` statt `CALL` für Prozeduren
Schritt 4: Subroutinen → Prozeduren
Subroutinen (`BEGSR / ENDSR`) funktionieren zwar noch, aber echte Prozeduren sind die moderne Lösung:
// Alt C processData BEGSR C EVAL total = qty * price C ENDSR // Neu dcl-proc processData; dcl-pi *n; qty packed(9:2) value; price packed(9:2) value; end-pi; dcl-s total packed(15:2); total = qty * price; return total; end-proc;
Tooling: RDi vs. VS Code
IBM Rational Developer for i (RDi) unterstützt Free-Format mit Syntaxhighlighting. Noch besser: **VS Code + IBM i extension** mit RPGLE-Language-Support zeigt Fehler direkt beim Tippen und kennt alle BIFs.
Fazit
Der Umstieg lohnt sich. Du musst nicht alles auf einmal migrieren — neuen Code in Free-Format schreiben reicht als Start. Kritische alte Programme lässt du bis zur nächsten planmäßigen Änderung in Fixed-Format.
Was nicht geht: Innerhalb einer Procedure-Section zwischen Fixed und Free wechseln. Entweder das ganze Programm oder gar nicht.
IBM i Wissen strukturiert lernen?
Kostenlos registrieren →