Anmelden

View Full Version : OPNQRYF per RPG-PGM erstellen



Seiten : 1 [2]

Heyd
15-10-04, 11:51
Um das "zusammenbauen" bei dynamischen Befehlen kommt man nun mal nicht herum.
Sonst wäre es nicht dynamisch sondern statisch:

eval qryslt = '(' + fldnam1 + ' %range("' + fldval1 + '" "' + fldval2 + '") "

usw. usw.usw.
Das soll wohl sein, habe nur Kollegen, die in COBOL wohl "alles" ohne großen Aufwand schaffen und RPG solls nit können:( grml

Fuerchau
15-10-04, 12:03
Das ist wohl eher umgekehrt der Fall. Vieles ist in RPG erheblich einfacher als in COBOL. Ich kenne beide Sprachen wirklich zur genüge.
Auch COBOL muss sich solche Befehle zusammenbauen. Dies liegt nicht an der Sprache selber sondern an der Aufgabenstellung !
Ausserdem: COBOL ist äussert schreibintensiv. In RPG und nun RPGLE kommst du mit 30-50% Schreibarbeit aus. ILE und Prozeduraufrufe wurden in COBOL stark vernachlässigt. Was in RGPLE diesbezüglich absolut einfach geht ist in COBOL nur schwierig bis gar nicht lösbar.

Sobald man fit in RPG/LE ist schreibt man Programme auch doppelt so schnell und weniger fehlerbehaftet (solang man nicht Freeform nimmt) als in COBOL. Da reicht manchmal schon ein vergessener Punkt für tausende Folgefehler.

Um obigen "eval" mit COBOL zu vergleichen dann schau dir folgenden COBOL-Befehl an:

string
'(' delimited by size
fldname1 delimited by space
' %range("' delimited by size
fldval1 delimited by space
'" "' delimited by size
fldval2 delimited by space
'")' delimited by size
into qryslt

Was ist da wohl einfacher ?

Heyd
16-10-04, 09:41
Ich habe jetzt die komplette Datenstruktur gefüllt, um den Befehlssyntax für QRYSLT einfacher gestalten zu können, könnte ich das doch mit einem call auf ein ILE-RPG machen, oder ? ( DS übergeben, aufbereiten und Übergabe an QRYSLT für OPNQRYF )

Übrigens, es sind im OPNRYF 3 Dateien miteinander verbunden, wenn dann der Select auch funzt, kann ich mir über das Format die entstandene Datei mit SQL anschauen ?

Heyd
17-10-04, 21:09
Problem gelöst, keine saubere Lösung, aber auf die schnelle weil ja alles sofort machbar sein muss:

Interne DS aufgemacht mit IDS, alle Felder vorbesetzt ( Range ) und gebe diese dann in die externe DS aus für QRYSLT

Das funzt, trotzdem bin ich nicht glücklich damit
Danke Euch allen für Eure Hilfe

Fuerchau
18-10-04, 18:30
Per SQL kann man sich das Format nicht anschauen, aber mit CPYFRMQRYF kannst du sehen, obs funzt:

http://publib.boulder.ibm.com/iseries/v5r2/ic2924/info/cl/cpyfrmqr.htm

Aber sehr dynamisch und variabel ist deine Lösung nun nicht, da du ja immer alle Parameter füllen must.