[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    309

    CALLP + SBMJOB

    ich möchte ein CL-Pgm durch ein ILE-Pgm (per SBMJOB) aufrufen!


    in etwa so:

    PHP-Code:
    C                   Eval      Feld1 = %trim(Feld1)
    C                   Eval      Feld2 = %trim(Feld2)
    C                   Eval      Feld3 = %trim(Feld3)
    C                   Eval      Feld4 = %trim(Feld4)

    C                   CallP(e)  Cmd('SBMJOB CMD(CALL PGM(xxxxxxCL))' +
    C                                       ' JOB(xxxxxx) ' +         
    C                                       ' JOBQ(QBATCH)   ' +         
    C                                       ' JOBD(QDFTJOBD) ' +         
    C                                       ' JOBPTY(5)      ' +         
    C                                       ' HOLD(*YES)     '
    Der Aufruf des CALL's (bei SBMJOB) muß eigentlich die 4 Felder/Variablen (Feld1/Feld2/Feld3/Feld4) beinhalten!

    wie muß ich das hier angeben?
    geht das überhaupt?

    muß ich auch "Prototypen" in den "D"-Bestimmungen angeben?
    (fals ja, wie)

    thx

  2. #2
    Registriert seit
    Aug 2004
    Beiträge
    923
    Hello,



    das geht bestimmt irgendwie. Habe son String aber noch nie zusammengebastelt. Mal sehen, was die anneren schreiben.

    Eine "Notlösung" wäre auf jeden Fall ein vorgeschaltetes CLP mit den entsprechenden PARMS zu callen, welches dann den SBMJOB losjagt...

    Nicht sehr elegant, aber schnell codiert und absolut useable...



    kuempi

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    309
    ja, das mit dem vorgeschalteten CL hab ich schon so gemacht, gefällt mir aber nicht!

    Deshalb auch meine Frage, ob es nicht vielleicht irgendwie anders geht!

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Du kannst natürlich eine CLLE-Routine in dein ILE-RPG einbinden, das ist auf jeden Fall die komfortabelste Variante (Bedienerführung des CMD's, Konzentrieren auf das Wesentliche) und auf keinen Fall eine Notlösung.

    Ansonsten gehts halt nur per CALL 'QCMDEXC' mit Zusammenschustern des CMD's mit relativ vielen Test's bis es denn funktioniert.
    Beim Zusammenbauen sind vor allem die Feldausprägungen (schon mehrfach hingewiesen) für das später aufzurufende Programm (Zeichen, Gezont, Gepackt, oder doch default 15,5).

    Die tatsächlich "eleganteste" Variante ist die Übergabe per *LDA (wenn 1024 Bytes als Parameter reichen). Beim SBMJOB wird die lokale LDA immer kopiert !
    Vorteil: man braucht auch nicht hinter sich aufzuräumen wie bei Parametern per Datei.
    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
    May 2002
    Beiträge
    1.121
    so mal uff die schnelle, ohne das ich es getestet habe
    PHP-Code:
    h dftactgrp(*noOption( *NoDebugIO )   bnddir('QC2LE')                
    h datfmt(*dmy.) timfmt(*hms:) datedit(*dmy.) decedit('0,'debug(*yes
                                                                           
    d system          pr            10i 0 extproc('system')                
    d                                 *   value options(*string)           
    d                                                                      
    d True            c                   
    *On                              
    d False           c                   
    *Off                             
    d                                                                      
    d PGMName         s             10                                     
    d JOBName         s             10                                     
                                                                           
    c                                                                      
    c                   CallP     System
    ('sbmjob cmd(call pgm(' +          
    c                                   %Trim(PGMName) + ') job(' +        
    c                                   %Trim(JobName) + ')'         )     
    c                   Eval      *InLr  True 
    gruß ronald

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    309
    und wie kann ich jetzt da parameter für den Programmaufruf mit übergeben?

    PHP-Code:
    cALLP  xxxxxxCL
    PARM   FELD1
    PARM   FELD2
    PARM   FELD3
    PARM   FELD4 

  7. #7
    Registriert seit
    May 2002
    Beiträge
    1.121
    PHP-Code:
    c                   CallP     System('sbmjob cmd(call pgm(' +          
    c                                   %Trim(PGMName) + ')  ' +           
    c                                   ' Parm(''' + %Trim(Feld1) + '''' 
    c                                   '))  job(' +                       
    c                                   %Trim(JobName) + ')'         
    etwa so in der art. am besten ist du testet das mal aus. oder nim en befehl vorher auf eine variable
    PHP-Code:
    c                   Eval      CMD =  'sbmjob cmd(call pgm(' +          
    c                                   %Trim(PGMName) + ')  ' +           
    c                                   ' Parm(''' + %Trim(Feld1) + '''' 
    c                                   '))  job(' +                       
    c                                   %Trim(JobName) + ')'               
    c                                                                      
    c                   CallP     System
    cmd )                            
    c                                                                      
    c                   
    Eval      *InLr  True 
    gruß ronald

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    309
    So, hab das ganze mal versucht umzusetzen:

    PHP-Code:
    c                   Eval      CMD =  'SBMJOB CMD(CALL PGM(EXPEREMCL)' +
    c                                   ' PARM(''' + %Trim(Von    ) + ''' +
    c                                          ''' 
    + %Trim(An     ) + ''' +
    c                                          ''' 
    + %Trim(AntwAn ) + ''' +
    c                                          ''' 
    + %Trim(Betref ) + ''' +
    c                                          ''' 
    + %Trim(Attach ) + ''' +
    c                                          ''' 
    + %Trim(TranBi ) + ''' + 
    c                                          ''' 
    + %Trim(JDebug ) + '''' +
    c                                   ')) +                               
    c                                   JOB(EXCELMAIL) JOBQ(QBATCH) +       
    c                                   JOBD(QDFTJOBD) JOBPTY(5) +          
    c                                   HOLD(*YES)'                         
    c                   CallP     System(CMD
    Der Job wird jetzt auch prima per SBMJOB übertragen!
    Nach dem ich diesen "freigegeben" habe erhalte ich eine Fehlermeldung!

    Wenn ich diesen Job(SBMJOB) debug'e(STRDBG), dann
    stelle ich fest, daß in dem aufgerufenen CL-Pgm. die Parameter
    nicht richtig übergeben werden!

    CL:
    PHP-Code:
    PGM        PARM(&VON &AN &ANTWAN &BETREF &ATTACH +    
                             &
    TRANBI &JDEBUG)
    DCL        VAR(&VON   TYPE(*CHARLEN(50
    DCL        VAR(&AN    TYPE(*CHARLEN(50
    DCL        VAR(&ANTWANTYPE(*CHARLEN(50)
    DCL        VAR(&BETREFFTYPE(*CHARLEN(50)
    DCL        VAR(&ATTACHTYPE(*CHARLEN(50)
    DCL        VAR(&TRANBINTYPE(*CHARLEN(4)
    DCL        VAR(&JDEBUGTYPE(*CHARLEN(4
    d.h. in der Variablen "&Von" steht noch ein Teil von der Variablen "&AN", etc.

    es sollte eigentlich so sein(ausschauen):
    PHP-Code:
    &VON       'HUBER                   '
    &AN        'MAIER                   '
    &ANTWAN    'XYZ                     ' 

    ist aber leider so:

    PHP-Code:
    &VON       'HUBER      MAIER        '
    &AN        'MAIER      XYZ          '
    &ANTWAN    'XYZ      .....          ' 
    was mache ich da nu wieder falsch?
    .

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Wie immer das selbe Problem !
    Bei der Parameterübergabe ist die Felddefinition GENAU einzuhalten.
    Lass also das %TRIM weg, da du damit die Felder doch verkürzt !!!

    Im CL-Handbuch steht doch, wie Parameter an eine Programm durch das CMD "CALL" übergeben werden:
    - Zeichenketten in der angegebenen Länge, mindestens jedoch 32 Zeichen
    - Zahlen immer gepackt in 15,5

    Wenn du also 50 Zeichen erwartest, musst du auch 50 Zeichen übergeben.
    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

Similar Threads

  1. SNDPGMMSG und SBMJOB
    By Dominik Meyer in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 13-01-07, 15:16
  2. JOBQ(*JOBD) oder JOBQ(LIB/JOBQ) an SBMJOB übergeben
    By hww in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 12-12-06, 15:27
  3. SBMJOB und SCDDATE/SCDTIME
    By Luebbert in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 13-09-06, 11:39
  4. CallP über mehrere Zeilen im Free-Format
    By edig in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 14-07-06, 15:48
  5. sbmjob und ' im Parameter
    By muadeep in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 27-06-06, 11:31

Berechtigungen

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