1      SUBROUTINE TLIP3X(X1,X2,X3,Y,NX1,NX2,NX3,XA1,XA2,XA3,YA,LX1L,LX2L,
2     1LX3L,LX1U,LX2U,LX3U,MESS,NMSS,ROUT)
3C
4C***  LINEAR INTERPOLATION OF PACKED TABLE Y=F(X1,X2,X3)
5C
6C AJT DIMENSION Y(2),X1(2),X2(2),X3(2),NP1(7),DA(3),MESS(20),ROUT(2)
7      DIMENSION Y(2),X1(*),X2(*),X3(*),NP1(7),DA(3),MESS(*),ROUT(*)
8      DIMENSION MSSCL(17),RMSCL(17)
9      EQUIVALENCE (RMSCL(1),MSSCL(1))
10      LOGICAL NOIN3,NAS3,X3A,X3B,MSSG3,EX3,LG(7)
11      EQUIVALENCE (NOIN3,LG(1)),(X3A,LG(2)),(X3B,LG(3)),(MSSG3,LG(4)),
12     1      (EX3,LG(5)),(DA(1),D0),(DA(2),D1),(DA(3),D2),(NAS3,LG(6))
13      DATA TLIN /4H1TIN/, HOL1 /4H1EXP/
14      DATA MSSCL /4HTLIP,4H3X  ,2*0,3,12*0/
15C
16C     ----INITIALIZE SWITCHES.
17C
18      CALL SWITCH(LG,LX3L,LX3U,XA3,X3,NX3)
19      IF(LG(7))GO TO 1110
20 1000 CALL GLOOK(NX3,XA3,X3,NAS3,NOIN3,I3,T3)
21 1010 ID=I3
22      DO 1030 I=1,2
23         IX=4-I
24         GO TO 1140
25 1020    IF(NOIN3)GO TO 1070
26 1030 ID=ID-1
27      IF(.NOT.EX3)GO TO 1050
28      IF(NX3.LT.3)GO TO 1040
29      IF(X3A.AND.LX3U.GT.1)GO TO 1120
30      IF(X3B.AND.LX3L.GT.1)GO TO 1180
31 1040 IF(X3A)GO TO 1190
32 1050 D0=D1
33 1060 D2=D0+T3*(D2-D1)
34 1070 YA=D2
35 1080 IF(MSSG3.OR.RO.EQ.HOL1)GO TO 1090
36      RETURN
37 1090 IF(ROUT(1).NE.TLIN)GO TO 1100
38      ROUT(1)=HOL1
39      RETURN
40 1100 CONTINUE
41C
42C     ----PRINT EXTRAPOLATION MESSAGE.
43C
44      MSSCL(3)=NMSS
45      RMSCL(4)=YA
46C
47C     ----1ST VARIABLE.
48C
49      RMSCL(6)=XA1
50      MSSCL(7)=NX1
51      MSSCL(8)=LX1L
52      MSSCL(9)=LX1U
53C
54C     ----2ND VARIABLE.
55C
56      RMSCL(10)=XA2
57      MSSCL(11)=NX2
58      MSSCL(12)=LX2L
59      MSSCL(13)=LX2U
60C
61C     ----3RD VARIABLE.
62C
63      RMSCL(14)=XA3
64      MSSCL(15)=NX3
65      MSSCL(16)=LX3L
66      MSSCL(17)=LX3U
67      CALL MESSGE(ROUT,MESS,X1,X2,X3,LG,MSSCL)
68      RETURN
69C
70C     ----HERE FOR EXTRAP.
71C
72 1110 IF(X3B)GO TO 1160
73C
74C     ----HERE FOR XA3 ABOVE
75C
76      T3=XA3-X3(NX3)
77      I3=NX3
78      GO TO 1170
79 1120 I3=I3-2
80      ID=I3
81      IX=1
82 1130 I=0
83 1140 RO=TLIN
84      NP1(1)=-NX2
85      NP1(2)=NX1
86      NP1(3)=NX3
87      NP1(4)=0
88      NP1(5)=0
89      NP1(6)=ID
90      NP1(7)=0
91      CALL TLIP2X(X1,X2,Y,NP1,NX2,XA1,XA2,DA(IX),LX1L,LX2L,LX1U,
92     1            LX2U,MESS,NMSS,RO)
93      IF(I.NE.0)GO TO 1020
94 1150 CALL QUAD(X3(I3),DA,XA3,YA)
95      GO TO 1080
96C
97C     ----HERE FOR XA3 BELOW
98C
99 1160 T3=XA3-X3(1)
100      I3=2
101 1170 T3=T3/(X3(I3)-X3(I3-1))
102      GO TO 1010
103 1180 D0=D1
104      D1=D2
105      ID=3
106      IX=3
107      I3=1
108      GO TO 1130
109 1190 D0=D2
110      GO TO 1060
111      END
112