[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.012

    seltsames Phänomen bei SBMJOB

    Hallo,

    wir haben ein Problem, wenn wir aus einem RPG-Programm heraus einen SBMJOB über QCMDEXC aufrufen. Wenn nämlich dem aufgerufenen Programm ein Parameter übergeben wird, der ein nicht-darstellbares Zeichen enthält (z.B. Hexa 0D25 = CRLF), dann erhalten wir den Fehler CPD0183: Eingebetteter Befehl CALL ist zu lang. Die Befehlslänge beträgt angeblich 20185 Stellen, was jedoch nicht stimmt. Wenn wir nur normale Zeichen (ab Hexa 40) verwenden, dann funktioniert alles problemlos. Hat schon mal jemand diesen Fehler gehabt ? Ursprünglich wollten wir den Aufruf über einen CMD machen. Das scheidet jedoch aus, da als Parameter nur max. 5000 Stellen erlaubt sind und wir mehr benötigen.

    Gruß,
    KM

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Scheinbar kommt eben QCMDEXC mit CRLF nicht zurecht.
    Versuche es doch mal mit diesem API:
    Process Commands (QCAPCMD) API

    Oder du musst über ein Redesign nachdenken.
    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
    Aug 2004
    Beiträge
    923
    Eventuell hilft es auch den SBMJOB zu verändern?
    Also die Parameter und den entsprechenden Auftrag nicht über die Variabel CMD laufen lassen, sondern in RQSDTA.

    k.

  4. #4
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Wie erfolgt denn der Aufruf genau (Quelltextauszug)?
    Vielleicht ist die als Befehl übergebene Zeichenkette ja wirklich zu lang?

  5. #5
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.012
    @Fuerchau: Beim QCAPCMD passiert genau dasselbe. Redesign sollte nur die letzte Möglichkeit sein, da ja offenbar ein Fehler vorliegt.

    @Kuempi: Der Parameter RQSDTA lässt nur maximal 3000 Zeichen zu. Das ist zu wenig.

    @Pikachu: Der Befehl ist definitiv nicht zu lang. Ich kann z.B. 9999 mal 'x' an das Parameterfeld übergeben. Das funktioniert problemlos. Wenn ich aber nur einmal CRLF (also nur 2 Byte) oder ein anderes nicht-darstellbares Zeichen (z.B. Hexa 3A) einfüge, kommt der Fehler, dass die maximale Länge von 20000 für den eingebetteten Befehl überschritten wurde.

    Sonst noch rigendwelche Ideen ?

    Gruß,
    KM

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Nicht darstellbare Zeichen vermeiden

    Alternativ den Parameter Hex expandieren und per X'...' ü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

  7. #7
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.012
    Ich wollte damit ja auch nur sagen, dass der Fehler nur vorkommt, wenn man Zeichen unter Hexa 40 verwendet. Das war ja nur ein Beispiel. Wir benötigen nun mal den CRLF. Diesen fügen wir in das Parameterfeld ja schon mit X'0D25' ein. Eine andere Möglichkeit kenne ich nicht.

    KM

  8. #8
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Folgendes Programm übergibt einen Paramter mit besagten Zeichen und läuft hier unter V5R4. Kannst du einmal prüfen, ob es auch bei dir läuft?
    Code:
    D QCMD            S          16384A   INZ                              
    D QCMDLEN         S             15P 5 INZ(%SIZE(QCMD))                 
    D PARM            S             80A   INZ                              
    D**********************************************************************
    C                   EVAL      PARM = 'ABCD' + X'0D25' + 'EFGH'         
    C                   EVAL      QCMD = 'SBMJOB CMD(CALL PGM(SBM2) ' +    
    C                                    'PARM(''' + PARM + '''))'         
    C                   CALL      'QCMDEXC'                                
    C                   PARM                    QCMD                       
    C                   PARM                    QCMDLEN                    
    C                   MOVE      *ON           *INLR

  9. #9
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.012
    Bei kurzen Parameterfeldern funktioniert der Aufruf. Ändere mal die Länge von PARM auf 12000 Stellen. Bin mal gespannt was dann bei Dir passiert. Wir haben übrigens auch V5R4.

    KM

  10. #10
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Seltsam. Bis zu einer Länge von 9988A für die Variable PARM läuft's, auch wenn diese Variable X'0D25' enthält. Ab einer Länge von 9989A für die Variable PARM läuft's nur noch, wenn das X'0D25' aus der Zuweisung entfernt oder z.B. durch X'4040' ersetzt wird.

  11. #11
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.012
    Genau das ist das Problem. Na, dann sind wir nicht die einzigen, die diesen Fehler haben. Bei uns liegt der Schwellenwert irgendwo zwischen 9700 und 9800 Stellen, weil wir noch ein paar andere Parameter übergeben. Die Grenze ist also nicht fix, sondern hängt irgendwie von der Länge der Parameter ab.

    Es scheint also keine Lösung für diesen Fehler zu geben. Dann müssen wir uns doch anders behelfen.

    KM

  12. #12
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Es scheint, als würde der Inhalt dieses Parameters in Hex-Schreibweise ('...0D25...') übergeben werden, sobald Zeichen kleiner Hex 40 vorhanden sind. Oder dieser Parameter wird intern in Doppelbyte-Darstellung konvertiert und dann übergeben. Das würde dann ja tatsächlich mehr als die maximal erlaubten 20.000 Bytes ergeben.

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. Seltsames Phänomen Lpar System
    By TARASIK in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 12-12-06, 13:24
  4. SBMJOB und SCDDATE/SCDTIME
    By Luebbert in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 13-09-06, 11:39
  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
  •