PDA

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.

Fuerchau
16-01-14, 16:01
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.

B.Hauser
16-01-14, 16:10
Versuch mal statt der monitor group, CALLP(E) und %ERROR zu verwenden.

Birgitta

malzusrex
16-01-14, 16:20
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.

B.Hauser
16-01-14, 17:07
@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