C  PROGRAM SEL98.FOR
C  PROGRAM TO EXTRACT BASE STEP PARAMETERS AND THEN BASE PAIR PARAMETERS
C   FROM NEWHELIX OUTPUT FILES.  READS NUMBER OF BASE PAIRS FROM FREEHELIX
C   OUTPUT FILE, WHICH IS USED AS INPUT FOR SELECT.       1 June 1998
C
C........1.........2.........3.........4.........5.........6.........712
      DIMENSION AS(30,200),AB(31,200),TITL(115),IRST(3,300),ARST(3,300),
     *TRST(3,300),VALL(200),VTIL(200),VROL(200),VSLI(200),VTWI(200),VRIS
     *(200),VSLP(200),NJAY(200),IANGALL(200,200),LAB(50)
      CHARACTER*12 TNAME
      CHARACTER*5 TTITL
      CHARACTER*1 TITL
      CHARACTER*5 TCODE
      CHARACTER*2 TRST
      CHARACTER*2 TZR
      CHARACTER*2 TZS
      CHARACTER*2 TZT
C
C  CLEAR AS AND AB STORAGE LOCATIONS
C
      DO 42 I=1,30
      DO 42 J=1,30
      AS(I,J)=0.
      AB(I,J)=0.
42    CONTINUE
      TZR='R:'
      TZS='S:'
      TZT='T:'
C
C  READ TITLE
C
70    READ(*,71)TTITL,TCODE,TITL
71    FORMAT(2A5,115A1)
      IF(TTITL.NE.' TITL')GO TO 70
      WRITE(*,3)
      WRITE(*,3)
      WRITE(*,100)
100   FORMAT(' SELECTED OUTPUT TABLES')
      WRITE(*,3)
      WRITE(*,72)TCODE,TITL
72    FORMAT(A5,115A1)
272   FORMAT(5X,115A1)
      WRITE(*,3)
      WRITE(*,73)
73    FORMAT(' Table 1.  Base step parameters')
      WRITE(*,3)
C
C  READ NUMBER OF BASE PAIRS AND BASE STEPS IN HELIX
C
40    READ(*,41)TNAME
41    FORMAT(A12)
      IF(TNAME.NE.' NUMBER BASE')GO TO 40
      READ(*,99)NBPR
99    FORMAT(5X,I5)
C
      NBST=NBPR-1
C
C  READ TO START OF NORMAL VECTOR COSINES
C
102   READ(*,1)TNAME
      IF(TNAME.NE.' BASE PAIR N')GO TO 102
      READ(*,3)
      READ(*,3)
      READ(*,3)
C
C  READ IN X,Y NORMAL COSINES
C
      DO 103 J=1,NBPR
      READ(*,104)AB(20,J),AB(21,J),AB(31,J)
104   FORMAT(3F10.5)
103   CONTINUE
C
      IF(NBPR.GT.25)GO TO 820
C
C  READ TO START OF NORMAL ANGLE MATRIX
C
450   READ(*,451)TNAME
451   FORMAT(A12)
      IF(TNAME.NE.'  ANGLES BET')GO TO 450
      CONTINUE
C
C  READ IN NORMAL ANGLE MATRIX
C
      READ(*,3)
      READ(*,3)
      READ(*,3)
      READ(*,452)(NJAY(J),J=1,NBPR)
452   FORMAT(8X,50I4)
      READ(*,3)
      DO 453 I=1,NBPR
      READ(*,452)(IANGALL(I,J),J=1,NBPR)
453   CONTINUE
      GO TO 821
C
C  READ TO START OF 1ST HALF OF NORMAL ANGLE MATRIX
C
820   READ(*,851)TNAME
851   FORMAT(A12)
      IF(TNAME.NE.'  ANGLES BET')GO TO 820
      CONTINUE
C
C  READ IN 1ST HALF OF NORMAL ANGLE MATRIX
C
      READ(*,3)
      READ(*,3)
      READ(*,3)
      READ(*,852)(NJAY(J),J=1,25)
852   FORMAT(8X,50I4)
      READ(*,3)
      DO 853 I=1,NBPR
      READ(*,852)(IANGALL(I,J),J=1,25)
853   CONTINUE
C
C  READ TO START OF 2ND HALF OF NORMAL ANGLE MATRIX
C
950   READ(*,951)TNAME
951   FORMAT(A12)
      IF(TNAME.NE.'  ANGLES BET')GO TO 950
      CONTINUE
C
C  READ IN 2ND HALF OF NORMAL ANGLE MATRIX
C
      READ(*,3)
      READ(*,3)
      READ(*,3)
      READ(*,952)(NJAY(J),J=26,NBPR)
952   FORMAT(8X,50I4)
      READ(*,3)
      DO 953 I=1,NBPR
      READ(*,952)(IANGALL(I,J),J=26,NBPR)
953   CONTINUE
C
821   CONTINUE
C
C  READ TO START OF BROLL OUTPUT
C
2     READ(*,1)TNAME
1     FORMAT(A12)
      IF(TNAME.NE.'  BEST PLANE')GO TO 2
      DO 10 J=1,3
10    READ(*,3)
3     FORMAT(1H )
C
C  READ IN TABLES OF BASE STEPS AND BASE PAIRS FROM BROLL
C
      DO 4 J=1,NBST
C........1.........2.........3.........4.........5.........6.........712
      READ(*,5)VALL(J),VTIL(J),VROL(J),VSLI(J),VTWI(J),VRIS(J),VSLP(J),A
     *B(2,J),AB(1,J),AS(2,J),AS(1,J),AS(4,J),AS(3,J),AB(3,J),AB(4,J),AB(
     *5,J),AB(6,J)
5     FORMAT(1X,7F7.2,2X,10F7.2)
4     CONTINUE
      READ(*,43)AB(2,J),AB(1,J),AB(3,J),AB(4,J),AB(5,J),AB(6,J)
43    FORMAT(1X,51X,2F7.2,28X,4F7.2)
C
C  READ TO START OF CYLIN OUTPUT
C
6     READ(*,1)TNAME
      IF(TNAME.NE.'   ROTATION ')GO TO 6
      DO 7 K=1,5
7     READ(*,3)
C
C  READ IN FIRST TABLES FROM CYLIN
C
      DO 9 J=1,NBST
      READ(*,8)AS(7,J),AS(11,J),AS(5,J),AS(13,J),AS(6,J),AS(9,J)
8     FORMAT(14X,5F7.2,21X,F7.2)
9     CONTINUE
C
C  READ TO START OF SECOND CYLIN TABLES
C
11    READ(*,1)TNAME
      IF(TNAME.NE.' STRAND    2')GO TO 11
      READ(*,3)
C
C  READ IN SECOND TABLES FROM CYLIN
C
      DO 12 J=1,NBST
      READ(*,13)AS(8,J),AS(12,J),AS(14,J),AS(10,J)
13    FORMAT(14X,2F7.2,7X,F7.2,28X,F7.2)
      AS(8,J)=ABS(AS(8,J))
      AS(10,J)=ABS(AS(10,J))
12    CONTINUE
C
C  READ TO START OF DTORAN TABLES
C
14    READ(*,1)TNAME
      IF(TNAME.NE.'   ALPHA    ')GO TO 14
      READ(*,3)
C
C  READ FIRST TORAN LIST
C
      DO 45 J=1,NBPR
      READ(*,46)(AB(I,J),I=7,15)
46    FORMAT(9F8.1)
45    CONTINUE
C
C  READ TO START OF SECOND TORAN LIST
C
47    READ(*,1)TNAME
      IF(TNAME.NE.'   ALPHA    ')GO TO 47
      READ(*,3)
C
C  READ SECOND TORAN LIST
C
      DO 48 J=1,NBPR
      M=J+NBPR
      READ(*,46)(AB(I,M),I=7,15)
48    CONTINUE
C
C  READ TO START OF FIRST PSEUDO TABLES
C
50    READ(*,1)TNAME
      IF(TNAME.NE.'     V0  ')GO TO 50
      READ(*,3)
C
C  READ FIRST PSEUDO VALUES
C
      DO 51 J=1,NBPR
      READ(*,52)AB(16,J)
52    FORMAT(40X,F8.1)
51    CONTINUE
C
C  READ TO SECOND PSEUDO TABLES
C
60    READ(*,1)TNAME
      IF(TNAME.NE.'     V0  ')GO TO 60
      READ(*,3)
C
C  READ SECOND PSEUDO VALUES
C
      DO 61 J=1,NBPR
      M=J+NBPR
      READ(*,52)AB(16,M)
61    CONTINUE
C
C  WRITE OUT EXTRACTED BASE STEP TABLES
C
34    FORMAT(I5)
      WRITE(*,32)
C........1.........2.........3.........4.........5.........6.........712
32    FORMAT('          VALL   VTIL   VROL   VSLI   VTWI   VRIS   VSLP  
     *   Tilt   Roll  Slide  Twist   Rise    Cup')
      WRITE(*,33)
33    FORMAT(1H )
C  
      DO 20 J=1,NBST
      J1=J+1
C........1.........2.........3.........4.........5.........6.........712
      WRITE(*,21)J,J1,VALL(J),VTIL(J),VROL(J),VSLI(J),VTWI(J),VRIS(J),VS
     *LP(J),AS(2,J),AS(1,J),AS(4,J),AS(5,J),AS(6,J),AS(3,J)
21    FORMAT(2I3,1X,7F7.2,2X,6F7.2)
20    CONTINUE
C
C  WRITE OUT R-S-T TABLE
C
      WRITE(*,3)
      WRITE(*,3)
      KBST=NBST/5
      DO 302 K=1,KBST
      LAB(K)=5*K
302   CONTINUE
C
      WRITE(*,301)(LAB(K),K=1,KBST)
301   FORMAT(5X,10I10)
C
      WRITE(*,272)TITL
C
      DO 120 J=1,NBST
      ARST(1,J)=0.20*VROL(J)
      ARST(2,J)=4.0*VSLI(J)
      ARST(3,J)=0.40*(VTWI(J)-35.)
      IRST(1,J)=ARST(1,J)
      IRST(2,J)=ARST(2,J)
      IRST(3,J)=ARST(3,J)
      DO 130 I=1,3
      IF (IRST(I,J)-9) 123,123,124
124   IRST(I,J)=9
      GO TO 125
123   IF(IRST(I,J)+9) 126,125,125
126   IRST(I,J)=-9
125   IF(IRST(I,J)+9)201,200,201
200   TRST(I,J)='-9'
      GO TO 300
201   IF(IRST(I,J)+8)203,202,203
202   TRST(I,J)='-8'
      GO TO 300
203   IF(IRST(I,J)+7)205,204,205
204   TRST(I,J)='-7'
      GO TO 300
205   IF(IRST(I,J)+6)207,206,207
206   TRST(I,J)='-6'
      GO TO 300
207   IF(IRST(I,J)+5)209,208,209
208   TRST(I,J)='-5'
      GO TO 300
209   IF(IRST(I,J)+4)211,210,211
210   TRST(I,J)='-4'
      GO TO 300
211   IF(IRST(I,J)+3)213,212,213
212   TRST(I,J)='-3'
      GO TO 300
213   IF(IRST(I,J)+2)215,214,215
214   TRST(I,J)='-2'
      GO TO 300
215   IF(IRST(I,J)+1)217,216,217
216   TRST(I,J)='-1'
      GO TO 300
217   IF(IRST(I,J)-1)219,218,219
218   TRST(I,J)=' 1'
      GO TO 300
219   IF(IRST(I,J)-2)221,220,221
220   TRST(I,J)=' 2'
      GO TO 300
221   IF(IRST(I,J)-3)223,222,223
222   TRST(I,J)=' 3'
      GO TO 300
223   IF(IRST(I,J)-4)225,224,225
224   TRST(I,J)=' 4'
      GO TO 300
225   IF(IRST(I,J)-5)227,226,227
226   TRST(I,J)=' 5'
      GO TO 300
227   IF(IRST(I,J)-6)229,228,229
228   TRST(I,J)=' 6'
      GO TO 300
229   IF(IRST(I,J)-7)231,230,231
230   TRST(I,J)=' 7'
      GO TO 300
231   IF(IRST(I,J)-8)233,232,233
232   TRST(I,J)=' 8'
      GO TO 300
233   IF(IRST(I,J)-9)235,234,235
234   TRST(I,J)=' 9'
      GO TO 300
235   IF(IRST(I,J))300,236,300
236   IF(ARST(I,J))239,238,238
239   TRST(I,J)='-0'
      GO TO 300
238   TRST(I,J)=' 0'
300   CONTINUE
130   CONTINUE
120   CONTINUE
C
      WRITE(*,138)TZR,(TRST(1,J),J=1,NBST)
      WRITE(*,138)TZS,(TRST(2,J),J=1,NBST)
      WRITE(*,138)TZT,(TRST(3,J),J=1,NBST)
138   FORMAT(4X,A2,50A2)
C
C
C  WRITE OUT EXTRACTED BASE PAIR TABLES
C
      WRITE(*,77)
77    FORMAT(1H1)
      WRITE(*,3)
      WRITE(*,3)
      WRITE(*,100)
      WRITE(*,3)
      WRITE(*,72)TCODE,TITL
      WRITE(*,3)
      WRITE(*,98)
98    FORMAT(' Table 2.  Base pair parameters')
      WRITE(*,3)
C
84    FORMAT(I5)
      WRITE(*,74)
C........1.........2.........3.........4.........5.........6.........712
74    FORMAT('      Cos(X) Cos(Y) Cos(Z)    Tip   Incl   Prop   Buck  X 
     *Dsp  Y Dsp')
      WRITE(*,3)
C
      DO 75 J=1,NBPR
      WRITE(*,76)J,AB(20,J),AB(21,J),AB(31,J),(AB(I,J),I=1,6)
76    FORMAT(I3,2X,3F7.3,6F7.2)
75    CONTINUE
C
C  WRITE OUT EXTRACTED NORMAL ANGLE MATRIX
C
      IF(NBPR.GT.25)GO TO 805
      WRITE(*,77)
      WRITE(*,3)
      WRITE(*,3)
      WRITE(*,100)
      WRITE(*,3)
      WRITE(*,72)TCODE,TITL
      WRITE(*,3)
      WRITE(*,455)
455   FORMAT(' Table 3.  Angles between all normal vector pairs')
      WRITE(*,3)
      WRITE(*,456)(NJAY(J),J=1,NBPR)
456   FORMAT(4X,'J=',2X,50I4)
      WRITE(*,3)
      DO 457 I=1,NBPR
      WRITE(*,458)I,(IANGALL(I,J),J=1,NBPR)
458   FORMAT(1X,'I=',I3,2X,50I4)
457   CONTINUE
      GO TO 806
C
805   WRITE(*,77)
      WRITE(*,3)
      WRITE(*,3)
      WRITE(*,100)
      WRITE(*,3)
      WRITE(*,72)TCODE,TITL
      WRITE(*,3)
      WRITE(*,459)
459   FORMAT(' Table 3.  Angles between all normal vector pairs')
      WRITE(*,3)
      WRITE(*,460)(NJAY(J),J=1,25)
460   FORMAT(4X,'J=',2X,50I4)
      WRITE(*,3)
      DO 462 I=1,NBPR
      WRITE(*,461)I,(IANGALL(I,J),J=1,25)
461   FORMAT(1X,'I=',I3,2X,50I4)
462   CONTINUE
C
      WRITE(*,77)
      WRITE(*,3)
      WRITE(*,3)
      WRITE(*,100)
      WRITE(*,3)
      WRITE(*,72)TCODE,TITL
      WRITE(*,3)
      WRITE(*,463)
463   FORMAT(' Table 3.  Angles between all normal vector pairs')
      WRITE(*,3)
      WRITE(*,464)(NJAY(J),J=26,NBPR)
464   FORMAT(4X,'J=',2X,50I4)
      WRITE(*,3)
      DO 466 I=1,NBPR
      WRITE(*,465)I,(IANGALL(I,J),J=26,NBPR)
465   FORMAT(1X,'I=',I3,2X,50I4)
466   CONTINUE
806   CONTINUE
C
      STOP
      END


