[NEWSboard IBMi Forum]
Seite 1 von 3 1 2 ... Letzte
  1. #1
    Registriert seit
    May 2006
    Beiträge
    195

    SBMJOB und Parameterübergabe

    Hallo *all,

    über ILERPG wird eine CL mit empfangsparameter Externe DS aufgerufen. Das CL macht SBMJOB ..call (..) parm(externeDS) die Lerstellen der Ext.DS werden mit HEX 00000000000000 gefült

    WARUM?

    Vielen dank.

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Das Problem ist doch der Call:

    call mypgm parm(&Myvar)

    in diesem Fall werden die Blanks am Ende aus dem CALL entfernt und somit zu wenig Daten übergeben.

    Tatsächlich macht das System ja daraus:

    CALL MYPGM PARM(Inhalt)

    Um Leerzeichen zu erhalten müsstest du im Programm die PARM's mit Hochkomma (incl. der Verdopplung bei eingebetteten HK's) ü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

  3. #3
    Registriert seit
    May 2006
    Beiträge
    195
    was heißt in '

    Bsp.:
    eine Variable der ext.Ds ist 200 Stellen Alp. ich fülle nur
    Eval Var1 = 'test'
    im anderen Programm möchte ich auch test empfangen und nicht 'test'
    oder sehe ich falsch

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... dann schaue man sich mal die Bedienerhilfe von Karl (call) an, Zur Kontrolle der Parameter Typen gibt es extra commands (CRTCMD ist dein Freund)


    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    May 2006
    Beiträge
    195
    was ist wenn ich im RPG auf HEX'00' prüfen und durch ' ' ersetze?

  6. #6
    Registriert seit
    May 2006
    Beiträge
    195
    erste versuch .
    ich setze am Ende der Variable ein Zeichen zum Bsp. '|' dann werden die *blanks nicht durch Hex ersetzt.
    jetzt muss ich nur im end Programm das '|' Zeichen wieder entfernen.

    Hat jemand besseren Vorschlag?

    Bitte.

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... Antworten lesen!!!
    immer noch der command
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    Registriert seit
    May 2006
    Beiträge
    195
    und
    ich habe keine lösung in der Bedienerhilfe gefunden.
    was soll ich mit CRTCMD (ich will keinneues Command erstellen)

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Zitat Zitat von svit Beitrag anzeigen
    und
    ich habe keine lösung in der Bedienerhilfe gefunden.
    was soll ich mit CRTCMD (ich will keinneues Command erstellen)
    call eintippen F4 und dann auf PARM F1 liefert die Ursache des Problems.

    Einen command für den Aufruf des Programmes zu erstellen ist die einzig saubere Lösung, die Dinger sind extra dafür gemacht worden und was meinst Du, warum der Parameter beim SBMJOB CMD heißt!!!

    Wenn Du aber Huddel haben willst, dann frag doch einfach nicht...

    Bisschen weniger Huddel ist, wenn man RQSDTA statt CMD verwendet.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  10. #10
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    wenn die Var > 30 (oder 32 ??) Zeichen definiert ist, müssen auch diese 30 Zeichen übergeben werden

    wenn var < 30 stellig, call pgm parm('abc')
    Wenn var > 30 stellig, call pgm Parm('abc ... .....')

    Hex 00 ist nicht immer der 'aufgefüllte' Inhalt
    Das ist alles mögliche, was im Speicher steht !!

    Lösung:

    dclf &var *char 200
    chgvar &var 'abc'
    call pgm parm(&var)

    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  11. #11
    Registriert seit
    Jan 2007
    Beiträge
    1.002
    Lösung:
    dclf &var *char 200
    chgvar &var 'abc'
    call pgm parm(&var)

    Hi Robi,
    Du meinst wohl eher:
    dcl &var *char 200


    Persönlich würde ich dem noch einen value(' ') anfügen.


    Wenn die Felder sauber definiert (Länge) und auch initialisiert sind, braucht es nicht solche Klimmzüge.


    Allerdings frage ich mich ob svit dieses Programm zu Testzwecken auf der Commandlinie direkt aufruft - und wenn da der Parameter zu kurz ist, ist dieser Effekt anschaulich nachzuvollziehen.
    kf

  12. #12
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Zitat Zitat von camouflage Beitrag anzeigen
    Wenn die Felder sauber definiert (Länge) und auch initialisiert sind, braucht es nicht solche Klimmzüge.


    Allerdings frage ich mich ob svit dieses Programm zu Testzwecken auf der Commandlinie direkt aufruft - und wenn da der Parameter zu kurz ist, ist dieser Effekt anschaulich nachzuvollziehen.
    ... genau das ist der Fall von denkste!
    Ursache des Problems ist, dass die AS400 immer einen Call by reference macht, sprich: Adressen übergibt und keine Werte. Beim interaktiven Aufruf werden Literale übergeben, die keine auswertbare Adresse haben, beim SBMJOB stimmen die Adressräume vom Aufrufer und dem Aufgerufenen Job nicht überein - in beiden Fällen wird deshalb zur Laufzeit ein Übergabebereich erstellt, mit genau den Eigenschaften, wie beim command call beschrieben. Mit einem eigenen Command cann man das toppen, da dort jeder einzelne Parameter beschrieben wird.

    D*B
    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. 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. sbmjob und ' im Parameter
    By muadeep in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 27-06-06, 11:31
  5. Parameterübergabe CL/RPG
    By mott in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 09-12-05, 09:06

Berechtigungen

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