1      SUBROUTINE TLINVS(X1,X2,Y,NX1,NX2,DA1,XA2,ZA)
2C
3C***  INTERPOLATES BETWEEN TABLES FOR FG6115
4C
5      DIMENSION ROUTID(2),Q46115(2)
6      DIMENSION X1(1),X2(1),Y(NX2,NX1)
7      DATA ROUTID/4HTLIN,4HVS  /,Q46115/4H4.6.,4H1-30/
8C
9C     ----TEST FOR ZA OUTSIDE RANGE OF TABLE
10C     ----TEST FOR XA2.LE.X2(1)
11C
12      IF(XA2.GT.X2(1))GO TO 1010
13      IF(ZA.LT.Y(1,1))GO TO 1000
14      GO TO 1060
15 1000 IF(ZA.GT.Y(1,NX1))GO TO 1010
16      GO TO 1080
17C
18C     ----TEST XA2.GE.X2(NX2)
19C
20 1010 IF(XA2.LT.X2(NX2))GO TO 1030
21      IF(ZA.LT.Y(NX2,1))GO TO 1020
22      GO TO 1060
23 1020 IF(ZA.GT.Y(NX2,NX1))GO TO 1030
24      GO TO 1080
25C
26C     ----XA2 WITHIN TABLE.TEST FOR ZA OUTSIDE
27C
28 1030 DO 1040 I=2,NX2
29         IF(X2(I)-XA2)1040,1050,1090
30 1040 CONTINUE
31 1050 IF(ZA.LT.Y(I,1))GO TO 1070
32 1060 DA1=X1(1)
33      RETURN
34 1070 IF(ZA.GT.Y(I,NX1))GO TO 1100
35 1080 DA1=X1(NX1)
36      RETURN
37 1090 RAT=(XA2-X2(I-1))/(X2(I)-X2(I-1))
38      ZTP=Y(I-1,1)+(Y(I,1)-Y(I-1,1))*RAT
39      IF(ZA.GE.ZTP)GO TO 1060
40      ZTP=Y(I-1,NX1)+(Y(I,NX1)-Y(I-1,NX1))*RAT
41      IF(ZA.LE.ZTP)GO TO 1080
42 1100 CONTINUE
43      NX1O2=NX1/2
44      DGSS=X1(NX1O2)
45      KOUNT=0
46 1110 CALL TLINEX(X1,X2,Y,NX1,NX2,DGSS,XA2,ZGSS,0,0,0,0,Q46115,2,ROUTID)
47      KOUNT=KOUNT+1
48      IF(ABS(ZGSS-ZA).LT.1.E-3)GO TO 1140
49C
50C     ----CUTOFF IF T00 MANY PASSES
51C
52      IF(KOUNT.GT.20)GO TO 1130
53      DIN=DGSS*ABS(ZGSS-ZA)/ZGSS
54      IF(ZGSS.GT.ZA)GO TO 1120
55C
56C     ----DECREASE DGSS TO INCREASE ZGSS WHICH WAS TOO SMALL.
57C
58      DGSS=DGSS-DIN
59      IF(DGSS.LT.X1(1))DGSS=X1(1)
60      GO TO 1110
61C
62C     ----INCREASE DGSS TO REDUCE ZGSS WHICH WAS TOO LARGE.
63C
64 1120 DGSS=DGSS+DIN
65      IF(DGSS.GT.X1(NX1))DGSS=X1(NX1)
66      GO TO 1110
67 1130 CONTINUE
68 1140 DA1=DGSS
69      RETURN
70      END
71