[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Dec 2009
    Beiträge
    314

    Probleme bei Submit JOB mit CALL auf ein CL-Programm mit Parametern

    Hallo
    ich habe in einem CL-Programm folgenden Aufruf eingebaut:

    /* SBMJOB CMD(CALL PGM(SNDBAUZI) PARM(&IDXPFAD +
    &DMSIDX &USRPFAD &DMSPDF &ITPPDF)) USER(IRDENWER) */
    CALL PGM(SNDBAUZI) PARM(&IDXPFAD &DMSIDX &USRPFAD &DMSPDF &ITPPDF)

    Wie ihr hier sehen könnt, habe ich den Submit derzeit durch einen CALL ersetzt, da mit beim SUBMIT die Parameter auf 32 Zeichen abgeschnitten werden.

    Die Parameter sind in beiden Programmen ident definiert mit -*CHAR 100

    im 2. CL werden dann folgende Befehle durchgeführt:

    COPY OBJ(&IDXPFAD) TODIR(&DMSIDX) +
    FROMCCSID(1252) TOCCSID(1252)


    COPY OBJ(&USRPFAD) TODIR(&DMSPDF) +
    FROMCCSID(1252) TOCCSID(1252)


    COPY OBJ(&USRPFAD) TODIR(&ITPPDF) FROMCCSID(1252) +
    TOCCSID(1252)


    DLTSPLF FILE(WPRINTER)

    USER des ausführenden CL-Programms und der USER beim SBMJOB haben idente Berechtigungen

    Vielleicht hat ja jemand von euch eine IDEE oder ein ähnliches Problem schon gelöst

    LG
    Andreas
    Andreas
    Ein AS/400 Dinosaurier since 1989

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    ... die sauberste Variante ist, für das Programm einen command zu basteln. Die Schmuddellösung ist, den call in einen String zusammenbasteln und beim SBMJOB unter RQSDTA zu übergeben.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Das ist immer das Beste, wenn man das nicht möchte/kann gibts nur eine Lösung:
    Zeichenparameter müssen genau in der Länge (oder größer) übergeben werden wie das Programm es erwartet. Dazu ist die Zeichenkette in Hochkomma einzubetten.
    Zahlwerte können nur als Zoned in Hochkomma oder als Default Packed(15:5) übergeben werden.

    Bei den Zeichenwerten kann man auch einfach einen Ausdruck vewenden, wenn die definierte länge passt.
    Z.B. &IDXPFAD *cat 'X'
    Der Trick ist, dass die Zeichenkette dann automatisch in Hochkomma gepackt wird und 1 Zeichen länger ist. Da nur Pointer ans Programm übergeben werden und das Zielprogramm die Länge kürzer definiert hat, sieht das Programm das 'X' nicht.
    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

  4. #4
    Registriert seit
    Dec 2009
    Beiträge
    314
    &IDXPFAD wird wie folgt erstellt:
    CHGVAR VAR(&IDXPFAD) VALUE('/HOME/' *TCAT &USER *TCAT +
    '/' *TCAT &IDXNAME)
    &IDXNAME wie folgt:
    CHGVAR VAR(&IDXNAME) VALUE('BAUZI_' *CAT &PARTNERNR *CAT +
    '_' *CAT &LFDNUMMER *CAT '_' *CAT +
    %SUBSTRING(&DATE 1 2) *CAT +
    %SUBSTRING(&DATE 3 2) *CAT +
    %SUBSTRING(&DATE 5 2) *CAT '_' *CAT +
    %SUBSTRING(&TIME 1 2) *CAT +
    %SUBSTRING(&TIME 3 2) *CAT +
    %SUBSTRING(&TIME 5 2) *CAT '.IDX')

    Und wenn ich den &IDXPFAD im SNDBAUZI im CALL im Debugger anschaue steht alles unter Hochkomma
    beim SBMJOB schneidet das Programm jedoch ab.
    Andreas
    Ein AS/400 Dinosaurier since 1989

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Klar, da der SBMJOB das Kommando dort an den Commandprozessor übergibt und dieser Leerzeichen wieder entfernt.
    Die Anzeige im Debugger mit Hochkomma zeigt nur, dass es eine Char-Variable ist.
    Da du keine Hochkomma in den Inhalten hast nimm je Variable eine 2. mit 2 Bytes länger und mach einen
    &NVar = '''' *cat &Var *cat ''''
    Und übergebe diese an den SBMJOB.
    Warum machst du für den Aufruf kein CMD? Da hast du solche Probleme absolut nicht.

    Wie gesagt, Zeichenparameter müssen beim SBMJOB in Hochkomma erfolgen, da Leerzeichen bis auf den Default 32 gekürzt werden.
    Dies ist schon seit V2R1 so (war mein erstes Release).
    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

  6. #6
    Registriert seit
    Dec 2000
    Beiträge
    279
    Hallo versuch mal chgvar(''' *cat &kkk *cat.... und am Ende *cat ''' Damit müsste alles im String stehen
    Programmierung

  7. #7
    Registriert seit
    Dec 2009
    Beiträge
    314
    Habe jetzt ein X an die letzte Stelle gestellt und jetzt funktioniert es. Danke für die Unterstützung, das nächste Mal werde ich einen Command bauen und diesen submitten.
    Danke
    Andreas
    Ein AS/400 Dinosaurier since 1989

Similar Threads

  1. SQL UDFs und RPG, Probleme bei optionalen Parametern
    By dschroeder in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 30-11-17, 16:14
  2. ADO: Call mit Parametern
    By padawan in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 28-06-10, 17:38
  3. Submit...?
    By deni87991 in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 13-06-06, 10:46
  4. Länge von Parametern bei CALL
    By cbe in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-08-05, 16:12
  5. PRD Bib's und submit
    By Robi in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 28-01-02, 10:06

Berechtigungen

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