      SUBROUTINE STRTYP(TYPE)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      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    TYPE, NAME(3)
      DATA  NAME /2HST, 2HRT, 2HYP/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPRINT ( 1, TYPE )
      CALL GRPTER ( NAME, 717 )
      GO TO 400
  15  CONTINUE
      IF (TYPE.GT.0.AND.TYPE.LE.4)       GO TO 200
          CALL GPRINT(1,TYPE)
          CALL GRPTER(NAME,404)
          GO TO 400
 200  CONTINUE
      SEGTYP = TYPE
400   CONTINUE
      RETURN
      END
      SUBROUTINE  ITRTYP(TYPE)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      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    TYPE, NAME(3), ATTRIB, SGNAME
      DATA  NAME /2HIT, 2HYT, 2HYP/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPRINT ( 1, TYPE )
      CALL GRPTER ( NAME, 717 )
      GO TO 900
  15  CONTINUE
      TYPE = SEGTYP
 900  CONTINUE
      RETURN
      END
       SUBROUTINE ISTTYP(SEGNAM,TYPE)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      COMMON /STB/ FILE,TABLE,FLPNTR,FLEND,STEND,
     1     SGTMAX,MATRIX,XFMMAT,ROTATE,IMAGE,MATPTR
      INTEGER STEND,SGTMAX,MATPTR
      INTEGER*4 FILE(30000),TABLE(5,1000),FLPNTR,FLEND
      REAL MATRIX(4,4),XFMMAT(4,3,1000),ROTATE(3,1000)
      LOGICAL IMAGE
      INTEGER NAME(3),TYPE,ATTRIB
      INTEGER*4 SEGNAM,STPNTR
      DATA    NAME/2HIS,2HTT,2HYP/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPRINT ( 1, SEGNAM )
      CALL GPRINT ( 2, TYPE )
      CALL GRPTER ( NAME, 717 )
      GO TO 900
  15  CONTINUE
      DO 50 STPNTR=1,STEND
        SGNAME = TABLE(2,STPNTR)
        IF (SGNAME.EQ.SEGNAM)  GO TO 70
  50  CONTINUE
      CALL GPRINT (1,SEGNAM)
      CALL GPRLOG(2,TYPE)
      CALL GRPTER (NAME, 305)
      GO TO 900
  70  CONTINUE
      ATTRIB = TABLE(1,STPNTR)
      CALL GETBIT (ATTRIB,11,3,TYPE)
 900  CONTINUE
      RETURN
      END
      SUBROUTINE SVISIB(VISIBL)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      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 NAME(3)
      LOGICAL VISIBL
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPRLOG ( 1, VISIBL )
      CALL GRPTER ( NAME, 717 )
      GO TO 900
  15  CONTINUE
      VISIB=VISIBL
 900  CONTINUE
      RETURN
      END
      SUBROUTINE SHILIT(HILIT)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      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
      LOGICAL HILIT
      INTEGER  NAME(3)
      DATA  NAME /2HSH, 2HIL, 2HIT/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPRLOG ( 1, HILIT )
      CALL GRPTER ( NAME, 717 )
      GO TO 900
  15  CONTINUE
      HILITE=HILIT
 900  CONTINUE
      RETURN
      END
      SUBROUTINE SDTECT(DETCT)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      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
      LOGICAL DETCT
      INTEGER  NAME(3)
      DATA  NAME /2HSD, 2HTE, 2HCT/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPRLOG ( 1, DETCT )
      CALL GRPTER ( NAME, 717 )
      GO TO 900
  15  CONTINUE
      DETECT=DETCT
 900  CONTINUE
      RETURN
      END
      SUBROUTINE  SITN2 (TX, TY)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      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    NAME(3)
      REAL    TX, TY
      DATA    NAME /2HSI,2HMT,2HN2/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPREAL ( 1, TX )
      CALL GPREAL ( 2, TY )
      CALL GRPTER ( NAME, 717 )
      GO TO 900
  15  CONTINUE
      IF (TX.LT.0 .OR. TX.GT.1 .OR. TY.LT.0 .OR. TY.GT.1)    GO TO 20
                                                             GO TO 30
  20                                                         CONTINUE
          CALL GPREAL(1,TX)
          CALL GPREAL(2,TY)
          CALL GRPTER(NAME,401)
          GO TO 900
  30                                                         CONTINUE
         IXFORM(1,1) = 1
         IXFORM(1,2) = 0
         IXFORM(1,3) = 0
         IXFORM(2,1) = 0
         IXFORM(2,2) = 1
         IXFORM(2,3) = 0
         IXFORM(3,3) = 0
         IXFORM(3,1) = 0
         IXFORM(3,2) = 0
         IXFORM(3,3) = 1
         IXFORM(4,1) = TX
         IXFORM(4,2) = TY
         IXFORM(4,3) = 0
 900  CONTINUE
      RETURN
      END
      SUBROUTINE  SITR2 (SX, SY, A, TX, TY)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      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    NAME(3)
      REAL    SX, SY, A, TX, TY
      DATA    NAME /2H S,2HIT,2HR2/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPREAL ( 1, SX )
      CALL GPREAL ( 2, SY )
      CALL GPREAL ( 3, A )
      CALL GPREAL ( 4, TX )
      CALL GPREAL ( 5, TY )
      CALL GRPTER ( NAME, 717 )
      GO TO 900
  15  CONTINUE
      IF (TX.LT.0 .OR. TX.GT.1 .OR. TY.LT.0 .OR. TY.GT.1)    GO TO 20
      IF (SX.LT.0 .OR. SY.LT.0)                              GO TO 20
                                                             GO TO 30
  20                                                    CONTINUE
          CALL GPREAL(1,SX)
          CALL GPREAL(2,SY)
          CALL GPREAL(3,A)
          CALL GPREAL(4,TX)
          CALL GPREAL(5,TY)
          CALL GRPTER(NAME,401)
          GO TO 900
  30                                                         CONTINUE
         IXFORM(1,1) = SX * COS(A)
         IXFORM(1,2) = SX * SIN(A)
         IXFORM(1,3) = 0.
         IXFORM(2,1) = -SY * SIN(A)
         IXFORM(2,2) = SY * COS(A)
         IXFORM(2,3) = 0.
         IXFORM(3,3) = 1.
         IXFORM(3,1) = 0.
         IXFORM(3,2) = 0.
         IXFORM(3,3) = 1.
         IXFORM(4,1) = TX
         IXFORM(4,2) = TY
         IXFORM(4,3) = 0.
         ANGLES(1) = 0.
         ANGLES(2) = 0.
         ANGLES(3) = A
 900  CONTINUE
      RETURN
      END
      SUBROUTINE SITR3 (SX,SY,SZ,AX,AY,AZ,TX,TY,TZ)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      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    NAME(3)
      REAL    SX, SY, SZ, AX, AY, AZ, TX, TY, TZ
      DATA    NAME /2H S,2HIT,2HR3/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPREAL ( 1, SX )
      CALL GPREAL ( 2, SY )
      CALL GPREAL ( 3, SZ )
      CALL GPREAL ( 4, AX )
      CALL GPREAL ( 5, AY )
      CALL GPREAL ( 6, AZ )
      CALL GRPTER ( NAME, 717 )
      GO TO 900
  15  CONTINUE
      IF (TX.GT.1 . OR . TX.LT.0)             GO TO 120
      IF (TY.GT.1 . OR . TX.LT.0)             GO TO 120
      IF (TZ.GT.1 . OR . TX.LT.0)             GO TO 120
      IF (SX.LT.0)                            GO TO 120
      IF (SY.LT.0)                            GO TO 120
      IF (SZ.LT.0)                            GO TO 120
                                               GO TO 180
 120  CONTINUE
      CALL GPREAL(1,SX)
      CALL GPREAL(2,SY)
      CALL GPREAL(3,SZ)
      CALL GPREAL(4,AX)
      CALL GPREAL(5,AY)
      CALL GPREAL(6,AZ)
      CALL GRPTER(NAME,401)
      GO TO 900
 180  CONTINUE
      IXFORM(1,1) = SX * COS(AY) * COS(AZ)
      IXFORM(1,2) = SX * COS(AY) * SIN(AZ)
      IXFORM(1,3) = -SX * SIN(AY)
      IXFORM(2,1) = SY * ( SIN(AX) * SIN(AY) * COS(AZ) -
     1                          SIN(AZ) * COS(AX) )
      IXFORM(2,2) = SY * ( SIN(AX) * SIN(AY) * SIN(AZ) +
     1                          COS(AZ) * COS(AX) )
      IXFORM(2,3) = SY * SIN(AX) * COS(AY)
      IXFORM(3,1) = SZ * ( COS(AX) * SIN(AY) * COS(AZ) +
     1                          SIN(AX) * SIN(AZ) )
      IXFORM(3,2) = SZ * ( COS(AX) * SIN(AY) * SIN(AZ) -
     1                          SIN(AX) * COS(AZ) )
      IXFORM(3,3) = SZ * COS(AX) * COS(AY)
      IXFORM(4,1) = TX
      IXFORM(4,2) = TY
      IXFORM(4,3) = TZ
      ANGLES(1) = AX
      ANGLES(2) = AY
      ANGLES(3) = AZ
 900  CONTINUE
      RETURN
      END
      SUBROUTINE IVISIB(VISIBL)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      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
      LOGICAL VISIBL
      INTEGER  NAME(3)
      DATA  NAME /2HIV, 2HIS, 2HIB/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPRLOG ( 1, VISIBL )
      CALL GRPTER ( NAME, 717 )
      GO TO 900
  15  CONTINUE
      VISIBL=VISIB
 900  CONTINUE
      RETURN
      END
      SUBROUTINE IHILIT(HILIT)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      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
      LOGICAL HILIT
      INTEGER  NAME(3)
      DATA  NAME /2HIH, 2HIL, 2HIT/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPRLOG (1, HILIT )
      CALL GRPTER ( NAME, 717 )
      GO TO 900
  15  CONTINUE
      HILIT=HILITE
 900  CONTINUE
      RETURN
      END
      SUBROUTINE IDTECT(DTECT)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      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
      LOGICAL DTECT
      INTEGER  NAME(3)
      DATA  NAME /2HID, 2HTE, 2HCT/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPRINT ( 1, DTECT )
      CALL GRPTER ( NAME, 717 )
      GO TO 900
  15  CONTINUE
      DTECT=DETECT
 900  CONTINUE
      RETURN
      END
      SUBROUTINE  IITN2 (TX, TY)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      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    NAME(3)
      REAL    TX, TY
      DATA    NAME/2HII,2HMT,2HN2/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPREAL ( 1, TX )
      CALL GPREAL ( 2, TY )
      CALL GRPTER ( NAME, 717 )
      GO TO 900
  15  CONTINUE
      IF (IXFORM(1,1).NE.1 .OR. IXFORM(1,2).NE.0 .OR. IXFORM(1,3).NE.0
     1.OR.IXFORM(2,1).NE.0 .OR. IXFORM(2,2).NE.1 .OR. IXFORM(2,3).NE.0
     2.OR.IXFORM(3,1).NE.0 .OR. IXFORM(3,2).NE.0 .OR. IXFORM(3,3).NE.1
     3.OR. IXFORM(4,3).NE.0)                             GO TO 100
      TX = IXFORM (4,1)
      TY = IXFORM(4,2)
      GO TO 900
 100  CONTINUE
         CALL GPREAL(1,TX)
         CALL GPREAL(2,TY)
         CALL GRPTER(NAME,405)
 900  CONTINUE
      RETURN
      END
      SUBROUTINE  IITR2 (SX,SY,A,TX,TY)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      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    NAME(3)
      REAL    SX, SY, A, TX, TY
      DATA    NAME /2HII,2HTR,2H2 /
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPREAL ( 1, SX )
      CALL GPREAL ( 2, SY )
      CALL GPREAL ( 3, A )
      CALL GPREAL ( 4, TX )
      CALL GPREAL ( 5, TY )
      CALL GRPTER ( NAME, 717 )
      GO TO 900
  15  CONTINUE
      IF (IXFORM(1,3).NE.0 .OR. IXFORM(2,3).NE.0 .OR.
     1    IXFORM(3,1).NE.0 .OR. IXFORM(3,2).NE.0 .OR. IXFORM(3,3).NE.0
     2 .OR.  IXFORM(4,3).NE.0 .OR. ANGLES(1).NE.0 .OR. ANGLES(2).NE.0)
     3                                               GO TO 60
                                                     GO TO 80
  60                                                 CONTINUE
           CALL GPREAL ( 1, SX )
           CALL GPREAL ( 2, SY )
           CALL GPREAL ( 3, A )
           CALL GPREAL ( 4, TX )
           CALL GPREAL ( 5, TY )
           CALL GRPTER(NAME, 405)
           GO TO 900
  80                                                 CONTINUE
           SX = SQRT (IXFORM(1,1)**2 + IXFORM(1,2)**2 + IXFORM(1,3)**2)
           SY = SQRT (IXFORM(2,1)**2 + IXFORM(2,2)**2 + IXFORM(2,3)**2)
           A  = ANGLES(3)
           TX = IXFORM(4,1)
           TY = IXFORM(4,2)
 900  CONTINUE
      RETURN
      END
      SUBROUTINE SSVIS (SEGNAM ,VISB )
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      LOGICAL  VISB
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      COMMON /STB/ FILE,TABLE,FLPNTR,FLEND,STEND,
     1     SGTMAX,MATRIX,XFMMAT,ROTATE,IMAGE,MATPTR
      INTEGER STEND,SGTMAX,MATPTR
      INTEGER*4 FILE(30000),TABLE(5,1000),FLPNTR,FLEND
      REAL MATRIX(4,4),XFMMAT(4,3,1000),ROTATE(3,1000)
      LOGICAL IMAGE
      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 NAME(3),VISVAL,KEEP,VALUE,ATTRIB
      INTEGER*4 SEGNAM,SGNAME
C   'STPNTR' FROM INTEGER*4 TO INTEGER BECAUSE OF GDRWSG(). 29/7,83
       INTEGER  STPNTR
      DATA NAME /2H S,2HSV,2HIS/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPRINT ( 1, SEGNAM )
      CALL GPRLOG ( 2, VISB )
      CALL GRPTER ( NAME, 717 )
      GO TO 800
  15  CONTINUE
      DO 50 STPNTR=1,STEND
      SGNAME = TABLE(2,STPNTR)
        IF (SGNAME.EQ.SEGNAM)  GO TO 70
  50  CONTINUE
      CALL GPRINT (1,SEGNAM)
      CALL GPRLOG(2,VISB)
      CALL GRPTER (NAME, 305)
      GO TO 800
  70  CONTINUE
      ATTRIB = TABLE (1,STPNTR)
      CALL GETBIT(ATTRIB,14,1,VALUE)
C     IF (VALUE.EQ.0 .AND. VISB.EQ..FALSE. )    GO TO 800
C     IF (VALUE.EQ.1 .AND. VISB.EQ..TRUE. )     GO TO 800
      IF  (VALUE .NE. 0)  GOTO 210
      IF  (.NOT. VISB)   GOTO 800
 210  IF  (VALUE .NE. 1)  GOTO 220
      IF  (VISB)    GOTO 800
 220  CONTINUE
      ATTRIB = TABLE (1,STPNTR)
      PARRAY (1) = 7
      PARRAY (2) = VSIBLE
      PARRAY (3) = 3
      PARRAY (4) = 0
      PARRAY (5) = TABLE(3,STPNTR)
      PARRAY (6) = SEGNAM
      IF  (VISB)  PARRAY(7)=1
      IF  (.NOT. VISB)  PARRAY(7)=0
      CALL GSENDS
      IF (VISB)                          GO TO 300
                                          GO TO 400
 300                                      CONTINUE
         ATTRIB = ATTRIB + 4
         TABLE(1,STPNTR) = ATTRIB
         CALL GDRWSG (STPNTR)
         GO TO 800
 400                                      CONTINUE
        ATTRIB = ATTRIB - 4
        TABLE(1,STPNTR) = ATTRIB
        CALL GETBIT(ATTRIB, 1, 9, VALUE)
        CALL GSRFSW(VALUE)
 800  CONTINUE
      RETURN
      END
      SUBROUTINE SSHILT (SEGNAM , HILIT )
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      COMMON /STB/ FILE,TABLE,FLPNTR,FLEND,STEND,
     1     SGTMAX,MATRIX,XFMMAT,ROTATE,IMAGE,MATPTR
      INTEGER STEND,SGTMAX,MATPTR
      INTEGER*4 FILE(30000),TABLE(5,1000),FLPNTR,FLEND
      REAL MATRIX(4,4),XFMMAT(4,3,1000),ROTATE(3,1000)
      LOGICAL IMAGE
      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 NAME(3),VALUE,HILITE,ATTRIB
      INTEGER*4 SEGNAM,SGNAME,STPNTR
      LOGICAL HILIT
      DATA NAME /2HSS , 2HHI , 2HLT /
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPRINT ( 1, SEGNAM )
      CALL GPRLOG ( 2, HILIT )
      CALL GRPTER ( NAME, 717 )
      GO TO 800
  15  CONTINUE
      DO 50 STPNTR=1,STEND
        SGNAME = TABLE(2,STPNTR)
        IF (SGNAME.EQ.SEGNAM)  GO TO 70
  50  CONTINUE
      CALL GPRINT (1,SEGNAM)
      CALL GPRLOG(2,VISB)
      CALL GRPTER (NAME, 305)
      GO TO 800
  70  CONTINUE
      ATTRIB = TABLE (1,STPNTR)
      CALL GETBIT(ATTRIB,15,1,HILITE)
C     IF ( HILITE.EQ.1 .AND. HILIT.EQ..TRUE.)   GO TO 800
C     IF ( HILITE.EQ.0 .AND. HILIT.EQ..FALSE.)  GO TO 800
      IF  (HILITE . NE. 1)   GOTO 210
      IF  (HILIT)           GOTO 800
 210  IF  (HILITE . NE. 0)   GOTO 220
      IF  (.NOT. HILIT)     GOTO 800
 220  CONTINUE
      ATTRIB = TABLE (1,STPNTR)
      IF ( HILIT )       ATTRIB=ATTRIB + 2
      IF ( .NOT. HILIT )      ATTRIB = ATTRIB - 2
      TABLE (1,STPNTR) = ATTRIB
      PARRAY (1) = 7
      PARRAY (2) = HGHLTG
      PARRAY (3) = 3
      PARRAY (4) = 0
      PARRAY (5) = TABLE(3,STPNTR)
      PARRAY (6) = SEGNAM
      IF  (HILIT)           PARRAY(7)=1
      IF  (.NOT. HILIT)     PARRAY(7)=0
      CALL GSENDS
      CALL GETBIT(ATTRIB,1,9,VALUE)
      CALL GSRFSW(VALUE)
 800  CONTINUE
      RETURN
      END
      SUBROUTINE SSDET (SEGNAM, DETECT)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      COMMON /STB/ FILE,TABLE,FLPNTR,FLEND,STEND,
     1     SGTMAX,MATRIX,XFMMAT,ROTATE,IMAGE,MATPTR
      INTEGER STEND,SGTMAX,MATPTR
      INTEGER*4 FILE(30000),TABLE(5,1000),FLPNTR,FLEND
      REAL MATRIX(4,4),XFMMAT(4,3,1000),ROTATE(3,1000)
      LOGICAL IMAGE
      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 NAME(3),VALUE,DETCT,ATTRIB
      INTEGER*4 SEGNAM,SGNAME,STPNTR
      LOGICAL  DETECT
      DATA NAME /2HSS , 2HDE , 2HT  /
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPRINT ( 1, SEGNAM )
      CALL GPRLOG ( 2, DETECT )
      CALL GRPTER ( NAME, 717 )
      GO TO 800
  15  CONTINUE
      DO 50 STPNTR=1,STEND
        SGNAME = TABLE(2,STPNTR)
        IF (SGNAME.EQ.SEGNAM)  GO TO 70
  50  CONTINUE
      CALL GPRINT (1,SEGNAM)
      CALL GPRLOG(2,DTECT)
      CALL GRPTER (NAME, 305)
      GO TO 800
  70  CONTINUE
      ATTRIB = TABLE (1,STPNTR)
      CALL GETBIT(ATTRIB,16,1,DETCT)
C     IF (DETCT.EQ.1 .AND. DETECT.EQ..TRUE.)  GO TO 800
C     IF (DETCT.EQ.0 .AND. DETECT.EQ..FALSE.) GO TO 800
      IF  (DETCT .NE. 1)  GOTO 210
      IF  (DETECT)        GOTO 800
 210  IF  (DETCT .NE. 0)  GOTO 220
      IF  (.NOT. DETECT)  GOTO 800
 220  CONTINUE
      ATTRIB = TABLE (1,STPNTR)
      IF  (DETECT)          ATTRIB=ATTRIB+2
      IF  (.NOT. DETECT)    ATTRIB=ATTRIB-2
      TABLE (1,STPNTR) = ATTRIB
      PARRAY (1) = 7
      PARRAY (2) = DTECT
      PARRAY (3) = 3
      PARRAY (4) = 0
      PARRAY (5) = TABLE(3,STPNTR)
      PARRAY (6) = SEGNAM
      IF  (DETECT)          PARRAY(7)=1
      IF  (.NOT. DETECT)    PARRAY(7)=0
      CALL GSENDS
      CALL GETBIT(ATTRIB,1,9,VALUE)
      CALL GSRFSW(VALUE)
 800  CONTINUE
      RETURN
      END
      SUBROUTINE  SSITN2 (SEGNAM, TX, TY )
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      COMMON /STB/ FILE,TABLE,FLPNTR,FLEND,STEND,
     1     SGTMAX,MATRIX,XFMMAT,ROTATE,IMAGE,MATPTR
      INTEGER STEND,SGTMAX,MATPTR
      INTEGER*4 FILE(30000),TABLE(5,1000),FLPNTR,FLEND
      REAL MATRIX(4,4),XFMMAT(4,3,1000),ROTATE(3,1000)
      LOGICAL IMAGE
      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 /VEW/ NDCSPC, VEWPRT, WIND, 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), WIND(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 /PAR/ PARRAY,MAXARY
      INTEGER*4 PARRAY(5000),MAXARY
      INTEGER  NAME(3), VALUE, BITMAP
      INTEGER*4 SEGNAM,SGNAME,STPNTR
      REAL RARRAY(5000)
      EQUIVALENCE  (PARRAY, RARRAY)
      DATA  NAME /2HSS, 2HIT, 2HN2/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPRINT ( 1, SEGNAM )
      CALL GPREAL ( 2, TX )
      CALL GPREAL ( 3, TY )
      CALL GRPTER ( NAME, 717 )
      GO TO 900
  15  CONTINUE
      DO  60  STPNTR = 1,STEND
        SGNAME = TABLE(2,STPNTR)
        IF (SGNAME.EQ.SEGNAM)                   GO TO 80
  60  CONTINUE
      CALL GPRINT(1,SEGNAM)
      CALL GPREAL(2,TX)
      CALL GPREAL(3,TY)
      CALL GRPTER(NAME,305)
      GO TO 900
  80  CONTINUE
      BITMAP = TABLE(1,STPNTR)
      CALL GETBIT(BITMAP,11,3,VALUE)
      IF (VALUE.GE.2)                            GO TO 100
      CALL GPRINT(1,SEGNAM)
      CALL GPREAL(2,TX)
      CALL GPREAL(3,TY)
      CALL GRPTER(NAME,406)
      GO TO 900
 100  CONTINUE
      IF (ABS(TX).GT.NDCSPC(1)) GO TO 120
      IF (ABS(TY).GT.NDCSPC(2)) GO TO 120
                                               GO TO 180
 120  CONTINUE
      CALL GPRINT(1,SEGNAM)
      CALL GPREAL(2,TX)
      CALL GPREAL(3,TY)
      CALL GRPTER(NAME,901)
      GO TO 900
 180  CONTINUE
      XFMMAT(1,1,STPNTR) = 1.0
      XFMMAT(1,2,STPNTR) = 0.0
      XFMMAT(1,3,STPNTR) = 0.0
      XFMMAT(2,1,STPNTR) = 0.0
      XFMMAT(2,2,STPNTR) = 1.0
      XFMMAT(2,3,STPNTR) = 0.0
      XFMMAT(3,1,STPNTR) = 0.0
      XFMMAT(3,2,STPNTR) = 0.0
      XFMMAT(3,3,STPNTR) = 1.0
      XFMMAT(4,1,STPNTR) = TX
      XFMMAT(4,2,STPNTR) = TY
      XFMMAT(4,3,STPNTR) = 0.0
      PARRAY (1) = 15
      PARRAY (2) = IMTRAN
      PARRAY (3) = 2
      PARRAY (4) = 9
      PARRAY (5) = TABLE(3,STPNTR)
      PARRAY (6) = SEGNAM
      RARRAY(7)=1.0
      RARRAY(8)=1.0
      RARRAY(9)=1.0
      RARRAY(10)=TX
      RARRAY(11)=TY
      RARRAY(12)=0.0
      RARRAY(13)=0.0
      RARRAY(14)=0.0
      RARRAY(15)=0.0
      CALL GSENDS
      CALL GETBIT(BITMAP,14,1,VALUE)
      IF (VALUE.EQ.0)  GO TO 900
      CALL GETBIT(BITMAP,1,9,VALUE)
      CALL GSRFSW(VALUE)
 900  CONTINUE
      RETURN
      END
      SUBROUTINE SSITR2 (SEGNAM,SX,SY,A,TX,TY)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      COMMON /STB/ FILE,TABLE,FLPNTR,FLEND,STEND,
     1     SGTMAX,MATRIX,XFMMAT,ROTATE,IMAGE,MATPTR
      INTEGER STEND,SGTMAX,MATPTR
      INTEGER*4 FILE(30000),TABLE(5,1000),FLPNTR,FLEND
      REAL MATRIX(4,4),XFMMAT(4,3,1000),ROTATE(3,1000)
      LOGICAL IMAGE
      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 /VEW/ NDCSPC, VEWPRT, WIND, 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), WIND(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 /PAR/ PARRAY,MAXARY
      INTEGER*4 PARRAY(5000),MAXARY
      INTEGER  NAME(3),VALUE,BITMAP,ERRNUM
      INTEGER*4 SEGNAM,SGNAME,STPNTR
      REAL       RARRAY(5000)
      EQUIVALENCE  (PARRAY, RARRAY)
      DATA  NAME /2HSS, 2HIT, 2HR2/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPRINT ( 1, SEGNAM )
      CALL GPREAL ( 2, SX )
      CALL GPREAL ( 3, SY )
      CALL GPREAL ( 4, A )
      CALL GPREAL ( 5, TX )
      CALL GPREAL ( 6, TY )
      CALL GRPTER ( NAME, 717 )
      GO TO 900
  15  CONTINUE
      DO  60  STPNTR = 1,STEND
        SGNAME = TABLE(2,STPNTR)
        IF (SGNAME.EQ.SEGNAM)                   GO TO 80
  60  CONTINUE
      CALL GPRINT(1,SEGNAM)
      CALL GPREAL(2,SX)
      CALL GPREAL(3,SY)
      CALL GPREAL(4,A)
      CALL GPREAL(5,TX)
      CALL GPREAL(6,TY)
      CALL GRPTER(NAME,305)
      GO TO 900
  80  CONTINUE
      BITMAP = TABLE(1,STPNTR)
      CALL GETBIT(BITMAP,11,3,VALUE)
      IF (VALUE.GE.3)                            GO TO 100
      ERRNUM=303
      GO TO 125
  100 CONTINUE
      IF (ABS(TX).GT.NDCSPC(1)) GO TO 120
      IF (ABS(TY).GT.NDCSPC(2)) GO TO 120
      IF (SX.LT.0)                            GO TO 120
      IF (SY.LT.0)                            GO TO 120
                                               GO TO 180
 120  CONTINUE
      ERRNUM=401
 125  CONTINUE
      CALL GPRINT(1,SEGNAM)
      CALL GPREAL(2,SX)
      CALL GPREAL(3,SY)
      CALL GPREAL(4,A)
      CALL GPREAL(5,TX)
      CALL GPREAL(6,TY)
      CALL GRPTER(NAME,ERRNUM)
      GO TO 900
 180  CONTINUE
      XFMMAT(1,1,STPNTR) = SX * COS(A)
      XFMMAT(1,2,STPNTR) = SX * SIN(A)
      XFMMAT(1,3,STPNTR) = 0
      XFMMAT(2,1,STPNTR) = -SY * SIN(A)
      XFMMAT(2,2,STPNTR) = SY * COS(A)
      XFMMAT(2,3,STPNTR) = 0
      XFMMAT(3,1,STPNTR) = 0
      XFMMAT(3,2,STPNTR) = 0
      XFMMAT(3,3,STPNTR) = 1
      XFMMAT(4,1,STPNTR) = TX
      XFMMAT(4,2,STPNTR) = TY
      XFMMAT(4,3,STPNTR) = 0
      PARRAY (1) = 15
      PARRAY (2) = IMTRAN
      PARRAY (3) = 2
      PARRAY (4) = 9
      PARRAY (5) = TABLE(3,STPNTR)
      PARRAY (6) = SEGNAM
      RARRAY(7)=SX
      RARRAY(8)=SY
      RARRAY(9)=1.0
      RARRAY(10)=TX
      RARRAY(11)=TY
      RARRAY(12)=0.0
      RARRAY(13)=0.0
      RARRAY(14)=0.0
      RARRAY(15)=0.0
      CALL GSENDS
      ROTATE(1,STPNTR) = 0
      ROTATE(2,STPNTR) = 0
      ROTATE(3,STPNTR) = A
      CALL GETBIT(BITMAP,14,1,VALUE)
      IF (VALUE.EQ.0)  GO TO 900
      CALL GETBIT(BITMAP,1,9,VALUE)
      CALL GSRFSW(VALUE)
 900  CONTINUE
      RETURN
      END
      SUBROUTINE SSITR3 (SEGNAM,SX,SY,SZ,AX,AY,AZ,TX,TY,TZ)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      COMMON /STB/ FILE,TABLE,FLPNTR,FLEND,STEND,
     1     SGTMAX,MATRIX,XFMMAT,ROTATE,IMAGE,MATPTR
      INTEGER STEND,SGTMAX,MATPTR
      INTEGER*4 FILE(30000),TABLE(5,1000),FLPNTR,FLEND
      REAL MATRIX(4,4),XFMMAT(4,3,1000),ROTATE(3,1000)
      LOGICAL IMAGE
      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
      COMMON /VEW/ NDCSPC, VEWPRT, WIND, 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), WIND(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
      INTEGER  NAME(3),VALUE,BITMAP,ERRNUM
      INTEGER*4 SEGNAM,SGNAME,STPNTR
      REAL       RARRAY(5000)
      EQUIVALENCE  (PARRAY, RARRAY)
      DATA  NAME/2HSS,2HIT,2HR3/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPRINT ( 1, SEGNAM )
      CALL GPREAL ( 2, SX )
      CALL GPREAL ( 3, SY )
      CALL GPREAL ( 4, SZ )
      CALL GPREAL ( 5, AX )
      CALL GPREAL ( 6, AY )
      CALL GRPTER ( NAME, 717 )
      GO TO 900
  15  CONTINUE
      DO  60  STPNTR = 1,STEND
        SGNAME = TABLE(2,STPNTR)
        IF (SGNAME.EQ.SEGNAM)                   GO TO 80
  60  CONTINUE
      ERRNUM=305
      GO TO 125
  80  CONTINUE
      BITMAP = TABLE(1,STPNTR)
      CALL GETBIT(BITMAP,11,3,VALUE)
      IF (VALUE.EQ.4)                            GO TO 100
      ERRNUM=303
                                                 GO TO 125
 100  CONTINUE
      IF (ABS(TX).GT.NDCSPC(1)) GO TO 120
      IF (ABS(TY).GT.NDCSPC(2)) GO TO 120
      IF (ABS(TZ).GT.NDCSPC(3)) GO TO 120
                                               GO TO 180
 120  CONTINUE
      ERRNUM=401
 125  CONTINUE
      CALL GPRINT(1,SEGNAM)
      CALL GPREAL(2,SX)
      CALL GPREAL(3,SY)
      CALL GPREAL(4,SZ)
      CALL GPREAL(5,AX)
      CALL GPREAL(6,AY)
      CALL GRPTER(NAME,ERRNUM)
      GO TO 900
 180  CONTINUE
      XFMMAT(1,1,STPNTR) = SX * COS(AY) * COS(AZ)
      XFMMAT(1,2,STPNTR) = -SX * COS(AY) * SIN(AZ)
      XFMMAT(1,3,STPNTR) = SX * SIN(AY)
      XFMMAT(2,1,STPNTR) = SY * ( SIN(AX) * SIN(AY) * COS(AZ) +
     1                          SIN(AZ) * COS(AX) )
      XFMMAT(2,2,STPNTR) = SY * ( -SIN(AX) * SIN(AY) * SIN(AZ) +
     1                          COS(AZ) * COS(AX) )
      XFMMAT(2,3,STPNTR) = -SY * SIN(AX) * COS(AY)
      XFMMAT(3,1,STPNTR) = SZ * ( -COS(AX) * SIN(AY) * COS(AZ) +
     1                          SIN(AX) * SIN(AZ) )
      XFMMAT(3,2,STPNTR) = SZ * ( COS(AX) * SIN(AY) * SIN(AZ) +
     1                          SIN(AX) * COS(AZ) )
      XFMMAT(3,3,STPNTR) = SZ * COS(AX) * COS(AY)
      XFMMAT(4,1,STPNTR) = TX
      XFMMAT(4,2,STPNTR) = TY
      XFMMAT(4,3,STPNTR) = TZ
      PARRAY (1) = 15
      PARRAY (2) = IMTRAN
      PARRAY (3) = 2
      PARRAY (4) = 9
      PARRAY (5) = TABLE(3,STPNTR)
      PARRAY (6) = SEGNAM
      RARRAY(7)=SX
      RARRAY(8)=SY
      RARRAY(9)=SZ
      RARRAY(10)=TX
      RARRAY(11)=TY
      RARRAY(12)=TZ
      RARRAY(13)=AX
      RARRAY(14)=AY
      RARRAY(15)=AZ
      CALL GSENDS
      ROTATE(1,STPNTR) = AX
      ROTATE(2,STPNTR) = AY
      ROTATE(3,STPNTR) = AZ
      CALL GETBIT(BITMAP,14,1,VALUE)
      IF (VALUE.EQ.0)  GO TO 900
      CALL GETBIT(BITMAP,1,9,VALUE)
      CALL GSRFSW(VALUE)
 900  CONTINUE
      RETURN
      END
      SUBROUTINE ISVIS(SEGNAM,VIS)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      COMMON /STB/ FILE,TABLE,FLPNTR,FLEND,STEND,
     1     SGTMAX,MATRIX,XFMMAT,ROTATE,IMAGE,MATPTR
      INTEGER STEND,SGTMAX,MATPTR
      INTEGER*4 FILE(30000),TABLE(5,1000),FLPNTR,FLEND
      REAL MATRIX(4,4),XFMMAT(4,3,1000),ROTATE(3,1000)
      LOGICAL IMAGE
      INTEGER NAME(3),ZEROBT,ATTRIB,VALUE
      INTEGER*4 SEGNAM,SGNAME,STPNTR
      LOGICAL  VIS
      DATA NAME/2H I,2HSV,2HIS/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPRINT ( 1, SEGNAM )
      CALL GPRLOG ( 2, VIS )
      CALL GRPTER ( NAME, 717 )
      GO TO 800
  15  CONTINUE
      DO 100 STPNTR=1,STEND
        SGNAME=TABLE(2,STPNTR)
        IF ( SGNAME.EQ.SEGNAM)          GO TO 200
 100  CONTINUE
       CALL GPRINT(1,SEGNAM)
       CALL GPRLOG(2,.FALSE.)
       CALL GRPTER(NAME,305)
       GO TO 800
 200  CONTINUE
      ATTRIB = TABLE(1,STPNTR)
      CALL GETBIT(ATTRIB,14,1,VALUE)
      IF (VALUE.EQ.1)           VIS=.TRUE.
      IF (VALUE.EQ.0)           VIS=.FALSE.
 800  CONTINUE
      RETURN
      END
      SUBROUTINE ISHILT(SEGNAM,HILIT)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      COMMON /STB/ FILE,TABLE,FLPNTR,FLEND,STEND,
     1     SGTMAX,MATRIX,XFMMAT,ROTATE,IMAGE,MATPTR
      INTEGER STEND,SGTMAX,MATPTR
      INTEGER*4 FILE(30000),TABLE(5,1000),FLPNTR,FLEND
      REAL MATRIX(4,4),XFMMAT(4,3,1000),ROTATE(3,1000)
      LOGICAL IMAGE,HILIT
      INTEGER NAME(3),VALUE,ATTRIB
      INTEGER*4 SEGNAM,STPNTR,SGNAME
      DATA NAME/2HIS,2HHI,2HLT/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPRINT ( 1, SEGNAM )
      CALL GPRLOG ( 2, HILIT )
      CALL GRPTER ( NAME, 717 )
      GO TO 800
  15  CONTINUE
      DO 100 STPNTR=1,STEND
        SGNAME=TABLE(2,STPNTR)
        IF ( SGNAME.EQ.SEGNAM)          GO TO 200
 100  CONTINUE
       CALL GPRINT(1,SEGNAM)
       CALL GPRLOG(2,.FALSE.)
       CALL GRPTER(NAME,305)
       GO TO 800
 200  CONTINUE
      ATTRIB=TABLE(1,STPNTR)
      CALL GETBIT(ATTRIB,15,1,VALUE)
      IF (VALUE.EQ.1)        HILIT=.TRUE.
      IF (VALUE.EQ.0)        HILIT=.FALSE.
 800  CONTINUE
      RETURN
      END
      SUBROUTINE ISDET(SEGNAM,DTECT)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      COMMON /STB/ FILE,TABLE,FLPNTR,FLEND,STEND,
     1     SGTMAX,MATRIX,XFMMAT,ROTATE,IMAGE,MATPTR
      INTEGER STEND,SGTMAX,MATPTR
      INTEGER*4 FILE(30000),TABLE(5,1000),FLPNTR,FLEND
      REAL MATRIX(4,4),XFMMAT(4,3,1000),ROTATE(3,1000)
      LOGICAL IMAGE
      INTEGER NAME(3),VALUE,ATTRIB
      INTEGER*4 SEGNAM,STPNTR,SGNAME
      LOGICAL  DTECT
      DATA NAME/2H I,2HSD,2HET/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPRINT ( 1, SEGNAM )
      CALL GPRLOG ( 2, DTECT )
      CALL GRPTER ( NAME, 717 )
      GO TO 800
  15  CONTINUE
      DO 100 STPNTR=1,STEND
        SGNAME=TABLE(2,STPNTR)
        IF ( SGNAME.EQ.SEGNAM)          GO TO 200
 100  CONTINUE
       CALL GPRINT(1,SEGNAM)
       CALL GPRLOG(2,.FALSE.)
       CALL GRPTER(NAME,305)
       GO TO 800
 200  CONTINUE
      ATTRIB=TABLE(1,STPNTR)
      CALL GETBIT(ATTRIB,16,1,VALUE)
      IF(VALUE.EQ.0)         DTECT=.FALSE.
      IF(VALUE.EQ.1)         DTECT=.TRUE.
 800  CONTINUE
      RETURN
      END
      SUBROUTINE  ISITN2  (SEGNAM, TX, TY)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      COMMON /STB/ FILE,TABLE,FLPNTR,FLEND,STEND,
     1     SGTMAX,MATRIX,XFMMAT,ROTATE,IMAGE,MATPTR
      INTEGER STEND,SGTMAX,MATPTR
      INTEGER*4 FILE(30000),TABLE(5,1000),FLPNTR,FLEND
      REAL MATRIX(4,4),XFMMAT(4,3,1000),ROTATE(3,1000)
      LOGICAL IMAGE
      INTEGER NAME(3)
      INTEGER*4 SEGNAM,STPNTR
      DATA  NAME /2HIS, 2HIT, 2HN2/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPRINT ( 1, SEGNAM )
      CALL GPREAL ( 2, TX )
      CALL GPREAL ( 3, TY )
      CALL GRPTER (NAME,717)
      GO TO 900
  15  CONTINUE
      DO  60  STPNTR = 1, STEND
         SGNAME = TABLE(2,STPNTR)
         IF (SGNAME . EQ . SEGNAM)  GO TO 80
  60  CONTINUE
      CALL GPRINT (1,SEGNAM)
      CALL GRPTER(NAME,305)
      GO TO 900
  80  ATTRIB = TABLE(1, INT(SGNAME))
      CALL GETBIT(ATTRIB, 11, 3, VALUE)
      IF (VALUE.EQ.2)                 GO TO 200
      IF (VALUE.LT.2) ERNUM = 406
      IF (VALUE.GT.2) ERNUM = 407
      CALL GRPTER(NAME, ERNUM)
      GO TO 900
 200  CONTINUE
      TX = XFMMAT(4,1, STPNTR)
      TY = XFMMAT(4,2, STPNTR)
 900  CONTINUE
      RETURN
      END
      SUBROUTINE  ISITR2 (SEGNAM, SX, SY, A, TX, TY)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      COMMON /STB/ FILE,TABLE,FLPNTR,FLEND,STEND,
     1     SGTMAX,MATRIX,XFMMAT,ROTATE,IMAGE,MATPTR
      INTEGER STEND,SGTMAX,MATPTR
      INTEGER*4 FILE(30000),TABLE(5,1000),FLPNTR,FLEND
      REAL MATRIX(4,4),XFMMAT(4,3,1000),ROTATE(3,1000)
      LOGICAL IMAGE
      INTEGER NAME(3),ERNUM,VALUE,ATTRIB
      INTEGER*4 SEGNAM,STPNTR,SGNAME
      REAL  A,A11,A12,A13,A21,A22,A23
      DATA  NAME /2HIS, 2HIT, 2HR2/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPRINT ( 1, SEGNAM )
      CALL GPREAL ( 2, SX )
      CALL GPREAL ( 3, SY )
      CALL GPREAL ( 4, A )
      CALL GPREAL ( 5, TX )
      CALL GPREAL ( 6, TY )
      CALL GRPTER ( NAME, 717 )
      GO TO 900
  15  CONTINUE
      DO  60  STPNTR = 1, STEND
         SGNAME = TABLE(2,STPNTR)
         IF (SGNAME.EQ.SEGNAM) GOTO 80
  60  CONTINUE
      CALL GPRINT (1,SEGNAM)
      CALL GRPTER(NAME,305)
      GO TO 900
  80  CONTINUE
      ATTRIB = TABLE(1, SGNAME)
      CALL GETBIT(ATTRIB, 11, 3, VALUE)
      IF (VALUE.EQ.3)                 GO TO 200
      IF (VALUE.LT.2) ERNUM = 406
      IF (VALUE.GT.3) ERNUM = 407
      CALL GRPTER(NAME, ERNUM)
      GO TO 900

 200  CONTINUE
      A = ROTATE(3,STPNTR)
      A11 = XFMMAT(1,1,STPNTR)**2
      A12 = XFMMAT(1,2,STPNTR)**2
      A13 = XFMMAT(1,3,STPNTR)**2
      A21 = XFMMAT(2,1,STPNTR)**2
      A22 = XFMMAT(2,2,STPNTR)**2
      A23 = XFMMAT(2,3,STPNTR)**2
      SX = SQRT (A11 + A12 + A13)
      SY = SQRT (A21 + A22 + A23)
      TX = XFMMAT(4,1,STPNTR)
      TY = XFMMAT(4,2,STPNTR)
 900  CONTINUE
      RETURN
      END
      SUBROUTINE  ISITR3 (SEGNAM,SX,SY,SZ,AX,AY,AZ,TX,TY,TZ)
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR, IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      COMMON /STB/ FILE,TABLE,FLPNTR,FLEND,STEND,
     1     SGTMAX,MATRIX,XFMMAT,ROTATE,IMAGE,MATPTR
      INTEGER STEND,SGTMAX,MATPTR
      INTEGER*4 FILE(30000),TABLE(5,1000),FLPNTR,FLEND
      REAL MATRIX(4,4),XFMMAT(4,3,1000),ROTATE(3,1000)
      LOGICAL IMAGE
      INTEGER NAME(3),VALUE,ATTRIB
      INTEGER*4 SEGNAM,STPNTR,SGNAME
      REAL A11,A12,A13,A21,A22,A23,A31,A32,A33
      DATA  NAME /2HIS, 2HIT, 2HR3/
      IF  ( .NOT. SINIT )                GO TO 10
                                       GO TO 15
  10  CONTINUE
      CALL GPRINT ( 1, SEGNAM )
      CALL GPREAL ( 2, SX )
      CALL GPREAL ( 3, SY )
      CALL GPREAL ( 4, SZ )
      CALL GPREAL ( 5, AX )
      CALL GPREAL ( 6, AY )
      CALL GRPTER ( NAME, 717 )
      GO TO 900
  15  CONTINUE
      DO  60  STPNTR=1,STEND
         SGNAME = TABLE(2,STPNTR)
         IF (SGNAME . EQ . SEGNAM)  GO TO 80
  60  CONTINUE
      CALL GPRINT (1,SEGNAM)
      CALL GPREAL ( 2, SX )
      CALL GPREAL ( 3, SY )
      CALL GPREAL ( 4, SZ )
      CALL GPREAL ( 5, AX )
      CALL GPREAL ( 6, AY )
      CALL GRPTER(NAME,305)
      GO TO 900
  80  CONTINUE
      ATTRIB = TABLE(1,STPNTR)
      CALL GETBIT(ATTRIB,11,3,VALUE)
      IF (VALUE.GE.4)             GO TO 200
      CALL GPRINT(1,SEGNAM)
      CALL GPREAL ( 2, AX )
      CALL GPREAL ( 3, AY )
      CALL GPREAL ( 4, AZ )
      CALL GPREAL ( 5, AX )
      CALL GPREAL ( 6, AY )
      CALL GRPTER(NAME,406)
      GO TO 900
 200  CONTINUE
      AX = ROTATE(1,STPNTR)
      AY = ROTATE(2,STPNTR)
      AZ = ROTATE(3,STPNTR)
      A11 = XFMMAT(1,1,STPNTR)**2
      A12 = XFMMAT(1,2,STPNTR)**2
      A13 = XFMMAT(1,3,STPNTR)**2
      A21 = XFMMAT(2,1,STPNTR)**2
      A22 = XFMMAT(2,2,STPNTR)**2
      A23 = XFMMAT(2,3,STPNTR)**2
      A31 = XFMMAT(3,1,STPNTR)**2
      A32 = XFMMAT(3,2,STPNTR)**2
      A33 = XFMMAT(3,3,STPNTR)**2
      SX = SQRT (A11 + A12 + A13)
      SY = SQRT (A21 + A22 + A23)
      SZ = SQRT (A31 + A32 + A33)
      TX = XFMMAT(4,1,STPNTR)
      TY = XFMMAT(4,2,STPNTR)
      TZ = XFMMAT(4,3,STPNTR)
 900  CONTINUE
      RETURN
      END
      SUBROUTINE GSRFSW (VALUE)
      COMMON/VSP/INITVS,VSINIT,VSSELC,SELSLT,VSTYPE,
     1     VSXCM,VSYCM,VSXNDC,VSYNDC,
     2     VSXCHR,VSYCHR,VSLNSC,VSLNSS,VSLNWC,VSLNWS,
     3     VSFNTC,VSPENC,VSPENS,VSCSC,VSMRKC,VSMRKS,
     4     VSOLVL,VSHILS,VSBATC,VSOTYP,VSPIX,VSCTAB,VSHIDS,
     5     VSPFIL,VSEDGE,VSPIXX,VSPIXY,VSCMOD,VSBGDC,
     6     VSBGDT,VSCINX,VSCNUM,VSCTYP,VSIINX,VSINUM,
     7     VSITYP,VSSCMX,VSSCMY,VSSNDX,VSSNDY,VSLWMN,
     8     VSLWMX,VSCSMN,VSCSMX,VSPMAX,SRFUSE,MODE,VSPPIK
      INTEGER*4 INITVS(5,2),SELSLT,VSTYPE(5),VSXNDC(5),
     1     VSYNDC(5),VSXCHR(5),VSYCHR(5),VSLNSC(5),VSLNSS(5),
     2     VSLNWC(5),VSLNWS(5),VSFNTC(5),VSPENC(5),VSPENS(5),
     3     VSCSC(5),VSMRKC(5),VSMRKS(5),VSOLVL(5),VSHILS(5),
     4     VSBATC(5),VSOTYP(5),VSPIX(5),VSCTAB(5),VSHIDS(5),
     5     VSPFIL(5,3),VSEDGE(5),VSPIXX(5),VSPIXY(5),VSCMOD(5),
     6     VSBGDC(5),VSBGDT(5),VSCINX(5),VSCNUM(5),VSCTYP(5),
     7     VSIINX(5),VSINUM(5),VSITYP(5),VSPMAX,SRFUSE(5),
     8     MODE(5),VSPPIK(5)
      REAL VSXCM(5),VSYCM(5),VSSCMX(5),VSSCMY(5),VSSNDX(5),
     1     VSSNDY(5),VSLWMN(5),VSLWMX(5),VSCSMN(5),VSCSMX(5)
      LOGICAL VSINIT(5),VSSELC(5)
      INTEGER    INT,BITMAP,VALUE,NEWSRF
      IF(VALUE.EQ.INITVS(SELSLT,1))THEN
          CALL GNWFRM
          RETURN
      ENDIF
      DO 250 I=1,VSPMAX
          IF (VALUE.EQ.INITVS(I,1)) GO TO 255
  250 CONTINUE
  255 CONTINUE
      NEWSRF = I
      IF (SELSLT.EQ.0)THEN
          VSSELC(NEWSRF)=.TRUE.
          CALL GNWFRM
          VSSELC(NEWSRF)=.FALSE.
          RETURN
      ENDIF
      VSSELC(SELSLT)=.FALSE.
      VSSELC(NEWSRF)=.TRUE.
      CALL GNWFRM
      VSSELC(NEWSRF)=.FALSE.
      VSSELC(SELSLT)=.TRUE.
      RETURN
      END
      SUBROUTINE SVSBS (SGNMAY,VISARY,N)
      COMMON /STB/ FILE,TABLE,FLPNTR,FLEND,STEND,
     1     SGTMAX,MATRIX,XFMMAT,ROTATE,IMAGE,MATPTR
      INTEGER STEND,SGTMAX,MATPTR
      INTEGER*4 FILE(30000),TABLE(5,1000),FLPNTR,FLEND
      REAL MATRIX(4,4),XFMMAT(4,3,1000),ROTATE(3,1000)
      LOGICAL IMAGE
      COMMON /PAR/ PARRAY,MAXARY
      INTEGER*4 PARRAY(5000),MAXARY
      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
      INTEGER SGNMAY(1000)
      INTEGER NAME(3),ERRNUM,BASE,ATTRIB,SEG,VISIB
      LOGICAL VISARY(1000),CHANGE
      INTEGER STPNTR,SUB
      DATA NAME/2HSV,2HSB,2HS /
      IF (SINIT) GO TO 5
          ERRNUM=717
          GO TO 900
   5  CONTINUE
      IF (N.GT.0.AND.N.LE.1000) GO TO 10
          ERRNUM=2
          GO TO 900
   10 CONTINUE
      STPNTR=STEND-1
      DO 35 I=1,N
          DO 20 J=1,STPNTR
              IF(SGNMAY(I).EQ.TABLE(2,J)) GO TO 35
   20     CONTINUE
          ERRNUM=715
          GO TO 900
   35 CONTINUE
      PARRAY(1) = (3*N) + 4
      PARRAY(2) = VSIBLE
      PARRAY(3) = 3*N
      PARRAY(4) = 0
      BASE = 5
      DO 60 I=1,N
          DO 50 J=1,STEND
              IF (SGNMAY(I).EQ.TABLE(2,J)) GO TO 55
   50     CONTINUE
   55 CONTINUE
      SEG = J
      ATTRIB = TABLE(1,SEG)
      CALL GETBIT(ATTRIB,14,1,VISIB)
      IF(.NOT.VISARY(I).AND.VISIB.EQ.0) GO TO 57
      IF(VISARY(I).AND.VISIB.EQ.1) GO TO 57
      CHANGE=.TRUE.
      IF (VISARY(I)) ATTRIB=ATTRIB + 4
      IF (.NOT.VISARY(I)) ATTRIB = ATTRIB - 4
      TABLE(1,SEG) = ATTRIB
  57  CONTINUE
      PARRAY(BASE) = TABLE(3,SEG)
      SUB = BASE+N
      PARRAY(SUB) = TABLE(2,SEG)
      SUB=BASE+(2*N)
      IF(VISARY(I)) PARRAY(SUB) = 1
      IF(.NOT.VISARY(I)) PARRAY(SUB) = 0
      BASE = BASE + 1
   60 CONTINUE
      CALL GSENDS
      IF (CHANGE) CALL GNWFRM
      RETURN
  900 CONTINUE
      CALL GPRINT(1,SGNMAY(1))
      CALL GPRINT(2,SGNMAY(2))
      CALL GPRINT(3,SGNMAY(3))
      CALL GPRLOG(1,VISARY(1))
      CALL GPRLOG(2,VISARY(2))
      CALL GRPTER(NAME,ERRNUM)
      RETURN
      END
**IN -1
