      SUBROUTINE SWINDO (UMIN, UMAX, VMIN, VMAX)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /SEG/ VISIB,DETECT,HILITE,IXFORM,SEGTYP,OPSEG,
     1     OPSEGX,OPTSGX,ANGLES
      LOGICAL VISIB, DETECT, HILITE, OPSEGX, OPTSGX
      REAL IXFORM(4,4),ANGLES(3)
      INTEGER SEGTYP, OPSEG
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      INTEGER NAME(3)
      DATA NAME /2HSW,2HIN,2HDO/
       IF( SINIT ) GO TO 5
        CALL GPREAL(1,UMIN)
        CALL GPREAL(2,UMAX)
        CALL GPREAL(3,VMIN)
        CALL GPREAL(4,VMAX)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       IF(.NOT.OPSEGX) GO TO 10
        CALL GPREAL(1,UMIN)
        CALL GPREAL(2,UMAX)
        CALL GPREAL(3,VMIN)
        CALL GPREAL(4,VMAX)
        CALL GRPTER(NAME,6)
       RETURN
 10    IF(.NOT.OPTSGX) GO TO 15
        CALL GPREAL(1,UMIN)
        CALL GPREAL(2,UMAX)
        CALL GPREAL(3,VMIN)
        CALL GPREAL(4,VMAX)
        CALL GRPTER(NAME,6)
       RETURN
 15    CONTINUE
       IF(UMIN.LT.UMAX.AND.VMIN.LT.VMAX) GO TO 20
        CALL GPREAL(1,UMIN)
        CALL GPREAL(2,UMAX)
        CALL GPREAL(3,VMIN)
        CALL GPREAL(4,VMAX)
        CALL GRPTER(NAME,501)
       RETURN
 20    CONTINUE
      WINDOW(1,1) = UMIN
      WINDOW(1,2) = UMAX
      WINDOW(2,1) = VMIN
      WINDOW(2,2) = VMAX
      VEWSET = .FALSE.
      VEWUSE= .TRUE.
      RETURN
      END
      SUBROUTINE SVUP2(DXUP, DYUP)
      COMMON /SEG/ VISIB,DETECT,HILITE,IXFORM,SEGTYP,OPSEG,
     1     OPSEGX,OPTSGX,ANGLES
      LOGICAL VISIB, DETECT, HILITE, OPSEGX, OPTSGX
      REAL IXFORM(4,4),ANGLES(3)
      INTEGER SEGTYP, OPSEG
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       INTEGER NAME(3)
       DATA NAME /2HSV,2HUP,2H2 /
       IF(SINIT) GO TO 5
        CALL GPREAL(1,DXUP)
        CALL GPREAL(2,DYUP)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       IF(.NOT.OPSEGX) GO TO 10
        CALL GPREAL(1,DXUP)
        CALL GPREAL(2,DYUP)
        CALL GRPTER(NAME,6)
       RETURN
 10    IF(.NOT.OPTSGX) GO TO 15
        CALL GPREAL(1,DXUP)
        CALL GPREAL(2,DYUP)
        CALL GRPTER(NAME,6)
       RETURN
 15    CONTINUE
       IF(DXUP.NE.0.0) GO TO 20
       IF(DYUP.NE.0.0) GO TO 20
        CALL GPREAL(1,DXUP)
        CALL GPREAL(2,DYUP)
        CALL GRPTER(NAME,502)
       RETURN
 20    CONTINUE
      CALL SVUP3 (DXUP,DYUP,0.)
      RETURN
      END
      SUBROUTINE SNDCS2 (WID, HY)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       INTEGER NAME(3)
       DATA NAME/2HSN,2HDC,2HS2/
       IF( SINIT ) GO TO 5
        CALL GPREAL(1,WID)
        CALL GPREAL(2,HY)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       IF(.NOT.NDCUSE) GO TO 6
        CALL GPREAL(1,WID)
        CALL GPREAL(2,HY)
        CALL GRPTER(NAME,503)
       RETURN
 6     CONTINUE
       IF(.NOT.PRMUSE) GO TO 7
        CALL GPREAL(1,WID)
        CALL GPREAL(2,HY)
        CALL GRPTER(NAME,504)
       RETURN
 7     CONTINUE
       IF((WID.GE.0.0).AND.(WID.LE.1.0)) GO TO 10
        CALL GPREAL(1,WID)
        CALL GPREAL(2,HY)
        CALL GRPTER(NAME,505)
       RETURN
 10    CONTINUE
       IF((HY.GE.0.0).AND.(HY.LE.1.0)) GO TO 15
        CALL GPREAL(1,WID)
        CALL GPREAL(2,HY)
        CALL GRPTER(NAME,505)
       RETURN
 15    CONTINUE
       IF(WID.EQ.1.0) GO TO 30
       IF(HY.EQ.1.0) GO TO 30
        CALL GPREAL(1,WID)
        CALL GPREAL(2,HY)
        CALL GRPTER(NAME,506)
       RETURN
 30    CONTINUE
       IF(WID.NE.0.0) GO TO 35
        CALL GPREAL(1,WID)
        CALL GPREAL(2,HY)
        CALL GRPTER(NAME,507)
       RETURN
 35    IF(HY.NE.0.0) GO TO 40
        CALL GPREAL(1,WID)
        CALL GPREAL(2,HY)
        CALL GRPTER(NAME,507)
       RETURN
 40    CONTINUE
      CALL SNDCS3 (WID,HY,0.0)
      RETURN
      END
      SUBROUTINE SVPRT2 (XMIN,XMAX,YMIN,YMAX)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /SEG/ VISIB,DETECT,HILITE,IXFORM,SEGTYP,OPSEG,
     1     OPSEGX,OPTSGX,ANGLES
      LOGICAL VISIB, DETECT, HILITE, OPSEGX, OPTSGX
      REAL IXFORM(4,4),ANGLES(3)
      INTEGER SEGTYP, OPSEG
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       INTEGER NAME(3)
       DATA NAME /2HSV,2HPR,2HT2/
       IF(SINIT) GO TO 5
        CALL GPREAL(1,XMIN)
        CALL GPREAL(2,XMAX)
        CALL GPREAL(3,YMIN)
        CALL GPREAL(4,YMAX)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       IF((.NOT.OPSEGX).AND.(.NOT.OPTSGX)) GO TO 10
        CALL GPREAL(1,XMIN)
        CALL GPREAL(2,XMAX)
        CALL GPREAL(3,YMIN)
        CALL GPREAL(4,YMAX)
        CALL GRPTER(NAME,6)
       RETURN
 10    CONTINUE
       IF((XMAX.GT.XMIN).AND.(YMAX.GT.YMIN)) GO TO 20
        CALL GPREAL(1,XMIN)
        CALL GPREAL(2,XMAX)
        CALL GPREAL(3,YMIN)
        CALL GPREAL(4,YMAX)
        CALL GRPTER(NAME,501)
       RETURN
 20    CONTINUE
       IF (NDCUSE) GO TO 47
       IF (VEWTYP) CALL SNDCS3(1.0,1.0,1.0)
       IF (.NOT.VEWTYP) CALL SNDCS3(1.0,1.0,0.0)
  47   CONTINUE
       IF(((XMIN.GE.0.0).AND.(XMAX.LE.NDCSPC(1)))
     1 .AND.((YMIN.GE.0.0).AND.(YMAX.LE.NDCSPC(2))))
     2 GO TO 25
        CALL GPREAL(1,XMIN)
        CALL GPREAL(2,XMAX)
        CALL GPREAL(3,YMIN)
        CALL GPREAL(4,YMAX)
        CALL GRPTER(NAME,508)
       RETURN
 25    CONTINUE
      CALL SVPRT3 (XMIN,XMAX,YMIN,YMAX,0.,0.)
      RETURN
      END
      SUBROUTINE IWINDO(UMIN,UMAX,VMIN,VMAX)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      INTEGER NAME(3)
      DATA NAME/2HIW,2HIN,2HDO/
       IF(SINIT) GO TO 5
       CALL GPREAL(1,UMIN)
       CALL GPREAL(2,UMAX)
       CALL GPREAL(3,VMIN)
       CALL GPREAL(4,VMAX)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       UMIN=WINDOW(1,1)
       UMAX=WINDOW(1,2)
       VMIN=WINDOW(2,1)
       VMAX=WINDOW(2,2)
       RETURN
      END
      SUBROUTINE IVUP2 (DXUP,DYUP)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      INTEGER NAME(3)
      DATA NAME /2HIV,2HUP,2H2 /
       IF(SINIT) GO TO 5
       CALL GPREAL(1,DXUP)
       CALL GPREAL(2,DYUP)
        CALL GRPTER (NAME,717)
       RETURN
 5     CONTINUE
       IF(VEWUP(3).EQ.0.0) GO TO 10
       CALL GPREAL(1,DXUP)
       CALL GPREAL(2,DYUP)
        CALL GRPTER(NAME,1)
       RETURN
 10    CONTINUE
       DXUP=VIWUP(1)
       DYUP=VIWUP(2)
       RETURN
      END
       SUBROUTINE INDCS2 (WID,HY)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      INTEGER NAME(3)
      DATA NAME /2HIN,2HDC,2HS2/
      IF(SINIT) GO TO 5
       CALL GPREAL(1,WID)
       CALL GPREAL(2,HY)
       CALL GRPTER(NAME,717)
      RETURN
 5    CONTINUE
       IF(NDCSPC(3).EQ.0.0) GO TO 10
       CALL GPREAL(1,WID)
       CALL GPREAL(2,HY)
        CALL GRPTER(NAME,1)
       RETURN
 10    CONTINUE
       WID=NDCSPC(1)
       HY =NDCSPC(2)
       RETURN
       END
      SUBROUTINE IVPRT2(XMIN,XMAX,YMIN,YMAX)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      INTEGER NAME(3)
      DATA NAME /2HIV,2HPR,2HT2/
      IF(SINIT) GO TO 5
       CALL GPREAL(1,XMIN)
       CALL GPREAL(2,XMAX)
       CALL GPREAL(3,YMIN)
       CALL GPREAL(4,YMAX)
       CALL GRPTER(NAME,717)
      RETURN
 5    CONTINUE
      IF(.NOT.VPRTFG) GO TO 10
       CALL GPREAL(1,XMIN)
       CALL GPREAL(2,XMAX)
       CALL GPREAL(3,YMIN)
       CALL GPREAL(4,YMAX)
       CALL GRPTER(NAME,1)
      RETURN
 10   CONTINUE
       IF (NDCUSE)GO TO 12
       IF (VEWTYP) CALL SNDCS3(1.0,1.0,1.0)
       IF (.NOT.VEWTYP) CALL SNDCS3(1.0,1.0,0.0)
  12   CONTINUE
       XMIN=VEWPRT(1,1)
       XMAX=VEWPRT(1,2)
       YMIN=VEWPRT(2,1)
       YMAX=VEWPRT(2,2)
       RETURN
      END
      SUBROUTINE SVRFPT (XREF,YREF,ZREF)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /SEG/ VISIB,DETECT,HILITE,IXFORM,SEGTYP,OPSEG,
     1     OPSEGX,OPTSGX,ANGLES
      LOGICAL VISIB, DETECT, HILITE, OPSEGX, OPTSGX
      REAL IXFORM(4,4),ANGLES(3)
      INTEGER SEGTYP, OPSEG
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      INTEGER NAME(3)
      DATA NAME /2HSV,2HRF,2HPT/
       IF(SINIT) GO TO 5
       CALL GPREAL(1,XREF)
       CALL GPREAL(2,YREF)
       CALL GPREAL(3,ZREF)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       IF(.NOT.OPSEGX) GO TO 10
       CALL GPREAL(1,XREF)
       CALL GPREAL(2,YREF)
       CALL GPREAL(3,ZREF)
        CALL GRPTER(NAME,6)
       RETURN
 10    CONTINUE
       IF(.NOT.OPTSGX) GO TO 15
       CALL GPREAL(1,XREF)
       CALL GPREAL(2,YREF)
       CALL GPREAL(3,ZREF)
        CALL GRPTER(NAME,6)
       RETURN
 15    CONTINUE
      VEWREF(1) = XREF
      VEWREF(2) = YREF
      VEWREF(3) = ZREF
      VEWSET = .FALSE.
      VEWUSE = .TRUE.
      RETURN
      END
      SUBROUTINE SVPNOR (DX,DY,DZ)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /SEG/ VISIB,DETECT,HILITE,IXFORM,SEGTYP,OPSEG,
     1     OPSEGX,OPTSGX,ANGLES
      LOGICAL VISIB, DETECT, HILITE, OPSEGX, OPTSGX
      REAL IXFORM(4,4),ANGLES(3)
      INTEGER SEGTYP, OPSEG
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      REAL DX,DY,DZ,DXNOR,DYNOR,DZNOR
      INTEGER NAME(3)
      REAL LENGTH
      DATA NAME /2HSV,2HPN,2HOR/
       IF(SINIT) GO TO 5
       CALL GPREAL(1,DX)
       CALL GPREAL(2,DY)
       CALL GPREAL(3,DZ)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       IF(.NOT.OPSEGX) GO TO 10
       CALL GPREAL(1,DX)
       CALL GPREAL(2,DY)
       CALL GPREAL(3,DZ)
        CALL GRPTER(NAME,6)
       RETURN
 10    CONTINUE
       IF(.NOT.OPTSGX) GO TO 15
       CALL GPREAL(1,DX)
       CALL GPREAL(2,DY)
       CALL GPREAL(3,DZ)
        CALL GRPTER(NAME,6)
       RETURN
 15    CONTINUE
       IF((DX.NE.0.0).OR.(DY.NE.0.0).OR.(DZ.NE.0.0))
     1 GO TO 20
       CALL GPREAL(1,DX)
       CALL GPREAL(2,DY)
       CALL GPREAL(3,DZ)
        CALL GRPTER(NAME,513)
       RETURN
 20    CONTINUE
       DXNOR=DX
       DYNOR=DY
       DZNOR=DZ
       LENGTH = SQRT (DX*DX + DY*DY + DZ*DZ)
       IF (LENGTH.NE.1.0)
     1  CALL GNMLIZ(DX,DY,DZ,DXNOR,DYNOR,DZNOR)
      VEWPLN(1) = DXNOR
      VEWPLN(2) = DYNOR
      VEWPLN(3) = DZNOR
      VIWPN(1)=DX
      VIWPN(2)=DY
      VIWPN(3)=DZ
      VEWSET=.FALSE.
      VEWUSE=.TRUE.
      RETURN
      END
      SUBROUTINE SVPDIS (VDIST)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /SEG/ VISIB,DETECT,HILITE,IXFORM,SEGTYP,OPSEG,
     1     OPSEGX,OPTSGX,ANGLES
      LOGICAL VISIB, DETECT, HILITE, OPSEGX, OPTSGX
      REAL IXFORM(4,4),ANGLES(3)
      INTEGER SEGTYP, OPSEG
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      INTEGER NAME(3)
      REAL VDIST
      DATA NAME /2HSV,2HPD,2HIS/
       IF(SINIT) GO TO 5
        CALL GPREAL(1,VDIST)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       IF(.NOT.OPSEGX) GO TO 10
        CALL GPREAL(1,VDIST)
        CALL GRPTER(NAME,6)
       RETURN
 10    CONTINUE
       IF(.NOT.OPTSGX) GO TO 15
        CALL GPREAL(1,VDIST)
        CALL GRPTER(NAME,6)
       RETURN
 15    CONTINUE
      VEWDIS = VDIST
      VEWSET=.FALSE.
      VEWUSE=.TRUE.
      RETURN
      END
      SUBROUTINE SVDPTH (FRODIS,BACDIS)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /SEG/ VISIB,DETECT,HILITE,IXFORM,SEGTYP,OPSEG,
     1     OPSEGX,OPTSGX,ANGLES
      LOGICAL VISIB, DETECT, HILITE, OPSEGX, OPTSGX
      REAL IXFORM(4,4),ANGLES(3)
      INTEGER SEGTYP, OPSEG
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      REAL FRODIS,BACDIS
      INTEGER NAME(3)
      DATA NAME /2HSV,2HDP,2HTH/
       IF(SINIT) GO TO 5
        CALL GPREAL(1,FRODIS)
        CALL GPREAL(2,BACDIS)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       IF(.NOT.OPSEGX) GO TO 10
        CALL GPREAL(1,FRODIS)
        CALL GPREAL(2,BACDIS)
        CALL GRPTER(NAME,6)
       RETURN
 10    CONTINUE
       IF(.NOT.OPTSGX) GO TO 15
        CALL GPREAL(1,FRODIS)
        CALL GPREAL(2,BACDIS)
        CALL GRPTER(NAME,6)
       RETURN
 15    CONTINUE
       IF (FRODIS .LT. BACDIS) GO TO 20
        CALL GPREAL(1,FRODIS)
        CALL GPREAL(2,BACDIS)
        CALL GRPTER(NAME,514)
       RETURN
 20    CONTINUE
       IF(FRODIS.NE.BACDIS) GO TO 25
        CALL GPREAL(1,FRODIS)
        CALL GPREAL(2,BACDIS)
        CALL GRPTER(NAME,535)
       RETURN
 25    CONTINUE
      FDIS = FRODIS
      BDIS = BACDIS
      FDSET = .TRUE.
      BDSET = .TRUE.
      VEWSET=.FALSE.
      VEWUSE=.TRUE.
      RETURN
      END
      SUBROUTINE SPROJ(PROTYP,DXPROJ,DYPROJ,DZPROJ)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /SEG/ VISIB,DETECT,HILITE,IXFORM,SEGTYP,OPSEG,
     1     OPSEGX,OPTSGX,ANGLES
      LOGICAL VISIB, DETECT, HILITE, OPSEGX, OPTSGX
      REAL IXFORM(4,4),ANGLES(3)
      INTEGER SEGTYP, OPSEG
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       REAL PROTYP,DXPROJ,DYPROJ,DZPROJ,DX,DY,DZ
       INTEGER NAME(3)
       REAL LENGTH
       DATA NAME /2HSP,2HRO,2HJ /
       IF(SINIT) GO TO 5
       CALL GPREAL(1,PROTYP)
       CALL GPREAL(2,DXPROJ)
       CALL GPREAL(3,DYPROJ)
       CALL GPREAL(4,DZPROJ)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       IF(.NOT.OPSEGX) GO TO 10
       CALL GPREAL(1,PROTYP)
       CALL GPREAL(2,DXPROJ)
       CALL GPREAL(3,DYPROJ)
       CALL GPREAL(4,DZPROJ)
        CALL GRPTER(NAME,6)
       RETURN
 10    CONTINUE
       IF(.NOT.OPTSGX) GO TO 15
       CALL GPREAL(1,PROTYP)
       CALL GPREAL(2,DXPROJ)
       CALL GPREAL(3,DYPROJ)
       CALL GPREAL(4,DZPROJ)
        CALL GRPTER(NAME,6)
       RETURN
 15    CONTINUE
       IF((PROTYP.EQ.1.).OR.(PROTYP.EQ.2.)) GO TO 20
       CALL GPREAL(1,PROTYP)
       CALL GPREAL(2,DXPROJ)
       CALL GPREAL(3,DYPROJ)
       CALL GPREAL(4,DZPROJ)
        CALL GRPTER(NAME,401)
       RETURN
 20    CONTINUE
       IF(PROTYP.NE.1.) GO TO 40
       IF((DXPROJ.NE.0.0).OR.(DYPROJ.NE.0.0).OR.
     1    (DZPROJ.NE.0.0)) GO TO 30
       CALL GPREAL(1,PROTYP)
       CALL GPREAL(2,DXPROJ)
       CALL GPREAL(3,DYPROJ)
       CALL GPREAL(4,DZPROJ)
        CALL GRPTER(NAME,515)
       RETURN
 30    CONTINUE
       PJTYP=IFIX(PROTYP)
       DX=DXPROJ
       DY=DYPROJ
       DZ=DZPROJ
       LENGTH = SQRT (DX*DX + DY*DY + DZ*DZ)
       IF (LENGTH.NE.1.0)
     1  CALL GNMLIZ(DXPROJ,DYPROJ,DZPROJ,DX,DY,DZ)
       PJDIR(1)=DX
       PJDIR(2)=DY
       PJDIR(3)=DZ
       PRJDIR(1)=DXPROJ
       PRJDIR(2)=DYPROJ
       PRJDIR(3)=DZPROJ
       VEWSET=.FALSE.
       VEWUSE=.TRUE.
       RETURN
 40    CONTINUE
       PJTYP=PROTYP
       PJPNT(1)=DXPROJ
       PJPNT(2)=DYPROJ
       PJPNT(3)=DZPROJ
       VEWSET=.FALSE.
       VEWUSE=.TRUE.
       RETURN
      END
      SUBROUTINE SVUP3 (DXUP,DYUP,DZUP)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /SEG/ VISIB,DETECT,HILITE,IXFORM,SEGTYP,OPSEG,
     1     OPSEGX,OPTSGX,ANGLES
      LOGICAL VISIB, DETECT, HILITE, OPSEGX, OPTSGX
      REAL IXFORM(4,4),ANGLES(3)
      INTEGER SEGTYP, OPSEG
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      REAL DXUP,DYUP,DZUP,DX,DY,DZ
      INTEGER NAME(3)
       REAL LENGTH
       DATA NAME /2HSV,2HUP,2H3 /
       IF(SINIT) GO TO 5
       CALL GPREAL(1,DXUP)
       CALL GPREAL(2,DYUP)
       CALL GPREAL(3,DZUP)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       IF(.NOT.OPSEGX) GO TO 10
       CALL GPREAL(1,DXUP)
       CALL GPREAL(2,DYUP)
       CALL GPREAL(3,DZUP)
        CALL GRPTER(NAME,6)
       RETURN
 10    IF(.NOT.OPTSGX) GO TO 15
       CALL GPREAL(1,DXUP)
       CALL GPREAL(2,DYUP)
       CALL GPREAL(3,DZUP)
        CALL GRPTER(NAME,6)
       RETURN
 15    CONTINUE
       IF(DXUP.NE.0.0) GO TO 20
       IF(DYUP.NE.0.0) GO TO 20
       IF(DZUP.NE.0.0) GO TO 20
       CALL GPREAL(1,DXUP)
       CALL GPREAL(2,DYUP)
       CALL GPREAL(3,DZUP)
        CALL GRPTER(NAME,502)
       RETURN
 20    CONTINUE
       DX=DXUP
       DY=DYUP
       DZ=DZUP
       LENGTH = SQRT (DX*DX + DY*DY + DZ*DZ)
       IF (LENGTH.NE.1.0)
     1  CALL GNMLIZ(DXUP,DYUP,DZUP,DX,DY,DZ)
       VEWUP(1)=DX
       VEWUP(2)=DY
       VEWUP(3)=DZ
       VIWUP(1)=DXUP
       VIWUP(2)=DYUP
       VIWUP(3)=DZUP
       VEWSET=.FALSE.
       VEWUSE=.TRUE.
      RETURN
      END
      SUBROUTINE SNDCS3 (WID,HY,DEPTH)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      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
      REAL RARRAY(5000)
      EQUIVALENCE (PARRAY,RARRAY)
      INTEGER NAME(3)
      DATA NAME/2HSN,2HDC,2HS3/
       IF( SINIT ) GO TO 5
       CALL GPREAL(1,WID)
       CALL GPREAL(2,HY)
       CALL GPREAL(3,DEPTH)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       IF(.NOT.NDCUSE) GO TO 6
       CALL GPREAL(1,WID)
       CALL GPREAL(2,HY)
       CALL GPREAL(3,DEPTH)
        CALL GRPTER(NAME,503)
       RETURN
 6     CONTINUE
       IF(.NOT.NDCUSE) GO TO 7
       CALL GPREAL(1,WID)
       CALL GPREAL(2,HY)
       CALL GPREAL(3,DEPTH)
        CALL GRPTER(NAME,504)
       RETURN
 7     CONTINUE
       IF((WID.GE.0.0).AND.(WID.LE.1.0)) GO TO 10
       CALL GPREAL(1,WID)
       CALL GPREAL(2,HY)
       CALL GPREAL(3,DEPTH)
        CALL GRPTER(NAME,505)
       RETURN
 10    CONTINUE
       IF((HY.GE.0.0).AND.(HY.LE.1.0)) GO TO 15
       CALL GPREAL(1,WID)
       CALL GPREAL(2,HY)
       CALL GPREAL(3,DEPTH)
        CALL GRPTER(NAME,505)
       RETURN
 15    IF((DEPTH.GE.0.0).AND.(DEPTH.LE.1.0)) GO TO 20
       CALL GPREAL(1,WID)
       CALL GPREAL(2,HY)
       CALL GPREAL(3,DEPTH)
        CALL GRPTER(NAME,505)
       RETURN
 20    CONTINUE
       IF(WID.EQ.1.0) GO TO 30
       IF(HY.EQ.1.0) GO TO 30
       CALL GPREAL(1,WID)
       CALL GPREAL(2,HY)
       CALL GPREAL(3,DEPTH)
        CALL GRPTER(NAME,506)
       RETURN
 30    CONTINUE
       IF(WID.NE.0.0) GO TO 35
       CALL GPREAL(1,WID)
       CALL GPREAL(2,HY)
       CALL GPREAL(3,DEPTH)
        CALL GRPTER(NAME,507)
       RETURN
 35    IF(HY.NE.0.0) GO TO 40
       CALL GPREAL(1,WID)
       CALL GPREAL(2,HY)
       CALL GPREAL(3,DEPTH)
        CALL GRPTER(NAME,507)
       RETURN
 40    CONTINUE
       NDCSPC(1)=WID
       NDCSPC(2)=HY
       NDCSPC(3)=DEPTH
       VEWPRT(1,2)=NDCSPC(1)
       VEWPRT(2,2)=NDCSPC(2)
       PARRAY(1)=7
       PARRAY(2)=SNDC
       PARRAY(3)=0
       PARRAY(4)=3
       RARRAY(5)=WID
       RARRAY(6)=HY
       RARRAY(7)=DEPTH
       CALL GSENDS
       NDCUSE=.TRUE.
       VEWSET=.FALSE.
       VEWUSE=.TRUE.
      RETURN
      END
      SUBROUTINE SVPRT3 (XMIN,XMAX,YMIN,YMAX,ZMIN,ZMAX)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /SEG/ VISIB,DETECT,HILITE,IXFORM,SEGTYP,OPSEG,
     1     OPSEGX,OPTSGX,ANGLES
      LOGICAL VISIB, DETECT, HILITE, OPSEGX, OPTSGX
      REAL IXFORM(4,4),ANGLES(3)
      INTEGER SEGTYP, OPSEG
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       REAL XMIN,XMAX,YMIN,YMAX,ZMIN,ZMAX
       INTEGER NAME(3)
       DATA NAME /2HSV,2HPR,2HT3/
       IF(SINIT) GO TO 5
       CALL GPREAL(1,XMIN)
       CALL GPREAL(2,XMAX)
       CALL GPREAL(3,YMIN)
       CALL GPREAL(4,YMAX)
       CALL GPREAL(5,ZMIN)
       CALL GPREAL(6,ZMAX)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       IF(.NOT.OPSEGX) GO TO 10
       CALL GPREAL(1,XMIN)
       CALL GPREAL(2,XMAX)
       CALL GPREAL(3,YMIN)
       CALL GPREAL(4,YMAX)
       CALL GPREAL(5,ZMIN)
       CALL GPREAL(6,ZMAX)
        CALL GRPTER(NAME,6)
       RETURN
 10    CONTINUE
       IF(.NOT.OPTSGX) GO TO 15
       CALL GPREAL(1,XMIN)
       CALL GPREAL(2,XMAX)
       CALL GPREAL(3,YMIN)
       CALL GPREAL(4,YMAX)
       CALL GPREAL(5,ZMIN)
       CALL GPREAL(6,ZMAX)
        CALL GRPTER(NAME,6)
       RETURN
 15    CONTINUE
       IF((XMAX.GT.XMIN).AND.(YMAX.GT.YMIN).AND.
     1    (ZMAX.GE.ZMIN)) GO TO 20
       CALL GPREAL(1,XMIN)
       CALL GPREAL(2,XMAX)
       CALL GPREAL(3,YMIN)
       CALL GPREAL(4,YMAX)
       CALL GPREAL(5,ZMIN)
       CALL GPREAL(6,ZMAX)
        CALL GRPTER(NAME,518)
       RETURN
 20    CONTINUE
       IF (NDCUSE) GO TO 22
       IF(VEWTYP) CALL SNDCS3(1.0,1.0,1.0)
       IF (.NOT.VEWTYP) CALL SNDCS3(1.0,1.0,0.0)
  22   CONTINUE
       IF(((XMIN.GE.0.0).AND.(XMAX.LE.NDCSPC(1)))
     1 .AND.((YMIN.GE.0.0).AND.(YMAX.LE.NDCSPC(2)))
     2 .AND.((ZMIN.GE.0.0).AND.(ZMAX.LE.NDCSPC(3))))
     3 GO TO 25
       CALL GPREAL(1,XMIN)
       CALL GPREAL(2,XMAX)
       CALL GPREAL(3,YMIN)
       CALL GPREAL(4,YMAX)
       CALL GPREAL(5,ZMIN)
       CALL GPREAL(6,ZMAX)
        CALL GRPTER(NAME,508)
       RETURN
 25    CONTINUE
       VEWPRT(1,1)=XMIN
       VEWPRT(1,2)=XMAX
       VEWPRT(2,1)=YMIN
       VEWPRT(2,2)=YMAX
       VEWPRT(3,1)=ZMIN
       VEWPRT(3,2)=ZMAX
       VPRTFG=.TRUE.
       IF((ZMAX.EQ.0.0).AND.(ZMIN.EQ.0.0)) VPRTFG=.FALSE.
       VEWSET=.FALSE.
       VEWUSE=.TRUE.
      RETURN
      END
      SUBROUTINE SVPARM(VPARAY)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       REAL VPARAY(26)
       INTEGER NAME(3)
       DATA NAME /2HSV,2HPA,2HRM/
       IF(SINIT) GO TO 5
       CALL GPREAL(1,VPARAY(1))
       CALL GPREAL(2,VPARAY(2))
       CALL GPREAL(3,VPARAY(3))
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       CALL SVRFPT(VPARAY(1),VPARAY(2),VPARAY(3))
       CALL SVPNOR(VPARAY(4),VPARAY(5),VPARAY(6))
       CALL SVPDIS(VPARAY(7))
       CALL SVDPTH(VPARAY(8),VPARAY(9))
       CALL SPROJ(VPARAY(10),VPARAY(11),VPARAY(12),
     1            VPARAY(13))
       CALL SWINDO(VPARAY(14),VPARAY(15),VPARAY(16),
     1             VPARAY(17))
       CALL SVUP3(VPARAY(18),VPARAY(19),VPARAY(20))
       CALL SVPRT3(VPARAY(21),VPARAY(22),VPARAY(23),
     1             VPARAY(24),VPARAY(25),VPARAY(26))
       VEWSET=.FALSE.
       VEWUSE=.TRUE.
       RETURN
      END
      SUBROUTINE IVRFPT(XREF,YREF,ZREF)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       INTEGER NAME(3)
       REAL XREF,YREF,ZREF
       DATA NAME /2HIV,2HRF,2HPT/
       IF(SINIT) GO TO 5
       CALL GPREAL(1,XREF)
       CALL GPREAL(2,YREF)
       CALL GPREAL(3,ZREF)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       XREF=VEWREF(1)
       YREF=VEWREF(2)
       ZREF=VEWREF(3)
       RETURN
      END
      SUBROUTINE IVPNOR(DX,DY,DZ)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       REAL DX,DY,DZ
       INTEGER NAME(3)
       DATA NAME /2HIV,2HPN,2HOR/
       IF(SINIT) GO TO 5
       CALL GPREAL(1,DX)
       CALL GPREAL(2,DY)
       CALL GPREAL(3,DZ)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       DX=VIWPN(1)
       DY=VIWPN(2)
       DZ=VIWPN(3)
       RETURN
      END
      SUBROUTINE IVPDIS(VDIST)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       REAL VDIST
       INTEGER NAME(3)
       DATA NAME /2HIV,2HPD,2HIS/
       IF(SINIT) GO TO 5
        CALL GPREAL(1,VDIST)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       VDIST=VEWDIS
       RETURN
      END
      SUBROUTINE IVDPTH(FRODIS,BACDIS)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       REAL FRODIS,BACDIS
       INTEGER NAME(3)
       DATA NAME /2HIV,2HDP,2HTH/
       IF(SINIT) GO TO 5
       CALL GPREAL(1,FRODIS)
       CALL GPREAL(2,BACDIS)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       FRODIS=FDIS
       BACDIS=BDIS
       RETURN
      END
      SUBROUTINE IPROJ (PROTYP,DXPROJ,DYPROJ,DZPROJ)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       REAL PROTYP,DXPROJ,DYPROJ,DZPROJ
       INTEGER NAME(3)
       DATA NAME /2HIP,2HRO,2HJ /
       IF(SINIT) GO TO 5
       CALL GPREAL(1,PROTYP)
       CALL GPREAL(2,DXPROJ)
       CALL GPREAL(3,DYPROJ)
       CALL GPREAL(4,DZPROJ)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       PROTYP=FLOAT(PJTYP)
       IF(PJTYP.NE.1) GO TO 10
       DXPROJ=PRJDIR(1)
       DYPROJ=PRJDIR(2)
       DZPROJ=PRJDIR(3)
      RETURN
 10   CONTINUE
       DXPROJ=PJPNT(1)
       DYPROJ=PJPNT(2)
       DZPROJ=PJPNT(3)
       RETURN
      END
      SUBROUTINE IVUP3(DXUP,DYUP,DZUP)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       REAL DXUP,DYUP,DZUP
       INTEGER NAME(3)
       DATA NAME /2HIV,2HUP,2H3 /
       IF(SINIT) GO TO 5
       CALL GPREAL(1,DXUP)
       CALL GPREAL(2,DYUP)
       CALL GPREAL(3,DZUP)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       DXUP=VIWUP(1)
       DYUP=VIWUP(2)
       DZUP=VIWUP(3)
       RETURN
      END
      SUBROUTINE INDCS3(WID,HY,DEPTH)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       REAL WID,HY,DEPTH
       INTEGER NAME(3)
       DATA NAME /2HIN,2HDC,2HS3/
       IF(SINIT) GO TO 5
       CALL GPREAL(1,WID)
       CALL GPREAL(2,HY)
       CALL GPREAL(3,DEPTH)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       WID=NDCSPC(1)
       HY =NDCSPC(2)
       DEPTH=NDCSPC(3)
       RETURN
      END
      SUBROUTINE IVPRT3(XMIN,XMAX,YMIN,YMAX,ZMIN,ZMAX)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       REAL XMIN,XMAX,YMIN,YMAX,ZMIN,ZMAX
       INTEGER NAME(3)
       DATA NAME /2HIV,2HPR,2HT3/
       IF(SINIT) GO TO 5
       CALL GPREAL(1,XMIN)
       CALL GPREAL(2,XMAX)
       CALL GPREAL(3,YMIN)
       CALL GPREAL(4,YMAX)
       CALL GPREAL(5,ZMIN)
       CALL GPREAL(6,ZMAX)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       IF (NDCUSE) GO TO 7
       IF (VEWTYP) CALL SNDCS3(1.0,1.0,1.0)
       IF (.NOT.VEWTYP) CALL SNDCS3(1.0,1.0,0.0)
  7    CONTINUE
       XMIN=VEWPRT(1,1)
       XMAX=VEWPRT(1,2)
       YMIN=VEWPRT(2,1)
       YMAX=VEWPRT(2,2)
       ZMIN=VEWPRT(3,1)
       ZMAX=VEWPRT(3,2)
       RETURN
      END
      SUBROUTINE IVPARM (VPARAY)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       REAL VPARAY(26)
       INTEGER NAME(3)
       DATA NAME /2HIV,2HPA,2HRM/
       IF(SINIT) GO TO 5
       CALL GPREAL(1,VPARAY(1))
       CALL GPREAL(2,VPARAY(2))
       CALL GPREAL(3,VPARAY(3))
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       VPARAY(1)=VEWREF(1)
       VPARAY(2)=VEWREF(2)
       VPARAY(3)=VEWREF(3)
       VPARAY(4)=VIWPN(1)
       VPARAY(5)=VIWPN(2)
       VPARAY(6)=VIWPN(3)
       VPARAY(7)=VEWDIS
       VPARAY(8)=FDIS
       VPARAY(9)=BDIS
       VPARAY(10)=FLOAT(PJTYP)
       IF(PJTYP.NE.1) GO TO 10
        VPARAY(11)=PRJDIR(1)
        VPARAY(12)=PRJDIR(2)
        VPARAY(13)=PRJDIR(3)
       GO TO 20
 10    CONTINUE
        VPARAY(11)=PJPNT(1)
        VPARAY(12)=PJPNT(2)
        VPARAY(13)=PJPNT(3)
 20    CONTINUE
       VPARAY(14)=WINDOW(1,1)
       VPARAY(15)=WINDOW(1,2)
       VPARAY(16)=WINDOW(2,1)
       VPARAY(17)=WINDOW(2,2)
       VPARAY(18)=VIWUP(1)
       VPARAY(19)=VIWUP(2)
       VPARAY(20)=VIWUP(3)
       IF (NDCUSE) GO TO 15
       IF (VEWTYP) CALL SNDCS3(1.0,1.0,1.0)
       IF (.NOT.VEWTYP) CALL SNDCS3(1.0,1.0,0.0)
  15   CONTINUE
       VPARAY(21)=VEWPRT(1,1)
       VPARAY(22)=VEWPRT(1,2)
       VPARAY(23)=VEWPRT(2,1)
       VPARAY(24)=VEWPRT(2,2)
       VPARAY(25)=VEWPRT(3,1)
       VPARAY(26)=VEWPRT(3,2)
       RETURN
      END
      SUBROUTINE SCLIPW(ONOFF)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /SEG/ VISIB,DETECT,HILITE,IXFORM,SEGTYP,OPSEG,
     1     OPSEGX,OPTSGX,ANGLES
      LOGICAL VISIB, DETECT, HILITE, OPSEGX, OPTSGX
      REAL IXFORM(4,4),ANGLES(3)
      INTEGER SEGTYP, OPSEG
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       LOGICAL ONOFF
       INTEGER NAME(3)
       DATA NAME /2HSC,2HLI,2HPW/
       IF(SINIT) GO TO 5
        CALL GPRLOG(1,ONOFF)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       IF(.NOT.OPSEGX) GO TO 10
        CALL GPRLOG(1,ONOFF)
        CALL GRPTER(NAME,6)
       RETURN
 10    CONTINUE
       IF(.NOT.OPTSGX) GO TO 15
        CALL GPRLOG(1,ONOFF)
        CALL GRPTER(NAME,6)
       RETURN
 15    CONTINUE
       WCLIP=ONOFF
       RETURN
      END
      SUBROUTINE SCLPFP(ONOFF)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /SEG/ VISIB,DETECT,HILITE,IXFORM,SEGTYP,OPSEG,
     1     OPSEGX,OPTSGX,ANGLES
      LOGICAL VISIB, DETECT, HILITE, OPSEGX, OPTSGX
      REAL IXFORM(4,4),ANGLES(3)
      INTEGER SEGTYP, OPSEG
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       LOGICAL ONOFF
       INTEGER NAME(3)
       DATA NAME /2HSC,2HLP,2HFP/
       IF(SINIT) GO TO 5
        CALL GPRLOG(1,ONOFF)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       IF(.NOT.OPSEGX) GO TO 10
        CALL GPRLOG(1,ONOFF)
        CALL GRPTER(NAME,6)
       RETURN
 10    CONTINUE
       IF(.NOT.OPTSGX) GO TO 15
        CALL GPRLOG(1,ONOFF)
        CALL GRPTER(NAME,6)
       RETURN
 15    CONTINUE
       FCLIP=ONOFF
       RETURN
      END
      SUBROUTINE SCLPBP(ONOFF)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /SEG/ VISIB,DETECT,HILITE,IXFORM,SEGTYP,OPSEG,
     1     OPSEGX,OPTSGX,ANGLES
      LOGICAL VISIB, DETECT, HILITE, OPSEGX, OPTSGX
      REAL IXFORM(4,4),ANGLES(3)
      INTEGER SEGTYP, OPSEG
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       LOGICAL ONOFF
       INTEGER NAME(3)
       DATA NAME /2HSC,2HLP,2HBP/
       IF(SINIT) GO TO 5
        CALL GPRLOG(1,ONOFF)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       IF(.NOT.OPSEGX) GO TO 10
        CALL GPRLOG(1,ONOFF)
        CALL GRPTER(NAME,6)
       RETURN
 10    CONTINUE
       IF(.NOT.OPTSGX) GO TO 15
        CALL GPRLOG(1,ONOFF)
        CALL GRPTER(NAME,6)
       RETURN
 15    CONTINUE
       BCLIP=ONOFF
       RETURN
      END
      SUBROUTINE SCORTP(TYPE)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /SEG/ VISIB,DETECT,HILITE,IXFORM,SEGTYP,OPSEG,
     1     OPSEGX,OPTSGX,ANGLES
      LOGICAL VISIB, DETECT, HILITE, OPSEGX, OPTSGX
      REAL IXFORM(4,4),ANGLES(3)
      INTEGER SEGTYP, OPSEG
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       INTEGER TYPE
       INTEGER NAME(3)
       DATA NAME /2HSC,2HOR,2HTP/
       IF(SINIT) GO TO 5
        CALL GPRINT(1,TYPE)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       IF(.NOT.CRDSET) GO TO 10
        CALL GPRINT(1,TYPE)
        CALL GRPTER(NAME,523)
       RETURN
 10    CONTINUE
       IF((TYPE.EQ.1).OR.(TYPE.EQ.2)) GO TO 15
        CALL GPRINT(1,TYPE)
        CALL GRPTER(NAME,401)
       RETURN
 15    CONTINUE
       IF((.NOT.VEWUSE).AND.(OPSEG.EQ.0)) GO TO 20
        CALL GPRINT(1,TYPE)
        CALL GRPTER(NAME,524)
       RETURN
 20    CONTINUE
       CRDSYS=TYPE
       CRDSET=.TRUE.
       RETURN
      END
      SUBROUTINE IVCPAR(WINCLP,FRTCLP,BAKCLP,TYPE)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       LOGICAL WINCLP,FRTCLP,BAKCLP
       INTEGER TYPE
       INTEGER NAME(3)
       DATA NAME /2HIV,2HCP,2HAR/
       IF(SINIT) GO TO 5
       CALL GPRLOG(1,WINCLP)
       CALL GPRLOG(2,FRTCLP)
       CALL GPRLOG(3,BAKCLP)
       CALL GPRINT(4,TYPE)
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       WINCLP=WCLIP
       FRTCLP=FCLIP
       BAKCLP=BCLIP
       TYPE  =CRDSYS
       RETURN
      END
      SUBROUTINE SWMTX2 ( MTX2 )
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       REAL MTX2 (3,3)
       INTEGER NAME(3)
       DATA NAME /2HSW,2HMT,2HX2/
       IF(SINIT) GO TO 5
       CALL GPREAL(1,MTX2(1,1))
       CALL GPREAL(2,MTX2(1,2))
       CALL GPREAL(3,MTX2(1,3))
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       MXFORM(1,1)=MTX2(1,1)
       MXFORM(1,2)=MTX2(1,2)
       MXFORM(1,3)=0.0
       MXFORM(1,4)=MTX2(1,3)
       MXFORM(2,1)=MTX2(2,1)
       MXFORM(2,2)=MTX2(2,2)
       MXFORM(2,3)=0.0
       MXFORM(2,4)=MTX2(2,3)
       MXFORM(3,1)=0.0
       MXFORM(3,2)=0.0
       MXFORM(3,3)=1.0
       MXFORM(3,4)=0.0
       MXFORM(4,1)=MTX2(3,1)
       MXFORM(4,2)=MTX2(3,2)
       MXFORM(4,3)=0.0
       MXFORM(4,4)=MTX2(3,3)
       WORLD3=.FALSE.
       VEWSET=.FALSE.
       RETURN
      END
      SUBROUTINE SWMTX3 ( MTX3 )
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       REAL MTX3(4,4)
       INTEGER NAME(3)
       DATA NAME /2HSW,2HMT,2HX3/
       IF(SINIT) GO TO 5
       CALL GPREAL(1,MTX3(1,1))
       CALL GPREAL(2,MTX3(1,2))
       CALL GPREAL(3,MTX3(1,3))
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       DO 20 I=1,4
        DO 10 J=1,4
         MXFORM(I,J)=MTX3(I,J)
 10     CONTINUE
 20    CONTINUE
       WORLD3=.TRUE.
       VEWSET=.FALSE.
       RETURN
      END
      SUBROUTINE IWMTX2 ( MTX2 )
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       REAL MTX2(3,3)
       INTEGER NAME(3)
       DATA NAME /2HIW,2HMT,2HX2/
       IF(SINIT) GO TO 5
       CALL GPREAL(1,MTX2(1,1))
       CALL GPREAL(2,MTX2(1,2))
       CALL GPREAL(3,MTX2(1,3))
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       IF(.NOT.WORLD3) GO TO 10
       CALL GPREAL(1,MTX2(1,1))
       CALL GPREAL(2,MTX2(1,2))
       CALL GPREAL(3,MTX2(1,3))
        CALL GRPTER(NAME,1)
 10    CONTINUE
       MTX2(1,1)=MXFORM(1,1)
       MTX2(1,2)=MXFORM(1,2)
       MTX2(1,3)=MXFORM(1,4)
       MTX2(2,1)=MXFORM(2,1)
       MTX2(2,2)=MXFORM(2,2)
       MTX2(2,3)=MXFORM(2,4)
       MTX2(3,1)=MXFORM(4,1)
       MTX2(3,2)=MXFORM(4,2)
       MTX2(3,3)=MXFORM(4,4)
       RETURN
      END
      SUBROUTINE IWMTX3 ( MTX3 )
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
       REAL MTX3 (4,4)
       INTEGER NAME(3)
       DATA NAME /2HIW,2HMT,2HX3/
       IF(SINIT) GO TO 5
       CALL GPREAL(1,MTX3(1,1))
       CALL GPREAL(2,MTX3(1,2))
       CALL GPREAL(3,MTX3(1,3))
        CALL GRPTER(NAME,717)
       RETURN
 5     CONTINUE
       DO 20 I=1,4
        DO 10 J=1,4
         MTX3(I,J)=MXFORM(I,J)
 10     CONTINUE
 20    CONTINUE
       RETURN
      END
      SUBROUTINE GNMLIZ(X,Y,Z,NX,NY,NZ)
       REAL X,Y,Z,NX,NY,NZ,NORM
       NORM = SQRT (X*X + Y*Y + Z*Z)
        NX=X/NORM
        NY=Y/NORM
        NZ=Z/NORM
       RETURN
      END
      SUBROUTINE MWTON2 (X, Y, NDCX, NDCY)
      REAL X, Y, NDCX, NDCY
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON/TRX/BONDRY,RXFORM,SING,TXFORM
      REAL BONDRY(3,2),RXFORM(4,4),TXFORM(4,4)
      LOGICAL SING
      COMMON /SEG/ VISIB,DETECT,HILITE,IXFORM,SEGTYP,OPSEG,
     1     OPSEGX,OPTSGX,ANGLES
      LOGICAL VISIB, DETECT, HILITE, OPSEGX, OPTSGX
      REAL IXFORM(4,4),ANGLES(3)
      INTEGER SEGTYP, OPSEG
      COMMON/ATR/LWIDT,LWMAX,LSTYL,LSMAX,PEN,PENMAX,FONT,FONMAX,
     1     CHSIZ,CHSPC,CHPREC,CHPLN,PIKID,PIKMAX,CHPATH,CHJUST,
     2     MRKR,MRKMAX,CHARUP,CURPOS,BGDNDX,BGDCOL,BGDINT,
     3     LINNDX,LINCOL,LININT,FILNDX,FILCOL,FILINT,TEXNDX,
     4     TEXCOL,TEXINT,NDXMAX,PINTR,PEDGE,COLMOD
      INTEGER LSTYL,LSMAX,PEN,PENMAX,FONT,FONMAX,CHPREC,PIKID,
     1     PIKMAX,CHPATH,CHJUST(2),MRKR,MRKMAX,BGDNDX,LINNDX,
     2     FILNDX,TEXNDX,NDXMAX,PINTR,PEDGE,COLMOD
      REAL LWIDT,LWMAX,CHSIZ(2),CHSPC,CHPLN(3),CHARUP(3),CURPOS(4),
     1     BGDCOL(3),BGDINT,LINCOL(3),LININT,FILCOL(3),FILINT,
     2     TEXCOL(3),TEXINT
      INTEGER ERRNUM,NAME(3)
      REAL WORPT(3), NDCPT(3)
      LOGICAL INSIDE
      DATA NAME/2HMW,2HTO,2HN2/
      IF (.NOT.(OPSEGX.OR.OPTSGX.OR.VEWSET)) THEN
         CALL GVTRAN (ERRNUM)
      END IF
      IF (WRNGVS) THEN
         CALL GPREAL (1, X)
         CALL GPREAL (2, Y)
         CALL GPREAL (3, 0.0)
         CALL GPREAL (4, 0.0)
         CALL GRPTER (NAME, 5)
         CALL GRPTER (NAME, ERRNUM)
         RETURN
      END IF
      IF (VEWTYP) THEN
         WORPT(3) = CURPOS(3)
      ELSE
         WORPT(3) = 0.0
      END IF
      WORPT(1) = X
      WORPT(2) = Y
      CALL GMPNDC (WORPT, NDCPT, INSIDE)
      IF (INSIDE) THEN
         NDCX = NDCPT(1)
         NDCY = NDCPT(2)
         RETURN
      ELSE
         RETURN
      END IF
      END
      SUBROUTINE MWTON3 (X, Y, Z, NDCX, NDCY, NDCZ)
      REAL X, Y, Z, NDCX, NDCY, NDCZ
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON/TRX/BONDRY,RXFORM,SING,TXFORM
      REAL BONDRY(3,2),RXFORM(4,4),TXFORM(4,4)
      LOGICAL SING
      COMMON /SEG/ VISIB,DETECT,HILITE,IXFORM,SEGTYP,OPSEG,
     1     OPSEGX,OPTSGX,ANGLES
      LOGICAL VISIB, DETECT, HILITE, OPSEGX, OPTSGX
      REAL IXFORM(4,4),ANGLES(3)
      INTEGER SEGTYP, OPSEG
      INTEGER ERRNUM, PARLEL, NAME(3)
      REAL WORPT(3), NDCPT(3), TEMP, TEMP1
      REAL DCX, DCY, DCZ, PDX, PDY, PDZ
      LOGICAL INSIDE
      DATA NAME /2HMW,2HTO,2HN3/
      DATA PARLEL /1/
      IF (PJTYP.EQ.PARLEL) GO TO 25
      TEMP = SQRT (VEWPLN(1)*VEWPLN(1) + VEWPLN(2)*VEWPLN(2) +
     *               VEWPLN(3)*VEWPLN(3))
      DCX = VEWPLN(1) / TEMP
      DCY = VEWPLN(2) / TEMP
      DCY = VEWPLN(3) / TEMP
      PDX = PJPNT(1) + VEWREF(1)
      PDY = PJPNT(2) + VEWREF(2)
      PDZ = PJPNT(3) + VEWREF(3)
      TEMP = PDX*DCX + PDY*DCY + PDZ*DCZ
      TEMP1 = X*DCX + Y*DCY + Z*DCZ
      IF (TEMP1.LE.TEMP) THEN
         CALL GPREAL (1, X)
         CALL GPREAL (2, Y)
         CALL GPREAL (3, Z)
         CALL GPREAL (4, 0.0)
         CALL GPREAL (5, 0.0)
         CALL GPREAL (6, 0.0)
         CALL GRPTER (NAME, 522)
         RETURN
      END IF
 25      CONTINUE
      IF (.NOT.(OPSEGX.OR.OPTSGX.OR.VEWSET)) THEN
         CALL GVTRAN (ERRNUM)
      END IF
      IF (WRNGVS) THEN
         CALL GPREAL (1, X)
         CALL GPREAL (2, Y)
         CALL GPREAL (3, Z)
         CALL GPREAL (4, 0.0)
         CALL GPREAL (5, 0.0)
         CALL GPREAL (6, 0.0)
         CALL GRPTER (NAME, 5)
         CALL GRPTER (NAME, ERRNUM)
         RETURN
      END IF
      WORPT(1) = X
      WORPT(2) = Y
      WORPT(3) = Z
      CALL GMPNDC (WORPT, NDCPT, INSIDE)
      IF (INSIDE) THEN
         NDCX = NDCPT(1)
         NDCY = NDCPT(2)
         NDCZ = NDCPT(3)
         RETURN
      ELSE
         RETURN
      END IF
      END
      SUBROUTINE GMPNDC (WORPT, NDCPT, INSIDE)
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON/TRX/BONDRY,RXFORM,SING,TXFORM
      REAL BONDRY(3,2),RXFORM(4,4),TXFORM(4,4)
      LOGICAL SING
      REAL WORPT(3), NDCPT(3), P, Q
      REAL ARRAY(4), P1(4), BOUNDS(3,2)
      LOGICAL INSIDE, IMAGE
      INTEGER PARLEL, LEFT, ERRNUM, ITYPE, N1, N2, ICODE(3,2)
      INTEGER NAM1(3), NAM2(3)
      DATA ARRAY(4) /1.0/
      DATA LEFT /2/
      DATA PARLEL /1/
      DATA NAM1/2HMW,2HTO,2HN2/
      DATA NAM2/2HMW,2HTO,2HN3/
      ARRAY(1) = WORPT(1)
      ARRAY(2) = WORPT(2)
      ARRAY(3) = WORPT(3)
      IF (CRDSYS.EQ.LEFT) ARRAY(3) = -ARRAY(3)
      CALL GMULT (ARRAY, TXFORM, P1, 1, 4, 4)
      IF (.NOT.(WCLIP.OR.FCLIP.OR.BCLIP)) THEN
         INSIDE = .TRUE.
         GO TO 100
      END IF
      ITYPE = 1
      IMAGE = .FALSE.
      N1 = 0
      N2 = 0
      IF (WCLIP) N1 = 1
      IF (FCLIP) N2 = 2
      IF (BCLIP) N2 = 3
      IF (FCLIP.AND.BCLIP) N2 = 5
      CALL GTSTIN (P1, ICODE, N1, N2, INSIDE, BOUNDS, IMAGE)
      IF (INSIDE) GO TO 100
      IF (VEWTYP) GO TO 25
      CALL GPREAL (1, WORPT(1))
      CALL GPREAL (2, WORPT(2))
      CALL GPREAL (3, 0.0)
      CALL GPREAL (4, 0.0)
      CALL GRPTER (NAM1, 512)
      RETURN
 25      CONTINUE
      IF ((ICODE(1,1).EQ.1).OR.(ICODE(1,2).EQ.1).OR.
     *      (ICODE(2,1).EQ.1).OR.(ICODE(2,2).EQ.1)) THEN
         CALL GPREAL (1, WORPT(1))
         CALL GPREAL (2, WORPT(2))
         CALL GPREAL (3, WORPT(3))
         CALL GPREAL (4, 0.0)
         CALL GPREAL (5, 0.0)
         CALL GPREAL (6, 0.0)
         CALL GRPTER (NAM2, 519)
      END IF
      IF (ICODE(3,1).EQ.1) THEN
         CALL GPREAL (1, WORPT(1))
         CALL GPREAL (2, WORPT(2))
         CALL GPREAL (3, WORPT(3))
         CALL GPREAL (4, 0.0)
         CALL GPREAL (5, 0.0)
         CALL GPREAL (6, 0.0)
         CALL GRPTER (NAM2,520)
      END IF
      IF (ICODE(3,2).EQ.1) THEN
         CALL GPREAL (1, WORPT(1))
         CALL GPREAL (2, WORPT(2))
         CALL GPREAL (3, WORPT(3))
         CALL GPREAL (4, 0.0)
         CALL GPREAL (5, 0.0)
         CALL GPREAL (6, 0.0)
         CALL GRPTER (NAM2, 521)
      END IF
      RETURN
 100       CONTINUE
      IF (PJTYP.EQ.PARLEL) GO TO 150
      P = 1./(1. - BONDRY(3,1))
      Q = BONDRY(3,1)/(1. - BONDRY(3,1))
      P1(4) = P1(3)
      P1(3) = P1(3)*P - Q
      CALL GNDC (P1(1)/P1(4), P1(2)/P1(4), P1(3)/P1(4), NDCPT)
      GO TO 175
 150      CONTINUE
      CALL GNDC (P1(1), P1(2), P1(3), NDCPT)
 175      CONTINUE
      RETURN
      END
      SUBROUTINE MNTOW2 (NDCX, NDCY, X, Y)
      REAL NDCX, NDCY, X, Y
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON/TRX/BONDRY,RXFORM,SING,TXFORM
      REAL BONDRY(3,2),RXFORM(4,4),TXFORM(4,4)
      LOGICAL SING
      COMMON /SEG/ VISIB,DETECT,HILITE,IXFORM,SEGTYP,OPSEG,
     1     OPSEGX,OPTSGX,ANGLES
      LOGICAL VISIB, DETECT, HILITE, OPSEGX, OPTSGX
      REAL IXFORM(4,4),ANGLES(3)
      INTEGER SEGTYP, OPSEG
      INTEGER ERRNUM,NAME(3)
      REAL NDCPT(3), WORPOS(3)
      DATA NAME/2HMW,2HTO,2HW2/
      IF (.NOT.(OPSEGX.OR.OPTSGX.OR.VEWSET)) THEN
         CALL GVTRAN (ERRNUM)
      END IF
      IF (WRNGVS) THEN
         CALL GPREAL (1, NDCX)
         CALL GPREAL (2, NDCY)
         CALL GPREAL (3, 0.0)
         CALL GPREAL (4, 0.0)
         CALL GRPTER (NAME, 5)
         CALL GRPTER (NAME, ERRNUM)
         RETURN
      END IF
      IF (VEWTYP) THEN
         CALL GPREAL (1, NDCX)
         CALL GPREAL (2, NDCY)
         CALL GPREAL (3, 0.0)
         CALL GPREAL (4, 0.0)
         CALL GRPTER (NAME, 509)
         RETURN
      END IF
      IF (SING) THEN
         CALL GPREAL (1, NDCX)
         CALL GPREAL (2, NDCY)
         CALL GPREAL (3, 0.0)
         CALL GPREAL (4, 0.0)
         CALL GRPTER (NAME, 511)
         RETURN
      END IF
      IF ((NDCX.LT.VEWPRT(1,1)).OR.(NDCX.GT.VEWPRT(1,2)).OR.
     *      (NDCY.LT.VEWPRT(2,1)).OR.(NDCY.GT.VEWPRT(2,2))) THEN
         CALL GPREAL (1, NDCX)
         CALL GPREAL (2, NDCY)
         CALL GPREAL (3, 0.0)
         CALL GPREAL (4, 0.0)
         CALL GRPTER (NAME, 510)
         RETURN
      END IF
      NDCPT(1) = NDCX
      NDCPT(2) = NDCY
      NDCPT(3) = 0.0
      CALL GWORLD (NDCPT, WORPOS)
      X = WORPOS(1)
      Y = WORPOS(2)
      RETURN
      END
      SUBROUTINE MNTOW3 (NDCX, NDCY, NDCZ, X, Y, Z)
      REAL NDCX, NDCY, NDCZ, X, Y, Z
      COMMON /VEW/ NDCSPC, VEWPRT, WINDOW, VEWREF,
     1  VEWPLN, VEWUP, PJTYP, PJDIR, PJPNT, VEWDIS, FDIS,
     2  BDIS,MXFORM,NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSYS,
     3  CRDSET,VPRTFG,VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3,
     4  VIWUP,VIWPN,PRJDIR
      REAL NDCSPC(3), VEWPRT(3,2), WINDOW(2,2), VEWREF(4),
     1  VEWPLN(4), VEWUP(4), PJDIR(4), PJPNT(4), VEWDIS, FDIS,
     2  BDIS,MXFORM(4,4),VIWUP(3),VIWPN(3),PRJDIR(3)
      INTEGER PJTYP, CRDSYS
      LOGICAL NDCUSE,FDSET,BDSET,WCLIP,FCLIP,BCLIP,CRDSET,VPRTFG,
     1    VEWTYP,WRNGVS,VEWSET,PRMUSE,VEWUSE,WORLD3
      COMMON/TRX/BONDRY,RXFORM,SING,TXFORM
      REAL BONDRY(3,2),RXFORM(4,4),TXFORM(4,4)
      LOGICAL SING
      COMMON /SEG/ VISIB,DETECT,HILITE,IXFORM,SEGTYP,OPSEG,
     1     OPSEGX,OPTSGX,ANGLES
      LOGICAL VISIB, DETECT, HILITE, OPSEGX, OPTSGX
      REAL IXFORM(4,4),ANGLES(3)
      INTEGER SEGTYP, OPSEG
      INTEGER ERRNUM,NAME(3)
      REAL NDCPT(3), WORPOS(3)
      DATA NAME/2HMW,2HTO,2HW3/
      IF (.NOT.(OPSEGX.OR.OPTSGX.OR.VEWSET)) THEN
         CALL GVTRAN (ERRNUM)
      END IF
      IF (WRNGVS) THEN
         CALL GPREAL (1, NDCX)
         CALL GPREAL (2, NDCY)
         CALL GPREAL (3, NDCZ)
         CALL GPREAL (4, 0.0)
         CALL GPREAL (5, 0.0)
         CALL GPREAL (6, 0.0)
         CALL GRPTER (NAME, 5)
         CALL GRPTER (NAME, ERRNUM)
         RETURN
      END IF
      IF ((NDCX.LT.VEWPRT(1,1)).OR.(NDCX.GT.VEWPRT(1,2)).OR.
     *      (NDCY.LT.VEWPRT(2,1)).OR.(NDCY.GT.VEWPRT(2,2)).OR.
     *      (NDCZ.LT.VEWPRT(3,1)).OR.(NDCZ.GT.VEWPRT(3,2))) THEN
         CALL GPREAL (1, NDCX)
         CALL GPREAL (2, NDCY)
         CALL GPREAL (3, NDCZ)
         CALL GPREAL (4, 0.0)
         CALL GPREAL (5, 0.0)
         CALL GPREAL (6, 0.0)
         CALL GRPTER (NAME, 510)
         RETURN
      END IF
      IF (SING) THEN
         CALL GPREAL (1, NDCX)
         CALL GPREAL (2, NDCY)
         CALL GPREAL (3, NDCZ)
         CALL GPREAL (4, 0.0)
         CALL GPREAL (5, 0.0)
         CALL GPREAL (6, 0.0)
         CALL GRPTER (NAME, 511)
         RETURN
      END IF
      NDCPT(1) = NDCX
      NDCPT(2) = NDCY
      NDCPT(3) = NDCZ
      CALL GWORLD (NDCPT, WORPOS)
      X = WORPOS(1)
      Y = WORPOS(2)
      Z = WORPOS(3)
      RETURN
      END
 **IN -1
