[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Jul 2004
    Beiträge
    8

    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

  2. #2
    Registriert seit
    Jan 2003
    Beiträge
    759
    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.

  3. #3
    Registriert seit
    Jul 2004
    Beiträge
    8
    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

  4. #4
    Registriert seit
    Jan 2003
    Beiträge
    759
    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

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat 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
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  6. #6
    Registriert seit
    Jul 2004
    Beiträge
    8
    Zitat 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

  7. #7
    Registriert seit
    Jul 2004
    Beiträge
    8
    Zitat 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

  8. #8
    Registriert seit
    Jan 2003
    Beiträge
    759
    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

  9. #9
    Registriert seit
    Jul 2004
    Beiträge
    8
    Zitat 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)

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  11. #11
    Registriert seit
    Jul 2004
    Beiträge
    8
    Zitat 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)

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    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 ?
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 10:58
  2. ILE Umwandlung per FNDSTRPDM
    By horni in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 07-12-06, 18:51
  3. DDS in ILE RPG
    By Squall in forum IBM i Hauptforum
    Antworten: 82
    Letzter Beitrag: 19-10-06, 15:37
  4. MI Source aus einem RPG Programm erstellen
    By ExAzubi in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 13-07-06, 10:51
  5. Barcodelabel mit RPG Programm erstellen
    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
  •