C
C=======================================================================
C
      SUBROUTINE RPSYMB(ISYMB,XX,YY,HEIGHT)
C
C-----------------------------------------------------------------------
      INTEGER ISYMB
      REAL XX,YY,HEIGHT
C Subroutine designed to plot centered symbols using CALCOPS graphic.
C
C Input:
C     ISYMB... Index of the symbol to be plotted.
C     XX   ... X coordinate of the center of the symbol.
C     YY   ... Y coordinate of the center of the symbol.
C     HEIGHT.. Vertical dimension of the symbol in centimetres.
C No output:
C
C Subroutines and external functions required:
C     subroutine PLOT of the CALCOPS package.
C
C Date: 1998, November 26
C
C Coded by Petr Bulant
C
C.......................................................................
C
      REAL STUP
      PARAMETER (STUP=0.0174532)
      REAL AA,BB,CC,DD,EE,FF,GG,HH
      REAL HEIGH0
      SAVE AA,BB,CC,DD,EE,FF,GG,HH,HEIGH0
      DATA HEIGH0/0./
C     STUP ... Value of one degree in radians.
C     AA,..HH ... Auxiliary variables.
C     HEIGH0 ... Value of HEIGHT of the last invocation.
C-----------------------------------------------------------------------
C
      IF (ISYMB.EQ.0) THEN
C       Definitions:
        WRITE(97,'(A)') '%% Symbol definitions:                        '
        WRITE(97,'(A)') '/P101 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX AA add   YY     moveto                    '
        WRITE(97,'(A)') ' XX AA sub   YY     lineto                    '
        WRITE(97,'(A)') ' XX      YY AA add  moveto                    '
        WRITE(97,'(A)') ' XX      YY AA sub  lineto                    '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P102 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX BB sub   YY BB sub  moveto                '
        WRITE(97,'(A)') ' XX BB add   YY BB add  lineto                '
        WRITE(97,'(A)') ' XX BB sub   YY BB add  moveto                '
        WRITE(97,'(A)') ' XX BB add   YY BB sub  lineto                '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P103 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX      YY AA add  moveto                    '
        WRITE(97,'(A)') ' XX AA add   YY     lineto                    '
        WRITE(97,'(A)') ' XX      YY AA sub  lineto                    '
        WRITE(97,'(A)') ' XX AA sub   YY     lineto                    '
        WRITE(97,'(A)') ' XX      YY AA add  lineto                    '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P104 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX BB add   YY BB add  moveto                '
        WRITE(97,'(A)') ' XX BB add   YY BB sub  lineto                '
        WRITE(97,'(A)') ' XX BB sub   YY BB sub  lineto                '
        WRITE(97,'(A)') ' XX BB sub   YY BB add  lineto                '
        WRITE(97,'(A)') ' XX BB add   YY BB add  lineto                '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P105 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX YY AA 0 360 stroke arc                    '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P106 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX      YY AA add      moveto                '
        WRITE(97,'(A)') ' XX CC add   YY DD sub  lineto                '
        WRITE(97,'(A)') ' XX CC sub   YY DD sub  lineto                '
        WRITE(97,'(A)') ' XX      YY AA add      lineto                '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P107 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX AA add   YY         moveto                '
        WRITE(97,'(A)') ' XX DD sub   YY CC sub  lineto                '
        WRITE(97,'(A)') ' XX DD sub   YY CC add  lineto                '
        WRITE(97,'(A)') ' XX AA add   YY         lineto                '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P108 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX      YY AA sub      moveto                '
        WRITE(97,'(A)') ' XX CC sub   YY DD add  lineto                '
        WRITE(97,'(A)') ' XX CC add   YY DD add  lineto                '
        WRITE(97,'(A)') ' XX      YY AA sub      lineto                '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P109 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX AA sub   YY         moveto                '
        WRITE(97,'(A)') ' XX DD add   YY CC add  lineto                '
        WRITE(97,'(A)') ' XX DD add   YY CC sub  lineto                '
        WRITE(97,'(A)') ' XX AA sub   YY         lineto                '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P110 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX CC sub   YY DD add  moveto                '
        WRITE(97,'(A)') ' XX      YY             lineto                '
        WRITE(97,'(A)') ' XX CC add   YY DD add  moveto                '
        WRITE(97,'(A)') ' XX      YY             lineto                '
        WRITE(97,'(A)') ' XX      YY AA sub      moveto                '
        WRITE(97,'(A)') ' XX      YY             lineto                '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P111 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX DD add   YY CC add  moveto                '
        WRITE(97,'(A)') ' XX      YY             lineto                '
        WRITE(97,'(A)') ' XX DD add   YY CC sub  moveto                '
        WRITE(97,'(A)') ' XX      YY             lineto                '
        WRITE(97,'(A)') ' XX AA sub   YY         moveto                '
        WRITE(97,'(A)') ' XX      YY             lineto                '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P112 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX CC add   YY DD sub  moveto                '
        WRITE(97,'(A)') ' XX      YY             lineto                '
        WRITE(97,'(A)') ' XX CC sub   YY DD sub  moveto                '
        WRITE(97,'(A)') ' XX      YY             lineto                '
        WRITE(97,'(A)') ' XX      YY AA add      moveto                '
        WRITE(97,'(A)') ' XX      YY             lineto                '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P113 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX DD sub   YY CC add  moveto                '
        WRITE(97,'(A)') ' XX      YY             lineto                '
        WRITE(97,'(A)') ' XX DD sub   YY CC sub  moveto                '
        WRITE(97,'(A)') ' XX      YY             lineto                '
        WRITE(97,'(A)') ' XX AA add   YY         moveto                '
        WRITE(97,'(A)') ' XX      YY             lineto                '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P114 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX FF sub   YY EE add  moveto                '
        WRITE(97,'(A)') ' XX FF add   YY EE add  lineto                '
        WRITE(97,'(A)') ' XX HH sub   YY GG sub  lineto                '
        WRITE(97,'(A)') ' XX      YY AA add      lineto                '
        WRITE(97,'(A)') ' XX HH add   YY GG sub  lineto                '
        WRITE(97,'(A)') ' XX FF sub   YY EE add  lineto                '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P115 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX HH sub   YY GG add  moveto                '
        WRITE(97,'(A)') ' XX FF add   YY EE sub  lineto                '
        WRITE(97,'(A)') ' XX FF sub   YY EE sub  lineto                '
        WRITE(97,'(A)') ' XX HH add   YY GG add  lineto                '
        WRITE(97,'(A)') ' XX      YY AA sub      lineto                '
        WRITE(97,'(A)') ' XX HH sub   YY GG add  lineto                '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P116 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX      YY AA add      moveto                '
        WRITE(97,'(A)') ' XX CC add   YY DD sub  lineto                '
        WRITE(97,'(A)') ' XX CC sub   YY DD sub  lineto                '
        WRITE(97,'(A)') ' XX      YY AA add      lineto                '
        WRITE(97,'(A)') ' XX      YY AA sub      moveto                '
        WRITE(97,'(A)') ' XX CC sub   YY DD add  lineto                '
        WRITE(97,'(A)') ' XX CC add   YY DD add  lineto                '
        WRITE(97,'(A)') ' XX      YY AA sub      lineto                '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P117 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX AA add   YY         moveto                '
        WRITE(97,'(A)') ' XX DD sub   YY CC sub  lineto                '
        WRITE(97,'(A)') ' XX DD sub   YY CC add  lineto                '
        WRITE(97,'(A)') ' XX AA add   YY         lineto                '
        WRITE(97,'(A)') ' XX AA sub   YY         moveto                '
        WRITE(97,'(A)') ' XX DD add   YY CC add  lineto                '
        WRITE(97,'(A)') ' XX DD add   YY CC sub  lineto                '
        WRITE(97,'(A)') ' XX AA sub   YY         lineto                '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P118 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX      YY AA add               moveto       '
        WRITE(97,'(A)') ' XX CC 7 div add YY DD 7 div add lineto       '
        WRITE(97,'(A)') ' XX CC add   YY DD sub           lineto       '
        WRITE(97,'(A)') ' XX      YY AA 7 div sub         lineto       '
        WRITE(97,'(A)') ' XX CC sub   YY DD sub           lineto       '
        WRITE(97,'(A)') ' XX CC 7 div sub YY DD 7 div add lineto       '
        WRITE(97,'(A)') ' XX      YY AA add               lineto       '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P119 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX AA add   YY                  moveto       '
        WRITE(97,'(A)') ' XX DD 7 div add YY CC 7 div sub lineto       '
        WRITE(97,'(A)') ' XX DD sub   YY CC sub           lineto       '
        WRITE(97,'(A)') ' XX AA 7 div sub YY              lineto       '
        WRITE(97,'(A)') ' XX DD sub   YY CC add           lineto       '
        WRITE(97,'(A)') ' XX DD 7 div add YY CC 7 div add lineto       '
        WRITE(97,'(A)') ' XX AA add   YY                  lineto       '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P120 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX      YY AA sub               moveto       '
        WRITE(97,'(A)') ' XX CC 7 div sub YY DD 7 div sub lineto       '
        WRITE(97,'(A)') ' XX CC sub   YY DD add           lineto       '
        WRITE(97,'(A)') ' XX      YY AA 7 div add         lineto       '
        WRITE(97,'(A)') ' XX CC add   YY DD add           lineto       '
        WRITE(97,'(A)') ' XX CC 7 div add YY DD 7 div sub lineto       '
        WRITE(97,'(A)') ' XX      YY AA sub               lineto       '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P121 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX AA sub   YY                  moveto       '
        WRITE(97,'(A)') ' XX DD 7 div sub YY CC 7 div add lineto       '
        WRITE(97,'(A)') ' XX DD add   YY CC add           lineto       '
        WRITE(97,'(A)') ' XX AA 7 div add YY              lineto       '
        WRITE(97,'(A)') ' XX DD add   YY CC sub           lineto       '
        WRITE(97,'(A)') ' XX DD 7 div sub YY CC 7 div sub lineto       '
        WRITE(97,'(A)') ' XX AA sub   YY                  lineto       '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P122 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX      YY AA add               moveto       '
        WRITE(97,'(A)') ' XX BB 7 div add YY BB 7 div add lineto       '
        WRITE(97,'(A)') ' XX AA add   YY                  lineto       '
        WRITE(97,'(A)') ' XX BB 7 div add YY BB 7 div sub lineto       '
        WRITE(97,'(A)') ' XX      YY AA sub               lineto       '
        WRITE(97,'(A)') ' XX BB 7 div sub YY BB 7 div sub lineto       '
        WRITE(97,'(A)') ' XX AA sub   YY                  lineto       '
        WRITE(97,'(A)') ' XX BB 7 div sub YY BB 7 div add lineto       '
        WRITE(97,'(A)') ' XX      YY AA add               lineto       '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P123 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX      YY AA 7 div add         moveto       '
        WRITE(97,'(A)') ' XX BB add   YY BB add           lineto       '
        WRITE(97,'(A)') ' XX AA 7 div add YY              lineto       '
        WRITE(97,'(A)') ' XX BB add   YY BB sub           lineto       '
        WRITE(97,'(A)') ' XX      YY AA 7 div sub         lineto       '
        WRITE(97,'(A)') ' XX BB sub   YY BB sub           lineto       '
        WRITE(97,'(A)') ' XX AA 7 div sub YY              lineto       '
        WRITE(97,'(A)') ' XX BB sub   YY BB add           lineto       '
        WRITE(97,'(A)') ' XX      YY AA 7 div add         lineto       '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P124 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX FF sub   YY EE add  moveto                '
        WRITE(97,'(A)') ' XX      YY AA add      lineto                '
        WRITE(97,'(A)') ' XX FF add   YY EE add  lineto                '
        WRITE(97,'(A)') ' XX HH add   YY GG sub  lineto                '
        WRITE(97,'(A)') ' XX HH sub   YY GG sub  lineto                '
        WRITE(97,'(A)') ' XX FF sub   YY EE add  lineto                '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P125 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX HH sub   YY GG add  moveto                '
        WRITE(97,'(A)') ' XX HH add   YY GG add  lineto                '
        WRITE(97,'(A)') ' XX FF add   YY EE sub  lineto                '
        WRITE(97,'(A)') ' XX      YY AA sub      lineto                '
        WRITE(97,'(A)') ' XX FF sub   YY EE sub  lineto                '
        WRITE(97,'(A)') ' XX HH sub   YY GG add  lineto                '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P126 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX      YY AA add      moveto                '
        WRITE(97,'(A)') ' XX      YY AA sub      lineto                '
        WRITE(97,'(A)') ' XX CC add   YY DD sub  lineto                '
        WRITE(97,'(A)') ' XX CC sub   YY DD add  lineto                '
        WRITE(97,'(A)') ' XX CC sub   YY DD sub  lineto                '
        WRITE(97,'(A)') ' XX CC add   YY DD add  lineto                '
        WRITE(97,'(A)') ' XX      YY AA add      lineto                '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P127 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX AA add   YY         moveto                '
        WRITE(97,'(A)') ' XX AA sub   YY         lineto                '
        WRITE(97,'(A)') ' XX DD sub   YY CC sub  lineto                '
        WRITE(97,'(A)') ' XX DD add   YY CC add  lineto                '
        WRITE(97,'(A)') ' XX DD sub   YY CC add  lineto                '
        WRITE(97,'(A)') ' XX DD add   YY CC sub  lineto                '
        WRITE(97,'(A)') ' XX AA add   YY         lineto                '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '/P128 {/YY exch def /XX exch def              '
        WRITE(97,'(A)') ' XX YY AA 0 360 stroke arc fill               '
        WRITE(97,'(A)') '                stroke} bind def              '
        WRITE(97,'(A)') '%% End of definitions.                        '
        RETURN
      ENDIF
      IF (ISYMB.GT.28) ISYMB=28
      IF (HEIGHT.NE.HEIGH0) THEN
        HEIGH0=HEIGHT
        AA=HEIGHT/2. *72./2.54
        BB=AA/SQRT(2.)
        CC=AA*SQRT(3.)/2.
        DD=HEIGHT/4. *72./2.54
        EE=AA*SIN(18.*STUP)
        FF=AA*COS(18.*STUP)
        GG=AA*COS(36.*STUP)
        HH=AA*SIN(36.*STUP)
        WRITE(97,'(A,F5.1,A)') '/AA ',AA,' def'
        WRITE(97,'(A,F5.1,A)') '/BB ',BB,' def'
        WRITE(97,'(A,F5.1,A)') '/CC ',CC,' def'
        WRITE(97,'(A,F5.1,A)') '/DD ',DD,' def'
        WRITE(97,'(A,F5.1,A)') '/EE ',EE,' def'
        WRITE(97,'(A,F5.1,A)') '/FF ',FF,' def'
        WRITE(97,'(A,F5.1,A)') '/GG ',GG,' def'
        WRITE(97,'(A,F5.1,A)') '/HH ',HH,' def'
      ENDIF
      WRITE(97,'(2F6.1,A,I3)') XX*72./2.54,YY*72./2.54,' P',100+ISYMB
      RETURN
      END
C