[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Apr 2012
    Beiträge
    360

    QSH0005 Status 2

    Hallo,

    habe mir vor einiger Zeit ein CL geschrieben, was mit QSHELL von IFS in die Datei EDIMP01P ausliest.

    Das Programm hat toll funktioniert.

    Jetzt habe ich eine ähnliche Anforderung und habe mir das Programm kopiert, das PF ausgetaucht mit EDIHLDFP(statt EDIMP01P) und den Ordnerpfad geändert.

    Bekomme aber die Fehlermeldung QSH005 Status 2
    Code:
    cd /EDI/EINK/DE/OUT/TST1/ && ls *.csv > /QSYS.LIB/T_DTA.LIB/EDIHLDFP.FILE/EDIHLDFP.MBR                                       
    qsh: 001-0055 Fehler beim Erstellen der Datei /QSYS.LIB/T_DTA.LIB/EDIHLDFP.FILE/EDIHLDFP.MBR gefunden. 
    Operation nicht unterstützt.
    Die Datei hat auch alle Berechtigungen.

    Sobald ich die Datei EDIHLDFP mit der alten austausche(EDIMP01P), funktioniert es wieder.

    Kann mir jemand einen Tip geben, was ich noch prüfen kann, bzw wo ich mich am besten über dieses Thema einlesen kann?

    lg


    Code:
     
    /******************************************************************************/                    
    /*                                                                            */                    
    /*   PROGRAM NAME   : EDIHLDFIC                                               */                    
    /*                                                                            */                    
    /*   DESCRIPTION    : IMPORT CSV FOR EINKAUF                                  */                    
    /*                                                                            */                    
    /*   CREATION       :                                                         */                    
    /*                                                                            */                    
    /******************************************************************************/                    
                 PGM                                                                                    
                                                                                                       
                 DCL        VAR(&LOOP) TYPE(*LGL) VALUE('1')                                            
                 DCL        VAR(&NBRREC) TYPE(*DEC) LEN(10 0)                                           
                 DCL        VAR(&CMD) TYPE(*CHAR) LEN(500)                                              
                 DCL        VAR(&STMFIL) TYPE(*CHAR) LEN(512)                                           
                 DCL        VAR(&MOV) TYPE(*CHAR) LEN(512)                                              
                 DCL        VAR(&IFSPATH) TYPE(*CHAR) LEN(22) +                                         
                              VALUE('/EDI/EINK/DE/OUT/TST1/')                                           
                 DCL        VAR(&TIMESTMP) TYPE(*CHAR) LEN(20)                                          
                 DCL        VAR(&PSTR) TYPE(*CHAR) LEN(512)                                             
                                                                                                       
                 DCL        VAR(&STR) TYPE(*CHAR) LEN(513)                                              
                 DCL        VAR(&SRCH) TYPE(*CHAR) LEN(4)                                               
                 DCL        VAR(&X00) TYPE(*CHAR) LEN(1) VALUE(X'00')                                   
                                                                                                        
                 DCL        VAR(&POS) TYPE(*INT) LEN(4)                                                 
                 DCL        VAR(&LOWER) TYPE(*CHAR) LEN(512)                                            
                 DCL        VAR(&UPPER) TYPE(*CHAR) LEN(512)                                            
                            /* Uppercase based on job default CCSID */                                  
                 DCL        VAR(&REQUEST) TYPE(*CHAR) LEN(22) +                                         
                              VALUE(X'00000001000000000000000000000000000+                              
                              000000000')                                                               
                                                                                                       
                 DCL        VAR(&LENGTH) TYPE(*INT) LEN(4) VALUE(512)                                   
                 DCL        VAR(&ERRCODE) TYPE(*INT) LEN(4) VALUE(0)                                    
                 DCL        VAR(&USER) TYPE(*CHAR) LEN(10)                                              
                                                                                                       
                 DCL        VAR(&MSGID) TYPE(*CHAR) LEN(7)                                              
                 DCL        VAR(&MSGDTA) TYPE(*CHAR) LEN(256)                                           
                 DCL        VAR(&RESULT) TYPE(*CHAR) LEN(4)                                             
                 DCL        VAR(&STATUS) TYPE(*DEC) LEN(10 0)                                           
                 DCL        VAR(&SIGNAL) TYPE(*DEC) LEN(10 0)                                           
                 DCL        VAR(&CHARSTAT) TYPE(*CHAR) LEN(10)                                          
                 DCL        VAR(&CHARSIG) TYPE(*CHAR) LEN(10)                                           
                                                                                                        
                 DCLF       FILE(EDIHLDFP)                                                              
                                                                                                       
                 /*========================================*/                                           
                 /* MAIN                                   */                                           
                 /*========================================*/                                           
                 RTVJOBA    USER(&USER)                                                                 
                 CHGVAR     VAR(&SRCH) VALUE('.CSV' *CAT &X00)                                          
                                                                                                        
                                                                                                       
                 /* CREATE A FILE TO PUT LIST IN.  NOTE THAT THIS CANNOT BE +                           
                    IN QTEMP, SINCE QSHELL CANNOT ACCESS QTEMP              */                          
                 CHKOBJ     OBJ(T_DTA/EDIHLDFP) OBJTYPE(*FILE)                                      
                 MONMSG     MSGID(CPF9801) EXEC(DO)                                                     
                 CRTPF      FILE(T_DTA/EDIHLDFP) RCDLEN(512)                                        
                 ENDDO                                                                                  
                                                                                                       
                 /*  LIST ALL FILES FROM IFS IN THE EDIHLDFP FILE */                                    
                 CLRPFM     FILE(T_DTA/EDIHLDFP)                                                    
                                                                                                       
                 RMVENVVAR  ENVVAR(QIBM_QSH_CMD_OUTPUT)                                                 
                 MONMSG     MSGID(CPFA981) /* ENVVAR DOES NOT EXIST */                                  
                                                                                                        
                 RMVENVVAR  ENVVAR(QIBM_QSH_CMD_ESCAPE_MSG)                                             
                 MONMSG     MSGID(CPFA981) /* ENVVAR DOES NOT EXIST */                                  
                 /* SET THE COMMAND OUTPUT TO NONE, AND TELL QSH TO ISSUE +                             
                   ESCAPE MESSAGES FOR ERRORS.                               */                         
                                                                                                        
                 ADDENVVAR  ENVVAR(QIBM_QSH_CMD_OUTPUT) VALUE(NONE)                                     
                 ADDENVVAR  ENVVAR(QIBM_QSH_CMD_ESCAPE_MSG) VALUE(Y)                                    
                                                                                                        
                 /* EXECUTE QSHELL COMMAND */                                                           
                 CHGVAR     VAR(&CMD) VALUE('cd' *BCAT &IFSPATH *BCAT +                                 
                              '&&' *BCAT 'ls *.csv >' *BCAT +                                           
                              '/QSYS.LIB/T_DTA.LIB/EDIHLDFP.FILE/EDIH+                              
                              LDFP.MBR')                                                                
                 STRQSH     CMD(&CMD)                                                                   
                                                                                                        
                 /* HANDLE ERRORS. */                                                                   
                 MONMSG     MSGID(QSH0005 QSH0006 QSH0007) EXEC(DO)                                     
                                                                                                        
                 RCVMSG     MSGTYPE(*LAST) RMV(*YES) MSGDTA(&MSGDTA) +                                  
                              MSGID(&MSGID)                                                             
                 /* CPF0005 - QSHELL COMMAND ENDED "NORMALLY."           +                              
                                                                              +                         
                           NOTE:  THIS DOES *NOT* MEAN THAT THE COMMAND       +                         
                                  SUCCEEDED, BUT RATHER THAT THE COMMAND      +                         
                                  WAS NOT ENDED BY ANOTHER PROGRAM OR BY SOME +                         
                                  KIND OF FAILURE. (THIS IS THE MOST COMMON   +                         
                                  MESSAGE)                                   */                         
                                                                                                        
                 IF         COND(&MSGID *EQ 'QSH0005') THEN(DO)                                         
                            CHGVAR VAR(&RESULT) VALUE(%SST(&MSGDTA 1 4))                                
                            CHGVAR VAR(&STATUS) VALUE(%BIN(&RESULT))                                    
                            CHGVAR VAR(&SIGNAL) VALUE(0)                                                
                 ENDDO                                                                                  
                                                                                                       
                 /* QSH0006 - QSHELL COMMAND ENDED WHEN IT RECEIVED A SIGNAL. */                        
                 IF         COND(&MSGID *EQ 'QSH0006') THEN(DO)                                         
                            CHGVAR VAR(&RESULT) VALUE(%SST(&MSGDTA 1 4))                                
                            CHGVAR VAR(&SIGNAL) VALUE(%BIN(&RESULT))                                    
                            CHGVAR VAR(&STATUS) VALUE(-1)                                               
                 ENDDO                                                                                  
                                                                                                       
                           /* QSH0007 - QSHELL COMMAND ENDED DUE TO AN EXCEPTION,  +                    
                                FOR EXAMPLE THE PROGRAM CRASHED WITH A CPF MSG.   */                    
                                                                                                       
                 IF         COND(&MSGID *EQ 'QSH0007') THEN(DO)                                         
                 CHGVAR     VAR(&STATUS) VALUE(-1)                                                      
                 CHGVAR     VAR(&SIGNAL) VALUE(-1)                                                      
                 ENDDO                                                                                  
                 ENDDO                                                                                  
                                                                                                        
                 /* WHEN &STATUS IS NOT ZERO, WE KNOW OUR COMMAND FAILED.    +                          
                           HERE WE CAN TRY TO HANDLE THE ERROR IF WE LIKE           +                   
                                                                                    +                   
                           THE POSSIBLE VALUES ARE DIFFERENT FOR EACH QSHELL        +                   
                           COMMAND, SO FOR THE SAKE OF DEMONSTRATION, I'LL JUST     +                   
                           SEND AN ESCAPE MESSAGE.                                 */                   
                                                                                                       
                 IF         COND(&STATUS *NE 0) THEN(DO)                                                
                 CHGVAR     VAR(&CHARSTAT) VALUE(&STATUS)                                               
                 CHGVAR     VAR(&CHARSIG) VALUE(&SIGNAL)                                                
                 SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA('QShell +                               
                              command failed with status ' *CAT +                                       
                              &CHARSTAT *CAT ' and signal ' *CAT &CHARSIG)                              
                 ENDDO                                                                                  
                                                                                                        
                 /* RESTORE DEFAULT BEHAVIOR */                                                         
                 CHGENVVAR  ENVVAR(QIBM_QSH_CMD_OUTPUT) VALUE(NONE)                                     
                 CHGENVVAR  ENVVAR(QIBM_QSH_CMD_ESCAPE_MSG) VALUE(Y)                                    
                                                                                                       
                 /* READ FILENAMES WHAT ARE LISTED  */                                                  
                 DOWHILE COND(&LOOP)                                                                    
                 RCVF                                                                                   
                 MONMSG     MSGID(CPF0864) EXEC(LEAVE)                                                  
                   :                                                                                     
                   :
                 ENDDO

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Prüfe den genauen Pfad der Ziel-Datei, denn ein Erstellen geht nur im IFS.
    Manchmal (durch CRTDUPOBJ) ändert sich zwar der Datei- aber nicht der Membername.
    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
    Apr 2012
    Beiträge
    360
    Mit wrklnk bin ich bis zum Member gekommen.
    Die neue Datei wurde mit CRTPF (opiton 14) erstellt.
    Von den Objektberechtigungen sind beide Dateien auch gleich.

  4. #4
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    wir machen das so:
    Code:
          /* Alle Textdateien im Pfad auflisten und nach qtemp/T_IFS     */ 
    dclf qtemp/t_ifs        /* vorher mit SL 512 erstellen */
                  CHGVAR     VAR(&QSHC) VALUE('cd ' *CAT &HK *CAT +         
                               &FROMFILE *TCAT &HK *BCAT ' && ls +          
                               *.[Tt][Xx][Tt]')                             
                  OVRDBF     FILE(STDOUT) TOFILE(QTEMP/T_IFS) OVRSCOPE(*JOB)
                  CHGJOB     JOB(*) LOG(4 0 *NOLIST)                        
                  STRQSH     CMD(&QSHC)                                     
                  DLTOVR     FILE(STDOUT) LVL(*JOB)                         
                  CHGJOB     JOB(*) LOG(4 0 *SECLVL)                        
     RCV:         RCVF                                                      
                  MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(WEIT))         
       /*  nix gefunden                                        */           
                  IF         COND(%SST(&T_IFS 1 6) *EQ '      ') +          
                               THEN(GOTO CMDLBL(WEIT))                         /* leer 1 */
                  IF         COND(%SST(&T_IFS 1 7) *EQ 'ls: 001') +         
                               THEN(GOTO CMDLBL(WEIT))                          /* leer 2 */
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Könnte es sein, dass die Datei ggf. geöffnet ist?
    Die Ausgabe per ">" macht einen CLRPFM, was dann natürlich nicht geht.
    Schau mal ins Joblog, ob es noch eine detaillierte Meldung gibt.
    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
    Apr 2012
    Beiträge
    360
    Leider ist Joblog unauffällig:
    Code:
    Inhalt der Teildatei EDIHLDFP in Datei EDIHLDFP in T_DTA gelöscht.     
    Umgebungsvariable ist nicht vorhanden.                                     
    Umgebungsvariable ist nicht vorhanden.                                     
    Umgebungsvariable hinzugefügt.                                             
    Umgebungsvariable hinzugefügt.                                             
    Befehl wurde normal mit Ausführungsstatus 2 beendet.
                           Weitere Nachrichteninformationen                     
                                                                               
    Nachrichten-ID . . . . :   QSH0005       Bewertung  . . . . . . :   00      
    Nachrichtenart . . . . :   Abbruch                                          
    Sendedatum . . . . . . :   17.08.14      Sendezeit  . . . . . . :   13:32:40
                                                                               
    Nachricht . . . :   Befehl wurde normal mit Ausführungsstatus 2 beendet.

Similar Threads

  1. Spools erhalten Status HLD
    By Amadis in forum NEWSboard Drucker
    Antworten: 6
    Letzter Beitrag: 19-10-15, 16:37
  2. Programm Status Datenstruktur
    By lucullus in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 17-01-14, 10:14
  3. Spools Status Fin
    By pille in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 28-11-02, 09:37
  4. Drucker steht in Status PND?
    By H.V in forum NEWSboard Drucker
    Antworten: 1
    Letzter Beitrag: 10-07-02, 14:03
  5. SPLF Status ändern
    By procher in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 11-06-01, 12:51

Berechtigungen

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