View Full Version : Schräg: MKDir mit QCMDEXC und interaktiv
camouflage
16-01-14, 15:51
Ich prüfe mit MKDIR ob ein Verzeichnis schon vorhanden ist.
siehe hier:
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.
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.
Versuch mal statt der monitor group, CALLP(E) und %ERROR zu verwenden.
Birgitta
Hi,
ich hatte mir da mal was gebastelt, ob zu testen ob es schon das Objekt im IFS gibt.
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( %Trim( PM_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
camouflage
16-01-14, 16:21
@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 ;-)
camouflage
16-01-14, 16:24
@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.
@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