IBM Support

Program to Rename Directory Entries

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

Document Information

Modified date:
18 December 2019

UID

nas8N1017586