      BLOCK DATA
      COMMON / CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT,BOUPDT,NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      DATA DIMENS/3/
      END
      SUBROUTINE INIT(LVLOUT,INLVL,DIMEN)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      COMMON/OPC/PMARK3,PMARK2,PLIN3,PLIN2,POLY3,POLY2,TEXT,MOVE,
     1     IMTRAN,HGHLTG,VSIBLE,DTECT,NWFRM,DELETS,DELETA,IMMEDV,
     2     PICCUR,BGNBAT,ENDBAT,CRSEG,CTSEG,CLOSRS,CLOSTS,RENAMS,
     3     INITDD,TERMDD,INTIZE,TRM,SNDC,INQDVC,COLR,BGCOLR,TENSTY,
     4     BGINTY,SNDX,BGINDX,COLNDX,INTNDX,IQCNDX,IQINDX,
     5     LNSTYL,ILNSTL,LNWITH,PENS,IDENSE,CHFONT,CHARSZ,CHARSP,
     6     STRROT,CHARPH,CHARJT,CHAREX,MRKSYM,PICK,ALLATR,POLEDG,
     7     POLINT,PIXCOL,PIXINT,PIXNDX,WRSCOL,WRSINT,WRSNDX,RRSCOL,
     8     RRSINT,RRSNDX,ESCAP,IESCAP,AMODE,OUTUNT
      INTEGER PMARK3,PMARK2,PLIN3,PLIN2,POLY3,POLY2,TEXT,MOVE,
     1     IMTRAN,HGHLTG,VSIBLE,DTECT,NWFRM,DELETS,DELETA,IMMEDV,
     2     PICCUR,BGNBAT,ENDBAT,CRSEG,CTSEG,CLOSRS,CLOSTS,RENAMS,
     3     INITDD,TERMDD,INTIZE,TRM,SNDC,INQDVC,COLR,BGCOLR,TENSTY,
     4     BGINTY,SNDX,BGINDX,COLNDX,INTNDX,IQCNDX,IQINDX,
     5     LNSTYL,ILNSTL,LNWITH,PENS,IDENSE,CHFONT,CHARSZ,CHARSP,
     6     STRROT,CHARPH,CHARJT,CHAREX,MRKSYM,PICK,ALLATR,POLEDG,
     7     POLINT,PIXCOL,PIXINT,PIXNDX,WRSCOL,WRSINT,WRSNDX,RRSCOL,
     8     RRSINT,RRSNDX,ESCAP,IESCAP,AMODE,OUTUNT
      COMMON /PAR/ PARRAY,MAXARY
      INTEGER*4 PARRAY(5000),MAXARY
      INTEGER DIMEN,LVLOUT,INLVL
      INTEGER NAME(3)
      DATA NAME/2H I,2HNI,2HT /
      DATA INLEVL /0/
      CALL GINDAT
      IF (.NOT.SINIT) GOTO 10
        CALL GPRINT(1,LVLOUT)
        CALL GPRINT(2,INLVL)
        CALL GPRINT(3,DIMEN)
        CALL GRPTER(NAME,701)
        RETURN
   10 CONTINUE
      IF ((LVLOUT.LE.OUTLEV).AND.(LVLOUT.GE.1)) GOTO 20
        CALL GPRINT(1,LVLOUT)
        CALL GPRINT(2,INLVL)
        CALL GPRINT(3,DIMEN)
        CALL GRPTER(NAME,702)
        RETURN
   20 CONTINUE
      IF ((INLVL.LE.INLEVL).AND.(INLVL.GE.0)) GOTO 30
        CALL GPRINT(1,LVLOUT)
        CALL GPRINT(2,INLVL)
        CALL GPRINT(3,DIMEN)
        CALL GRPTER(NAME,703)
        RETURN
   30 CONTINUE
      IF((DIMEN.LE.DIMENS).AND.(DIMEN.GE.0)) GOTO 40
        CALL GPRINT(1,LVLOUT)
        CALL GPRINT(2,INLVL)
        CALL GPRINT(3,DIMEN)
        CALL GRPTER(NAME,704)
        RETURN
   40 CONTINUE
      PARRAY(1) = 5
      PARRAY(2) = INITDD
      PARRAY(3) = 1
      PARRAY(4) = 0
      PARRAY(5) = 1
      CALL GSENDS
      SINIT=.TRUE.
      RETURN
      END
      SUBROUTINE TERM
      COMMON/OPC/PMARK3,PMARK2,PLIN3,PLIN2,POLY3,POLY2,TEXT,MOVE,
     1     IMTRAN,HGHLTG,VSIBLE,DTECT,NWFRM,DELETS,DELETA,IMMEDV,
     2     PICCUR,BGNBAT,ENDBAT,CRSEG,CTSEG,CLOSRS,CLOSTS,RENAMS,
     3     INITDD,TERMDD,INTIZE,TRM,SNDC,INQDVC,COLR,BGCOLR,TENSTY,
     4     BGINTY,SNDX,BGINDX,COLNDX,INTNDX,IQCNDX,IQINDX,
     5     LNSTYL,ILNSTL,LNWITH,PENS,IDENSE,CHFONT,CHARSZ,CHARSP,
     6     STRROT,CHARPH,CHARJT,CHAREX,MRKSYM,PICK,ALLATR,POLEDG,
     7     POLINT,PIXCOL,PIXINT,PIXNDX,WRSCOL,WRSINT,WRSNDX,RRSCOL,
     8     RRSINT,RRSNDX,ESCAP,IESCAP,AMODE,OUTUNT
      INTEGER PMARK3,PMARK2,PLIN3,PLIN2,POLY3,POLY2,TEXT,MOVE,
     1     IMTRAN,HGHLTG,VSIBLE,DTECT,NWFRM,DELETS,DELETA,IMMEDV,
     2     PICCUR,BGNBAT,ENDBAT,CRSEG,CTSEG,CLOSRS,CLOSTS,RENAMS,
     3     INITDD,TERMDD,INTIZE,TRM,SNDC,INQDVC,COLR,BGCOLR,TENSTY,
     4     BGINTY,SNDX,BGINDX,COLNDX,INTNDX,IQCNDX,IQINDX,
     5     LNSTYL,ILNSTL,LNWITH,PENS,IDENSE,CHFONT,CHARSZ,CHARSP,
     6     STRROT,CHARPH,CHARJT,CHAREX,MRKSYM,PICK,ALLATR,POLEDG,
     7     POLINT,PIXCOL,PIXINT,PIXNDX,WRSCOL,WRSINT,WRSNDX,RRSCOL,
     8     RRSINT,RRSNDX,ESCAP,IESCAP,AMODE,OUTUNT
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      COMMON /PAR/ PARRAY,MAXARY
      INTEGER*4 PARRAY(5000),MAXARY
      PARRAY(1) = 4
      PARRAY(2) = TERMDD
      PARRAY(3) = 0
      PARRAY(4) = 0
      CALL GSENDS
      SINIT = .FALSE.
       RETURN
      END
      SUBROUTINE GCLRPR
      COMMON /PER/ TYPAR,DEPAR,LSTERR,LSTSEV
      INTEGER  TYPAR(6), DEPAR(6), LSTERR, LSTSEV
      DO 100 I=1,6
         TYPAR(I) = 0
         DEPAR(I) = 0
  100  CONTINUE
      RETURN
      END
      SUBROUTINE GPRINT (PARNUM,VALUE)
      INTEGER  PARNUM
      INTEGER VALUE
      COMMON  /IAY/ INTARY
      INTEGER*4   INTARY(6,3)
      COMMON  /PER/ TYPAR,DEPAR,LSTERR,LSTSEV
      INTEGER TYPAR(6),DEPAR(6),LSTERR,LSTSEV
      IF ( PARNUM .GT. 6 )           GO TO 900
      TYPAR(PARNUM) = 1
      IDEPTH = DEPAR(PARNUM) + 1
      IF ( IDEPTH .GT. 3 )          GO TO 900
      DEPAR(PARNUM) = IDEPTH
      INTARY(PARNUM,IDEPTH) = VALUE
 900  CONTINUE
      RETURN
      END
      SUBROUTINE GPREAL (PARNUM,VALUE)
      INTEGER  PARNUM
      REAL  VALUE
      COMMON /PER/ TYPAR,DEPAR,LSTERR,LSTSEV
      INTEGER TYPAR(6),DEPAR(6),LSTERR,LSTSEV
      COMMON /RAY/ REALAR
      REAL  REALAR(6,3)
      IF ( PARNUM .GT. 7 )               GO TO 900
      TYPAR(PARNUM) = 2
      IDEPTH = DEPAR(PARNUM) + 1
      IF ( IDEPTH .GT. 3 )                 GO TO 900
      DEPAR(PARNUM) = IDEPTH
      REALAR(PARNUM,IDEPTH) = VALUE
 900  CONTINUE
      RETURN
      END
      SUBROUTINE GPRLOG (PARNUM,VALUE)
      INTEGER  PARNUM
      LOGICAL  VALUE
      COMMON /PER/ TYPAR,DEPAR,LSTERR,LSTSEV
      INTEGER TYPAR(6),DEPAR(6),LSTERR,LSTSEV
      COMMON /LAY/ LOGARY
      LOGICAL  LOGARY(6,3)
      IF ( PARNUM .GT. 6 )                    GO TO 900
      TYPAR(PARNUM) = 3
      IDEPTH = DEPAR(PARNUM) + 1
      IF ( IDEPTH .GT. 3 )                 GO TO 900
      DEPAR(PARNUM) = IDEPTH
      LOGARY(PARNUM,IDEPTH) = VALUE
 900  CONTINUE
      RETURN
      END
      SUBROUTINE GPRCHR (PARNUM,VALUE,LENGTH)
      COMMON /PER/ TYPAR,DEPAR,LSTERR,LSTSEV
      INTEGER TYPAR(6),DEPAR(6),LSTERR,LSTSEV
      COMMON /CAY/ CHARAR
      INTEGER  CHARAR(128)
      INTEGER  PARNUM,LENGTH,VALUE(LENGTH)
      INTEGER BLANK
      DATA  BLANK/ 2H   /
      IF ( PARNUM .GT. 6)                  GO TO 300
      TYPAR(PARNUM) = 4
      DEPAR(PARNUM) = 1
      DO 100 I=1,LENGTH
         CHARAR(I) = VALUE(I)
  100  CONTINUE
      J = LENGTH + 1
      IF (J.GE.128)  GO TO 300
      DO 200  I=J,128
         CHARAR(I) = BLANK
  200  CONTINUE
  300 CONTINUE
      RETURN
      END
      SUBROUTINE GRPTER(NAME,ERRNUM)
      INTEGER ERRNUM,NAME(3)
      CALL GLOGER(NAME,ERRNUM)
      RETURN
      END
      SUBROUTINE GLOGER(NAME,ERRNUM)
      INTEGER ERRNUM,NAME(2),CHAR(2)
      CHAR(1)=NAME(1)
      CHAR(2)=NAME(2)-MOD(NAME(2),65536)
      WRITE (*,1090) ERRNUM,(CHAR(I),I=1,2)
      RETURN
 1090 FORMAT (1X,'ERROR NUMBER ',I3,' WAS RECEIVED ',
     1        'FROM ROUTINE ',2A4,', SEVERITY= ')
      END
**IN -1
