Using the PDM option to see object use

Know when a program or object was last used so you can determine if it can be archived and deleted.

I often want to know when a program or object was last used, or if ever used, so I can determine if it can be archived...

and deleted.

In PDM, set this program up as option DO by pressing F16
Option: DO
Command: call @dspobjd (&l &n &t 'Y')

The final parameter controls whether or not you see the actual DSPOBJD screen, or just want the last use information to appear on the 25th line of the screen.

 /* Modified front end for dspobjd for use as pdm
option */                   
pgm parm(&library &name &type &quiet)


 dcl &library *char 10

 dcl &type *char 10

 dcl &quiet *char 1 /* quiet=1 means no dspobjd, 25th line msg */

 dcl &name *char 10

 dcl &lastuse  *char 7

 dcl &usage    *char 20


 if (%sst(&type 1 3) *eq 'RPG') chgvar &type '*PGM'  /* rpg, rpgle */

 if (%sst(&type 1 3) *eq 'SQL') chgvar &type '*PGM'  /* sqlrpg, sqlrpgle */  
 if (%sst(&type 1 2) *eq 'CL') chgvar &type '*PGM'   /* clp, clle */

 if (%sst(&type 2 1) *eq 'F') chgvar &type '*FILE'   /* pf, lf, pf38,
lf38 */
 if (%sst(&type 1 3) *eq 'DSP') chgvar &type '*FILE' /* dspf */


 if (&quiet *ne 'Y') then(do)

    dspobjd &library/&name &type

    monmsg cpf2105 exec(goto tryagain)


    rtvobjd obj(&library/&name) objtype(&type) usedate(&lastuse)

    monmsg (cpf9811 cpf9812) exec(goto done)

    goto notify


 tryagain: /* library was wrong? */

    if (&quiet *ne 'Y') then(do)

      dspobjd &name &type

      monmsg cpf2105 exec(goto error)


    rtvobjd obj(&name) objtype(&type) usedate(&lastuse) rtnlib(&library)

    monmsg (cpf9811 cpf9812) exec(goto done)

    chgvar &library ('*' *tcat &library *tcat '*')

    goto notify



    if (&lastuse *eq '       ') chgvar &usage (' *Never used')

    else chgvar &usage (' last use: ' -

                    *tcat %sst(&lastuse 4 2) *cat '/' *cat %sst(&lastuse
6 2) - 
                    *cat '/' *cat %sst(&lastuse 2 2))

    sndpgmmsg msgid(cpf9898) msgf(qcpfmsg) +

              msgdta(&library *tcat '/' *tcat &name -

                    *tcat '(' *tcat &type *tcat ') ' *cat &usage) -

               topgmq(*prv) msgtype(*comp)

    goto done



             sndpgmmsg msgid(cpf9898) msgf(qcpfmsg) +

               msgdta('No object found for ' *cat &library *tcat '/'
*tcat &name -
                            *tcat '(' *tcat &type *tcat ')') +

               topgmq(*prv) msgtype(*comp)

             goto done


done: endpgm


This was last published in May 2005

Dig Deeper on iSeries application development tools



Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to: