      SUBROUTINE  IITR3 (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
      REAL    SX, SY, SZ, AX, AY, AZ, TX, TY, TZ
      INTEGER  NAME(3)
      DATA  NAME /2HII,2HTR,2H3 /
      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
      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)
      SZ = SQRT(IXFORM(3,1)**2 + IXFORM(3,2)**2 + IXFORM(3,3)**2)
      AX = ANGLES(1)
      AY = ANGLES(2)
      AZ = ANGLES(3)
      TX = IXFORM(4,1)
      TY = IXFORM(4,2)
      TZ = IXFORM(4,3)
 900  CONTINUE
      RETURN
      END
      SUBROUTINE  GETBIT(SOURCE,START,NUMBIT,VALUE)
      INTEGER  I2WORD,START,NUMBIT,VALUE,SHIFT,
     1           STORE,SOURCE
      SHIFT = 16 - (START + NUMBIT ) + 1
      I2WORD = SOURCE / (2**SHIFT)
      STORE = I2WORD
      I2WORD = I2WORD / (2**NUMBIT)
      I2WORD = I2WORD * (2**NUMBIT)
      VALUE = STORE - I2WORD
      RETURN
      END
       SUBROUTINE GSEND
        INTEGER VSBL,ICODE
        REAL RELNUM
        REAL RARRAY(5000)
      COMMON /PAR/ PARRAY,MAXARY
      INTEGER*4 PARRAY(5000),MAXARY
        EQUIVALENCE (PARRAY,RARRAY)
      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)
      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
      COMMON/OPC/PMARK3,PMARK2,PLIN3,PLIN2,POLY3,POLY2,TEXT,MOVE,
     1     IMTRAN,HGHLTG,VSIBLE,DTECT,NWFRM,DELETS,DELETA,IMMEDV,
     2     PICCUR,BGNBAT,ENDBAT,CRSEG,CTSEG,CLOSRS,CLOSTS,RENAMS,
     3     INITDD,TERMDD,INTIZE,TRM,SNDC,INQDVC,COLR,BGCOLR,TENSTY,
     4     BGINTY,SNDX,BGINDX,COLNDX,INTNDX,IQCNDX,IQINDX,
     5     LNSTYL,ILNSTL,LNWITH,PENS,IDENSE,CHFONT,CHARSZ,CHARSP,
     6     STRROT,CHARPH,CHARJT,CHAREX,MRKSYM,PICK,ALLATR,POLEDG,
     7     POLINT,PIXCOL,PIXINT,PIXNDX,WRSCOL,WRSINT,WRSNDX,RRSCOL,
     8     RRSINT,RRSNDX,ESCAP,IESCAP,AMODE,OUTUNT
      INTEGER PMARK3,PMARK2,PLIN3,PLIN2,POLY3,POLY2,TEXT,MOVE,
     1     IMTRAN,HGHLTG,VSIBLE,DTECT,NWFRM,DELETS,DELETA,IMMEDV,
     2     PICCUR,BGNBAT,ENDBAT,CRSEG,CTSEG,CLOSRS,CLOSTS,RENAMS,
     3     INITDD,TERMDD,INTIZE,TRM,SNDC,INQDVC,COLR,BGCOLR,TENSTY,
     4     BGINTY,SNDX,BGINDX,COLNDX,INTNDX,IQCNDX,IQINDX,
     5     LNSTYL,ILNSTL,LNWITH,PENS,IDENSE,CHFONT,CHARSZ,CHARSP,
     6     STRROT,CHARPH,CHARJT,CHAREX,MRKSYM,PICK,ALLATR,POLEDG,
     7     POLINT,PIXCOL,PIXINT,PIXNDX,WRSCOL,WRSINT,WRSNDX,RRSCOL,
     8     RRSINT,RRSNDX,ESCAP,IESCAP,AMODE,OUTUNT
      COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
     1     NWFRMR,IMMED
      LOGICAL SINIT, BOUPDT, NWFRMR(5),IMMED
      INTEGER OUTLEV,DIMENS,HIDSRF,DISPMD
      COMMON /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 /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 /SAT/ SSEG,SLSTYL,SLWIDT,SPEN,SPINTR,SPEDGE,
     1    DEFLST,DEFLWT,DEFPEN,DEFMRK,SIMLST,SIMLWT,SIMPEN
      INTEGER*4 SSEG(2),SLSTYL(2),SPEN(2),SPINTR(2),
     1     SPEDGE(2),DEFLST,DEFPEN,DEFMRK,SIMLST,SIMPEN
      REAL SLWIDT(2),DEFLWT,SIMLWT
      COMMON /ESC/SCAN
      INTEGER SCAN
        IF(PARRAY(2).LT.COLR) GO TO 100
        IF(PARRAY(2).EQ.ILNSTL) GO TO 100
        IF((PARRAY(2).GE.PENS).AND.(PARRAY(2).LT.IDENSE)) GO TO 100
        IF(PARRAY(2).GE.MRKSYM) GO TO 100
        IF(PARRAY(2).NE.LNSTYL) GO TO 20
         IF(PARRAY(5).LE.VSLNSC(SELSLT)) GO TO 20
         IF(PARRAY(5).LE.SIMLST) GO TO 20
         PARRAY(5)=DEFLST
        GO TO 100
 20     IF(PARRAY(2).NE.LNWITH) GO TO 40
         IF(PARRAY(5).LE.VSLNWC(SELSLT)) GO TO 40
         IF(PARRAY(5).LE.SIMLWT) GO TO 40
        RARRAY(5)=DEFLWT
        GO TO 100
 40     IF(PARRAY(2).NE.PENS) GO TO 80
         IF(PARRAY(5).LE.VSPENC(SELSLT)) GO TO 80
         IF(PARRAY(5).LE.SIMPEN) GO TO 80
        PARRAY(5)=DEFPEN
        GO TO 100
 80     IF(PARRAY(2).NE.MRKSYM) GO TO 100
         IF(PARRAY(5).LE.VSMRKC(SELSLT)) GO TO 100
        PARRAY(5)=DEFMRK
 100    CONTINUE
      IF (OPTSGX) GO TO 160
        IF(VSTYPE(SELSLT).EQ.1) GO TO 150
        IF(.NOT.OPSEGX) GO TO 150
        IF((PARRAY(2).GE.IMTRAN).AND.(PARRAY(2).LE.VSIBLE))
     1    GO TO 150
        CALL GPDF()
 150    CONTINUE
        VSBL=0
        ICODE=TABLE(1,OPSEG)/4
        RELNUM=ICODE/2.0
        IF((RELNUM-(ICODE/2)).EQ.0.5) VSBL=1
        IF(VSBL.EQ.0) RETURN
 160    CONTINUE
        IF(.NOT.BOUPDT) GO TO 300
        IF(VSBATC(SELSLT).NE.2) GO TO 180
        IF(PARRAY(2).EQ.DELETS) RETURN
        IF(PARRAY(2).EQ.DELETA) RETURN
        IF(PARRAY(2).LT.TEXT) RETURN
        IF(PARRAY(2).EQ.IMTRAN) RETURN
 180    CONTINUE
        IF(VSBATC(SELSLT).NE.3) GO TO 250
        IF((PARRAY(2).GE.HGHLTG).AND.(PARRAY(2).LE.VSIBLE))
     1   RETURN
        IF(PARRAY(2).EQ.DELETS) RETURN
        IF(PARRAY(2).EQ.DELETA) RETURN
        IF(PARRAY(2).EQ.IMTRAN) RETURN
 250    CONTINUE
 300    CONTINUE
        ENTRY GSENDS
        IF (PARRAY(2).EQ.CRSEG) SSEG(1) = PARRAY(6)
        IF (PARRAY(2).EQ.LNSTYL) SLSTYL(1) = PARRAY(5)
        IF (PARRAY(2).EQ.LNWITH) SLWIDT(1) = PARRAY(5)
        IF (PARRAY(2).EQ.PENS) SPEN(1) = PARRAY(5)
        IF (PARRAY(2).EQ.POLINT) SPINTR(1) = PARRAY(5)
        IF (PARRAY(2).EQ.POLEDG) SPEDGE(1) = PARRAY(5)
 400    CONTINUE
        IF (IMAGE) THEN
             IF (PARRAY(2).LE.TEXT) CALL GIMAGE
        ENDIF
 500    CONTINUE
        IF(PARRAY(2).NE.HGHLTG) GO TO 700
        IF(VSHILS(SELSLT).EQ.0) GO TO 700
 600    CONTINUE
         CALL GDRAGN
 700    CONTINUE
 800    CONTINUE
       IF (PARRAY(2).EQ.POLY3.OR.PARRAY(2).EQ.POLY2) THEN
           IF (INITVS(SELSLT,1).EQ.20) THEN
               CALL GSCAN
               RETURN
           ENDIF
       ENDIF
       IF (PARRAY(2).EQ.POLY3.OR.PARRAY(2).EQ.POLY2) THEN
C           IF (INITVS(SELSLT,1).EQ.40) THEN
             IF(SCAN.GT.1) THEN
               CALL GSCAN
               RETURN
              ENDIF
C           ENDIF
       ENDIF
        CALL GDSPCH
        RETURN
       END
      SUBROUTINE ESCAPE(PARAM,VALUE)
      COMMON /ESC/ SCAN
      INTEGER SCAN
      INTEGER PARAM,VALUE
      IF (PARAM.EQ.1)SCAN=VALUE
      RETURN
      END
       *END
**IN -1
