/*------------------------------------------------------------------*/
/*    Programmers Group & Management Resource    Copyright  1998    */
/*                                                                  */
/*                             \\\\\\\                              */
/*                            ( o   o )                             */
/*------------------------oOO----(_)----OOo-------------------------*/
/*                                                                  */
/*  System name  . . . :   Technical Support                        */
/*  Program name . . . :   RSTSYS                                   */
/*  Text . . . . . . . :   CPP for Work with Active Users           */
/*                                                                  */
/*  Author . . . . . . :   Alexander Nubla                          */
/*  Description  . . . :   The program is called to change the      */
/*                         authorization setup & default parameters */
/*                         of commands in the system.               */
/*                                                                  */
/*                     ooooO              Ooooo                     */
/*                     (    )             (    )                    */
/*----------------------(   )-------------(   )---------------------*/
/*                       (_)               (_)                      */
/*                                                                  */
/*  Modification Log:                                               */
/*                                                                  */
/*           Tickt                                                  */
/*  Date     No.   Programmer/Description                           */
/*  ======== ===== ================================================ */
/*  05/06/98       Alex Nubla                                       */
/*                 Created                                          */
/*                                                                  */
/*------------------------------------------------------------------*/
             pgm

/*--------------------------------------------------------*/
/*  declaration                                           */
/*--------------------------------------------------------*/
             dcl        &autind    *char    1
             dcl        &auts      *char   30    '*ALLOBJ   +
                                                  *SECADM   +
                                                  *AUDIT    '
             dcl        &autsno    *char    4    X'00000003'
             dcl        &calllvl   *char    4    X'00000000'
             dcl        &errcde    *char    8    X'0000000000000000'

/*--------------------------------------------------------*/
/*  parameter for QUSCRTUS & QUSLOBJ                      */
/*--------------------------------------------------------*/
             dcl        &usrspc    *char   20
             dcl        &extatr    *char   10    'ALL_OBJECT'
             dcl        &ussize    *dec     8    5000
             dcl        &usinit    *char    1    ' '
             dcl        &usauth    *char   10    '*ALL'
             dcl        &ustext    *char   50    'User Space for +
                                                  RSTSYS program'
             dcl        &fmtnme    *char    8    'OBJL0100'
             dcl        &objnme    *char   20
             dcl        &objtyp    *char   10    '*ALL'
             dcl        &space     *char   10
             dcl        &object    *char   10
             dcl        &number    *char    6
             dcl        &infosts   *char    1
             dcl        &gends     *char  140
/*--------------------------------------------------------*/
/*  parameter for CVTB4DEC & CVTDECB4                     */
/*--------------------------------------------------------*/
             dcl        &bin4      *char    4
             dcl        &loop      *dec    10
             dcl        &elen      *dec    10
             dcl        &elenb     *char    4
             dcl        &strpos    *dec    10
/*--------------------------------------------------------*/
/*  parameter for object name retrieved                   */
/*--------------------------------------------------------*/
             dcl        &obj       *char   10
             dcl        &objlib    *char   10
             dcl        &objtype   *char    7
             dcl        &objtxt    *char   50
             dcl        &lobje     *char   30
             dcl        &element   *char  100
             dcl        &curnbr    *dec     5    0

/*--------------------------------------------------------*/
/*  error message variables                               */
/*--------------------------------------------------------*/
             dcl        &error     *lgl                   /* std err */
             dcl        &msgid     *char    7             /* std err */
             dcl        &msgkey    *char    4             /* std err */
             dcl        &msgdta    *char  100             /* std err */
             dcl        &msgf      *char   10             /* std err */
             dcl        &msgflib   *char   10             /* std err */
             dcl        &msgtyp    *char   10  '*DIAG'    /* std err */
             dcl        &msgtypctr *char    4 X'00000001' /* std err */
             dcl        &pgmmsgq   *char   10  '*'        /* std err */
             dcl        &stkctr    *char    4 X'00000001' /* std err */
             dcl        &errbytes  *char    4 X'00000000' /* std err */

             monmsg     msgid(cpf0000) exec(goto error)

/*--------------------------------------------------------*/
/*  Check MY authority first                              */
/*--------------------------------------------------------*/
             call       QSYCUSRS   parm(&autind       +
                                        *CURRENT      +
                                        &auts         +
                                        &autsno       +
                                        &calllvl      +
                                        &errcde)

             if         (&autind = 'Y')     goto sysval
             sndpgmmsg  msgid(cpfb304)      +
                          msgf(qcpfmsg)     +
                          msgtype(*escape)

/*--------------------------------------------------------*/
/*  Security system values:                               */
/*--------------------------------------------------------*/
 sysval:
             sndpgmmsg  msgid(cpf9898)      +
                          msgf(qcpfmsg)     +
                          msgdta('Changing system values +
                          for KUBOTA standards')         +
                          topgmq(*ext)      +
                          msgtype(*status)

          /* -------------------------------------------- */
          /*  Auditing Control & Level                    */
          /* -------------------------------------------- */
             chgsecaud  QAUDCTL(*ALL)       +
                          QAUDLVL(*DFTSET)

          /* -------------------------------------------- */
          /*  Create Default Public Authority             */
          /* -------------------------------------------- */
             chgsysval  QCRTAUT        *CHANGE

          /* -------------------------------------------- */
          /*  Device I/O Error Action                     */
          /* -------------------------------------------- */
             chgsysval  QDEVRCYACN     *DSCMSG

          /* -------------------------------------------- */
          /*  Time interval before disconnected jobs end  */
          /* -------------------------------------------- */
             chgsysval  QDSCJOBITV     '60'

          /* -------------------------------------------- */
          /*  Sign-on Display Information Control         */
          /* -------------------------------------------- */
             chgsysval  QDSPSGNINF     '0'

          /* -------------------------------------------- */
          /*  Inactive Job Time-out                       */
          /* -------------------------------------------- */
             chgsysval  QINACTITV      '60'

          /* -------------------------------------------- */
          /*  Inactive Job Message Queue                  */
          /* -------------------------------------------- */
             chgsysval  QINACTMSGQ     *DSCJOB

          /* -------------------------------------------- */
          /*  Limit Device Session                        */
          /* -------------------------------------------- */
             chgsysval  QLMTDEVSSN     '0'

          /* -------------------------------------------- */
          /*  Limit Security Officer Device Access        */
          /* -------------------------------------------- */
             chgsysval  QLMTSECOFR     '0'

          /* -------------------------------------------- */
          /*  Action to take for Failed Signon Attempts   */
          /* -------------------------------------------- */
             chgsysval  QMAXSGNACN     '2'

          /* -------------------------------------------- */
          /*  Maximum Sign-on Attempts Allowed            */
          /* -------------------------------------------- */
             chgsysval  QMAXSIGN       '3'

          /* -------------------------------------------- */
          /*  Password Expiration Interval                */
          /* -------------------------------------------- */
             chgsysval  QPWDEXPITV     '90'

          /* -------------------------------------------- */
          /*  Limit Repeating Characters in Password      */
          /* -------------------------------------------- */
             chgsysval  QPWDLMTREP     '0'

          /* -------------------------------------------- */
          /*  Maximum Password Length                     */
          /* -------------------------------------------- */
             chgsysval  QPWDMAXLEN     10

          /* -------------------------------------------- */
          /*  Minimum Password Length                     */
          /* -------------------------------------------- */
             chgsysval  QPWDMINLEN     6

          /* -------------------------------------------- */
          /*  Limit Password Character Positions          */
          /* -------------------------------------------- */
             chgsysval  QPWDPOSDIF     '0'

          /* -------------------------------------------- */
          /*  Duplicate Password Control                  */
          /* -------------------------------------------- */
             chgsysval  QPWDRQDDIF     '6'

          /* -------------------------------------------- */
          /*  Remote Sign-on Control                      */
          /* -------------------------------------------- */
             chgsysval  QRMTSIGN       *VERIFY

          /* -------------------------------------------- */
          /*  Remote Service Attribute                    */
          /* -------------------------------------------- */
             chgsysval  QRMTSRVATR     '1'

          /* -------------------------------------------- */
          /*  System Security Level                       */
          /* -------------------------------------------- */
             chgsysval  QSECURITY      '30'

/*--------------------------------------------------------*/
/*  Restrict command usages:                              */
/*--------------------------------------------------------*/
             sndpgmmsg  msgid(cpf9898)      +
                          msgf(qcpfmsg)     +
                          msgdta('Revoking authorities +
                          of restricted commands to +
                          *PUBLIC users')   +
                          topgmq(*ext)      +
                          msgtype(*status)

             grtobjaut  obj(QSYS/ADDAJE)    +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/ADDCFGLE)  +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/ADDCMNE)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/ADDJOBQE)  +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/ADDPJE)    +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/ADDRTGE)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/ADDTCPHTE) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/ADDTCPIFC) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/ADDTCPPORT) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/ADDTCPRSI) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/ADDTCPRTE) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/ADDWSE)    +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGAJE)    +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGBPA)    +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGCFGL)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGCFGLE)  +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGCMDDFT) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGCMNE)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGCTLAPPC) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGDEVAPPC) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGFTPA)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGHTTPA)  +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGJOBQE)  +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGLPDA)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGNETA)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGOBJOWN) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGPJE)    +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGPOPA)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGPGM)    +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGRTGE)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGRXCA)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGSBSD)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGSHRPOOL) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGSMTPA)  +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGTCPA)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGTCPHTE) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGTCPIFC) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGTCPLPD) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGTCPRTE) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGTELNA)  +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGTFTPA)  +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGRTDA)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGRXCA)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGWSE)    +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CHGWSGA)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CLRLIB)    +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CPYCFGL)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CPYLIB)    +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CRTCFGL)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CRTCTLAPPC) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CRTDEVAPPC) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CRTLIB)    +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CRTSAVF)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CVTTCPCL)  +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/DLTLIB)    +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/EDTOBJAUT) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/ENDRMTSPT) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/ENDTCP)    +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/ENDTCPCNN) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/ENDTCPIFC) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/ENDTCPPTP) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/ENDTCPSVR) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/GRTOBJAUT) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/HLDDSTQ)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/MRGTCPHT)  +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/NETSTAT)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/PING)      +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/RLSDSTQ)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/RMVAJE)    +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/RMVCFGLE)  +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/RMVCMNE)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/RMVJOBQE)  +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/RMVPJE)    +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/RMVRTGE)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/RMVTCPHTE) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/RMVTCPIFC) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/RMVTCPPORT) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/RMVTCPRSI) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/RMVTCPRTE) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/RNMTCPHTE) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/RMVWSE)    +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/RSTLIB)    +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/RSTOBJ)    +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/SNDDSTQ)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/STRRMTSPT) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/STRTCP)    +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/STRTCPFTP) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/STRTCPIFC) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/STRTCPPTP) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/STRTCPSVR) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/STRTCPTELN) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/VFYTCPCNN) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/WRKBPTBL)  +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/WRKCFGL)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/WRKDSTQ)   +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/WRKNAMSMTP) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/WRKRTDCFG) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/WRKSYSSTS) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/WRKSYSACT) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/WRKSHRPOOL) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/WRKTCPSTS) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/WRKTCPPTP) +
                          objtype(*CMD)     +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

          /*----------------------------------------------*/
          /*  Restrict CFG* objects                       */
          /*----------------------------------------------*/
             chgvar     &object    'CFG*'
             chgvar     %sst(&space   1  4) 'QOBJ'
             rtvjoba    nbr(&number)
             chgvar     %sst(&space   5  6) &number
             dltusrspc  qtemp/&space
             monmsg     cpf2105

             chgvar     %sst(&usrspc  1 10) &space
             chgvar     %sst(&usrspc 11 10) 'QTEMP'
             call       quscrtus   parm(&usrspc  +
                                        &extatr  +
                                        &ussize  +
                                        &usinit  +
                                        &usauth  +
                                        &ustext)

             chgvar     %sst(&objnme  1 10) &object
             chgvar     %sst(&objnme 11 10) 'QSYS'

             call       quslobj    parm(&usrspc  +
                                        &fmtnme  +
                                        &objnme  +
                                        &objtyp)
          /*----------------------------------------------*/
          /*  Retrieve the general data structure from    */
          /*  the user space.                             */
          /*----------------------------------------------*/
             call       qusrtvus   parm(&usrspc       +
                                        x'00000001'   +
                                        x'0000008C'   +
                                        &gends)
          /*----------------------------------------------*/
          /*  Is the information incomplete?              */
          /*----------------------------------------------*/
             if         (&infosts = 'I')    then(do)
               sndpgmmsg  msgid(cpf9898)    +
                            msgf(qcpfmsg)   +
                            msgdta('CFG* objects are not +
                            changed. Information is incomplete')
               goto       dltcfgspc
             enddo
          /*----------------------------------------------*/
          /*  Retrieve the number of entries returned.    */
          /*----------------------------------------------*/
             chgvar     &bin4      %sst(&gends 133  4)
             chgvar     &loop      %bin(&bin4    1  4)
             if         (&loop = 0)    goto dltcfgspc
          /*----------------------------------------------*/
          /*  Retrieve the list entry length              */
          /*----------------------------------------------*/
             chgvar     &elenb     %sst(&gends 137  4)
             chgvar     &elen      %bin(&elenb   1  4)
          /*----------------------------------------------*/
          /*  Get the starting offset                     */
          /*----------------------------------------------*/
             chgvar     &bin4      '    '
             chgvar     &bin4      %sst(&gends 125  4)
             chgvar     &strpos    %bin(&bin4    1  4)
             chgvar     &strpos    (&strpos + 1)      /* Offset = 1*/
          /*----------------------------------------------*/
          /*  Loop through the number of entries until no */
          /*  no more entry is found.                     */
          /*----------------------------------------------*/
 loop1:
             if         (&loop = 0)    goto dltcfgspc
          /*----------------------------------------------*/
          /*  convert starting position to decimal        */
          /*----------------------------------------------*/
             chgvar     &bin4          '    '
             chgvar     %bin(&bin4)    &strpos

             call       qusrtvus   (&usrspc &bin4 &elenb &lobje)
             chgvar     &obj       %sst(&lobje   1 10)
             chgvar     &objlib    %sst(&lobje  11 10)
             chgvar     &objtype   %sst(&lobje  21  7)
             grtobjaut  obj(&objlib/&obj)   +
                          objtype(&objtype) +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             chgvar     &strpos    (&strpos + &elen)
             chgvar     &loop      (&loop   - 1)
             goto       loop1

 dltcfgspc:
             dltusrspc  qtemp/&space
             monmsg     cpf0000


          /*----------------------------------------------*/
          /*  Restrict CRTDEV* objects                    */
          /*----------------------------------------------*/
             chgvar     &object    'CRTDEV*'
             chgvar     %sst(&space   1  4) 'QOBJ'
             rtvjoba    nbr(&number)
             chgvar     %sst(&space   5  6) &number
             dltusrspc  qtemp/&space
             monmsg     cpf2105

             chgvar     %sst(&usrspc  1 10) &space
             chgvar     %sst(&usrspc 11 10) 'QTEMP'
             call       quscrtus   parm(&usrspc  +
                                        &extatr  +
                                        &ussize  +
                                        &usinit  +
                                        &usauth  +
                                        &ustext)

             chgvar     %sst(&objnme  1 10) &object
             chgvar     %sst(&objnme 11 10) 'QSYS'

             call       quslobj    parm(&usrspc  +
                                        &fmtnme  +
                                        &objnme  +
                                        &objtyp)
          /*----------------------------------------------*/
          /*  Retrieve the general data structure from    */
          /*  the user space.                             */
          /*----------------------------------------------*/
             call       qusrtvus   parm(&usrspc       +
                                        x'00000001'   +
                                        x'0000008C'   +
                                        &gends)
          /*----------------------------------------------*/
          /*  Is the information incomplete?              */
          /*----------------------------------------------*/
             if         (&infosts = 'I')    then(do)
               sndpgmmsg  msgid(cpf9898)    +
                            msgf(qcpfmsg)   +
                            msgdta('CRTDEV* commands are not +
                            changed. Information is incomplete')
               goto       dltdevspc
             enddo
          /*----------------------------------------------*/
          /*  Retrieve the number of entries returned.    */
          /*----------------------------------------------*/
             chgvar     &bin4      %sst(&gends 133  4)
             chgvar     &loop      %bin(&bin4    1  4)
             if         (&loop = 0)    goto dltdevspc
          /*----------------------------------------------*/
          /*  Retrieve the list entry length              */
          /*----------------------------------------------*/
             chgvar     &elenb     %sst(&gends 137  4)
             chgvar     &elen      %bin(&elenb   1  4)
          /*----------------------------------------------*/
          /*  Get the starting offset                     */
          /*----------------------------------------------*/
             chgvar     &bin4      '    '
             chgvar     &bin4      %sst(&gends 125  4)
             chgvar     &strpos    %bin(&bin4    1  4)
             chgvar     &strpos    (&strpos + 1)      /* Offset = 1*/
          /*----------------------------------------------*/
          /*  Loop through the number of entries until no */
          /*  no more entry is found.                     */
          /*----------------------------------------------*/
 loop2:
             if         (&loop = 0)    goto dltdevspc
          /*----------------------------------------------*/
          /*  convert starting position to decimal        */
          /*----------------------------------------------*/
             chgvar     &bin4          '    '
             chgvar     %bin(&bin4)    &strpos

             call       qusrtvus   (&usrspc &bin4 &elenb &lobje)
             chgvar     &obj       %sst(&lobje   1 10)
             chgvar     &objlib    %sst(&lobje  11 10)
             chgvar     &objtype   %sst(&lobje  21  7)
             grtobjaut  obj(&objlib/&obj)   +
                          objtype(&objtype) +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             chgvar     &strpos    (&strpos + &elen)
             chgvar     &loop      (&loop   - 1)
             goto       loop2

 dltdevspc:
             dltusrspc  qtemp/&space
             monmsg     cpf0000


          /*----------------------------------------------*/
          /*  Restrict CHGDEV* objects                    */
          /*----------------------------------------------*/
             chgvar     &object    'CHGDEV*'
             chgvar     %sst(&space   1  4) 'QOBJ'
             rtvjoba    nbr(&number)
             chgvar     %sst(&space   5  6) &number
             dltusrspc  qtemp/&space
             monmsg     cpf2105

             chgvar     %sst(&usrspc  1 10) &space
             chgvar     %sst(&usrspc 11 10) 'QTEMP'
             call       quscrtus   parm(&usrspc  +
                                        &extatr  +
                                        &ussize  +
                                        &usinit  +
                                        &usauth  +
                                        &ustext)

             chgvar     %sst(&objnme  1 10) &object
             chgvar     %sst(&objnme 11 10) 'QSYS'

             call       quslobj    parm(&usrspc  +
                                        &fmtnme  +
                                        &objnme  +
                                        &objtyp)
          /*----------------------------------------------*/
          /*  Retrieve the general data structure from    */
          /*  the user space.                             */
          /*----------------------------------------------*/
             call       qusrtvus   parm(&usrspc       +
                                        x'00000001'   +
                                        x'0000008C'   +
                                        &gends)
          /*----------------------------------------------*/
          /*  Is the information incomplete?              */
          /*----------------------------------------------*/
             if         (&infosts = 'I')    then(do)
               sndpgmmsg  msgid(cpf9898)    +
                            msgf(qcpfmsg)   +
                            msgdta('CHGDEV* commands are not +
                            changed. Information is incomplete')
               goto       dltdevspc3
             enddo
          /*----------------------------------------------*/
          /*  Retrieve the number of entries returned.    */
          /*----------------------------------------------*/
             chgvar     &bin4      %sst(&gends 133  4)
             chgvar     &loop      %bin(&bin4    1  4)
             if         (&loop = 0)    goto dltdevspc3
          /*----------------------------------------------*/
          /*  Retrieve the list entry length              */
          /*----------------------------------------------*/
             chgvar     &elenb     %sst(&gends 137  4)
             chgvar     &elen      %bin(&elenb   1  4)
          /*----------------------------------------------*/
          /*  Get the starting offset                     */
          /*----------------------------------------------*/
             chgvar     &bin4      '    '
             chgvar     &bin4      %sst(&gends 125  4)
             chgvar     &strpos    %bin(&bin4    1  4)
             chgvar     &strpos    (&strpos + 1)      /* Offset = 1*/
          /*----------------------------------------------*/
          /*  Loop through the number of entries until no */
          /*  no more entry is found.                     */
          /*----------------------------------------------*/
 loop3:
             if         (&loop = 0)    goto dltdevspc3
          /*----------------------------------------------*/
          /*  convert starting position to decimal        */
          /*----------------------------------------------*/
             chgvar     &bin4          '    '
             chgvar     %bin(&bin4)    &strpos

             call       qusrtvus   (&usrspc &bin4 &elenb &lobje)
             chgvar     &obj       %sst(&lobje   1 10)
             chgvar     &objlib    %sst(&lobje  11 10)
             chgvar     &objtype   %sst(&lobje  21  7)
             grtobjaut  obj(&objlib/&obj)   +
                          objtype(&objtype) +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             chgvar     &strpos    (&strpos + &elen)
             chgvar     &loop      (&loop   - 1)
             goto       loop3

 dltdevspc3:
             dltusrspc  qtemp/&space
             monmsg     cpf0000


          /*----------------------------------------------*/
          /*  Restrict CHGSYS* objects                    */
          /*----------------------------------------------*/
             chgvar     &object    'CHGSYS*'
             chgvar     %sst(&space   1  4) 'QOBJ'
             rtvjoba    nbr(&number)
             chgvar     %sst(&space   5  6) &number
             dltusrspc  qtemp/&space
             monmsg     cpf2105

             chgvar     %sst(&usrspc  1 10) &space
             chgvar     %sst(&usrspc 11 10) 'QTEMP'
             call       quscrtus   parm(&usrspc  +
                                        &extatr  +
                                        &ussize  +
                                        &usinit  +
                                        &usauth  +
                                        &ustext)

             chgvar     %sst(&objnme  1 10) &object
             chgvar     %sst(&objnme 11 10) 'QSYS'

             call       quslobj    parm(&usrspc  +
                                        &fmtnme  +
                                        &objnme  +
                                        &objtyp)
          /*----------------------------------------------*/
          /*  Retrieve the general data structure from    */
          /*  the user space.                             */
          /*----------------------------------------------*/
             call       qusrtvus   parm(&usrspc       +
                                        x'00000001'   +
                                        x'0000008C'   +
                                        &gends)
          /*----------------------------------------------*/
          /*  Is the information incomplete?              */
          /*----------------------------------------------*/
             if         (&infosts = 'I')    then(do)
               sndpgmmsg  msgid(cpf9898)    +
                            msgf(qcpfmsg)   +
                            msgdta('CHGSYS* commands are not +
                            changed. Information is incomplete')
               goto       dltsysspc
             enddo
          /*----------------------------------------------*/
          /*  Retrieve the number of entries returned.    */
          /*----------------------------------------------*/
             chgvar     &bin4      %sst(&gends 133  4)
             chgvar     &loop      %bin(&bin4    1  4)
             if         (&loop = 0)    goto dltsysspc
          /*----------------------------------------------*/
          /*  Retrieve the list entry length              */
          /*----------------------------------------------*/
             chgvar     &elenb     %sst(&gends 137  4)
             chgvar     &elen      %bin(&elenb   1  4)
          /*----------------------------------------------*/
          /*  Get the starting offset                     */
          /*----------------------------------------------*/
             chgvar     &bin4      '    '
             chgvar     &bin4      %sst(&gends 125  4)
             chgvar     &strpos    %bin(&bin4    1  4)
             chgvar     &strpos    (&strpos + 1)      /* Offset = 1*/
          /*----------------------------------------------*/
          /*  Loop through the number of entries until no */
          /*  no more entry is found.                     */
          /*----------------------------------------------*/
 loop4:
             if         (&loop = 0)    goto dltsysspc
          /*----------------------------------------------*/
          /*  convert starting position to decimal        */
          /*----------------------------------------------*/
             chgvar     &bin4          '    '
             chgvar     %bin(&bin4)    &strpos

             call       qusrtvus   (&usrspc &bin4 &elenb &lobje)
             chgvar     &obj       %sst(&lobje   1 10)
             chgvar     &objlib    %sst(&lobje  11 10)
             chgvar     &objtype   %sst(&lobje  21  7)
             grtobjaut  obj(&objlib/&obj)   +
                          objtype(&objtype) +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             chgvar     &strpos    (&strpos + &elen)
             chgvar     &loop      (&loop   - 1)
             goto       loop4

 dltsysspc:
             dltusrspc  qtemp/&space
             monmsg     cpf0000



/*--------------------------------------------------------*/
/*  Restrict menu usages                                  */
/*--------------------------------------------------------*/
             sndpgmmsg  msgid(cpf9898)      +
                          msgf(qcpfmsg)     +
                          msgdta('Restricting secured +
                          menus to *PUBLIC users')    +
                          topgmq(*ext)      +
                          msgtype(*status)

             grtobjaut  obj(QSYS/CMN)       +
                          objtype(*MENU)    +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CMNCFG)    +
                          objtype(*MENU)    +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/CMNSTS)    +
                          objtype(*MENU)    +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/TCPADM)    +
                          objtype(*MENU)    +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

             grtobjaut  obj(QSYS/NETCFG)    +
                          objtype(*MENU)    +
                          user(*PUBLIC)     +
                          aut(*EXCLUDE)

/*--------------------------------------------------------*/
/*  Change command defaults                               */
/*--------------------------------------------------------*/
             sndpgmmsg  msgid(cpf9898)      +
                          msgf(qcpfmsg)     +
                          msgdta('Changing command +
                          defaults')        +
                          topgmq(*ext)      +
                          msgtype(*status)

 sql:
             chkobj     obj(QSQL)           +
                          objtype(*lib)
             monmsg     cpf9801    exec(goto RPG)

             chgcmddft  cmd(CRTSQLRPG)      +
                          newdft('COMMIT(*NONE)')
             monmsg     cpf0000
             chgcmddft  cmd(CRTSQLRPGI)     +
                          newdft('COMMIT(*NONE)')
             monmsg     cpf0000

             chgcmd     cmd(CRTSQLRPG)      +
                          allow(*IMOD *BMOD *IREXX *BREXX *BPGM *EXEC *BATCH)
             monmsg     cpf0000
             chgcmd     cmd(CRTSQLRPGI)     +
                          allow(*IMOD *BMOD *IREXX *BREXX *BPGM *EXEC *BATCH)
             monmsg     cpf0000


 rpg:
             chkobj     obj(QRPG)           +
                          objtype(*lib)
             monmsg     cpf9801    exec(goto RPGLE)

             chgcmd     cmd(CRTRPGPGM)      +
                          allow(*IMOD *BMOD *IREXX *BREXX *BPGM *EXEC *BATCH)


 rpgle:
             chkobj     obj(QRPGLE)         +
                          objtype(*lib)
             monmsg     cpf9801    exec(goto C)

             chgcmddft  cmd(CRTBNDRPG)      +
                          newdft('DBGVIEW(*SOURCE)')
             monmsg     cpf0000
             chgcmddft  cmd(CRTRPGMOD)      +
                          newdft('DBGVIEW(*SOURCE)')
             monmsg     cpf0000

             chgcmd     cmd(CRTBNDRPG)      +
                          allow(*IMOD *BMOD *IREXX *BREXX *BPGM *EXEC *BATCH)
             monmsg     cpf0000
             chgcmd     cmd(CRTRPGMOD)      +
                          allow(*IMOD *BMOD *IREXX *BREXX *BPGM *EXEC *BATCH)
             monmsg     cpf0000


 c:
             chkobj     obj(QCLE)           +
                          objtype(*lib)
             monmsg     cpf9801    exec(goto CL)

             chgcmddft  cmd(CRTCMOD)        +
                          newdft('DBGVIEW(*SOURCE)')
             monmsg     cpf0000
             chgcmd     cmd(CRTCMOD)        +
                          allow(*IMOD *BMOD *IREXX *BREXX *BPGM *EXEC *BATCH)
             monmsg     cpf0000


 cl:
             chgcmddft  cmd(CRTCLMOD)       +
                          newdft('SRCFILE(QCLLESRC) DBGVIEW(*SOURCE)')
             monmsg     cpf0000
             chgcmddft  cmd(CRTBNDCL)       +
                          newdft('SRCFILE(QCLLESRC) DBGVIEW(*SOURCE)')
             monmsg     cpf0000

             chgcmd     cmd(CRTCLMOD)       +
                          allow(*IMOD *BMOD *IREXX *BREXX *BPGM *EXEC *BATCH)
             monmsg     cpf0000
             chgcmd     cmd(CRTBNDCL)       +
                          allow(*IMOD *BMOD *IREXX *BREXX *BPGM *EXEC *BATCH)
             monmsg     cpf0000


 pgm:
             chgcmddft  cmd(CRTBNDC)        +
                          newdft('DBGVIEW(*SOURCE)')
             monmsg     cpf0000
             chgcmddft  cmd(CRTSRVPGM)      +
                          newdft('EXPORT(*ALL) OPTION(*DUPPROC)')
             monmsg     cpf0000

             chgcmd     cmd(CRTPGM)         +
                          allow(*IMOD *BMOD *IREXX *BREXX *BPGM *EXEC *BATCH)
             monmsg     cpf0000
             chgcmd     cmd(CRTBNDC)        +
                          allow(*IMOD *BMOD *IREXX *BREXX *BPGM *EXEC *BATCH)
             monmsg     cpf0000
             chgcmd     cmd(CRTSRVPGM)      +
                          allow(*IMOD *BMOD *IREXX *BREXX *BPGM *EXEC *BATCH)
             monmsg     cpf0000


             sndpgmmsg  msgid(cpf9898)    +
                          msgf(qcpfmsg)   +
                          msgdta('Reset of system completed')

 lib:
             chgcmddft  cmd(CRTLIB)         +
                          newdft('CRTAUT(*USE)')
             monmsg     cpf0000

 usrprf:
             chgcmddft  cmd(CRTUSRPRF)      +
                          newdft('PASSWORD(*NONE)')
             monmsg     cpf0000

 dspf:
             chgcmddft  cmd(CRTDSP)         +
                          newdft('RSTDSP(*YES)')
             monmsg     cpf0000

             Goto       End

/*--------------------------------------------------------*/
/*  error routine:                                        */
/*--------------------------------------------------------*/
 error:
             if         &error     (goto errordone)
               else      chgvar       &error  '1'
          /*----------------------------------------------*/
          /*  move all *DIAG message to *PRV program queue*/
          /*----------------------------------------------*/
             call       QMHMOVPM   (&msgkey      +
                                    &msgtyp      +
                                    &msgtypctr   +
                                    &pgmmsgq     +
                                    &stkctr      +
                                    &errbytes)
          /*----------------------------------------------*/
          /*  resend the last *ESCAPE message             */
          /*----------------------------------------------*/
 errordone:
             call       QMHRSNEM   (&msgkey      +
                                    &errbytes)
             monmsg     cpf0000    exec(do)
               sndpgmmsg  msgid(cpf3cf2) msgf(QCFPMSG) +
                            msgdta('QMHRSNEM') msgtype(*escape)
               monmsg     cpf0000
             enddo
 end:        endpgm

    Source: geocities.com/~alex_nubla