Trailing-Edge
-
PDP-10 Archives
-
decuslib10-09
-
43,50466/bnk6.ban
There are 3 other files named bnk6.ban in the archive. Click here to see a list.
C *** BANK ***
C
C SUBROUTINE TO TYPE DATA FOR THE USER ON TELETYPE OR TERMINAL.
C BOTH DATA AND DICTIONARY(NAMES DESCRIPTIONS) MAY BE TYPED.
C
SUBROUTINE TYPE
DIMENSION ID(12500),LV(125),NNS(18,6),IOUT(5),FOUT(5),IWO(125)
DIMENSION IADD(125),D(12500),ISOC(9),TMP(2)
EQUIVALENCE (LV,NNS),(IOUT,FOUT),(ID,D),(MISS,AMISS)
COMMON /GEN/ IPROJA,IPROGA,NV,NO,BNKNM,DATCR,NPROJR,NPROGR
COMMON /DEV/ IDLG,ICC,IBNK
COMMON /VAR/ LICVR,NHV,IV(2,20)
COMMON /OBS/ LICOB,NHO,IO(2,20)
COMMON /SEL/ NS,ISEL(5,20),IDATA(20,20)
COMMON /IDINFO/ LICID,LICIN,LICWO
DOUBLE PRECISION BNKNM,DATCR
DATA MISS/"400000000000/
MSIGN='MISS'
LSW=0
NUMBRV=0
DO 101 I=1,NHV
101 NUMBRV=NUMBRV+IV(2,I)-IV(1,I)+1
NUMBRV=NUMBRV+NS
IF(NUMBRV.GT.1000) PAUSE 'ERROR'
LND=12500/NUMBRV-1
IF(LND.GT.125) LND=125
JND=LND+1
C
C DATA LIST
C
C HEADER FIRST
C
IBLK=0
IBASE=((NO+124)/125)*NV+1
IF((LICIN.EQ.0).AND.((LICVR.NE.0).OR.(LICOB.NE.0).OR.
1(NS.NE.0))) GO TO 121
C
C INFO HEADER
C
200 READ(IBNK#1) LV
IF((IV(1,1).NE.1).OR.(IV(2,1).NE.NV).OR.(NS.NE.0).OR.
1(IO(1,1).NE.1).OR.(IO(2,1).NE.NO)) GO TO 203
WRITE(IDLG,201) BNKNM,LV(1),LV(2),LV(4),LV(5)
201 FORMAT('1BANK ',A10/'0CONTAINS ',I5,' VARIABLES AND',
1I6,' OBSERVATIONS, CREATED ON ',2A5)
WRITE(IDLG,202) LV(6),LV(7)
202 FORMAT(' PROJECT-PROGRAMMER NUMBER ',O6,', ',O6,' IS RESPONSIBLE',
1' FOR CONTENT')
203 IF(LICWO.EQ.0) WRITE(IDLG,204)
204 FORMAT('0',2X,'VARIABLE'/' NAME',3X,'NUMBER',3X,'MODE',5X,
1'DATA DESCRIPTION')
DO 205 J=1,NHV
K=IV(1,J)
206 NBLK=(K-1)/6+1+IBASE
IF(NBLK.EQ.IBLK) GO TO 208
READ(IBNK#NBLK) LV
IBLK=NBLK
208 IONE=K-((K-1)/6)*6
ID((NS+M)*JND)=NNS(10,IONE)
MODE='FLOAT'
IF(NNS(10,IONE).EQ.1) MODE='ALPHA'
IF(NNS(10,IONE).EQ.2) MODE='FIXED'
DO 211 M=9,2,-1
IF(NNS(M,IONE).NE.' ') GO TO 209
211 CONTINUE
209 WRITE(IDLG,207) NNS(1,IONE),K,MODE,(NNS(L,IONE),L=2,M)
207 FORMAT(1X,A5,2X,I4,5X,A5,4X,8A5)
K=K+1
IF(K.LE.IV(2,J)) GO TO 206
205 CONTINUE
IF(LICIN.EQ.1) GO TO 160
C
C
C
121 IF(LICWO.EQ.0) WRITE(IDLG,102)
102 FORMAT('1',2X,'OBS.',13X,'VARIABLES')
IBLK=0
J=1
M=1
IFSCSC=0
DO 103 I=1,NHV
K=IV(1,I)
105 NBLK=(K+5)/6+IBASE
IF(NBLK.EQ.IBLK) GO TO 104
READ(IBNK#NBLK) LV
IBLK=NBLK
104 IONE=K-(K/6)*6
IF(IONE.EQ.0) IONE=6
IOUT(J)=NNS(1,IONE)
ID((NS+M)*JND)=NNS(10,IONE)
IF((IOUT(J).EQ.'SOCSC').AND.(NNS(10,IONE).EQ.2)) IFSCSC=M+NS
J=J+1
M=M+1
IF(J.LE.5) GO TO 107
IF(LICWO.EQ.0) WRITE(IDLG,106)(IOUT(J),J=1,5)
106 FORMAT(9X,5(3X,A5,4X))
J=1
107 K=K+1
IF(K.LE.IV(2,I)) GO TO 105
103 CONTINUE
IF((J.GT.1).AND.(LICWO.EQ.0)) WRITE(IDLG,106)(IOUT(K),K=1,J-1)
C
C RETRIEVE AND CALCULATE AND STORE ADDRESSES
C
108 I=1
NOBASE=(NO+124)/125
110 K=IO(1,I)
IBASE=(K+124)/125
KK=(IBASE-1)*125
N=0
111 IF((N+1).GT.LND) GO TO 113
N=N+1
IWO(N)=K-KK
IADD(N)=K
K=K+1
IF(K.LE.IO(2,I)) GO TO 112
I=I+1
IF(I.GT.NH0) GO TO 148
K=IO(1,I)
112 LBASE=(K+124)/125
IF(LBASE.EQ.IBASE) GO TO 111
113 IO(1,I)=K
148 IF(NS.LT.1) GO TO 116
DO 114 J=1,NS
KK=(J-1)*JND
LBLK=(ISEL(2,J)-1)*NOBASE+IBASE+1
READ(IBNK#LBLK) LV
DO 115 M=1,N
115 ID(KK+M)=LV(IWO(M))
114 CONTINUE
116 L=NS
DO 117 J=1,NHV
K=IV(1,J)
118 LBLK=(K-1)*NOBASE+IBASE+1
READ(IBNK#LBLK) LV
KK=L*JND
DO 119 M=1,N
119 ID(KK+M)=LV(IWO(M))
L=L+1
K=K+1
IF(K.LE.IV(2,J)) GO TO 118
117 CONTINUE
DO 129 J=1,N
C
C SELECTS ARE PROCESSED
C
IF(NS.LT.1) GO TO 137
K=1
180 LLN=(K-1)*JND+J
IF(ISEL(3,K).NE.1) GO TO 181
DO 182 M=1,ISEL(5,K)
IF(IDATA(K,M).EQ.MISS) GO TO 123
182 CONTINUE
181 IF(ID(LLN).NE.MISS) GO TO 123
GO TO 190
123 GO TO (131,132,133,134,135,136) ISEL(3,K)
131 DO 183 M=1,ISEL(5,K)
IF(ID(LLN).EQ.IDATA(K,M)) GO TO 122
183 CONTINUE
GO TO 190
132 IF(ID(LLN).LT.IDATA(K,1)) GO TO 122
GO TO 190
133 IF(ID(LLN).LE.IDATA(K,1)) GO TO 122
GO TO 190
134 IF(ID(LLN).GT.IDATA(K,1)) GO TO 122
GO TO 190
135 IF(ID(LLN).GE.IDATA(K,1)) GO TO 122
GO TO 190
136 IF(ID(LLN).NE.IDATA(K,1)) GO TO 122
GO TO 190
190 K=K+1
IF(K.GT.NS) GO TO 129
IF(ISEL(1,K).EQ.ISEL(1,K-1)) GO TO 180
GO TO 129
122 K=K+1
IF(K.GT.NS) GO TO 137
IF(ISEL(1,K).EQ.ISEL(1,K-1)) GO TO 122
GO TO 180
137 WRITE(IDLG,150)
IF(LTCWO.EQ.0) WRITE(IDLG,140) IADD(J)
140 FORMAT(' ',I6,2X,$)
L=1
DO 149 K=NS+1,NUMBRV
LLN=(K-1)*JND+J
IF(ID(LLN).NE.MISS) GO TO 142
WRITE(IDLG,147)
147 FORMAT('+ MISSING ',$)
GO TO 145
142 KK=ID(K*JND)+1
GO TO (151,152,153) KK
151 WRITE(IDLG,143) D(LLN)
143 FORMAT('+',G11.4,1X,$)
GO TO 145
152 WRITE(IDLG,141) D(LLN)
141 FORMAT('+',3X,A5,4X,$)
GO TO 145
153 IF(IFSCSC.EQ.K) GO TO 170
IF((ID(LLN).LT.100000).AND.(ID(LLN).GT.-10000)) GO TO 154
WRITE(IDLG,144) ID(LLN)
144 FORMAT('+',I11,1X,$)
GO TO 145
154 WRITE(IDLG,155) ID(LLN)
155 FORMAT('+',I5,7X,$)
GO TO 145
170 ENCODE(9,171,TMP) ID(LLN)
171 FORMAT(I9)
DECODE(9,172,TMP) ISOC
172 FORMAT(9A1)
DO 173 MM=1,9
IF(ISOC(MM).EQ.' ') ISOC(MM)='0'
173 CONTINUE
WRITE(IDLG,174) ISOC
174 FORMAT('+',3A1,'-',2A1,'-',4A1,1X,$)
GO TO 145
145 L=L+1
IF((L.LE.5).OR.(K.EQ.NUMBRV)) GO TO 149
WRITE(IDLG,150)
WRITE(IDLG,146)
146 FORMAT('+',8X,$)
L=1
149 CONTINUE
129 CONTINUE
IF(I.LE.NHO) GO TO 110
WRITE(IDLG,150)
150 FORMAT(1X)
160 RETURN
END