-
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
-
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.]
-
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
-
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
-
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.
-
Frage?
Bei welchem Statement kommt der Dezimaldatenfehler?
Die Fehlermeldung beinhaltet eine Anweisungsnummer, die in der Umwandlungsliste wieder gefunden werden kann.
-
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
-
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
-
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
-
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
-
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
-
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
-
By mk in forum NEWSboard Java
Antworten: 8
Letzter Beitrag: 21-04-11, 21:51
-
By Stoeberl in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 10-01-07, 10:58
-
By ExAzubi in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 13-07-06, 10:51
-
By mk in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 09-09-04, 08:22
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks