PDA

View Full Version : prüfen ob STMF in IFS-Verzeichnis vorhanden



CZE425
23-10-02, 08:29
Hallo Forum,
kennt jemand eine Möglichkeit wie man in einem CLP prüft ob eine STMF im Verzeichnis (z.B. home\cze425\) vorhanden ist oder nicht und abhängig davon die Weiterverarbeitung steuert?

mfg
HC

lossin
23-10-02, 08:45
Hallo,
einen einfachen Befehl kenne ich auch nicht.
Aber vielleicht DSPLNK auf das gewünschte Objekt machen und mit MONMSG abfangen, wenn es nicht vorhanden ist.

Holger

Fuerchau
23-10-02, 08:46
z.B. mit CPYFRMSTMF in Bibliothek QTEMP, abfangen mit MONMSG CPF0000.
Wenn eine Fehler auftritt, ist die Datei (wenn die Parameter stimme) nicht vorhanden.

Joe
23-10-02, 08:46
Hallo.
Mit dem Befehl WRKLNK kannst Du in einem
CL-Pgm. das Objekt prüfen. Fehlermeldungen sind in der BEfehlsbeschreibung angegeben.
Gruss Joe

Joe
23-10-02, 09:15
Sorry.

Natürlich ist DSPLNK mit Ausgabe *PRINT besser. Bei WRKLNK gibt es bei Vorhandensein einen prompt.



<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>Original erstellt von Joe:
Hallo.
Mit dem Befehl WRKLNK kannst Du in einem
CL-Pgm. das Objekt prüfen. Fehlermeldungen sind in der BEfehlsbeschreibung angegeben.
Gruss Joe [/quote]

B.Hauser
23-10-02, 10:45
Hallo,

es besteht auch die Möglichkeit die Funktion stat() zu benutzen.

Die Quellen-Art für das CL muss CLLE und nicht CLP sein.
(Nur in ILE ist CALLPRC möglich)
Anbei ein Beispiel für ein CL-Program.

RTCCDE '1': Objekt vorhanden
RTCCDE '0': Objekt nicht vorhanden

IFSOBJ: z.B. mydir/myfile.ext
qsys.lib/mylib.lib/myfile.file

PGM PARM(&IFSOBJ &RtnCde)

DCL VAR(&IFSOBJ) TYPE(*CHAR) LEN(256)
DCL VAR(&RECEIVER) TYPE(*CHAR) LEN(4096)
DCL VAR(&RTNVALBIN) TYPE(*CHAR) LEN(4)
DCL VAR(&RTNVALDEC) TYPE(*DEC) LEN(5 0)
DCL VAR(&NULL) TYPE(*CHAR) LEN(1) VALUE(X'00')

DCL VAR(&RTNCDE) TYPE(*CHAR) LEN(1)

CHGVAR VAR(&RTNCDE) VALUE(' ')
CHGVAR VAR(&IFSOBJ) VALUE(&IFSOBJ *TCAT &NULL)

CALLPRC PRC('stat') PARM(&IFSOBJ &RECEIVER) +
RTNVAL(%BIN(&RTNVALBIN))

CHGVAR VAR(&RTNVALDEC) VALUE(%BIN(&RTNVALBIN))

IF COND(&RTNVALDEC *EQ 0) +
THEN(CHGVAR VAR(&RTNCDE) VALUE('1'))
ELSE CHGVAR VAR(&RTNCDE) VALUE('0')

END: ENDPGM
Birgitta

CZE425
23-10-02, 11:56
Liebe Forum-Teilnehmer,
danke für die prompte Reaktion. Habt mir sehr geholfen.
Chiao
HC