-
 Zitat von Fuerchau
Sprungmarke 2x ?
=> Wird vom Compiler bereits abgelehnt
IF-Abfragen überrennen ?
=> nur bei Dezimalfehlern, die ignoriert werden, hier wird aber ein Zeichenvergleich gemacht
Der einzige Grund kann sein, dass ein
READ ... AT END
oder
READ ... INVALID KEY
nicht korrekt mit GOTO oder Status-Feld abgefangen wird und somit der IF auf den vorherigen Inhalt vergleicht.
Ungter V5R3 leider noch keine Ablehnung. Aber fatal ist folgendes:
AAA SECTION.
GOTO MARKEXXX.
EXIT.
BBB SECTION.
MARKEXXX.
EXIT.
Führt auch dazu, das das Programm macht was es will. Wenn ich dann einen Trace der ausgeführen Anweisungen anschaue, läuft das Programm zum Anfang und dann (meist) 1x komplett bis zum Ende durch, ohne sich an Sectiongrenzen oder IF's zu stören. Hatte ich schon ein paar mal in diversen Programmen.
Fazit: Wodurch unterscheiden sich gute von schlechten Programmierern ? Die guten denken daran, nach dem Kopieren alle betroffenen Stellen zu ändern!
-K.-
__________________________________
-An eye for an eye leaves the whole world blind- -Mahatma Ghandi-
-
Section-Grenzen stimme ich zu, "IF" stimme ich nicht zu.
Wenn man sich mal die Mühe gemacht hat, den MI-Code zu studieren, sieht man folgendes:
Ein Perform setzt für eine Section bzw. einen Paragraph eine Rücksprungadresse.
Wird nun an Stelle des Perform ein GO TO verwendet, erfolgt der Rücksprung mit der zuletzt gemerkten Adresse.
War diese mangels Perform nicht initialisiert, läuft das Programm da weiter.
Das ist auch der Grund, warum ein rekursiver Perform nicht funktioniert, da Rücksprünge nicht über einen Stack laufen.
RPG/LE kennt das i.Ü. genauso.
Ich kann zwar nicht per GOTO in eine BEGSR-Routine springen, das lehnt der Compiler ab.
Was der aber nicht verhindert ist eine Rekursion von EXSR-Aufrufen, was mir schon mal passiert ist.
Auch hier sieht man in der MI-Auflösung, dass die EXSR-Anweisung nur die Rücksprungadresse (per GOTO) des ENDSR setzt.
EXSR UPA
UPA BEGSR
EXSR UPB
EXSR UPC
ENDSR
UPB BEGSR
: tuwas
ENDSR
UPC BEGSR
EXSR UPA <= Dieser überschreibt den Rücksprung von ganz oben
ENDSR
-
 Zitat von Fuerchau
Section-Grenzen stimme ich zu, "IF" stimme ich nicht zu.
.....
Stimmt, dabei hätte ich geschworen, das ich den Fall vor langer Zeit mal gehabt habe. Hab versucht den Fehler zu provozieren - leider (oder zum Glück) vergeblich !
K.
__________________________________
-An eye for an eye leaves the whole world blind- -Mahatma Ghandi-
Similar Threads
-
By Xanas in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 12-01-07, 07:32
-
By schatte in forum NEWSboard Programmierung
Antworten: 19
Letzter Beitrag: 10-01-07, 11:32
-
By Xanas in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 13-12-06, 13:38
-
By remo2010 in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 23-11-06, 13:31
-
By Uli Müller in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 09-11-06, 09:21
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