← Blog
RPGLE2026-06-20 · 8 min Lesezeit

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:

FixedFree
`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 →