[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2002
    Beiträge
    1.121

    QShell im Batch

    Hallo Gemeinde,

    brauche da mal wieder Hlfe zur QShell.
    Die habe ich in einem RPG eingebunden. Wenn ich das Programm auf der Grünen Zeile aufrufe,
    dann ist alles Okay. Läuft das Teil im Batch, macht er nix. Ich sehe auch nichts im Joblog.
    Das gleiche (nur ein anderer Pfad) läuft auf diversen anderen Kisten ohne Probleme..

    PHP-Code:
    h DftActGrp(*noBndDir('QC2LE'Option( *NoDebugIO )                      
    h DatFmt(*dmy.) TimFmt(*hms:) DatEdit(*dmy.) DecEdit('0,'Debug(*yes)     
    ....
     * 
    Prozeduren                                                    
    d System          pr            10i 0 extproc
    ('system')          
    d                                 *   value options(*string)     
     * 
    Datenbereiche                                                 
    d Pfadname        s            255    dtaara
    MyDtaara   )
     /
    free                                                                         
        In 
    *Lock PfadName;                            // Holen Pfad-IFS aus DTAARA 
        
    Out PfadName;                                                              
        
    // Lesen IFS mit Hilfe der QSH                                             
        
    system'qsh cmd(''ls ' + %TrimPfadName ) +                              
                
    ' >/qsys.lib/MyLib.lib/MyFile.file/MyFile.mbr ' +          
                
    '2>/dev/null'')' );                                                
     /
    end-free 
    Und Mylib ist dabei nicht die QTEMP

    Gruß
    Ronald

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Ich weiß ja nicht, warum man das immer so kompliziert machen muss.
    Ein CLP ist da besser für geieignet.
    Zumal du dann z.B. STDOUT und STDERR direkt in eine PF überschreiben kannst.
    STDERR ist nicht zu vernachlässigen. "ls" schreibt da z.B. rein, wenn nichts gefunden wurde bzw. wenn die QSH einen Fehler vermerkt. Dieser wird nämlich nicht ins Joblog geschrieben.

    Wie ist denn der Pfadname aufgebaut?
    Wenn der Leerzeichen enthält musst du diesen in Hochkomma/Anführungszeichen setzen sonst funktioniert der "ls" nicht.

    QCMDEXC mit Monitor-Gruppe wäre besser geeignet, dann kommt der Aufruffehler CPF-Irgendwas in die SDS. "system()" fängt alle Fehler kommentarlos ab.
    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 2002
    Beiträge
    1.121
    Der Pfad sieht so aus:
    /HOME/BLABLA/

    Warum kein CL?
    Gute Frage. Sicher hatte ich mal nur ein Beispiel im RPG. Kann mir das ja mal mit dem CL anschauen..

    Von dem QCMDEXC hatte ich mich mal gelöst, da ich den System einfach besser fand..
    Gruß
    Ronald

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    ... das mit dem Cl, Geschmacksache, sagte der Affe und biss in die Seife.
    - system oder QCMDEXC? Ich bevorzuge da auch system, man sollte aber den Returncode abfragen und die CPF kriegt man da auch, da braucht es folgende Deklaration:
    d EXCP_MSGID s 7 import('_EXCP_MSGID')
    und da steht die dann drin (bei system ist der monitor bereits mit eingebaut)

    Ansonsten kann man den OVR auch aus dem RPG raus machen, wo ist da das Problem?

    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
    Feb 2001
    Beiträge
    20.207
    Ich habe ja nichts von "Problem" gesagt.
    Es gibt halt immer komplizierte und einfache Lösungen.
    Ich bevorzuge halt letztere.
    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
    May 2002
    Beiträge
    1.121
    Ich habe das Listing jetzt in ein CL gepackt.
    Sieht übersichtlicher aus.
    Danach hatte ich zwar das Problem mit Error 3489..
    .. Habe das dann aber ins QINTER geschubst. Sieht soweit nicht schlecht aus

    Danke
    Ronald

    hier das CL zum Listen
    PHP-Code:
    pgm                             
                                    
       dcl 
    &Path         *char   255
                                    
       rtvdtaara MyDtaara 
    &Path     
                                    
       cd 
    &path                     
                                    
       ovrdbf stdout MyLib
    /MyDirFile
       ovrdbf stderr MyLib
    /MyErrFile
                                    
         qsh cmd
    ('ls')              
                                    
       
    dltovr stdout                
       dltovr stderr                
                                    
    endpgm 
    Beide Files wurden vorher mit CRTPF RCDLEN(255) erzeugt

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Komisch, ich hatte da noch nie Probleme und ich benutze QSH sehr häufig.
    Leider komme ich an das Dokument nicht dran:
    http://www-01.ibm.com/support/docvie...d=nas8N1010013

    Ich löse ds gerne etwas anderes, da mit dem CD die Jobumgebung beeinflusst wird:

    chgvar &qsh ('cd "' *cat &path *tcat '";ls')
    qsh cmd(&qsh)
    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

  8. #8
    Registriert seit
    Aug 2009
    Beiträge
    121
    Das erwähnte Dokument erläutert, dass der Fehlercode 3489 daher kommen kann, dass im Subsystem QBATCH nur ein Job aktiv sein darf, die (Unix-artige) Umgebung QShell zum Ausführen des Befehls aber einen weiteren Job abspalten müsste. Abhilfe schaffen die Befehle:
    CHGSBSD SBSD(QBATCH) MAXJOBS(*NOMAX)
    CHGJOBQE SBSD(QBATCH) JOBQ(QGPL/QBATCH) MAXACT(*NOMAX) SEQNBR(10)

    Sollte man aber nur machen, wenn es auch okay ist, dass beliebig viele Jobs im QBATCH gleichzeitig laufen.

    Mit freundlichen Grüßen,
    Christian Bartels.

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    OK, deshalb habe ichden Fehler nicht.
    Im SBS ist *NOMAX definiert, je JOBQ-Prio aber nur 1.
    Der der QSH/JAVA-Job nicht per JOBQ reinkommt, zieht hier *NOMAX fürs SBS.
    Beim SBMJOB über JOBQ ist wieder nur 1 (ggf. je Prio) Job erlaubt.
    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. Unterordner auslesen OHNE QShell
    By NVNM in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 24-11-15, 09:06
  2. QShell: id -G <username>
    By hxiak in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 29-09-14, 14:55
  3. Qshell Umleitung find mit -exec in eine PF
    By hxiak in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 15-09-14, 19:15
  4. QShell: Dateien älter als 10 Minuten finden
    By rissling in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 17-07-14, 15:37
  5. FTP Batch
    By Stefan_R in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 19-10-01, 15:06

Berechtigungen

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