-
Subroutine lässt sich nicht beenden
Hallo!
Habe folgendes Problem.
In meinem Anzeigeprogramm springe ich von einer Subroutine in eine andere je nachdem welche Funktionstaste der Benutzer drückt. in der jeweiligen SR frage ich ab was gedrückt wurde. Es kann also passieren dass die gleiche SR öfter aufgerufen wird obwohl sie vorher schon X mal aufgerufen wurde und noch nicht beendet ist. Hoffe ihr versteht was ich meine. Solange nicht Datenfreigabe gedrückt wird können X mal viele Subroutinen noch offen sein.
Mein Problem ist dass die AS/400 dann beim Beenden der SR sich irgendwie aufhängt und in Endlosschleife läuft.
Beim Debug habe ich gesehen dass er den LEAVESR ausführt, zum ENDSR springt, dann in die vorherige SR geht, wieder den LEAVSR ausführt, zum ENDSR geht, jedoch dann wieder in die vorherige SR zurückgeht und immer zwischen LEAVSR und ENDSR Schleife läuft.
Werd noch wahnsinnig. Keine Ahnung was der da macht. Normalerweise müsste er alle SR richtig beenden und wieder zum Programmanfang kommen aber irgendwie packt er das nicht. Habt ihr ne Ahnung was da falsch sein könnte? Vielen Dank
-
das Programm Design!!!
Finger weg von GOTO, dann passiert sowas nicht!!!
D*B
 Zitat von Mr.iSeries
Habt ihr ne Ahnung was da falsch sein könnte? Vielen Dank
-
Ich Programmiere im Free-Format!
Ich benutze kein Goto!
Ich verzweige lediglich von einer SR in die nächste und immer weiter. Jedoch sollte er irgendwann die Subroutinen beenden aber dabei hängt er sich auf.
-
Subroutine lässt sich nicht beenden
Hallo,
so, wie der Fehler beschrieben ist, wird das Format nicht gelesen. Da die betätigten Tasten ermittelt werden sollen, bleit der Prozess normalerweise immer beim Lesen des Formats stehen.
Weiter kann es sein, daß die Bedingungen für die äusseren Schleifen noch gesetzt sind. Diese vielleicht vorher initialisieren.
Gruss
S. Heyden
-
Eine Rekursion einer Subroutine ist nicht möglich !
Ein EXSR ist keine echte Unterroutine sondern wird von RPG(LE) als GOTO behandelt.
Beim ENDSR wird ein variabler GOTO verwendet, der beim EXSR gesetzt wird.
Bei der Rekursion zerstört also ein EXSR das Setzen der Rücksprungadresse eines vorherigen EXSR, so dasss nicht mehr korrekt zurückgesprungen werden kann.
Wenn du Free verwendest, bieten sich hier eben eher Funktionen/Prozeduren an.
Diese können rekursiv arbeiten, besitzen lokale Variablen und können auch (eher unschönes Design) auf globale Variablen/Dateien zugreifen.
-
 Zitat von Fuerchau
Eine Rekursion einer Subroutine ist nicht möglich !
Ein EXSR ist keine echte Unterroutine sondern wird von RPG(LE) als GOTO behandelt.
Beim ENDSR wird ein variabler GOTO verwendet, der beim EXSR gesetzt wird.
Bei der Rekursion zerstört also ein EXSR das Setzen der Rücksprungadresse eines vorherigen EXSR, so dasss nicht mehr korrekt zurückgesprungen werden kann.
Wenn du Free verwendest, bieten sich hier eben eher Funktionen/Prozeduren an.
Diese können rekursiv arbeiten, besitzen lokale Variablen und können auch (eher unschönes Design) auf globale Variablen/Dateien zugreifen.
genau das macht er auch im DEBUG er springt zum falschen EXSR.
Vielen Dank für die Erklärung.
Habs im Programm jetzt anders gelöst
-
Ich würde vermuten, dass die Quelle und das Objekt nicht übereinstimmen und zunächst einmal das Programm neu erstellen.
Birgitta
-
 Zitat von B.Hauser
Ich würde vermuten, dass die Quelle und das Objekt nicht übereinstimmen und zunächst einmal das Programm neu erstellen.
Birgitta
Nein daran liegt es definitiv nicht. Es ist genauso wie Fuerchau es beschrieben hat. Wenn die gleiche SR noch einmal angesprochen wird bevor die davorige (gleiche Subroutine) noch nicht beendet wurde, kommt er durcheinander.
Similar Threads
-
By Marimari1009 in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 10-01-07, 11:41
-
By Klabautermann in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 29-09-06, 15:39
-
By gaby68 in forum NEWSboard Programmierung
Antworten: 9
Letzter Beitrag: 14-06-06, 16:27
-
By JonnyRico in forum IBM i Hauptforum
Antworten: 20
Letzter Beitrag: 29-04-04, 10:56
-
By hs in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 12-12-01, 09:43
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks