[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Nov 2001
    Beiträge
    93

    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(MGLBIR02PARM(&B1JAHR &B1ZTAG +     
                              &
    B1ZMON &B1ZJAR &B1BTRG)) JOB(BIOARGE
                              
    JOBD(QBATCH)                           
      
    /*=======================*/
    ENDEENDPGM 
    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(MGLBIR02PARM(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

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    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 !
    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 2003
    Beiträge
    192
    Oder du übergibst die Werte in Hex (wenn es immer dieselben Sind)

    Gruß
    Rince

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Das scheint wohl eher nicht der Fall zu sein
    Siehe SNDRCVF im CLP.
    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

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    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 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 !
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Parameterübergabe RPG zu C
    By Marsman in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 31-03-06, 17:24
  2. Parameterübergabe in Prozedur -> Compiler schmiert ab
    By JonnyRico in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 23-11-04, 16:46
  3. Externe Java Procedur / Parameterübergabe
    By roko in forum IBM i Hauptforum
    Antworten: 17
    Letzter Beitrag: 27-10-04, 16:28
  4. Embedded SQL Parameterübergabe
    By shorty in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 02-08-04, 13:24
  5. 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
  •