-
SBMJOB und DEC
Hallo,
ich habe ein Problem bei einem SBMJOB mit einem Dezimalfeld.
Wenn ich das Programm mit "I" und dem Call aufrufe läuft alles normal durch.
Wenn ich das Programm mit "B" aufrufe und das mit SBMJOB übergeben wird, bekomme ich im RPGLE das im "call_cl" aufgerufen wird, einen Programmabbruch. Der Wert im aufgerufenen RPG-Programm von (dec) &AA02 ist 000 obwohl im aufrufenden CL der Wert mit 030 noch korrekt ist.
Das Feld &AA02 ist durchgängig immer mit dec 3/0 definiert.
Wie muss ich vorgehen, damit der SBMJOB so läuft wie der Call?
Code:
PGM PARM(&AA01 &AA02 &AA003 &IB)
DCL VAR(&AA01 ) TYPE(*CHAR) LEN(3)
DCL VAR(&AA02 ) TYPE(*DEC) LEN(3)
DCL VAR(&AA03 ) TYPE(*CHAR) LEN(1)
DCL VAR(&IB ) TYPE(*CHAR) LEN(1)
IF COND(&IB = 'B') THEN(DO)
SBMJOB CMD(CALL PGM(call_cl) PARM(&AA01 &AA02 +
&AA03)) JOB(TEST)
ENDDO
IF COND(&IB = 'I') THEN(CALL PGM(call_cl) +
PARM(&AA01 &AA02 &AA03))
ENDPGM
-
CALL-Parameterhandling immer das selbe Problem:
Beim internen CALL werden die Parameter als Referenz direkt übergeben.
Beim Kommando CALL (was beim SBMJOB zum Zuge kommt), werden die Variablen als Wert übergeben. Dabei werden dann Zahlen im Batchjob vom CALL in das Format Dec(15, 5) umgedreht.
Dieses Problem ist hier schon mehrfach behandelt worden.
Schreib dir für das Programm ein simples CMD für die beiden Parameter, dann kannst du das CMD frei verwenden um die korrekte Parameterübergabe sicher zu stellen.
-
Sorry, wenn ich jetzt nochmal beschämend nachfrage. Aber ich krieg den CMD-Befehl mit der DEC-Variablen im CMD nicht hin. Wie muss ich das schreiben? Leider fand ich auch keine Beispiele bei denen ich mal "spicken" konnte. Wenn ich das richtig verstanden habe soll ich den CMD in eine &Variable packen und die &Variable dann beim SBM im PARM mitgeben.
Ich steh aber total auf dem Schlauch wie die CMD-Variable mit dem DEC-Parameter aussehen muss? Vielleicht könnt ihr mir da nochmal auf die Sprünge helfen.
-
Anstelle des CALL PGM(...) PARM(...) im Parameter CMD() des SBMJOB mußt du deinen neuen Befehl (*) mit Schlüsselworten angeben:
SBMJOB CMD(dein Befehl mit Schlüsselworten) ...
Am besten läßt sich das alles mittels F4=Bedienerführung ausfüllen.
(*) Hier ist ein Beispiel, wie man einen eigenen Befehl erstellt.
-
Vielen, vielen Dank für den Link - das war genau das was ich gesucht und gebraucht habe. Jetzt funzt's :-)
Similar Threads
-
By horst in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 15-01-02, 06:55
-
By muadeep in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 13-11-01, 15:05
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