[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Oct 2001
    Beiträge
    68

    Question 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

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.206
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Oct 2001
    Beiträge
    68
    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.

  4. #4
    Registriert seit
    Nov 2003
    Beiträge
    2.304
    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.

  5. #5
    Registriert seit
    Oct 2001
    Beiträge
    68
    Vielen, vielen Dank für den Link - das war genau das was ich gesucht und gebraucht habe. Jetzt funzt's :-)

Similar Threads

  1. Berechtigung bei SBMJOB
    By horst in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 15-01-02, 07:55
  2. sbmjob
    By muadeep in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 13-11-01, 16:05

Berechtigungen

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