With the use of the AS/400 (iSeries) Integrated File System (IFS) becoming more widely spread, wouldn't it be nice to be able to check for the existence of an object (link) before attempting to use it? Here's how I did it.
CL program CHKOBJLNKC:
/* CHECK OBJECT LINK */ PGM PARM(&OBJ &OBJERROR) DCL VAR(&OBJ) TYPE(*CHAR) LEN(512) DCL VAR(&OBJERROR) TYPE(*LGL) DCL VAR(&OFF) TYPE(*LGL) VALUE('0') DCL VAR(&ON) TYPE(*LGL) VALUE('1') DCL VAR(&SPLF) TYPE(*CHAR) LEN(10) VALUE(CHKOBJLNK) /* TURN ERROR FLAG OFF */ CHGVAR VAR(&OBJERROR) VALUE(&OFF) /* CHECK TO SEE IF THE OBJECT EXISTS */ OVRPRTF FILE(*PRTF) HOLD(*YES) SPLFNAME(&SPLF) + OVRSCOPE(*CALLLVL) DSPLNK OBJ(&OBJ) OUTPUT(*PRINT) OBJTYPE(*ALL) + DETAIL(*BASIC) DSPOPT(*USER) MONMSG MSGID(CPFA0A9) EXEC(CHGVAR VAR(&OBJERROR) + VALUE(&ON)) /* DELETE THE SPOOL FILE */ DLTSPLF FILE(&SPLF) SPLNBR(*LAST) MONMSG MSGID(CPF0000) ENDPGM
/* CHECK OBJECT LINK */ CMD PROMPT('Check object link') PARM KWD(OBJ) TYPE(*PNAME) LEN(512) MIN(1) + PROMPT('Object Link to check') PARM KWD(OBJERROR) TYPE(*LGL) RTNVAL(*YES) + PROMPT('Object error')
Compile the CL program CHKOBJLNKC. Then compile the command CHKOBJLNK -- specifying PGM(CHKOBJLNKC) on the compile options. Now you have a simple command to call wherever you want to check for the existence of an IFS object.
MORE INFORMATION ON THIS TOPIC
The Best Web Links: tips, tutorials and more.
Ask your programming questions--or help out your peers by answering them--in our live discussion forums.
Ask the Experts yourself: Our application development gurus are waiting to answer your programming questions.