*-----------------------------------------------------------------------
*     MSGDMP
*-----------------------------------------------------------------------
      SUBROUTINE MSGDMP(CLEV,CSUB,CMSG)

      CHARACTER CLEV*(*),CSUB*(*),CMSG*(*)

      LOGICAL   LCHREQ
      CHARACTER CLEVX*1,CSUBX*6,CMSGX*200

      EXTERNAL  LCHREQ,LENC

      SAVE

      DATA      IMSG/0/


*     CALL GLIGET('MSGUNIT',IUNIT)
      IUNIT=6
*     CALL GLIGET('MAXMSG',MAXMSG)
      MAXMSG=20
*     CALL GLIGET('MSGLEV',MSGLEV)
      MSGLEV=0
*     CALL GLIGET('NLNSIZE',LNSIZE)
      LNSIZE=78

      CLEVX=CLEV
      CSUBX=CSUB
      LMSG=LENC(CMSG)

      IF (LCHREQ(CLEVX,'E')) THEN
        CMSGX='***** ERROR ('//CSUBX//') ***  '//CMSG(1:LMSG)
        CALL MSZDMP(CMSGX,IUNIT,LNSIZE)
*       CALL OSABRT
        STOP
      END IF
      IF (IMSG.LT.MAXMSG) THEN
        IF (LCHREQ(CLEVX,'W') .AND. MSGLEV.LE.1) THEN
          IMSG=IMSG+1
          CMSGX='*** WARNING ('//CSUBX//') ***  '//CMSG(1:LMSG)
          CALL MSZDMP(CMSGX,IUNIT,LNSIZE)
        ELSE IF (LCHREQ(CLEVX,'M') .AND. MSGLEV.LE.0) THEN
          IMSG=IMSG+1
          CMSGX='*** MESSAGE ('//CSUBX//') ***  '//CMSG(1:LMSG)
          CALL MSZDMP(CMSGX,IUNIT,LNSIZE)
        END IF
        IF (IMSG.EQ.MAXMSG) THEN
          CMSGX='+++ THE FOLLOWING MESSAGES ARE SUPPRESSED.'
          CALL MSZDMP(CMSGX,IUNIT,LNSIZE)
        END IF
      END IF

      END
