[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2007
    Beiträge
    905

    Schräg: MKDir mit QCMDEXC und interaktiv

    Ich prüfe mit MKDIR ob ein Verzeichnis schon vorhanden ist.

    siehe hier:
    Code:
     Cmd = 'MKDIR DIR(''' + %trim(Path) + ''')';  
     monitor ;                                    
       QCmdExc(Cmd:%len(Cmd)) ;                   
       on-error ;                                 
         if (PgmDS.ErrCde = 'CPFA0A9') ;
    Der CPFA0A9 soll mir dann einen QSH mkdir -p anstossen.

    Im Debugger erhalte ich jedoch den CPFA0A0, während dessen der gleiche Command interaktiv den richtigen Fehlercode produziert. (Dir gibt es nicht!)

    Ich bin ein bisschen ratlos - kennt das jemand? Oder fahr ich mit einem CL gleich besser?

    Danke.
    kf

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Schau mal ins Joblog, da steht dann der Objektname.
    Es kann auch einen Fehler mit der Berechtigung geben, sicher ist das so nicht.
    Sind denn auch alle Teile des Pfades vorhanden?
    Wenn bei MKDIR 'A/B/C' der Pfad '/A/B' fehlt, kann C nicht erstellt werden.

    MKDIR zur Objektprüfung ist wohl nicht der beste Weg, da du im Zweifel das Verzeichnis ja direkt anlegst.
    Dem Ersteller gehört es dann, Public ist *Exclude, so dass der nächste User mit Berechtigungsfehler rausfliegt.
    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 2001
    Beiträge
    2.873
    Versuch mal statt der monitor group, CALLP(E) und %ERROR zu verwenden.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  4. #4
    Registriert seit
    May 2002
    Beiträge
    1.121
    Hi,

    ich hatte mir da mal was gebastelt, ob zu testen ob es schon das Objekt im IFS gibt.
    PHP-Code:
    h Option( *SrcStmt DftActGrp( *No BndDir'QC2LE' )                    
    h datfmt(*dmy.) timfmt(*hms:) datedit(*dmy.) decedit('0,'debug(*yes)     

    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 
    PM_Return = True, dann ist das Objekt im IFS schon da.


    Gruß
    Ronald

  5. #5
    Registriert seit
    Jan 2007
    Beiträge
    905
    @Baldur

    Das ist ja der Trick, normalerweise habe ich einen Directory Tree wie AAA/BBB/CCC/2014/01...
    MKDIR erlaubt mir nicht, dass ich gleich alle Directories erstellen kann - aber "qsh mkdir -p -m 775 ...""
    schon, inkl. Berechtigungen. Allerdings hab ich schon AAA/BBB/CCC/2014 erstellt mir der MKDIR schon das Directory und ich brauch dann den QSH nicht - alles klar?

    @Birgitta
    Das werd ich mal versuchen - auch wenn mir die andere Schreibweise besser gefällt ;-)
    kf

  6. #6
    Registriert seit
    Jan 2007
    Beiträge
    905
    @Ronald

    Es geht mir weniger um die Existenzprüfung (das würde mit CHKIN/CHKOUT auch funktionieren), vielmehr um den MKDIR. Trotzdem, vielen Dank für die Mühe.
    kf

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    @Camouflage:
    Mir gefällt die andere Schreibweise auch besser, aber Monitor und Erweiterung (E) und %Error greifen auf unterschiedliche Message-Stufen zu. %ERROR zeigt die direkte Message an, während ON-ERROR eine übergeordnete Message anzeigt.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Similar Threads

  1. RUNSQLSTM falsch aber Interaktiv OK
    By BerndF in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 10-04-03, 07:01
  2. Neue Preise für RAM, Interaktiv + 17 GB
    By Reinhard Düvel in forum NEWSboard Server & Hardware Markt
    Antworten: 1
    Letzter Beitrag: 06-05-02, 13:34
  3. Remote CMD auf NT Rechner Interaktiv ausführen
    By K_Tippi in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 27-03-01, 09:17

Berechtigungen

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