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

    Heftige free form Frage

    Ich habe ein tolles Konstrukt einer logischen Datei mit mehreren Records aus verschiedenen Files drin in fixed RPGLE. Das hat/hatte den Vorteil, dass ich nur ein File lesen musste und ich die Records aufgrund der Record DS mit einer Bezugszahl identifizieren konnte.

    Also:
    I mySuperRec 55 (Bezugszahl)
    I myWeirdRec 99
    ....

    Je nachdem was kommt, geht die entsprechende BZ an.

    Geht das auch in free?

    Und jetzt keine Diskussionen über Design bitte!
    Danke.
    kf

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.506
    Hat nix mit Freeform zu tun:
    https://www.ibm.com/docs/en/i/7.5?to...edback-example

    " IO_RCD_FMT CHAR(10) POS(261); // Rcd format name"
    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
    Mar 2002
    Beiträge
    5.332
    Zitat Zitat von camouflage Beitrag anzeigen
    Ich habe ein tolles Konstrukt einer logischen Datei mit mehreren Records aus verschiedenen Files drin in fixed RPGLE. Das hat/hatte den Vorteil, dass ich nur ein File lesen musste und ich die Records aufgrund der Record DS mit einer Bezugszahl identifizieren konnte.

    Also:
    I mySuperRec 55 (Bezugszahl)
    I myWeirdRec 99
    ....

    Je nachdem was kommt, geht die entsprechende BZ an.

    Geht das auch in free?

    Und jetzt keine Diskussionen über Design bitte!
    Danke.
    ... da helfen auch keine Diskussionen, da helfen nur noch Handschellen und ein Heizkörper!
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #4
    Registriert seit
    Jan 2007
    Beiträge
    962
    Ich weiss gar nicht was Du hast Dieter, ist doch eine kreative Lösung. :-D
    kf

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.506
    In SQL macht man das ja heute per Union. Also so unmodern ist die LF also gar nicht.

    select 'TableA' as TableName, F1, F2 , F3 ..., FN from TableA
    union all
    select 'TableB' as TableName, F1, F2 , F3 ..., FN from TableB

    Wobei man hier halt eine Spalte hinzufügen muss um die Herkunft zu eruieren.
    Anders macht man das bei ETL-Prozessen für die gemeinsame Konsolidierung von BI-Auswertungen ja auch nicht.

    Übrigens:
    Bei Bildschirmen mit mehreren aktiven Satzformaten (geht mit Invite, Overlay aber ohne Overlap) und einem "Read File" statt "Read Format", erfährt man auch erst aus dem IO-Feedback (INFDS), welches Format gelesen wird.
    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
    Jan 2012
    Beiträge
    1.172
    Hier ist noch ein Lösungsbeispiel in fully free. (Ich habe es aber nicht ausprobiert)

    dcl-s MyFormat1DS likeds(MyFormat1);
    dcl-s MyFormat2DS likeds(MyFormat2);


    exec sql declare C1 cursor for select * from MyLogicalFile;


    exec sql open C1;


    dow sqlstate = '00000';
    exec sql fetch C1 into :MyFormat1DS, :MyFormat2DS;
    if sqlstate = '00000';
    // Verarbeiten des gelesenen Datensatzes
    endif;
    enddo;


    exec sqlclose C1;
    [/CODE]

  7. #7
    Registriert seit
    Jan 2012
    Beiträge
    1.172
    Wahrscheinlich wäre es gut, die Formate vor jedem Fetch zu clearen. Nach dem Fetch muss man dann prüfen, welches Format gefüllt ist.

    LG, Dieter

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.332
    Zitat Zitat von Fuerchau Beitrag anzeigen
    In SQL macht man das ja heute per Union. Also so unmodern ist die LF also gar nicht.

    select 'TableA' as TableName, F1, F2 , F3 ..., FN from TableA
    union all
    select 'TableB' as TableName, F1, F2 , F3 ..., FN from TableB

    Wobei man hier halt eine Spalte hinzufügen muss um die Herkunft zu eruieren.
    Anders macht man das bei ETL-Prozessen für die gemeinsame Konsolidierung von BI-Auswertungen ja auch nicht.

    Übrigens:
    Bei Bildschirmen mit mehreren aktiven Satzformaten (geht mit Invite, Overlay aber ohne Overlap) und einem "Read File" statt "Read Format", erfährt man auch erst aus dem IO-Feedback (INFDS), welches Format gelesen wird.
    ... das kann man so nicht stehen lassen. Ein Union ist genau das Gegenteil von dem vorher beschriebenen Datenkompost, auf dem Kraut und Rüben liegen. Ein Union führt gleichartige Daten, die von Dilettanten verstreut gespeichert wurden zusammen.

    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/

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.506
    Bzgl. SQL meine ich aus der Vergangenheit, dass bei einer Multi-Format-LF von SQL ausschließlich das 1. Format gelesen wird.
    Somit ist das ein rein Nicht-SQL-Thema.

    Die Multiformat-LF gibts in vielen ERP-Systemen und vor allem bei Nicht-SQL-Entwicklern;-).
    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

  10. #10
    Registriert seit
    Jan 2007
    Beiträge
    962
    Ja soll ich mal erklären, dass man Gnocchi nicht Knocktschi ausspricht oder der Chianti auch nicht Tschianti heisst. Danke Baldur und Dieter, der D*B kann sich gerne der deutschen Aussprache des italienischen bedienen.

    Abgesehen davon, ich lass die DS mal fixed stehen - es funktioniert ja, das Programm ist ja free. Ist halt eine "alte" Lösung und was soll ich einen grossen Aufwand betreiben, nur damit es schöner aussieht. Alles andere würde und Redesign fallen und ja, SQL kann ich auch.

    Dachte nur, es gäbe auf die Schnelle eine Idee/Lösung.
    kf

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.506
    Ist die INFDS denn keine Lösung? Da kann man ja für Free folgende Lösung verwenden:

    *in55 = IO_RCD_FMT = 'FORMAT1';
    *in56 =
    IO_RCD_FMT = 'FORMAT2';

    Es scheint ja allgemein nicht bekannt zu sein, dass man Ergebnisse von If-Abfragen als Ausdruck einem Indicator zuweisen kann.

    Es sieht zwar komisch aus, aber eine Klammer kann man wegen der Optik auch setzen:

    *in55 = (IO_RCD_FMT = 'FORMAT1');
    *in56 =
    (IO_RCD_FMT = 'FORMAT2');

    Der Vorteil ist gerade bei DSPF/PRTF sowie anderen Abfragen weniger Schreibarbeit, also statt

    if
    IO_RCD_FMT = 'FORMAT1';
    *in55 = *on;
    else;
    *in55 = *off;
    endif;

    Das klappt mit jedem If-Konstrukt, also auch mit and/or/KLammern.

    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
    Jan 2007
    Beiträge
    962
    Baldur,
    Primär Resultate, "schön" für später. In der Regel geben Resultate eher was in die Büchse.
    Ich probier es später aus.
    kf

Similar Threads

  1. Free Form von LOOKUP
    By tarkusch in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 23-02-17, 11:45
  2. Dataara Free Form RPG
    By camouflage in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 29-04-16, 14:17
  3. RPG Free Form TR7
    By camouflage in forum IBM i Hauptforum
    Antworten: 29
    Letzter Beitrag: 19-11-13, 15:52
  4. Aktuelle Datum und Zeit bei Free-Form
    By lossin in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 08-02-06, 15:09
  5. NEWS/400-Magazin in digitaler Form?
    By Peter Janocha in forum NEWSboard load'n'go
    Antworten: 1
    Letzter Beitrag: 04-04-01, 19:38

Berechtigungen

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