Troubleshooting
Problem
This note provides the source for a CL program that will rename directory entries, so that all entries that have a specified address will be changed to a new specified address.
Resolving The Problem
This document assists with bulk users rather using than the Rename Directory Entry (RNMDIRE) command or the Work with Directory Entries (WRKDIRE) command with Option 7 (Rename).
| Caution: This program is not supported by IBM. This note provides the source for a simple CL program that can be used to rename directory entries. This program can be very useful to rename all the directory entries when the system name is changed resulting in a need to change all the directory entries having the old system name as their address. The system must be in restricted state when this program is run as noted below in the program source. |
/*********************************************************************/
/*Q##RNDIRE IS A SIMPLE PROGRAM THAT MAY BE USED TO EASILY */
/* RENAME DIRECTORY ENTRIES SUCH THAT ALL ENTRIES THAT HAVE A */
/* SPECIFIED ADDRESS WILL BE CHANGED TO A NEW SPECIFIED ADDRESS. */
/* THIS IS PROGRAM IS NOT SUPPORTED BY IBM®. */
/* */
/*PROGRAM ACTIVATION */
/* */
/* THIS PROGRAM MAY BE ACTIVATED VIA A CALL WITH THE FOLLOWING */
/* PARAMETERS: */
/* */
/* CALL LIBNAM/Q##RNDIRE (OLDADDR NEWADDR) */
/* */
/* WHERE: */
/* */
/* OLDADDR IS THE OLD ADDRESS AND NEWADDR IS THE NEW ADDRESS. */
/* */
/* THE SYSTEM MUST BE IN RESTRICTED STATE WHEN THE PROGRAM IS */
/* CALLED. IF THE SYSTEM IS NOT IN RESTRICTED STATE THEN A */
/* CPF897F ERROR WILL BE ISSUED WHEN THE PROGRAM ATTEMPTS TO RENAME */
/* A DIRECTORY ENTRY. */
/* */
/* CRTCLPGM REQUIREMENTS: */
/* */
/* THE SOURCE FOR THIS PROGRAM CONTAINS A DCLF COMMAND WHICH */
/* REFERENCES FILE (QGPL/Q##RNDIRE). */
/* */
/* THIS OUTFILE MUST EXIST IN QGPL BEFORE THE PROGRAM WILL */
/* COMPILE WITHOUT ERRORS. THE FILE MAY BE CREATED VIA THE */
/* FOLLOWING: */
/* */
/* DSPDIRE OUTPUT(*OUTFILE) OUTFILE(QGPL/Q##RNDIRE) */
/* */
/*********************************************************************/
/* */
PGM PARM(&OLDADDR &NEWADDR)
/* */
DCLF FILE(QGPL/Q##RNDIRE) /*GET VARIABLE FIELD */
/* NAMES FROM */
/*FILE CREATED BY DSPDIRE */
/* */
/********************************************************************/
/* */
/* DECLARE PARAMETER VARIABLES. */
/* */
/********************************************************************/
DCL &OLDADDR TYPE(*CHAR) LEN(10) /* OLD ADDRESS */
DCL &NEWADDR TYPE(*CHAR) LEN(8) /* NEW ADDRESS */
/********************************************************************/
/* */
/* DELETE QGPL/Q##RMDIRE FILE IF IT EXISTS. */
/* */
/********************************************************************/
DLTF QGPL/Q##RNDIRE
MONMSG MSGID(CPF0000)
/********************************************************************/
/* */
/* GENERATE OUTFILE FOR DIRECTORY ENTRIES */
/* */
/********************************************************************/
DSPDIRE OUTPUT(*OUTFILE) OUTFILE(QGPL/Q##RNDIRE)
/********************************************************************/
/* */
/* PROCESS DIRECTORY ENTRY FILE */
/* */
/********************************************************************/
READNXTREC:
RCVF /*READ A RECORD FROM THE FILE */
/* QGPL/Q##GRTOWN */
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(TERMINATE))
IF COND(&OLDADDR *NE &WOSDDGN) THEN(GOTO CMDLBL(READNXTREC))
RNMDIRE OLDUSRID(&WOSDDEN &WOSDDGN) +
NEWUSRID(&WOSDDEN &NEWADDR)
GOTO READNXTREC
TERMINATE:
DLTF QGPL/Q##RNDIRE
MONMSG MSGID(CPF0000)
ENDPGM
[{"Product":{"code":"SWG60","label":"IBM i"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Component":"Communications-SNA","Platform":[{"code":"PF012","label":"IBM i"}],"Version":"Version Independent","Edition":"","Line of Business":{"code":"LOB57","label":"Power"}}]
Historical Number
21422208
Was this topic helpful?
Document Information
Modified date:
18 December 2019
UID
nas8N1017586