Some commands such as Create Duplicate Object (CRTDUPOBJ) require a library name, but hard-coding a library name in a CL program is not a good practice. A better method is to use the RTNLIB parameter of the RTVOBJD command to retrieve the library name. For example, suppose you want to create a duplicate object of a file called WKFILE into QTEMP, then call an RPG program. You could use the program shown in 1.
Some commands such as Create Duplicate Object (CRTDUPOBJ) require a library name, but hard-coding a library name in a CL program is not a good practice. A better method is to use the RTNLIB parameter of the RTVOBJD command to retrieve the library name. For example, suppose you want to create a duplicate object of a file called WKFILE into QTEMP, then call an RPG program. You could use the program shown in Figure 1.
This program could be run in a test library. Then the program and file could be moved to a production library without any changes. The library where the file exists could even be renamed without affecting the program.
TechTalk: Hard-coded Library Names are Bad News
Figure 1 Using RTVOBJD and RTNLIB
Figure 1: Using RTVOBJD and RTNLIB PGM DCL VAR(&LIB) TYPE(*CHAR) LEN(10) RTVOBJD OBJ(WKFILE) OBJTYPE(*FILE) RTNLIB(&LIB) CRTDUPOBJ OBJ(WKFILE) FROMLIB(&LIB) OBJTYPE(*FILE) + TOLIB(QTEMP) OVRDBF FILE(WKFILE) TOFILE(QTEMP/WKFILE) CALL PGM(RPG001) ENDPGM
LATEST COMMENTS
MC Press Online