Nun ich habe die letzten 2 Jahre Java programmiert, sowohl in meiner Ausbildung als auch in 2 kleinen Projekten. Theoretischt gehöre, bzw gehörte(da ich jetzt erstmal nur RPG programmiere) ich auch mal zu der Fraktion. Ich programmiere lieber Java als RPG/CL/VARPG aber darüber habe ich ja nicht zu entscheiden. Ich versuch das Beste draus zu machen und die guten Seiten der i5 und der Programmierung darauf zu entdecken.

Ja mit Springen ist das immer soeine Sache. Darum will ich ja wenns geht Gotos vermeiden(exsr sind erstmal ausgenommen, um die komme ich nicht herum).

Gruß Martin

Zitat Zitat von Fuerchau
Das lass nicht die Java-Fraktion hören.

Fehler gehören in den Bereich "Ausnahmen" und müssen eben gesondert behandelt, also aufgefangen werden.
Das Hauptproblem besteht eben in den Prozedur-Aufrufen !
Solange man noch klassisches RPG betrieb konnte man mit *PSSR ganz gut arbeiten. Zumal ja ein EXSR tatsächlich kein echter Unterprogramm-Aufruf ist sondern eine versteckter GOTO.
Das Programm merkt sich für jede BEGSR genau eine Rücksprung-Adresse. Der EXSR setzt die Adresse, der ENDSR führt den GOTO zu dieser Adresse aus. Ein vorzeitiger Return aus einer BEGSR ist nicht möglich.
Deshalb kommt es ja zu Programm-Endlosschleifen, wenn durch zufällige Rekursion der Rücksprung verändert wird.

EXSR R1 // Folge-Adresse merken in XR1

BEGSR R1
EXSR R2 // Folge-Adresse merken in XR2
ENDSR // GOTO XR1

BEGSR R2
EXSR R1 // Folge-Adresse merken in XR1 !!!!!
ENDSR // GOTO XR2

Durch tatsächliche Prozeduren ist das genauso zu sehen wie mit Programm-CALL's.

Wenn nun eine Ausnahme zum Aufruf der PSSR führt, kann diese auch in der untersten Stack-Ebene aufgetreten sein !
Da kann man meist nicht einfach die letzte Aktion wiederholen.