[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    hs is offline [professional_User]
    Registriert seit
    Jun 2001
    Beiträge
    364

    Question Frage zu RPG: Aufruf RPG-Programm mit Parametern

    Ich kenne mich leider in RPG nicht aus und habe deshalb eine Frage an euch RPG - Programmierer:

    Ich habe untenstehendes kleinen RPG, was mir ein UPDATE macht.

    Ich möchte das Prog jetzt so abändern, dass KTRMGR = '99' und KTRISM = 4711 variabel sind, indem diese durch Übergabeparameter ersetzt werden.

    D.h. ich starte das Programm wie folgt:

    call MEINPROG '99' 4711

    Bestimmt nicht schwer für einen RPG-Profi, oder?

    Danke
    HS


    FUEBMAS90UF E K DISK
    C *LOVAL SETLLUEBFMT01
    C READ UEBFMT01 49
    C *IN49 DOWEQ*OFF
    C KTRMGR IFEQ '99'
    C MOVE 4711 KTRISM
    C UPDATUEBFMT01
    C ENDIF
    C READ UEBFMT01 49
    C ENDDO
    C MOVE *ON *INLR

  2. #2
    Registriert seit
    Mar 2001
    Beiträge
    15

    Post

    Am Beginn der C-Bestimmungen (oder in der *INZSR-Unterroutine) ist die Parameterliste zu definieren. Z.B.:
    C *ENTRY PLIST
    C PARM KTRMGR
    C PARM KTRISM

    Gruß
    Hanspeter Gunz

    PS:
    Leider ist nicht ersichtlich, wo die Werte stehen.
    *ENTRY unter Faktor1
    PLIST und PARM unter OPCODE
    Die Feldnamen unter Ergebnisfeld

    [Dieser Beitrag wurde von hgunz am 06. September 2001 editiert.]

  3. #3
    hs is offline [professional_User]
    Registriert seit
    Jun 2001
    Beiträge
    364

    Post


    Hallo Hanspeter,

    vielen Dank für die schnelle Antwort.

    Leider erhalte ich beim wandeln die Fehlermeldung:

    QRG7030 Bewertung: 30 Anzahl: 1
    Nachricht . . . : Das Feld oder die Bezugszahl ist nicht
    definiert.

    Mein Programm sieht jetzt so aus:

    FUEBMAS90UF E K DISK
    C *ENTRY PLIST
    C PARM MGR
    C *LOVAL SETLLUEBFMT01
    C READ UEBFMT01 49
    C *IN49 DOWEQ*OFF
    C KTRMGR IFEQ MGR -----------> HIER FEHLER
    C MOVE 4711 KTRISM
    C UPDATUEBFMT01
    C ENDIF
    C READ UEBFMT01 49
    C ENDDO
    C MOVE *ON *INLR

  4. #4
    Registriert seit
    Jul 2001
    Beiträge
    45

    Post

    Hallo Peter,

    du must jedes Feld das du im Programm benutzt und nicht anderswie definiert ist vorher definieren.
    Da du jetzt ein neues Feld "MGR" hast must du sagen wie lang es ist und ob es ein numerisches oder ... Feld ist.

    Gib mal einfach die Länge "so wie es aussieht 2,0) ein aber ohne das Kommata.

    Am besten du drückst vorher F4 und dann kannst du sehen wo du was eingeben must.

    Dann neu umwandeln.

    CU,
    HoScHiE
    Bye
    HoScHiE

  5. #5
    hs is offline [professional_User]
    Registriert seit
    Jun 2001
    Beiträge
    364

    Post

    Erstmal Danke,

    soweit funktionierts mit Parameter 1.

    Beim zweiten Parameter klappts jedoch noch nicht.

    Ich habe die 2.Variable als 6,0 deklariert.

    Wenn ich das Prog aufrufe z.B. mit
    CALL MEINPROG '70' 4711, erhalte ich einen Dezimaldatenfehler.

    Wat nu?

    Danke
    HS

    PS: Das Feld KTRISM ist gezont, Länge 9.3 - liegts daran?

    Anbei nochmals der Code:

    FUEBMAS90UF E K DISK
    C *ENTRY PLIST
    C PARM MGR 002
    C PARM ISM 60
    C *LOVAL SETLLUEBFMT01
    C READ UEBFMT01 49
    C *IN49 DOWEQ*OFF
    C KTRMGR IFEQ MGR
    C KTRNU1 ANDEQ0
    C MOVE ISM KTRISM
    C UPDATUEBFMT01
    u.s.w.

  6. #6
    Registriert seit
    Mar 2001
    Beiträge
    15

    Post

    Frage?
    Bei welchem Statement kommt der Dezimaldatenfehler?
    Die Fehlermeldung beinhaltet eine Anweisungsnummer, die in der Umwandlungsliste wieder gefunden werden kann.

  7. #7
    Registriert seit
    Dec 2000
    Beiträge
    279

    Post

    Zahlen werden bei dieser Art des Aufrufs gepackt übergeben. Du solltest also evtl ein CL mit einem Eingabebildschirm "vorschalten" oder den Parameter als Alphafeld übergeben und dann umwandeln.
    Gruß Klaus

    [Dieser Beitrag wurde von K_Tippi am 07. September 2001 editiert.]
    Programmierung

  8. #8
    Registriert seit
    Sep 2001
    Beiträge
    156

    Post

    Hallo hs
    bei der Uebergabe von Parametern müssen Typ und Länge immer mit der definierten Länge des Parameters übereinstimmen. Also in deinem Fall muss der ersten Parameter 2-stellig numerisch (z.Bsp: '99' oder '02') sein und der 2. Parameter 6-stellig numerisch also z.Bsp: '004711' .
    Wenn du nur '4711' übergibst, wird das als '4711 ' interpretiert, wobei die 2 Leerstellen ungültige Zeichen sind.

    Ich hoffe es hilft.
    Gruss
    Rolf

  9. #9
    hs is offline [professional_User]
    Registriert seit
    Jun 2001
    Beiträge
    364

    Post

    Danke euch allen für Eure Unterstützung.

    Es hat jetzt erst geklappt, nachdem ich den zweiten Parameter auch als alphanumerisch deklariert habe.

    Verrücktes RPG!

    Gruß
    HS


  10. #10
    Registriert seit
    Jan 2001
    Beiträge
    62

    Post

    Hallo!

    Hier noch eine Variante dises Programmes. Vielleicht für Ihre RPG-Zukunft. Mann kann so viel Zeit (Tip- und Testarbeit) ersparen.
    F*****************************************
    FUEBMAS90 UPE F DISK

    C *ENTRY PLIST
    C PARM PRMMGR 2
    C PARM PRMISM 6

    C MOVE PRMMGR NUMMGR 20
    C MOVE PRMISM NUMISM 60

    C KTRMGR IFEQ NUMMGR
    C Z-ADDNUMISM KTRISM
    C UPDATUEBFMT01
    C END
    C****************************************

    Also kein SETLL, kein READ, kein SETON LR,
    keine Lesen nach Schlüssel. Die Performance ist unschlagbar.
    Das lernt man heute leider nicht mehr, ist aber der Grund, warum es die AS/400 noch gibt.

    m.f.G
    Otto Zehetner

  11. #11
    hs is offline [professional_User]
    Registriert seit
    Jun 2001
    Beiträge
    364

    Talking

    Eigentlich war ich ja schon froh, dass mein Programm überhaupt funktioniert.

    Ich war aber doch neugierig und habe die kürzere version auch ausprobiert.

    Fazit:
    Schneller ist sie nicht, dafür aber - für den nicht RPG- Programmierer - leichter verständlich.

    PS:
    Die Zeile

    FUEBMAS90 UPE F DISK

    habe ich nicht hingekriegt, ich kriege das F nirgendwo unter:

    In meinem neuen Prog:
    FUEBMAS90UP__E___________________DISK

    Dumm, dass in diesem Forum die Leerzeichen unterdrückt werden und dass ich halt überhaupt keine Ahnung von RPG habe.

    Gruß
    HS


  12. #12
    Registriert seit
    Jan 2001
    Beiträge
    62

    Post

    T'schuldigung, ich habe mich verschrieben.
    Das F sollte natürlich ein E für externe Beschreibung sein.
    Ihre Zeile ist so ok.

    m.f.G
    Otto Zehetner

Similar Threads

  1. Rückgabewert vom RPG Programm
    By mk in forum NEWSboard Java
    Antworten: 8
    Letzter Beitrag: 21-04-11, 22:51
  2. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 11:58
  3. MI Source aus einem RPG Programm erstellen
    By ExAzubi in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 13-07-06, 11:51
  4. Aufruf von Java Programm direkt aus RPG
    By mk in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 09-09-04, 09:22

Berechtigungen

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