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

    Question Suche Grundgerüst eines RPG Programms

    Hallo Leute,

    ich hab hier in der Firma zwar ne menge Fachliteratur zum Thema RPG, ILE RPG usw. aber ich habe bis jetzt in keinem Buch das immer benötigte Grundgerüst eines jeden RPG Programms gefunden, man kann ja nicht einfach anfange Befehle zu schreiben, sonder muss zuerst sowas die eine "main" Funktion erstellen und eine Bedingung für das Beenden des Programms. Da ich leider nicht weiss was ich unbedingt brauche und was nicht, werde ich auch aus bereits vorhandenen Programmen nicht besonders schlau...

    Schonmal Danke für eure Hilfe

  2. #2
    Registriert seit
    Oct 2003
    Beiträge
    192
    C SETON *INLR


    Das ist das immer benötigte Grundgerüst eines RPG's

    Kann mir nicht vorstellen dass dir das hilft... aber das ist das absolute Grundgerüst

    Gruß
    Rince

    P.s. No Offence Meant

  3. #3
    Registriert seit
    Feb 2006
    Beiträge
    8
    Das ist schon mal ein Anfang

    Ich bekomme aber immer die Meldung

    *RNF7023 40 1 Das Umwandlungsprogramm kann nicht bestimmen, wie das Programm enden kann.


    EDIT: In das Programm ist eine Bildschirmdatei mit der Taste "F3" als Beenden-Taste eingefügt

  4. #4
    Registriert seit
    Aug 2004
    Beiträge
    923
    also der tipp von Rincewind war schon okay so.

    versuchs mal evtl. anstelle dessen so: EVAL *INLR = *ON

    k.

  5. #5
    Registriert seit
    Feb 2006
    Beiträge
    8
    Jetzt hab ich nur noch das Problem dass ich nicht genau weiss in welche Spalte ich was schreiben muss

    EDIT: Habs rausgefunden

  6. #6
    Registriert seit
    Feb 2006
    Beiträge
    12
    Ich denke mit Grundgerüst meinst du den Aufbau eines Programms.

    Als erstes hast du den F-Teil, da definierst du die Dateien die du verwenden willst.
    Danach kommt der D-Teil, indem du deine Variablen definierst, die du in deinem Programm verwendest.
    Als 3. kommt der Hauptteil, der C-Teil, in dem du das "eigentliche" Programm schreibst. Mit Befehlen, Aufrufen, Routinen, usw...
    Je nachdem ob du auf Datei oder direkt auf eine Liste schreibst, musst du den O-Teil definieren. Wenn du auf eine Datei schreibst brauchst du ihn nicht, dazu musst du aber extern eine physische Datei schreiben. Willst du das dein Programm direkt schreibt, dann musst du im O-Teil des "Layout" bestimmen.

    Ich hoffe das gibt dir einen groben Überblick...

    Unmöglich das alles hier genau zu erklären... Am besten ist, du arbeitest dich Schritt für Schritt in deinen Handbüchern voran, oder du fragst jemanden der das schon kann (in deinem Betrieb). Letzteres wäre wahrscheinlich die beste Lösung

    mfg abYss

  7. #7
    Registriert seit
    Feb 2006
    Beiträge
    8
    Danke an alle!

    Er kompiliert jetzt schon mal so wie er soll, ohne Fehler. Beim öffnen des Programms passiert dann aber garnichts, warscheinlich fehlt mir sowas wie eine Schleife, die ihn solange arbeiten lässt bis ich sage dass ende ist.

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

  9. #9
    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?

  10. #10
    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

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

  12. #12
    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...

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
  •