[NEWSboard IBMi Forum]
Seite 1 von 3 1 2 ... Letzte

Thema: qsh

  1. #1
    Registriert seit
    May 2012
    Beiträge
    31

    qsh

    guten Morgen.

    Um eine DirectoryListe in der QTEMP zu erstellen benutze ich im CL QSH das funktioniert (habe ich hier gefunden).

    Jedoch wollte ich ein RPG benutzen (habe auch gelesen dass das mit QCMDEXEC genau so gehen sollte).

    Bei mir geschieht aber folgendes:
    QSH CMD(LS) wird im cl einfach ausgeführt ausgabe ist STDOUT (diese wurde vorher mit QTEMP überschrieben) der gleiche Befehl (auch vorher überschrieben) zeigt im RPG allerdings die Befehlseingabe von QSH. Die einzigste Möglichkeit im RPG diese Befehlseingabe zu unterbinden ist QSH CMD(LS > datei) aber dann bekomme ich die QTEMP nicht hin , mit einer erstellten Datei in einer andern LIB geht es.

    Wieso reagiert QSH im RPG anders als im CL ? . Ich denke es muss irgendwie mit STDOUT zusammenhängen.
    Muss da irgendwo etwas eingestellt werden
    Bin eigentlich mit der CL Lösung auch zufrieden , es würde mich eben nur interresieren.


    Viele Grüsse Volker.

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Die Reaktion ist nicht anders, Ursache ist die aktuelle Aktivierungsgruppe, für den der OVR gilt.
    QCMDEXC läuft in Default, während dein ILERPG (vermute ich mal) in QILE läuft.
    Erweitere deinen OVR mit OVRSCOPE(*JOB).
    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 2012
    Beiträge
    31
    Hallo,

    Vielen Dank für die Antwort , werde ich nächste Woche ausprobieren.

    Nun hätte ich allerdings noch 2 Fragen zu diesem Thema:

    1. Wenn ich mir die überschriebene STDOUT anschaue dann hat die die gleichen Felder (SRCSEQ,SRCDAT,SRCDTA) wie eine SRC PF ist das richtig ?

    2. Nach dem CD funktionieren unsere ImportRoutinen nicht mehr, weil die ja nochmals den kompletten Pfad mitgeben , aber durch den CD bin ich ja schon im Verzeichniss. Nun kann ich ein paarmal CD (..) machen oder der importRoutine nur den DateiNamen geben. Lieber wäre mir allerdings das Verzeichniss wieder auf den Pfad zu setzen der vorher war . Muss ich den dann vorher mit DSPCUrDIR (oder so ähnlich) holen oder gibt es da einen "Reset"

    Viele Grüße und einen schönen RestSonntag.

    Volker.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Einen Reset gibt es nicht. Jede Anwendung ist eigentlich für ihren Pfad selber verantwortlich.
    Root ist ein CD '/'.
    Der Default hängt i.d.R. vom USRPRF ab. Bestimmte Informationen lassen sich da auch mit RTVJOBA, RTVUSRPRF abfragen.
    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 2012
    Beiträge
    31
    Hallo,

    Danke.

    Muss allerdings nochmals nachhaken : Ist es richtig, dass die SRC PF genommen wird ?

    Ich hatte in einem anderen Thread mal das Problem dass ein Feld (SRCDAT) falsch gefüllt wurde und ich mir nicht erklären konnte was ich mit dem Feld zu schaffen hatte . Vielleicht liegt das Problem an einer Einstellung.

    Vielen Dank nochmals.

    Volker.

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Die Überschreibung einer STDOUT/STDERR erfordert i.d.R. vorher einen CRTPF mit einer Satzlänge von x (ich nehme meist 128).
    Ohne das vorherige Erstellen wird anscheinend eine SRCPF erstellt, so dass diese mit SEU bearbeitbar ist.
    Dabei wird dann halt nur das Textfeld geschrieben, während SRCSEQ und SRCDAT eben 0 bleiben.
    Das ist aber kein Problem.

    In normalen Quellen (SRC-PF) wird vom SEU-Editor die SRCSEQ und SRCDAT mit dem Datum der Erstellung/Änderung der Zeile in der Form JJMMTT gefüllt.
    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
    Registriert seit
    May 2012
    Beiträge
    31
    Hallo,

    Ich kann mit der SRC PF leben , nur wusste ich nicht ob die immer genommen wird .

    Nun habe ich aber doch noch eine Frage: nach dem QSH werden immer 2 JOBLOG's erzeugt. kann man die verhindern . Es sieht auch nicht nach einer Hinweismeldung aus .

    Vielen Dank nochmal

    Volker.

  8. #8
    Registriert seit
    Oct 2013
    Beiträge
    171
    Um in RPG ein IFS-Inhaltsverzeichnis zu lesen, würde ich die APIs opendir, readdir usw. verwenden.
    Scott Klement beschreibt das sehr gut.
    https://www.scottklement.com/rpg/ifs_ebook/opendir.html

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Dazu musst du mal zur Laufzeit die JOBD des QSH-Jobs herausfinden.
    Anscheinend hat da jemand an den Defaults gedreht und LOG(4 00 *SECLVL) statt LOG(4 00 *NOLIST) eingestellt.
    Es kann auch sein, dass die aktuelle Jobumgehung dazu verwendet wird.
    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

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Inzwischen gibt es zu den API's ebenso SQL-Funktionen und für das Lesen/Schreiben SQL-Variablen.
    Im *SNGSTG bis 16MB, im *TERASPACE (o.ä.) bis 2 TB.
    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

  11. #11
    Registriert seit
    May 2012
    Beiträge
    31
    Hallo,

    so habe jetzt alles so wie ich es will.

    Das mit den API bzw SQL werde ich mir am wochenende anschauen.

    Vielen Dank nochmals

    Volker.

  12. #12
    Registriert seit
    Jan 2007
    Beiträge
    189
    Sorry, dass ich spät zur Party angekommen.

    Leider sind die Article (INN Newsletter & Systemi Magazine) Links nicht mehr verfügbar. Ist aber hier zu lesen: http://www.support.ecofitonline.com/...-Tree-Contents
    CLLE pgm:
    Code:
     /********************************************************************/
    /* SYSTEM       - Systems                                           */
    /* AUTHOR       - Deon A von Blerk (EcofIT Ltd)                     */
    /* DATE         - 25/01/09                                          */
    /* Description  - List the IFS files for a directory tree           */
    /*                                                                  */
    /*     MODIFICATION HISTORY                                         */
    /*     ====================                                         */
    /*   Date     Nr  By/Reason                                         */
    /*   ----    ---  ---------                                         */
    /********************************************************************/
    PGM        PARM(&AttchPath &DocName &PgmError)
    DCL        VAR(&AttchPath) TYPE(*CHAR) LEN(64)
    DCL        VAR(&DocName) TYPE(*CHAR) LEN(32)
    DCL        VAR(&QSHSTMT) TYPE(*CHAR) LEN(200)
    DCL        VAR(&Exists) TYPE(*CHAR) LEN(2)
    DCL        VAR(&PgmError) TYPE(*CHAR) LEN(2)
     
    MONMSG     MSGID(CPF0000 QSH0000) EXEC(GOTO CMDLBL(FAIL))
     
    /********************************************************************/
    /* Create the workfiles                                             */
    /********************************************************************/
    DLTF       FILE(QTEMP/QSHLIST)
    MONMSG     MSGID(CPF0000)
    CRTPF      FILE(QTEMP/QSHLIST) RCDLEN(200)
    DLTF       FILE(QTEMP/QSHFIND)
    MONMSG     MSGID(CPF0000)
    CRTPF      FILE(QTEMP/QSHFIND) RCDLEN(200)
     
    /********************************************************************/
    /* Fill the data                                                    */
    /********************************************************************/
    OVRDBF     FILE(STDOUT) TOFILE(QTEMP/QSHLIST) OVRSCOPE(*JOB)
    CHGVAR     VAR(&QSHSTMT) VALUE('ls -lRT' *BCAT &AttchPath)
    QSH        CMD(&QSHSTMT)
    DLTOVR     FILE(STDOUT) LVL(*JOB)
     
    OVRDBF     FILE(STDOUT) TOFILE(QTEMP/QSHFIND) OVRSCOPE(*JOB)
    CHGVAR     VAR(&QSHSTMT) VALUE('find' *BCAT &AttchPath *TCAT '*')
    QSH        CMD(&QSHSTMT)
    DLTOVR     FILE(STDOUT) LVL(*JOB)
     
    /********************************************************************/
    /* Now check if the document exists                                 */
    /********************************************************************/
    CALLPRC    PRC(IFS50R) PARM(&DocName) RTNVAL(&PgmError)
    GOTO       CMDLBL(PERFECT)
     
    /********************************************************************/
    /* Fail                                                             */
    /********************************************************************/
    FAIL:
    DLTF       FILE(QTEMP/QSHLIST)
    MONMSG     MSGID(CPF0000)
    DLTF       FILE(QTEMP/QSHFIND)
    MONMSG     MSGID(CPF0000)
    CHGVAR     VAR(&PgmError) VALUE('01')
     
    /********************************************************************/
    /* EOJ                                                              */
    /********************************************************************/
    PERFECT:
    ENDPGM
    SQLRPGLE pgm:
    Code:
     
    Declare QSHDocs_csr cursor for
    with ListOut as 
    (select
    locate(':', QSHList, 51) -1 as Offset,
    QSHList
    from QSHList
    where substr(QSHList, 13, 1)  = '1'
    )
    select distinct QSHFind, 
    substr(QSHList, 47+Offset-5, 12) as DateTime,
    substr(QSHList, 55+Offset) as Document,
    substr(QSHList, 15, Offset+1) as Owner
    from QSHFind, ListOut
    where QSHFind like '%' concat trim(:DocName) concat '%'
    and substr(QSHList, 55+Offset)
    like '%' concat trim(:DocName) concat '%'; 
    mfg

    Kit
    www.ecofitonline.com
    DeskfIT - ChangefIT - XrefIT

Berechtigungen

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