-
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
-
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/iserie...2929/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
>>
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 ????
>>
Da habe ich ein Problem, daß soll alles möglichst variabel und ohne Mühe erweiterbar sein.
Gruss
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
-
 Zitat von Heyd
[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
-
 Zitat von B.Hauser
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
-
 Zitat von RobertMack
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
-
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
-
 Zitat von RobertMack
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ß
PETRA(HEYD)
-
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.
-
 Zitat von Fuerchau
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
PETRA(HEYD)
-
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 ?
Similar Threads
-
By Stoeberl in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 10-01-07, 10:58
-
By horni in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 07-12-06, 18:51
-
By Squall in forum IBM i Hauptforum
Antworten: 82
Letzter Beitrag: 19-10-06, 15:37
-
By ExAzubi in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 13-07-06, 10:51
-
By RaMai in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 11-07-05, 12:56
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