[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Jan 2007
    Beiträge
    905

    Free RPG und Copies/Includes

    So ich das neue Free RPG schätze (auch wenn sich nach Dieters Meinung die IBMer schief lachen), so sehr treibt's mich manchmal zur Verzweifelung.

    Ist das nun wirklich nicht möglich, dass ich auf ein "DCL-F" nicht mehr eine "DEFINE" konditionierte Anweisung mittels "copy" oder "include" definieren kann. Da erhalt ich doch glatt die Meldung RNF0202: THE DIRECTIVE IS NOT SUPPORTED IN A FREE-FORM STATEMENT.

    Weiss da jemand Bescheid?



    kf

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Poste mal den Code. Ich denke da liegt eher ein Syntax-Fehler vor.
    Der Compiler liefert da schon mitunter komische Meldung, z.B.:

    exec sql delete mytable where ...;

    Hier kommt nun die Meldung "... wird von diesem Release nicht unterstützt ...".
    Früher wurde man da eher auf das fehlende " from " hingewiesen.
    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

  3. #3
    Registriert seit
    Jan 2007
    Beiträge
    905
    Hier mein Beispiel:
    dcl-f myDSPFile workstn(*ext) usropn
    /copy qrpgcpysrc,f_infds
    sfile(MySfl:RRN);

    und im f_infds steht:
    /if defined (INFDS)
    infds(myInfDS)
    /endif
    Ergibt die erwähnte Fehlermeldung
    kf

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Dies liegt in der generellen Syntax begründet:

    Solange eine Anweisung nicht mit Semikolon abgeschlossen ist, wird sie als eine Zeile betrachtet.
    Nur Kommentare bis Zeilenende werden ausgeblendet.

    Deine Anweisung wird nun mal als:

    dcl-f myDSPFile workstn(*ext) usropn /copy qrpgcpysrc,f_infds sfile(MySfl:RRN);

    interpretiert. Da ist ein copy/include nun leider nicht mehr möglich.
    Hat nun mal alles so seine Vor/Nachteile.
    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

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Nachtrag:
    Wobei ich eine bedingte INFDS eher für unsinnig halte;-).
    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

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Ggf. hilft ja noch ein kleiner Trick:
    Definiere die Quelle als SQLRPGLE (man muss kein SQL verwenden).
    Verwende beim CRTxxx die Option RPGPPOPT(*LVL2)!

    Dies löst Copy/Includes auf bevor der SQL-Precompiler dran ist da der das mitunter nicht kann.
    Für Nicht-SQL-RPG's gibt's diese Option wohl nicht.
    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

  7. #7
    Registriert seit
    Jan 2007
    Beiträge
    905
    Baldur,

    Ist ja nur ein Beispiel - ich hätte ja auch ein zweites SFL hinschreiben können. Allerdings ist das wirklich ein Mist (hmmm, ob ich Dieter doch Recht geben sollte) .


    Hingegen in einer DCL-S geht's:

    siehe hier:

    DCL-S salary
    /IF DEFINED(large_vals)
    PACKED(13:3)
    /ELSE
    PACKED(7:3)
    /ENDIF
    ;
    Nachtrag: Sorry, ist kein Copy.

    Mal gucken was Barbara zum Copy meint ;-)
    kf

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Also wenn /IF-Anweisungen gehen mag er ja nur den Copy nicht. Versuch es doch mal mit dem Include, die Syntax ist ja die selbe.

    Ansonsten ist das halt eine Fehlermeldung an IBM wert.

    RPGLE ist da sowieso nicht besonders flexibel.
    Ins besonders bei bedingten Daten-Teilstrukturen. Wenn sowas auch noch in Prototypen vorkommt (LIKEDS ist schnell gewählt) kann es ganz schön knallen.

    Includes zu bedingen macht bei RPGLE eigentlich nur Sinn um doppelte Includes zu verhindern.
    Sprachen wie C++ machen das zwar gerne, C++ hat aber genug Laufzeitprobleme bei falschen Definitionen.
    Es gibt bei RPGLE zu wenig Laufzeit-Überwachungen (Pufferüberschreibungen werden ja hier häufiger mal gemeldet;-)).
    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

  9. #9
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    M.E. Sollte es eigentlich immer noch funktionieren.

    Poste es doch mal im IBM-Forum, das liest auch Barbara Morris und gibt entsprechende Antworten.
    IBM RPG Forum
    Birgitta Hauser

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

  10. #10
    Registriert seit
    Jan 2007
    Beiträge
    905
    Licht im Dunkel...

    /COPY oder /INCLUDE ist innerhalb von free form Statements nicht erlaubt. Erlaubt sind /IF, /ELSEIF, /ELSE und /ENDIF.

    Um beim Beispiel zu bleiben müsste der Code so aussehen:

    dcl-f myDSPFile workstn(*ext) usropn
    /if defined (INFDS)
    infds(f_infds)
    /endif
    sfile(MySfl:RRN);
    Und um die "myINFDS" nicht "hart" zu codieren, kann ich mir als Copy Feld
    dcl-c f_infds 'myInfDS';
    definieren. Das kann man natürlich mit allen entsprechenden Keywords machen, klar.

    Herzlichen Dank an Barbara Morris.
    kf

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    /IF wird ja mit /ENDIF beendet, besitzt also ein Ende-Tag.
    Von der Syntax müsste also ein /ENDCOPY bzw. /ENDINCLUDE implementiert werden.
    Vielleicht kommt das ja auch mal irgendwann;-)?
    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

  12. #12
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... der RPG Parser kann nicht schachteln, das sieht man auch schon daran, dass bei einer if Anweisung das if, jedes else und das endif mit semikolon abgeschlossen werden müssen.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Total free RPG
    By philsturm in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 05-09-14, 09:09
  2. %dec in free-rpg ??
    By Gimli in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 11-03-03, 10:16
  3. Free RPG??
    By DEVJO in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 05-03-03, 07:18
  4. Free - RPG
    By Gimli in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 04-03-03, 09:47
  5. Free-RPG
    By Gimli in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 03-03-03, 10:23

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •