[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Hybrid View

  1. #1
    Registriert seit
    Oct 2007
    Beiträge
    42

    SETGT *HIVAL DATW111;

    Hallo zusammen,

    habe eine Tabelle die ausgewertet werden soll...
    /free
    SETGT*HIVAL DATW111;
    READP DATW111;
    .
    .
    .


    das klappt soweit...

    nun möchte ich aber den Satz auslesen mit den zweitgrößten SWert.

    /free
    SETGT (-1)*HIVAL DATW111;
    READP DATW111;
    .
    .
    .


    Wie kann man das bewerkstelligen?

    Ich hoffe mir ist zu helfen und ich bedanke mich für Eure Unterstützung.




  2. #2
    Registriert seit
    Apr 2005
    Beiträge
    385
    Also so wie geplant haut das nicht hin, müsste meines Erachtens auch einen Compilerfehler geben.

    *HIVAL SETGT DATW11

    1 DO 2
    READP DATW11
    ENDDO

    IOch würde so machen, einfach ind jder kanns lesen

  3. #3
    Registriert seit
    Oct 2007
    Beiträge
    42

    Nachtrag

    Ach ja,

    da war noch was.

    Das alles soll in einer Abfrage passieren...

    Also erst

    /free
    SETGT*HIVAL DATW111;
    READP DATW111;

    .
    .
    .
    ***und dann den zweitgrößten Satz***


    SETGT(-1)*HIVAL CSTP111;
    READP CSTP111;

    .
    .
    .

    EXFMT MAIN;
    *inlr = *on;
    if Not %EOF(CSTP111);
    ENDIF;
    /end-free


    mhh und nun? ´

  4. #4
    Registriert seit
    Apr 2004
    Beiträge
    105
    um an den zweitgroßten Satz zu kommen, muss Du nur ein Mal Positionieren und dann zwei Mal mit readP lesen, also:

    Code:
    /free
    setGT *hival DATW111; // positionieren am Ende der Datei
    readP DATW111; // lese letzten Satz
    readP DATW111; // lese vorletzten Satz
    /end-free
    oder was meinst Du?

  5. #5
    Registriert seit
    Oct 2007
    Beiträge
    42

    Richtig

    Genau das hatte ich gewünscht...

    ist ja doch so einfach wie man es immer sagt..

    Ich danke für Eure Unterstützung!!

  6. #6
    Registriert seit
    Oct 2007
    Beiträge
    42

    Noch eine Frage

    Eine andere Frage.

    Durch das Drücken der F8 Taste sollen erst die Felder XYZ angezeigt werden.

    Das geht doch mit den Bezugszahlen. Im DSPF / MAIN habe ich diese CF angegeben und dem Feld XYZ ebenso. Jetzt muss ich doch noch den Schalter auf *ON setzen.. wenn ich F8 drücke.

    Fragen über Fragen...

  7. #7
    Registriert seit
    Apr 2004
    Beiträge
    105
    Zum Verbergen oder Anzeigen bestimmter Felder in einer Displayfile kannst du mit DSPATR(ND) arbeiten.

    hier ein bißchen Codegeschnipsel:

    Code:
    DSPF:
     A                                      CF08(08 'Show Fields')
     A          R RECORD                   
     A            FLD1          10   B 11  2
     A 50                                   DSPATR(ND)
    
    PGM:
    /free
      if *in08;    // F8 gedrückt
        *in50 = *off;    // Feld FLD1 anzeigen
      else;
        *in50 = *on;        // Feld FLD1 verbergen
      endif;
    /end-free

  8. #8
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Muß das nicht *in08 und *in50 heißen?

  9. #9
    Registriert seit
    Apr 2004
    Beiträge
    105
    huch, stimmt genau ...
    hab´s geändert.

  10. #10
    Registriert seit
    Oct 2007
    Beiträge
    42

    Ablage

    Das mit dem Sternchen habe ich mitbekommen...

    aber wo setze ich den Code hin...

    das PGM fliegt nach dem Drücken von F8 raus...


    /free

    SETGT*HIVAL CSTP111;
    READP CSTP111;
    D_ORDERSALL = F_ORDERSALL;
    D_ORDERS2DAY = F_ORDERS2DAY;
    .
    .
    .
    .

    READP CSTP111;
    D_ORDERSALLV = F_ORDERSALL;
    D_ORDERS2DAV = F_ORDERS2DAY;
    .
    .
    .
    .
    EXFMT MAIN;
    *inlr = *on;
    // F8 Funktion
    if *in08; // F8 gedrückt
    *in50 = *off; // Feld MONSCHICHV anzeigen
    else;
    *in50 = *on; // Feld MONSCHICHV verbergen
    endif;

    if Not %EOF(CSTP111);
    ENDIF;

    /end-free

    Ist dann doch nicht so leicht wie ich erst dachte.

    Aber aller Anfang ist schwer.



  11. #11
    Registriert seit
    May 2007
    Beiträge
    82

    INLR beendet das Programm

    Der inlr beendet das Pgm nach dem 1. exfmt.

    Versuch mal:

    *inlr = *off;
    DOU *inlr
    EXFMT MAIN;

    // F8 Funktion
    if *in08; // F8 gedrückt
    *in50 = *off; // Feld MONSCHICHV anzeigen
    else;
    *in50 = *on; // Feld MONSCHICHV verbergen
    endif;
    if *in03; // F3 gedrückt
    *inlr = *on; // LR anschalten
    endif;


    enddo;

    Im Format dann F3 zulassen (CF03).

    Evtl. muss Du noch die Syntax korrigieren. Ich kann kein leider Free.

    Gruss
    Ulli

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    *INLR = *ON beendet das Programm NICHT sofort sondern entscheidet beim tatsächlichen Ende (letztes Statement, Return) ob das Programm deaktiviert wird (Close, entladen).
    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. Setgt
    By DEVJO in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 24-07-09, 16:07
  2. SETGT + %EQUAL
    By rscheppe in forum NEWSboard Programmierung
    Antworten: 12
    Letzter Beitrag: 03-04-08, 11:22

Berechtigungen

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