-
Parameterübergabe CL/RPG
Hallo!
Ich habe folgendes Problem: Wenn ich in einem CL-Programm ein RPG-Programm mit einem CALL aufrufe, funktioniert das RPG-Programm. Wenn ich das RPG-Programm aber mit einem SBMJOB aufrufe, dann bricht das RPG-Programm mit einem Dezimaldatenfehler ab. An das RPG-Programm werden mehrere Parameter übergeben. Das RPG Programm hat dann ein Problem mit den Parametervariablen (=Dezimaldatenfehler).
CL-Programm (MGLBIC02)
PHP-Code:
PGM
DCLF FILE(MGLBIB02)
RTVJOBA JOB(&B1WSID)
/*=======================*/
START: SNDRCVF RCDFMT(MGLBIB00)
IF COND(&IN03 = '1') THEN(RETURN)
/*=======================*/
SBMJOB CMD(CALL PGM(MGLBIR02) PARM(&B1JAHR &B1ZTAG +
&B1ZMON &B1ZJAR &B1BTRG)) JOB(BIOARGE)
JOBD(QBATCH)
/*=======================*/
ENDE: ENDPGM
RPG-Code (MGLBIR02)
PHP-Code:
D P_Jahr S 4 0
D P_ZahlTag S 2 0
D P_ZahlMonat S 2 0
D P_ZahlJahr S 4 0
D P_Betrag S 6 2
:
:
C *ENTRY PLIST
C PARM P_Jahr
C PARM P_ZahlTag
C PARM P_ZahlMonat
C PARM P_ZahlJahr
C PARM P_Betrag
Was mir noch aufgefallen ist: Wenn ich das Jobprotokoll des Batchjobs ansehe, dann steht da folgendes (man beachte die Parameter):
PHP-Code:
CALL PGM(MGLBIR02) PARM(2065 31 12 2005 1,21)
Hat jemand eine Erklärung dafür, dass das RPG-Programm mit dem direkt CALL-Befehl funktioniert und mit SBMJOB fehlschlägt?`
Vielen Dank im Voraus für etwaige Antworten!
Michi
-
Beim Direkt-Call werden die Adressen der Variablen übergeben.
Beim SBMJOB müssen die Variablen als Text übergeben werden. Sind diese dann nicht in Hochkommata interpretiert der Befehl CALL die Parameter:
- Zeichenvariablen in der angegebenen Länge, mindestens jedoch 32 Zeichen
- Numerische Werte immer im Format Packed 15,5
Du musst also die Parameter korrekt aufbereiten (Als Zeichen) in Hochkomma !
-
Oder du übergibst die Werte in Hex (wenn es immer dieselben Sind)
Gruß
Rince
-
Das scheint wohl eher nicht der Fall zu sein
Siehe SNDRCVF im CLP.
-
Hallo,
als Objekt zur Beschreibung von Parametern sind auf der AS400 Commands vorgesehen. Wenn man einen eigenen Command erstellt und als CPP das aufzurufende Programm festlegt, kann man den exakten Typ jedes Parameters überschreiben.
The /38 Way to hell war: den kompletten Aufruf in einen String reinbasteln und beim SBMJOB in RQSDTA übergeben.
mfg
Dieter Bender
Zitat von Fuerchau
Beim Direkt-Call werden die Adressen der Variablen übergeben.
Beim SBMJOB müssen die Variablen als Text übergeben werden. Sind diese dann nicht in Hochkommata interpretiert der Befehl CALL die Parameter:
- Zeichenvariablen in der angegebenen Länge, mindestens jedoch 32 Zeichen
- Numerische Werte immer im Format Packed 15,5
Du musst also die Parameter korrekt aufbereiten (Als Zeichen) in Hochkomma !
Similar Threads
-
By Marsman in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 31-03-06, 17:24
-
By JonnyRico in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 23-11-04, 16:46
-
By roko in forum IBM i Hauptforum
Antworten: 17
Letzter Beitrag: 27-10-04, 16:28
-
By shorty in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 02-08-04, 13:24
-
By Carsten in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 05-10-01, 08:42
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