View Full Version : Existenzprüfung einer Datei im IFS
Mit welchem Befehl in einem CL kann ich die Existenz eines bestimmten Dateinamens in einem IFS-Ordner abfragen?
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)
Es funktioniert auch mit CHKOUT.
Wenn CHKOUT erfolgreich war anschließend CHKIN.
Manfred
andreaspr@aon.at
08-12-14, 16:10
Oder mit einer C-Funktion ...
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
Und noch eine Variante ;-)
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
Danke für die Tipps. WRKLNK mit entspr. MONMSG-Nr. bringt mich weiter.
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.
Nachtrag 2:
Im Dialog muss der Bediener dann auch noch Enter drücken wenn die Datei da ist, damit dein Programm weitermacht.
Ja klar, meinte auch "DSPLNK"
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?