Article

FNDMSGDV--Validity checking pgm for FNDMSGD

Mark Kennedy
 /********************************************************************/
/*                                                                  */
/*  FNDMSGDV...Validity check program for FNDMSGD                   */
/*                                                                  */
/*  Function:                                                       */
/*  ---------                                                       */
/*     This program will ensure that all of the objects             */
/*  exist before invoking the command processing program.           */
/*                                                                  */
/********************************************************************/

             PGM        PARM(&MSGFFULL &REBUILD)

             DCL        VAR(&MSGFFULL) TYPE(*CHAR) LEN(20)
             DCL        VAR(&MSGF) TYPE(*CHAR) LEN(10)
             DCL        VAR(&MSGFLIB) TYPE(*CHAR) LEN(10)
             DCL        VAR(&REBUILD) TYPE(*LGL) LEN(1)

             DCL        VAR(&FILEATR) TYPE(*CHAR) LEN(3) /* File +
                          attribute       */
             DCL        VAR(&FILETYPE) TYPE(*CHAR) LEN(5) /* File +
                          type            */

/*  Declare error handling variables.                               */

             DCL        VAR(&MSGID) TYPE(*CHAR) LEN(7) /* Error +
                          message ID     */
             DCL        VAR(&MSG) TYPE(*CHAR) LEN(132) /* Error +
                          message text   */

/*  Global monitor for errors.                                      */

             MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))

/* Parse out the message file name and library from the input       */
/* parameter                                                        */
             CHGVAR     VAR(&MSGF) VALUE(%SST(&MSGFFULL 01 10))
             CHGVAR     VAR(&MSGFLIB) VALUE(%SST(&MSGFFULL 11 10))

/*  Verify existance of file.                                       */

CHK_FILE:
             CHKOBJ     OBJ(&MSGFLIB/&MSGF) OBJTYPE(*MSGF)
             MONMSG     MSGID(CPF9801) EXEC(DO)
             RTVMSG     MSGID(CPF2407) MSGF(QCPFMSG) MSGDTA(&MSGF || +
                          &MSGFLIB) MSG(&MSG)
             SNDPGMMSG  MSGID(CPD0006) MSGF(QCPFMSG) MSGDTA('0000' +
                          || &MSG) MSGTYPE(*DIAG)
             GOTO       CMDLBL(ESCAPE)
             ENDDO

RETURN:
             RETURN     /* Normal end of program */


ERROR:
/* Error handling                                                   */

DIAG:
             RCVMSG     MSG(&MSG) MSGID(&MSGID)
             IF         COND(&MSGID *EQ ' ') THEN(GOTO CMDLBL(ESCAPE))
             SNDPGMMSG  MSGID(CPD0006) MSGF(QCPFMSG) MSGDTA('0000' +
                          || &MSG) MSGTYPE(*DIAG)
             GOTO       CMDLBL(DIAG)

ESCAPE:
             SNDPGMMSG  MSGID(CPF0002) MSGF(*LIBL/QCPFMSG) +
                          MSGTYPE(*ESCAPE)

ENDPGM:
             ENDPGM