-
V7R1 Compiler-Fehler?
Das hat mich nun doch einiges an Zeit gekostet:
Aus der OPM-Welt kennt man das ja, man definiert die F-Bestimmung und zusätzlich eine externe DS derselben Datei um beim READ/CHAIN alle Felder gelesen zu bekommen, damit man im Debugger auch nicht verwendete Felder ansehen kann.
Im ILERPG mit V7R1 funktioniert das nun nicht mehr.
In der externen DS werden tatsächlich nur die Felder gefüllt, die vom RPGLE referenziert, also benutzt werden.
Wenn man das alte Verfahren benötigt, muss man nun eine DS (ohne extern) mit LIEKREC(Format:*input) definieren und beim READ/CHAIN dann diese DS als Ziel angeben.
Nun kann man erst alle Felder betrachten.
Was ich noch nicht ausprobiert habe ist, ob der Compiler anders reagiert, wenn man diese DS dann als CALL-Parameter verwendet. Wenn nicht wäre das an dieser Stelle fatal und man kann dann von einem CVTRPGSRC nur abraten.
Kleiner Nachteil: die DS ist automatisch qualified, was ein Menge Codeänderungen bedeutet.
Dies bekommt man leider auch nicht mit irgendeiner Optimized-Methode/Option weg.
-
Ich kann dein Problem nicht nachvollziehen. Wahrscheinlich habe ich das falsch verstanden.
Wir haben V7R2. Da haben wir keine Probleme.
Es ist allerdings (ich denke schon immer) so, dass nicht benutzte Variablen vom Compiler aus dem Programm herausoptimiert wurden (CPF7031 in der Wandlungsliste). Das heißt, eine reine Deklaration des Datensatzes als externe Struktur bringt nichts, wenn die externe Struktur im weiteren Programm nicht verwendet wird.
Wenn du irgendwo im Programm eine unproblematische Verwendung des Datensatzes arrangierst, kannst du auch alle Felder sehen.
Hier sieht man den Inhalt nicht:
Code:
FKUNDE IF E K DISK
dcl-ds KUNDESatz extname('KUNDE') end-ds;
C READ KUNDE
*inlr = *on;
return;
Hier kann man den Inhalt von KUNDESatz (alle Felder) im Debugger sehen:
Code:
FKUNDE IF E K DISK
dcl-ds KUNDESatz extname('KUNDE') end-ds;
C READ KUNDE
if KUNDESatz = *loval;
endif;
*inlr = *on;
return;
Das "if KUNDESatz = *loval" ist natürlich inhaltlich sinnlos, da im if nichts gemacht wird. Aber es sorgt dafür, dass der Compiler KUNDESatz nicht herausoptimiert.
-
Ok, das mag als Hinweis gelten, werde ich mal ausprobieren.
Allerdings ist damit das einfache CVTRPGSRC noch nicht der Weisheit letzter Schluss.
Denn wenn die DS als solche nicht referenziert wird würden nicht alle Felder der DS gefüllt und das ILERPG läuft anders als das OPMRPG.
Ich werde da noch mal einen Test machen.
-
Also Kollege Schroeder hat Recht, es muss nur zumindest einmal die Datenstruktur im Programm verwendet werden (Wie ist egal) weil sonst die DS auch ein RNF7031 ist.
Also bau ruhig mal ein Dummy - IF ein und dann sollte alles gut sein...
-
Ein Einzeiler anstatt des if geht natürlich auch:
KUNDESatz = KUNDESatz;
Dieter
-
Soviel zum Thema einfach mal einen CVTRPGSRC automatisieren.
Aber ich denke, dass ist ggf. kein großer Akt.
Vielen Dank an alle.
-
Probier mal ab V5R4 mit DEBUG(*INPUT)
V5R4 RPG Enhancements
DEBUG(*INPUT) tells the compiler to retain unused input fields (the ones flagged with error 7031 in the compilation listing) in the program object. If you exclude unused fields, you will not be able to see the values of those fields while debugging.
-
DAS ist der beste Hinweis überhaupt! Das kann man globalisieren und erleichtert ungemein.
Die Performance ist da nämlich nicht relevant bzw. ein paar moves mehr sind da jenseits der Nachweisgrenze.
Im Absturzfall (Dump) aber eine extreme Hilfe.
Similar Threads
-
By oulbrich in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 23-03-15, 17:21
-
By Peet in forum NEWSboard Programmierung
Antworten: 9
Letzter Beitrag: 29-10-14, 07:54
-
By RGP_compiler in forum NEWSboard Programmierung
Antworten: 13
Letzter Beitrag: 04-09-14, 16:40
-
By Ron in forum NEWSboard Server & Hardware Markt
Antworten: 1
Letzter Beitrag: 29-06-05, 14:47
-
By infomio in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 03-04-03, 12:58
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