[NEWSboard IBMi Forum]
  1. #1
    dino is offline [professional_User]
    Registriert seit
    May 2006
    Beiträge
    341

    Existenzprüfung einer Datei im IFS

    Mit welchem Befehl in einem CL kann ich die Existenz eines bestimmten Dateinamens in einem IFS-Ordner abfragen?

  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    Wir machen das seid gefühlten 20 Jahren so


    CHGVAR VAR(&PFAD) VALUE(&PFAD *TCAT &IFSFILE)
    CHGVAR VAR(&PFAD2) VALUE(&PFAD *TCAT '#')
    CHGVAR VAR(&IFS2) VALUE(&IFSFILE *TCAT '#')


    RNM OBJ(&PFAD) NEWOBJ(&IFS2)
    MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(FEHLER))
    RNM OBJ(&PFAD2) NEWOBJ(&IFSFILE)
    MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(FEHLER))
    GOTO CMDLBL(ENDE)

    Robi
    (der weis das es warsch. eleganter geht)
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  3. #3
    Registriert seit
    Dec 2002
    Beiträge
    37
    Es funktioniert auch mit CHKOUT.

    Wenn CHKOUT erfolgreich war anschließend CHKIN.

    Manfred

  4. #4
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Oder mit einer C-Funktion ...

    Code:
    PGM        PARM(&OBJ)                                    
                                                              
    DCL        VAR(&OBJ)      TYPE(*CHAR) LEN(256)           
    DCL        VAR(&RTNVALINT) TYPE(*CHAR) LEN(4)             
    DCL        VAR(&RTNVAL)    TYPE(*CHAR) LEN(2)             
    DCL        VAR(&PATH)      TYPE(*CHAR) LEN(100)           
    DCL        VAR(&END)      TYPE(*CHAR) LEN(1) VALUE(X'00')
    DCL        VAR(&BUF)       TYPE(*CHAR) LEN(4096)          
                                                              
    CHGVAR     VAR(&PATH) VALUE(&OBJ *TCAT &END)            
                                                              
    CALLPRC    PRC('stat') PARM(&PATH &BUF) +                 
                 RTNVAL(%BIN(&RTNVALINT 1 4))                 
                                                              
    CHGVAR     VAR(&RTNVAL) VALUE(%BIN(&RTNVALINT))   
                                                      
    IF         COND(&RTNVAL *NE '00') THEN(SNDPGMMSG +
                 MSGID(CPF9897) MSGF(QCPFMSG) +       
                 MSGDTA('Object ' *TCAT &OBJ *BCAT ' not + 
                 found.') MSGTYPE(*ESCAPE))           
                                                      
    ENDPGM

  5. #5
    Registriert seit
    May 2002
    Beiträge
    1.121
    Und noch eine Variante ;-)
    PHP-Code:
    d File            s               *                                  
    d rc              s             10I 0                                
    d F_OK            c                   
    const(0)                       
    d                                                                    
    d PM_File         s            255                                   
    d PM_Return       s               n                                  
    d                                                                    
    d True            c                   
    *On                            
    d False           c                   
    *Off                           
    d                                                                    
     
    *-- IFS stream file functions: -----------------------------------**
    d access          Pr            10I 0 ExtProc'access' )            
    d  dPath                          *   value  Options( *String )      
    d  amode                        10i 0 value                          
                                                                         
    c     
    *Entry        PList                                            
    c                   Parm                    PM_File                  
    c                   Parm                    PM_Return                
    c                                                                    
    C                   
    If        access( %TrimPM_File ) : F_OK) <> 0  
    C                   
    Eval      PM_Return   False                    
    C                   
    Else                                             
    C                   Eval      PM_Return   True                     
    c                   
    EndIf                                            
    c                                                                    
    c                   
    Eval      *InLr True 

  6. #6
    dino is offline [professional_User]
    Registriert seit
    May 2006
    Beiträge
    341
    Danke für die Tipps. WRKLNK mit entspr. MONMSG-Nr. bringt mich weiter.

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Bedenke:
    WRKLNK ist ein Dialog-Befehl!
    Wenn du im Batch bist, schlägt der Befehl auch mit Fehler zu wenn die Datei existiert aber kein Bildschirm da ist.

    Im CLP bist du mit CHKOUT/CHKIN besser bedient.
    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
    Feb 2001
    Beiträge
    20.241
    Nachtrag 2:
    Im Dialog muss der Bediener dann auch noch Enter drücken wenn die Datei da ist, damit dein Programm weitermacht.
    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

  9. #9
    dino is offline [professional_User]
    Registriert seit
    May 2006
    Beiträge
    341
    Ja klar, meinte auch "DSPLNK"

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Tut mir leid, aber auch das ist blöd.
    Wenn die Datei da ist gibt's immer einen Spool, wer soll was damit machen?

    Warum wehrst du dich so gegen die CHKxxx-Befehle?
    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. Antworten: 6
    Letzter Beitrag: 22-04-14, 14:30
  2. Antworten: 1
    Letzter Beitrag: 17-10-02, 13:32
  3. Antworten: 3
    Letzter Beitrag: 29-10-01, 10:07
  4. Warum wird eine Kopie einer log. Datei erstellt
    By hs in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 27-09-01, 11:25
  5. Sätze einer Datei zählen
    By Ursus in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 09-08-01, 07:59

Berechtigungen

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