[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2006
    Beiträge
    12
    Wenn du den Code bzw. Teile davon postest, könnte man dir bestimmt besser helfen

  2. #2
    Registriert seit
    Feb 2006
    Beiträge
    8
    Das ist meine Vorlage, von der ich zu lernen versuche:

    ************************************************** *******************
    *
    * VARIABELN FESTLEGEN
    *
    D A S 3 0
    D B S 3 0
    D UNTER S 8 3
    D X S 15 0
    *
    *

    ************************************************** *******************
    * PROGRAMMSTEUERUNG
    *
    C EXSR PROGRAMM
    *
    C EXSR ENDE
    *
    ************************************************** *******************
    * PROGRAMM
    *
    CSR PROGRAMM BEGSR
    *
    C START TAG
    *
    C *INKC IFEQ *ON
    C GOTO PROG_END
    C ENDIF


    C EXFMT FM01
    *
    C A ADD B X
    C X MULT X X
    C SQRT X UNTER
    *
    C GOTO START
    CSR PROG_END ENDSR
    *
    ************************************************** ***************
    * PROGRAMM-ENDE
    ************************************************** ***************
    *
    CSR ENDE BEGSR
    *
    C MOVE *ON *INLR
    *
    CSR ENDSR
    *
    ************************************************** ***************

    Und das ist meine eigens kreierte Version:

    *
    ************************************************** ***************
    *
    ** BILDSCHIRMDATEI FESTLEGEN
    *
    DSPFTestSLCF E WORKSTN
    *INKC IFEQ *ON
    ************************************************** *******************
    EVAL *INLR = *ON
    * VARIABELN FESTLEGEN
    *
    *
    *

    Also " EVAL *INLR = *ON "
    bedeutet soviel wie "Beende das Programm", richtig?

  3. #3
    Registriert seit
    Feb 2006
    Beiträge
    12
    *INLR ist eine Bezugszahl,
    IN steht für Indikator
    LR steht für Last Record = Letzer Satz = Programmende

    Bei *INLR = *ON wird diese Bezugszahl auf an gesetzt, was dem Programm sagt, das nun der letzte Satz geschrieben wurde und das Programm zu beenden ist.

    Ich würde dir auch raten den GOTO Befehl nicht zu verwenden, gar nicht erst angewöhnen, lieber mit Schleifen arbeiten, ist sehr viel übersichtlicher und man hat es bei der Programmlogik einfacher.

    Bevor du GOTO und TAG verwendest, lieber soetwas:

    IF *INKC = *ON
    LEAVE
    ENDIF

    mit dem Leave verlässt du deine Do-Schleife, die das gesamte Programm umfasst. Somit geht er auch zu dem Programmende (*INLR = *ON), was immer als letztes Statement in deinem Hauptprogramm stehen sollte.

    Ich hoffe das hilft dir ein bisschen

    mfg abYss

  4. #4
    Registriert seit
    Jan 2003
    Beiträge
    759
    Nah dran, aber:

    *INLR "verläßt" nicht das Programm sondert nimmt es nach dem Verlassen aus dem Stapel (HSP)

    Die grobe Logik sieht so aus:

    DOU *INKC = *ON
    EXFMT FM01
    ENDDO

    EVAL *INLR = *ON

    Gruß,
    Robert


    Ergänzung: sehe gerade, dass jemand schneller war ;-)
    Beachte:
    Falls es nach dem *INLR noch ausführbare Anweisungen gibt,
    werden diese ausgeführt.

  5. #5
    Registriert seit
    Feb 2006
    Beiträge
    8
    OK, das hat mir schonmal sehr weitergeholfen. Ich bin ja Programmiertechnisch kein Neuling, hab mit C++ und VB schon einige Erfahrung gesammelt, auch weiss ich, dass GOTO seeeeehhhr Böse ist allterdings hab ich so meine Probleme mit den wunderschön abgekürzten Namen auf der AS/400, damit kann ich mich einfach nicht so recht anfreunden.

    Ich glaube auch langsam hinter die Programmlogik meines Vorbildprogramms zu kommen. Mit BEGSR beginnt er eine Subroutine und mit ENDSR endet diese. In meinem Beispiel nutzt er statt EVAL den MOVE befehl, leider habe ich in unseren Unterlagen noch keine erklärung für einzelne Befehle gefunden... Wäre toll wenn mir jemand sagen könnte, was die machen, denn so alt wie unsere Unterlagen sind stützen die sich noch auf den RPG-Zyklus...

  6. #6
    Registriert seit
    Jan 2003
    Beiträge
    759
    Zitat Zitat von ensoniq2k
    allerdings hab ich so meine Probleme mit den wunderschön abgekürzten Namen auf der AS/400, damit kann ich mich einfach nicht so recht anfreunden
    Das ist auch gut so, nur Mut:

    DOU TasteF3gedrueckt = *ON
    EXSR ErwarteEingabeMaske01
    ENDDO

    ErwarteEingabeMaske01 BEGSR
    DOU TasteF3gedrueckt = *ON
    EXFMT FMT01
    ENDDO
    ENDSR

    Es ist 20 Jahre zu spät, um sich die kryptische Namensgebung anzueignen ;-)

    Bei Bedarf können wir Dir hier gerne ein paar Links zur Literatur posten (wer hat's gerade parat?)

    Alternativ kann ich Dir auch eine CD mit meiner persönlichen .pdf Sammlung zukommen lassen.

  7. #7
    Registriert seit
    Feb 2006
    Beiträge
    12
    Zitat Zitat von ensoniq2k
    Das ist meine Vorlage, von der ich zu lernen versuche:

    ************************************************** *******************
    *
    * VARIABELN FESTLEGEN
    *
    D A S 3 0
    D B S 3 0
    D UNTER S 8 3
    D X S 15 0
    *
    *
    hier werdend die Variablen definiert, dürfte klar sein
    ************************************************** *******************
    * PROGRAMMSTEUERUNG
    *
    C EXSR PROGRAMM
    *
    C EXSR ENDE
    *
    die Subroutinen Programm und Ende werden aufgerufen
    ************************************************** *******************
    * PROGRAMM
    *
    CSR PROGRAMM BEGSR
    *
    C START TAG
    *
    C *INKC IFEQ *ON
    C GOTO PROG_END
    C ENDIF

    wenn *INKC an ist = (F3 gedrückt), denn GOTO Programmende.
    *INKx (x steht für A-Y) sind die Anzeiger für die F-Tasten. KA = F1; KB = F2 usw. KO wird aber ausgelassen!!


    C EXFMT FM01

    Bildschirmformat FM01 wird ausgegeben
    *
    C A ADD B X

    A und B wird addiert und in X gestellt

    C X MULT X X

    X wird mit X multipliziert und in X gestellt

    C SQRT X UNTER

    SQRT kenne ich nicht, soll da vllt SORT heissen?
    *
    C GOTO START

    selbsterklärend

    CSR PROG_END ENDSR

    ende der Routine
    *
    ************************************************** ***************
    * PROGRAMM-ENDE
    ************************************************** ***************
    *
    CSR ENDE BEGSR
    *
    C MOVE *ON *INLR
    *
    CSR ENDSR
    *
    ************************************************** ***************

    Und das ist meine eigens kreierte Version:

    *
    ************************************************** ***************
    *
    ** BILDSCHIRMDATEI FESTLEGEN
    *
    DSPFTestSLCF E WORKSTN
    *INKC IFEQ *ON
    ************************************************** *******************
    EVAL *INLR = *ON
    * VARIABELN FESTLEGEN
    *
    *
    *

    Also " EVAL *INLR = *ON "
    bedeutet soviel wie "Beende das Programm", richtig?
    mal eine kleine Erklärung zu deinem Programm

  8. #8
    Registriert seit
    Feb 2006
    Beiträge
    12
    Hier ein Link zu einem wie ich finde guten Handbuch:

    publib.boulder.ibm.com/iseries/v5r2/ic2924/books/c0925084.pdf

    Gibt einen guten Überblick.

    mfg abYss

  9. #9
    Registriert seit
    Feb 2006
    Beiträge
    8
    SQRT = Squareroute = Quadratwurzel

    So kann man voneinander lernen

    Die erklärung des Quelltextes ist schonmal super, Danke! Das hilft mir fürs erste sehr weite, mal kapiert zu haben was da eigentlich passiert

  10. #10
    Registriert seit
    Feb 2006
    Beiträge
    12
    Danke, man lernt nie aus

Similar Threads

  1. Anw.Entwicker RPG gesucht - PLZ 4
    By MiPaff in forum NEWSboard Server Job
    Antworten: 2
    Letzter Beitrag: 19-01-07, 09:02
  2. RPG: Client Infos lesen?
    By robertki in forum NEWSboard Programmierung
    Antworten: 25
    Letzter Beitrag: 19-01-07, 08:42
  3. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 10:58
  4. Suche erfahrenen ILE RPG IV Programmierer ...
    By Blackjack79 in forum NEWSboard Server Job
    Antworten: 8
    Letzter Beitrag: 14-08-06, 15:29
  5. Rpg to java
    By Badener in forum NEWSboard Java
    Antworten: 5
    Letzter Beitrag: 13-07-06, 17:09

Berechtigungen

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