Trailing-Edge
-
PDP-10 Archives
-
decuslib10-09
-
43,50466/bnk7.ban
There are 3 other files named bnk7.ban in the archive. Click here to see a list.
C *** BANK ***
C
C SUBROUTINE TO TRANSFORM DATA OR CREATE NEW VARIABLES. THIS ROUTINE
C DOES THE WORK, THE TRANSLATION OF WHAT THE USER WISHES HAS
C ALREADY BEEN PERFORMED IN BNK2.BAN
C
SUBROUTINE TRANS
DIMENSION ID(126,72),D(126,72),LV(125),NNS(18,6),NUMV(50)
EQUIVALENCE(ID,D),(MISS,AMISS),(LV,NNS)
COMMON /GEN/ IPROJA,IPROGA,NV,NO,BNKNM,DATCR,NPROJR,NPORGR
COMMON /DEV/IDLG,ICC,IBNK,IUPGR,ITMPRY
COMMON /OBS/ LICOB,NHO,IO(2,20)
COMMON /SEL/ NS,ISEL(5,20),IDATA(20,20)
COMMON/TRNS/INST(25),IVAR1(25),IVAR2(25),CONST(25),SV(99),ITO(25)
COMMON /ERROR/ LDBZ,LSQRN,LNL0,LL10,LASN,LIFX,LFLOAT,LALPHA
COMMON /SET/ NHVSET,IVSET(2,30), NHOSET,IOSET(2,30)
DOUBLE PRECISION BNKNM,TMPBK,DATCR
DATA TMPBK /'TMP.DAT'/
DATA MISS/"400000000000/
CALL TIME(J,K)
CALL SETRAN(K)
NHV=0
K=2
LDBZ=0
LSQRN=0
LNL0=0
LL10=0
LASN=0
LIFX=0
LFLOAT=0
LALPHA=0
NOBASE=(NO+124)/125
101 IF(INST(K).EQ.9) GO TO 108
IF(INST(K).EQ.99) GO TO 107
IF(IVAR1(K).LE.0) GO TO 104
IF(NHV.LT.1) GO TO 103
DO 102 J=1,NHV
IF(NUMV(J).NE.IVAR1(K)) GO TO 102
IVAR1(K)=J
GO TO 104
102 CONTINUE
103 NHV=NHV+1
NUMV(NHV)=IVAR1(K)
IVAR1(K)=NHV
104 IF(IVAR2(K).LE.0) GO TO 107
IF(NHV.LT.1) GO TO 106
DO 105 J=1,NHV
IF(NUMV(J).NE.IVAR2(K)) GO TO 105
IVAR2(K)=J
GO TO 107
105 CONTINUE
106 NHV=NHV+1
NUMV(NHV)=IVAR2(K)
IVAR2(K)=NHV
107 K=K+1
GO TO 101
108 NINST=K-1
IF(ITO(K).LE.0) GO TO 109
NHV=NHV+1
NUMV(NHV)=ITO(K)
ITO(K)=NHV
109 IBASE=((NO+124)/125)*NV+1
IRECO=0
IF(NHV.LT.1) GO TO 112
DO 110 J=1,NHV
K=NUMV(J)
IF(K.EQ.999999999) GO TO 113
IREC=(K-1)/6
IONE=K-IREC*6
IREC=IREC+IBASE+1
IF(IREC.EQ.IRECO) GO TO 111
READ(IBNK#IREC) LV
IRECO=IREC
111 D(126,J)=NNS(10,IONE)
GO TO 110
113 D(126,J)=2
110 CONTINUE
112 K=ITO(1)
IF(K.GT.NV) GO TO 114
IREC=(K-1)/6
IONE=K-IREC*6
IREC=IREC+IBASE+1
READ(IBNK#IREC) LV
D(126,71)=NNS(10,IONE)
NAMES=NNS(1,IONE)
C
C CHECK TO SEE THAT ALL ALPHAS ARE LEGAL
114 IF(NHV.LT.1) GO TO 121
DO 116 J=1,NHV
IF(D(126,J).NE.1) GO TO 116
IF(NINST.LT.2) GO TO 121
DO 117 K=2,NINST
IF(IVAR2(K).NE.J) GO TO 120
119 WRITE(IDLG,118)
118 FORMAT(' ILLEGAL TO USE ALPH VARIABLES FOR CALCULATIONS')
GO TO 999
120 IF(IVAR1(K).NE.J) GO TO 117
IF((INST(K).NE.21).AND.(INST(K).NE.22)) GO TO 119
117 CONTINUE
116 CONTINUE
121 IF(ITO(1).GT.NV) GO TO 300
C
C TRANSFORM EXISTING VARIABLE
C
MODEFR=D(126,71)
131 MODETO=0
IF(ITO(NINST+1).GT.0)MODETO=D(126,ITO(NINST+1))
IF(NINST.LT.2) GO TO 130
IF(INST(NINST).EQ.21) MODETO=2
IF(INST(NINST).EQ.23) MODETO=1
130 ISW=0
IF((MODEFR.EQ.1).AND.(MODETO.NE.1)) ISW=3
IF((MODEFR.NE.1).AND.(MODETO.EQ.1)) ISW=3
IF((MODEFR.EQ.0).AND.(MODETO.EQ.2)) ISW=2
IF((MODEFR.EQ.2).AND.(MODETO.EQ.0)) ISW=1
NBL=(NO-1)/125+1
C
C
DO 150 I=1,NOBASE
C
C RECOVER DATA TO BE USED (IF ANY)
C
IF(NHV.LT.1) GO TO 170
DO 161 J=1,NHV
IF(NUMV(J).EQ.999999999) GO TO 162
IREC=(NUMV(J)-1)*NOBASE+1+I
READ(IBNK#IREC) (ID(K,J),K=1,125)
GO TO 161
162 KVCH=(I-1)*125
KEND=125
IF((KVCH+125).GT.NO) KEND=NO-KVCH
DO 163 K=1,KEND
163 ID(K,J)=KVCH+K
IF(KEND.EQ.125) GO TO 161
DO 164 K=KEND+1,125
164 ID(K,J)=MISS
161 CONTINUE
C
C
C
170 IF(NS.LT.1) GO TO 180
DO 171 J=1,NS
IREC=(ISEL(2,J)-1)*NOBASE+1+I
READ(IBNK#IREC) (ID(K,J+50),K=1,125)
171 CONTINUE
C
C
C
180 IREC=(ITO(1)-1)*NOBASE+1+I
READ(IBNK#IREC)(ID(K,71),K=1,125)
IF(ISW.EQ.0) GO TO 190
IF(ISW.NE.1) GO TO 184
DO 183K=1,125
IF(D(K,71).NE.AMISS) D(K,71)=ID(K,71)
183 CONTINUE
GO TO 190
184 IF(ISW.NE.2) GO TO 196
DO 185 K=1,125
IF(D(K,71).NE.AMISS)ID(K,71)=D(K,71)
185 CONTINUE
GO TO 190
196 DO 186 K=1,125
186 D(K,71)=AMISS
C
C
C
190 DO 191 K=1,125
191 D(K,72)=0
KMAX=I*125
KMIN=KMAX-124
DO 192 L=1,NHO
ILOW=0
IUP=0
IF(IO(1,L).GT.KMAX) GO TO 195
IF(IO(2,L).LT.KMIN) GO TO 192
IF(IO(1,L).LE.KMIN) ILOW=1
IF(IO(2,L).GE.KMAX) IUP=125
IF(ILOW.EQ.0) ILOW=IO(1,L)-KMIN+1
IF(IUP.EQ.0) IUP=125-(KMAX-IO(2,L))
DO 193 K=ILOW,IUP
193 ID(K,72)=1
192 CONTINUE
195 DO 200 K=1,125
IF(ID(K,72).EQ.0) GO TO 200
IF(NS.LE.0) GO TO 219
C
C SELECTION PORTION
C
J=1
207 IF(ISEL(3,J).NE.1) GO TO 203
DO 204 M=1,ISEL(5,J)
IF(IDATA(J,M).EQ.MISS) GO TO 202
204 CONTINUE
203 IF(ID(K,J+50).EQ.MISS) GO TO 206
202 GO TO (211,212,213,214,215,216) ISEL(3,J)
211 DO 205 M=1,ISEL(5,J)
IF(ID(K,J+50).EQ.IDATA(J,M)) GO TO 201
205 CONTINUE
GO TO 206
212 IF(ID(K,J+50).LT.IDATA(J,1)) GO TO 201
GO TO 206
213 IF(ID(K,J+50).LE.IDATA(J,1)) GO TO 201
GO TO 206
214 IF(ID(K,J+50).GT.IDATA(J,1)) GO TO 201
GO TO 206
215 IF(ID(K,J+50).GE.IDATA(J,1)) GO TO 201
GO TO 206
216 IF(ID(K,J+50).NE.IDATA(J,1)) GO TO 201
GO TO 206
206 J=J+1
IF(J.GT.NS) GO TO 200
IF(ISEL(1,J).EQ.ISEL(1,J-1)) GO TO 207
GO TO 200
201 J=J+1
IF(J.GT.NS) GO TO 219
IF(ISEL(1,J).EQ.ISEL(1,J-1)) GO TO 201
GO TO 207
219 DO 220 J=1,NHV
IF(ID(K,J).EQ.MISS) GO TO 230
220 CONTINUE
KK=K
CALL CALCU(D,KK,MODETO)
GO TO 200
230 D(K,71)=AMISS
200 CONTINUE
IREC=(ITO(1)-1)*NOBASE+1+I
WRITE(IBNK#IREC)(ID(K,71),K=1,125)
150 CONTINUE
IF(LDBZ.GT.0) WRITE(IDLG,252) LDBZ
252 FORMAT(I4,' OCCURANCES OF DIVISION BY ZERO - MISSING DATA')
IF(LSQRN.GT.0) WRITE(IDLG,253) LSQRN
253 FORMAT(I4,' OCCURANCES OF SQRT OF A NEGATIVE - MISSING DATA')
IF(LNL0.GT.0) WRITE(IDLG,254) LNL0
254 FORMAT(I4,' OCCURANCES OF LN OF NON-POSITIVES - MISSING DATA')
IF(LL10.GT.0) WRITE(IDLG,255) LL10
255 FORMAT(I4,' OCCURANCES OF LOG10 OF NON-POSITIVES - MISSING DATA')
IF(LASN.GT.0) WRITE(IDLG,256) LASN
256 FORMAT(I4,' OCCURANCES OF ILLEGAL ARCSIN - MISSING DATA')
IF(LIFX.GT.0) WRITE(IDLG,257)LIFX
257 FORMAT(I4,' PROBLEMS GOING FROM ALPHA TO FIXED - MISSING DATA')
IF(LFLOAT.GT.0) WRITE(IDLG,258) LFLOAT
258 FORMAT(I4,' PROBLEMS GOING FROM ALPHA TO FLOAT - MISSING DATA')
IF(LALPHA.GT.0) WRITE(IDLG,259) LALPHA
259 FORMAT(I4,' PROBLEMS GOING FROM NUMERIC TO ALPHA - MISSING DATA')
IF(MODETO.NE.MODEFR) GO TO 260
WRITE(IDLG,250) NAMES
250 FORMAT(' VARIABLE: ',A5,' TRANSFORMED')
RETURN
260 MODT='FLOAT'
IF(MODETO.EQ.1) MODT='ALPHA'
IF(MODETO.EQ.2) MODT='FIXED'
IF(MODEFR.EQ.99) GO TO 262
MODF='FLOAT'
IF(MODEFR.EQ.1) MODF='ALPHA'
IF(MODEFR.EQ.2) MODF='FIXED'
WRITE(IDLG,251) NAMES,MODF,MODT
251 FORMAT(' VARIABLE: ',A5,' TRANSFORMED, MODE CHANGED FROM '
1,A5,' TO ',A5)
261 K=ITO(1)
IREC=(K-1)/6
IONE=K-IREC*6
IREC=IREC+IBASE+1
READ(IBNK#IREC) LV
NNS(10,IONE)=MODETO
WRITE(IBNK#IREC) LV
999 RETURN
262 WRITE(IDLG,263) INST(1),MODT
263 FORMAT(' VARIABLE: ',A5,' CREATED HAVING A ',A5,' MODE')
GO TO 261
C
C
C
C
C NEW VARIABLE BEING CALCULATED
C
300 MODEFR=99
IBASE=NOBASE*NV+1
NMBR=(NV+5)/6
C NOW MOVE HEADER RECORDS UP
DO 302 I=NMBR,1,-1
READ(IBNK#(I+IBASE)) LV
302 WRITE(IBNK#(I+IBASE+NOBASE))LV
C NOW FILL NEW VARIABLE WITH MISSING DATA
DO 303 I=1,125
303 LV(I)=MISS
DO 304 I=1,NOBASE
304 WRITE(IBNK#(IBASE+I)) LV
IBASE=IBASE+NOBASE
C NOW ENTER NAME AND DESCRIPTION BLOCK
MMBR=(NV+6)/6
IONE=(NV+1)-(MMBR-1)*6
IF(MMBR.NE.NMBR) GO TO 305
READ(IBNK#(IBASE+NMBR)) LV
GO TO 307
305 DO 306 I=1,6
306 NNS(1,I)=' '
307 NNS(1,IONE)=INST(1)
NNS(2,IONE)='CREAT'
NNS(3,IONE)='ED BY'
NNS(4,IONE)=' A TR'
NNS(5,IONE)='ANSFO'
NNS(6,IONE)='RMATI'
NNS(7,IONE)='ON - '
CALL DATE(NNS(8,IONE))
NNS(10,IONE)=0
WRITE(IBNK#(IBASE+MMBR)) LV
IF(NHVSET.NE.1) GO TO 308
IF((IVSET(1,1).EQ.1).AND.(IVSET(2,1).EQ.NV)) IVSET(2,1)=
1IVSET(2,1)+1
308 NV=NV+1
READ(IBNK#1)LV
LV(1)=NV
WRITE(IBNK#1) LV
GO TO 131
END
SUBROUTINE CALCU(D,K,MODETO)
DIMENSION D(126,72),SEP(5)
COMMON /TRNS/INST(25),IVAR1(25),IVAR2(25),CONST(25),SV(99),ITO(25)
COMMON /ERROR/ LDBZ,LSQRN,LNL0,LL10,LASN,LIFX,LFLOAT,LALPHA
EQUIVALENCE (WORD1,IWORD1),(WORD2,IWORD2),(AMISS,MISS)
DATA MISS /"400000000000/
N=1
ISMD=0
1 N=N+1
INSOP=INST(N)
INPUT=ITO(N)
IF(INSOP.EQ.99) GO TO 1
GO TO (2,2,30,2,50,60,70,80,90,100,110,120,130,140,150,2,
12,180,190,200,210,220,230,240,250) ,INSOP
2 WRITE(IDLG,3)
3 FORMAT(' SYS PROB - CONTACT DICK HOUCHARD')
CALL EXIT
C
C POWER
C
30 IF(IVAR1(N))31,32,33
31 WORD1=SV(-IVAR1(N))
GO TO 34
32 WORD1=CONST(N)
GO TO 34
33 WORD1=D(K,IVAR1(N))
IF(D(126,IVAR1(N)).EQ.2) WORD1=IWORD1
34 IF(IVAR2(N)) 35,36,37
35 WORD2=SV(-IVAR2(N))
GOTO 38
36 WORD2=CONST(N)
GO TO 38
37 WORD2=D(K,IVAR2(N))
IF(D(126,IVAR2(N)).EQ.2) WORD2=IWORD2
38 SV(INPUT)=WORD1**WORD2
GO TO 1
C
C ADD
C
50 IF(IVAR1(N))51,52,53
51 WORD1=SV(-IVAR1(N))
GO TO 54
52 WORD1=CONST(N)
GO TO 54
53 WORD1=D(K,IVAR1(N))
IF(D(126,IVAR1(N)).EQ.2) WORD1=IWORD1
54 IF(IVAR2(N))55,56,57
55 WORD2=SV(-IVAR2(N))
GO TO 58
56 WORD2=CONST(N)
GO TO 58
57 WORD2=D(K,IVAR2(N))
IF(D(126,IVAR2(N)).EQ.2) WORD2=IWORD2
58 SV(INPUT)=WORD1+WORD2
GO TO 1
C
C SUBTRACT
C
60 IF(IVAR1(N)) 61,62,63
61 WORD1=SV(-IVAR1(N))
GO TO 64
62 WORD1=CONST(N)
GO TO 64
63 WORD1=D(K,IVAR1(N))
IF(D(126,IVAR1(N)).EQ.2)WORD1=IWORD1
64 IF(IVAR2(N)) 65,66,67
65 WORD2=SV(-IVAR2(N))
GOTO 68
66 WORD2=CONST(N)
GOTO 68
67 WORD2=D(K,IVAR2(N))
IF(D(126,IVAR2(N)).EQ.2) WORD2=IWORD2
68 SV(INPUT)=WORD1-WORD2
GO TO 1
C
C DIVIDE
C
70 IF(IVAR1(N)) 71,72,73
71 WORD1=SV(-IVAR1(N))
GO TO 74
72 WORD1=CONST(N)
GO TO 74
73 WORD1=D(K,IVAR1(N))
IF(D(126,IVAR1(N)).EQ.2) WORD1=IWORD1
74 IF(IVAR2(N)) 75,76,77
75 WORD2=SV(-IVAR2(N))
GO TO 78
76 WORD2=CONST(N)
GO TO 78
77 WORD2=D(K,IVAR2(N))
IF(D(126,IVAR2(N)).EQ.2) WORD2=IWORD2
78 IF(WORD2.NE.0) GO TO 79
D(K,71)=AMISS
LDBZ=LDBZ+1
RETURN
79 SV(INPUT)=WORD1/WORD2
GO TO 1
C
C MULTIPLY
C
80 IF(IVAR1(N)) 81,82,83
81 WORD1=SV(-IVAR1(N))
GO TO 84
82 WORD1=CONST(N)
GO TO 84
83 WORD1=D(K,IVAR1(N))
IF(D(126,IVAR1(N)).EQ.2) WORD1=IWORD1
84 IF(IVAR2(N)) 85,86,87
85 WORD2=SV(-IVAR2(N))
GO TO 88
86 WORD2=CONST(N)
GO TO 88
87 WORD2=D(K,IVAR2(N))
IF(D(126,IVAR2(N)).EQ.2) WORD2=IWORD2
88 SV(INPUT)=WORD1*WORD2
GO TO 1
C
C END OF RUN
C
90 IF(ITO(N)) 91,92,93
91 WORD1=SV(-ITO(N))
GO TO 94
92 WORD1=CONST(N)
GO TO 94
93 D(K,71)=D(K,ITO(N))
RETURN
94 IF(MODETO.EQ.2) IWORD1=WORD1
D(K,71)=WORD1
RETURN
C
C SQRT
C
100 IF(IVAR1(N)) 101,102,103
101 WORD1=SV(-IVAR1(N))
GO TO 104
102 WORD1=CONST(N)
GO TO 104
103 WORD1=D(K,IVAR1(N))
IF(D(126,IVAR1(N)).EQ.2) WORD1=IWORD1
104 IF(WORD1.LT.0) GO TO 105
SV(INPUT)=SQRT(WORD1)
GO TO 1
105 LSQRN=LSQRN+1
D(K,71)=AMISS
RETURN
C
C NATURAL LOG
C
110 IF(IVAR1(N)) 111,112,113
111 WORD1=SV(-IVAR1(N))
GO TO 114
112 WORD1=CONST(N)
GO TO 114
113 WORD1=D(K,IVAR1(N))
IF(D(126,IVAR1(N)).EQ.2) WORD1=IWORD1
114 IF(WORD1.LE.0) GO TO 115
SV(INPUT)=ALOG(WORD1)
GO TO 1
115 LNL0=LNL0+1
D(K,71)=AMISS
RETURN
C
C EXP
C
120 IF(IVAR1(N)) 121,122,123
121 WORD1=SV(-IVAR1(N))
GO TO 124
122 WORD1=CONST(N)
GO TO 124
123 WORD1=D(K,IVAR1(N))
IF(D(126,IVAR1(N)).EQ.2) WORD=IWORD
124 SV(INPUT)=EXP(WORD1)
GO TO 1
C
C LOG10
C
130 IF(IVAR1(N)) 131,132,133
131 WORD1=SV(-IVAR1(N))
GO TO 134
132 WORD1=CONST(N)
GO TO 134
133 WORD1=D(K,IVAR1(N))
IF(D(126,IVAR1(N)).EQ.2) WORD=IWORD
134 IF(WORD1.LE.0) GO TO 135
SV(INPUT)=ALOG10(WORD1)
GOTO 1
135 D(K,71)=AMISS
LL10=LL10+1
RETURN
C
C SIN
C
140 IF(IVAR1(N)) 141,142,143
141 WORD1=SV(-IVAR1(N))
GO TO 144
142 WORD1=CONST(N)
GOTO 144
143 WORD1=D(K,IVAR1(N))
IF(D(126,IVAR1(N)).EQ.2) WORD1=IWORD1
144 SV(INPUT)=SIN(WORD1)
GO TO 1
C
C COS
C
150 IF(IVAR1(N)) 151,152,153
151 WORD1=SV(-IVAR1(N))
GO TO 154
152 WORD1=CONST(N)
GO TO 154
153 WORD1=D(K,IVAR1(N))
IF(D(126,IVAR1(N)).EQ.2) WORD1=IWORD1
154 SV(INPUT)=COS(WORD1)
GO TO 1
C
C ARC TAN
C
180 IF(IVAR1(N)) 181,182,183
181 WORD1=SV(-IVAR1(N))
GO TO 184
182 WORD1=CONST(N)
GO TO 184
183 WORD1=D(K,IVAR1(N))
IF(D(126,IVAR1(N)).EQ.2) WORD1=IWORD1
184 SV(INPUT)=ATAN(WORD1)
GO TO 1
C
C ARC SIN
C
190 IF(IVAR1(N)) 191,192,193
191 WORD1=SV(-IVAR1(N))
GO TO 194
192 WORD1=CONST(N)
GO TO 194
193 WORD1=D(K,IVAR1(N))
IF(D(126,IVAR1(N)).EQ.2) WORD1=IWORD1
194 IF((WORD1.LT.-1).OR.(WORD1.GT.1)) GO TO 195
SV(INPUT)=ASIN(WORD1)
GO TO 1
195 D(K,71)=AMISS
LASN=LASN+1
RETURN
C
C ABSOLUTE
C
200 IF(IVAR1(N)) 201,202,203
201 WORD1=SV(-IVAR1(N))
GO TO 204
202 WORD1=CONST(N)
GO TO 204
203 WORD1=D(K,IVAR1(N))
IF(D(126,IVAR1(N)).EQ.2) WORD1=IWORD1
204 SV(INPUT)=WORD1
IF(WORD1.LT.0) SV(INPUT)=-WORD1
GO TO 1
C
C IFIX
C
210 IF(IVAR1(N)) 211,212,213
211 WORD1=SV(-IVAR1(N))
GO TO 219
212 WORD1=CONST(N)
GO TO 219
213 WORD1=D(K,IVAR1(N))
IF(D(126,IVAR1(N)).EQ.0) GO TO 219
IF(D(126,IVAR1(N)).EQ.1) GO TO 214
WORD1=IWORD1
GO TO 219
214 DECODE(5,252,WORD1) SEP
ISET=0
WORD1=0
DO 215 J=1,5
IF(SEP(J).EQ.'-') GO TO 215
IF(SEP(J).EQ.' ') GO TO 215
IF(SEP(J).EQ.'.') GO TO 215
ISET=1
IF((SEP(J).GE.'0').AND.(SEP(J).LE.'9')) GO TO 215
D(K,71)=AMISS
LIFX=LIFX+1
RETURN
215 CONTINUE
IF(ISET.EQ.0) GO TO 219
217 IF(SEP(5).NE.' ') GO TO 218
DO 216 J=5,2,-1
216 SEP(J)=SEP(J-1)
SEP(1)=' '
GO TO 217
218 ENCODE(5,252,WORD2) SEP
DECODE(5,253,WORD2) WORD1
219 IWORD1=WORD1
SV(INPUT)=IWORD1
GO TO 1
C
C
C FLOAT
C
220 IF(IVAR1(N)) 221,222,223
221 WORD1=SV(-IVAR1(N))
GO TO 229
222 WORD1=CONST(N)
GO TO 229
223 WORD1=D(K,IVAR1(N))
IF(D(126,IVAR1(N)).EQ.0) GO TO 229
IF(D(126,IVAR1(N)).EQ.1) GO TO 224
WORD1=IWORD1
GO TO 229
224 DECODE(5,252,WORD1) SEP
ISET=0
WORD1=0
DO 225 J=1,5
IF(SEP(J).EQ.'-') GO TO 225
IF(SEP(J).EQ.' ') GO TO 225
IF(SEP(J).EQ.'.') GO TO 225
ISET=1
IF((SEP(J).GE.'0').AND.(SEP(J).LE.'9')) GO TO 225
D(K,71)=AMISS
LFLOAT=LFLOAT+1
RETURN
225 CONTINUE
IF(ISET.EQ.0) GO TO 229
227 IF(SEP(5).NE.' ') GO TO 228
DO 226 J=5,2,-1
226 SEP(J)=SEP(J-1)
SEP(1)=' '
GO TO 227
228 ENCODE(5,252,WORD2) SEP
DECODE(5,253,WORD2) WORD1
229 SV(INPUT)=WORD1
GO TO 1
C
C ALPHANUMERIC
C
230 IF(IVAR1(N)) 231,232,233
231 WORD1=SV(-IVAR1(N))
GO TO 235
232 WORD1=CONST(N)
GO TO 235
233 WORD1=D(K,IVAR1(N))
IF(D(126,IVAR1(N)).EQ.1) GO TO 243
IF(D(126,IVAR1(N)).EQ.0) GO TO 235
236 IF((IWORD1.LT.99999).AND.(IWORD1.GT.-9999)) GO TO 234
LALPHA=LALPHA+1
D(K,71)=AMISS
RETURN
234 WORD2=0
ENCODE(5,254,WORD2) IWORD1
GO TO 238
235 IF((WORD1.LT.9999.).AND.(WORD1.GT.-999.)) GO TO 237
IWORD1=WORD1
GO TO 236
243 WORD2=WORD1
GO TO 238
237 WORD2=0
ENCODE(5,253,WORD2) WORD1
238 DECODE(5,252,WORD2) SEP
239 IF(SEP(1).NE.' ') GO TO 242
DO 241 J=2,5
241 SEP(J-1)=SEP(J)
SEP(5)=' '
GO TO 239
242 ENCODE(5,252,WORD2) SEP
SV(INPUT)=WORD2
GO TO 1
C
C RANDOM NUMBER
240 SV(INPUT)=RAN(X)
GO TO 1
C
C NORMALIZED RANDOM NUMBERS
C
250 WORD1=0
DO 251 J=1,12
251 WORD1=WORD1+RAN(X)
SV(INPUT)=WORD1-6.
GO TO 1
252 FORMAT(5A1)
253 FORMAT(F5.0)
254 FORMAT(I5)
END