View Full Version : OPNQRYF per RPG-PGM erstellen
Hallo,
ich bin noch Neuling und habe ein dickes Problem.
Über ein RPG-Programm soll der QRYSLT zusammengesetzt und dann
an das aufrufende CL weitergegeben werden.
Dabei sollen auch die "Konstanten" %RANGE, %VALUES sowie SPACE also
der ganze Syntax mit " mitgegeben werden.
Die Füllung erfolgt über eine Selektionsmaske mit z.Zt. 8 Felder aus der ich mit von-bis als auch list die Auswahlfelder füllen kann.
Kann mir hier jemand aus meiner Not helfen ?
MFG
Heyd
RobertMack
15-10-04, 08:27
Hallo,
hier ist ein Beispiel in CL:
CHGVAR VAR(&QRY) VALUE('(FELD1 *NE 1 *AND FELD2 +
*EQ 1 *AND FELD3 *EQ 0 *AND FELD4 *GE +
5000 *AND FELD5 *EQ "A")')
OPNQRYF FILE((YOURFILE)) OPTION(*ALL) QRYSLT(&QRY)
Den Parameter &QRY würdest Du aus dem RPG-Programm übergeben. Hier noch ein Link für weitere Details:
http://publib.boulder.ibm.com/iseries/v5r2/ic2929/index.htm
"OPNQRYF" zur Suche eingeben.
Viel Erfolg,
Robert
P.S. wenn's gar nicht gelingen will, poste mal ein Beispiel oder ein Abbild der Eingabemaske.
Danke Du, aber ich glaube ich habe mich nicht verständlich genug ausgedrückt:
Beispiel:
Von Bis LIST ( 10 Eingaben möglich )
Kundennr. 107012 bis 12220 LIST
Artikelnr. 880000, 894500, 902253
Materialgruppe AAA bis 999
Sachbearbeiter XXX, YYY, ZZZ
Entweder ich gebe Von – Bis pro Feld an oder einzelne Werte
<O:p></O:p>
Ich hatte mir erst ein PF(EDS) für die Übergabe an das CL gemacht, aber da sind die Felder fix in Ihrer Reihenfolge und je nach Auswahl auch noch leer, den „Von – Bis Bereich“ könnte man mit Unterlassungswerten füllen, aber bei LIST hm ????
<O:p></O:p>
Da habe ich ein Problem, daß soll alles möglichst variabel und ohne Mühe erweiterbar sein.
Gruss
Heyd
RobertMack
15-10-04, 10:08
Nun,
hier scheint die Fleißaufgabe eher in der Erkennung der AND/OR Kombinationen zu bestehen.
Eine Eingabe wie: AAAA-BBBB,CCCC,DDDD
würde so aussehen:
(FELD=%range("AAAA" "BBBB") *OR FELD *EQ "CCCC"
*OR FELD *EQ "DDDD")
u.s.w.
(ich ziehe *OR *EQ dem %VALUES vor, da einfach nur jedes
weitere gefundene Feld angefügt werden braucht; CAT/EVAL)
Gruß,
Robert
[Ich hatte mir erst ein PF(EDS) für die Übergabe an das CL gemacht, aber da sind die Felder fix in Ihrer Reihenfolge und je nach Auswahl auch noch leer, den „Von – Bis Bereich“ könnte man mit Unterlassungswerten füllen, aber bei LIST hm ????
Auch bei LIST kannst Du Unterlassungs-Werte verwenden. Du füllst einfach den ersten Wert in alle nicht gefüllten Felder.
Birgitta
Auch bei LIST kannst Du Unterlassungs-Werte verwenden. Du füllst einfach den ersten Wert in alle nicht gefüllten Felder.
Birgitta
Das hatte ich Anfangs auch vor, will mein Chef aber nicht, da das PGM später auf unendlich viele LIST-Felder erweitert werden soll:(
HEYD
Nun,
hier scheint die Fleißaufgabe eher in der Erkennung der AND/OR Kombinationen zu bestehen.
Eine Eingabe wie: AAAA-BBBB,CCCC,DDDD
würde so aussehen:
(FELD=%range("AAAA" "BBBB") *OR FELD *EQ "CCCC"
*OR FELD *EQ "DDDD")
u.s.w.
(ich ziehe *OR *EQ dem %VALUES vor, da einfach nur jedes
weitere gefundene Feld angefügt werden braucht; CAT/EVAL)
Gruß,
Robert
Hm, das könnte ich doch mit einem EDS über eine Satzlänge von meinethalben 1000
und ohne feste Feldzuordnung wie vor beschrieben machen, oder ?
Was mich noch stört ist das setzen von Opcodes wie z.B. %range= oder Hochkomma im RPG-PGM. Kann man das noch anders machen?
Gruss
Heyd
RobertMack
15-10-04, 11:05
Um die Feldnamen im String wirst Du nicht herumkommen, die Satz/Feldlänge muß den maximal möglichen String aufnehmen können.
Ich übergebe immer nur die absolut benötigte Anzahl an Argumenten, und die möglichst auch noch gut lesbar weil so auch als Listenüberschrift geeignet.
Bei numerischen Werten entfallen übrigens die Hochkommas, statt *EQ kann auch = eingesetzt werden.
Gruß,
Robert
Um die Feldnamen im String wirst Du nicht herumkommen, die Satz/Feldlänge muß den maximal möglichen String aufnehmen können.
Ich übergebe immer nur die absolut benötigte Anzahl an Argumenten, und die möglichst auch noch gut lesbar weil so auch als Listenüberschrift geeignet.
Bei numerischen Werten entfallen übrigens die Hochkommas, statt *EQ kann auch = eingesetzt werden.
Gruß,
Robert
Ok, danke Euch, probiers gleich mal aus, ist aber jede Menge Codierarbeit :( bei 8 Feldern geht es ja noch, das ganze soll aber bis ins endlose mühelos erweiterbar sein und das in RPG
Gruß
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.