-
Das ist der Nachteil eines Precompilers, der nun mal originären RPG-Code erzeugt.
Der RPG-Compiler weiß nichts von SQL und estellt eben für jede Zeile eine Debug-Info.
NODEBUGIO sorgt dafür, dass die ehemaligen I-Befehle (jetzt D) keine Debuginfo erhalten.
Denn nach dem IO-Read werden je Feld Move-Operationen ausgeführt, die sich in den I-Befehlen widerspiegeln.
Deshalb gibt es keine Möglichkeit, den Debug von SQL zu unterbinden.
Es hindert dich allerdings niemand daran, den SQL in eine Procedure zu packen, die dann tatsächlich mit nur einem Step(-over) getestet wird.
dcl-proc ReadCursorABC;
exec sql fetch ....
end-proc.
Du benötigst keine Aufruf- oder Returnparameter
Besser ist:
dcl-proc ReadCursorABC;
dlc-pi *n ind;
end-pi;
exec sql fetch ....
return sqlcode = *zero;
end-proc.
Somit kann man per
dow ReadCursorABC();
enddo;
bequem Schleifen aufbauen und debuggen.
-
Hi Baldur,
Dankeschön für die schnelle Antwort und den guten Tipp.
Gruß Stefan
-
Beim compilieren kann man unter dbgview *source angeben, dann sieht man die sql Internas nicht und muss weniger oft F10 drücken.
-
Hi Xenofob,
ich arbeite noch unter dem Release 7.3 und ich bekomme für CRTSQLRPGI als dbgview sowieso nur *source und *none angeboten. Die Precompiler Quelle habe ich aus der Datei EVFTEMPF01, die zur Compilezeit erzeugt wird.
Mit welcher Betriebssystemversion arbeitest Du?
-
dbgview *source dient nur dazu, den originalen Quelltext zu verlinken. Ansonsten stünde eben nur die RPG-Quelle für den Debug zur Verfügung, die man sich auch per F15 auswählen kann.
Das hat nichts mit den "Debug-Points" in der MI-Quelle zu tun, die der RPG-Compiler mit einbettet.
Somit ist jeder "eval SQLPARnn = HostField" und "eval HostField = SQLResultnnn" eben ein Einzelschritt im Code.
Ich habe nämlich auch mal einen MI-Compiler geschrieben, der mit diesen Debug-Infos eben auch ein MI-Programm Debugfähig gemacht hat. Allerdings nur der normle Debugger ohne Source.
By the way:
Habt ihr schon mal die generierte Quelle bei der Verwendung von NULL-Anzeigern und Date-Variablen analysiert?
Einfach einfach (Veranschaulichung):
Code:
if SQLCODE = *zero;
Hostvar1 = SQLVar1;
NullInd1 = SQLNullVar1;
If SQLNullVar2 = *zero;
HostDateVarN = SQLVarN;
endif;
NullIndN = SQLVarN;
endif;
Was soll mir das sagen?
Bei der Verwendung von NULL-Indikatoren werden alle Nicht-Date-Variablen mit ihrem Type-Default initialisiert Nur die Date-Variablen behalten ihren vorherigen Inhalt.
Das erklärte dann auch so diverse Programmierfehler, bei denen unerklärliche Datum-Variablen in Inhalten aus ganz anderen Zeilen auftauchten, da der NULL-Indikator nicht abgefragt wurde.
Similar Threads
-
By alex61 in forum IBM i Hauptforum
Antworten: 13
Letzter Beitrag: 15-08-16, 12:59
-
By Q_SERVER in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 21-07-16, 13:59
-
By Etherion in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 02-09-15, 18:05
-
By harkne in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 27-06-07, 12:09
-
By Rolf7856 in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 04-01-03, 12:03
Tags for this Thread
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