3 C*********************************************************************
5 SUBROUTINE LUGIVE_HIJING(CHIN)
7 C...Purpose: to set values of commonblock variables.
8 #include "lujets_hijing.inc"
9 #include "ludat1_hijing.inc"
10 #include "ludat2_hijing.inc"
11 #include "ludat3_hijing.inc"
12 #include "ludat4_hijing.inc"
13 CHARACTER CHIN*(*),CHFIX*104,CHBIT*104,CHOLD*8,CHNEW*8,
14 &CHNAM*4,CHVAR(17)*4,CHALP(2)*26,CHIND*8,CHINI*10,CHINR*16
15 DATA CHVAR/'N','K','P','V','MSTU','PARU','MSTJ','PARJ','KCHG',
16 &'PMAS','PARF','VCKM','MDCY','MDME','BRAT','KFDP','CHAF'/
17 DATA CHALP/'abcdefghijklmnopqrstuvwxyz',
18 &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
20 C...Length of character variable. Subdivide it into instructions.
21 IF(MSTU(12).GE.1) CALL LULIST_HIJING(0)
25 IF(CHBIT(LBIT:LBIT).EQ.' ') GOTO 100
28 IF(CHBIT(LCOM:LCOM).EQ.' ') GOTO 110
30 CHFIX(LTOT:LTOT)=CHBIT(LCOM:LCOM)
35 IF(LHIG.LE.LTOT.AND.CHFIX(LHIG:LHIG).NE.';') GOTO 130
37 CHBIT(1:LBIT)=CHFIX(LLOW+1:LHIG-1)
39 C...Identify commonblock variable.
42 IF(CHBIT(LNAM:LNAM).NE.'('.AND.CHBIT(LNAM:LNAM).NE.'='.AND.
44 CHNAM=CHBIT(1:LNAM-1)//' '
47 150 IF(CHNAM(LCOM:LCOM).EQ.CHALP(1)(LALP:LALP)) CHNAM(LCOM:LCOM)=
51 160 IF(CHNAM.EQ.CHVAR(IV)) IVAR=IV
54 $ ,'(LUGIVE_HIJING:) do not recognize variable '//CHNAM)
56 IF(LLOW.LT.LTOT) GOTO 120
60 C...Identify any indices.
63 IF(CHBIT(LNAM:LNAM).EQ.'(') THEN
66 IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 170
68 IF((CHBIT(LNAM+1:LNAM+1).EQ.'C'.OR.CHBIT(LNAM+1:LNAM+1).EQ.'c').
69 & AND.(IVAR.EQ.9.OR.IVAR.EQ.10.OR.IVAR.EQ.13.OR.IVAR.EQ.17)) THEN
70 CHIND(LNAM-LIND+11:8)=CHBIT(LNAM+2:LIND-1)
74 CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1)
78 IF(CHBIT(LNAM:LNAM).EQ.')') LNAM=LNAM+1
80 IF(CHBIT(LNAM:LNAM).EQ.',') THEN
83 IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 180
85 CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1)
90 C...Check that indices allowed and save old value.
92 IF(CHBIT(LNAM:LNAM).NE.'=') GOTO 190
94 IF(I.NE.0.OR.J.NE.0) GOTO 190
96 ELSEIF(IVAR.EQ.2) THEN
97 IF(I.LT.1.OR.I.GT.MSTU(4).OR.J.LT.1.OR.J.GT.5) GOTO 190
99 ELSEIF(IVAR.EQ.3) THEN
100 IF(I.LT.1.OR.I.GT.MSTU(4).OR.J.LT.1.OR.J.GT.5) GOTO 190
102 ELSEIF(IVAR.EQ.4) THEN
103 IF(I.LT.1.OR.I.GT.MSTU(4).OR.J.LT.1.OR.J.GT.5) GOTO 190
105 ELSEIF(IVAR.EQ.5) THEN
106 IF(I.LT.1.OR.I.GT.200.OR.J.NE.0) GOTO 190
108 ELSEIF(IVAR.EQ.6) THEN
109 IF(I.LT.1.OR.I.GT.200.OR.J.NE.0) GOTO 190
111 ELSEIF(IVAR.EQ.7) THEN
112 IF(I.LT.1.OR.I.GT.200.OR.J.NE.0) GOTO 190
114 ELSEIF(IVAR.EQ.8) THEN
115 IF(I.LT.1.OR.I.GT.200.OR.J.NE.0) GOTO 190
117 ELSEIF(IVAR.EQ.9) THEN
118 IF(I.LT.1.OR.I.GT.MSTU(6).OR.J.LT.1.OR.J.GT.3) GOTO 190
120 ELSEIF(IVAR.EQ.10) THEN
121 IF(I.LT.1.OR.I.GT.MSTU(6).OR.J.LT.1.OR.J.GT.4) GOTO 190
123 ELSEIF(IVAR.EQ.11) THEN
124 IF(I.LT.1.OR.I.GT.2000.OR.J.NE.0) GOTO 190
126 ELSEIF(IVAR.EQ.12) THEN
127 IF(I.LT.1.OR.I.GT.4.OR.J.LT.1.OR.J.GT.4) GOTO 190
129 ELSEIF(IVAR.EQ.13) THEN
130 IF(I.LT.1.OR.I.GT.MSTU(6).OR.J.LT.1.OR.J.GT.3) GOTO 190
132 ELSEIF(IVAR.EQ.14) THEN
133 IF(I.LT.1.OR.I.GT.MSTU(7).OR.J.LT.1.OR.J.GT.2) GOTO 190
135 ELSEIF(IVAR.EQ.15) THEN
136 IF(I.LT.1.OR.I.GT.MSTU(7).OR.J.NE.0) GOTO 190
138 ELSEIF(IVAR.EQ.16) THEN
139 IF(I.LT.1.OR.I.GT.MSTU(7).OR.J.LT.1.OR.J.GT.5) GOTO 190
141 ELSEIF(IVAR.EQ.17) THEN
142 IF(I.LT.1.OR.I.GT.MSTU(6).OR.J.NE.0) GOTO 190
146 190 IF(IERR.EQ.1) THEN
147 CALL LUERRM_HIJING(18,'(LUGIVE_HIJING:) unallowed indices for '
150 IF(LLOW.LT.LTOT) GOTO 120
154 C...Print current value of variable. Loop back.
155 IF(LNAM.GE.LBIT) THEN
157 CHBIT(15:60)=' has the value '
158 IF(IVAR.EQ.1.OR.IVAR.EQ.2.OR.IVAR.EQ.5.OR.IVAR.EQ.7.OR.
159 & IVAR.EQ.9.OR.IVAR.EQ.13.OR.IVAR.EQ.14.OR.IVAR.EQ.16) THEN
160 WRITE(CHBIT(51:60),'(I10)') IOLD
161 ELSEIF(IVAR.NE.17) THEN
162 WRITE(CHBIT(47:60),'(F14.5)') ROLD
166 IF(MSTU(13).GE.1) WRITE(MSTU(11),1000) CHBIT(1:60)
168 IF(LLOW.LT.LTOT) GOTO 120
172 C...Read in new variable value.
173 IF(IVAR.EQ.1.OR.IVAR.EQ.2.OR.IVAR.EQ.5.OR.IVAR.EQ.7.OR.
174 &IVAR.EQ.9.OR.IVAR.EQ.13.OR.IVAR.EQ.14.OR.IVAR.EQ.16) THEN
176 CHINI(LNAM-LBIT+11:10)=CHBIT(LNAM+1:LBIT)
177 READ(CHINI,'(I10)') INEW
178 ELSEIF(IVAR.NE.17) THEN
180 CHINR(LNAM-LBIT+17:16)=CHBIT(LNAM+1:LBIT)
181 READ(CHINR,'(F16.2)') RNEW
183 CHNEW=CHBIT(LNAM+1:LBIT)//' '
186 C...Store new variable value.
189 ELSEIF(IVAR.EQ.2) THEN
191 ELSEIF(IVAR.EQ.3) THEN
193 ELSEIF(IVAR.EQ.4) THEN
195 ELSEIF(IVAR.EQ.5) THEN
197 ELSEIF(IVAR.EQ.6) THEN
199 ELSEIF(IVAR.EQ.7) THEN
201 ELSEIF(IVAR.EQ.8) THEN
203 ELSEIF(IVAR.EQ.9) THEN
205 ELSEIF(IVAR.EQ.10) THEN
207 ELSEIF(IVAR.EQ.11) THEN
209 ELSEIF(IVAR.EQ.12) THEN
211 ELSEIF(IVAR.EQ.13) THEN
213 ELSEIF(IVAR.EQ.14) THEN
215 ELSEIF(IVAR.EQ.15) THEN
217 ELSEIF(IVAR.EQ.16) THEN
219 ELSEIF(IVAR.EQ.17) THEN
223 C...Write old and new value. Loop back.
225 CHBIT(15:60)=' changed from to '
226 IF(IVAR.EQ.1.OR.IVAR.EQ.2.OR.IVAR.EQ.5.OR.IVAR.EQ.7.OR.
227 &IVAR.EQ.9.OR.IVAR.EQ.13.OR.IVAR.EQ.14.OR.IVAR.EQ.16) THEN
228 WRITE(CHBIT(33:42),'(I10)') IOLD
229 WRITE(CHBIT(51:60),'(I10)') INEW
230 ELSEIF(IVAR.NE.17) THEN
231 WRITE(CHBIT(29:42),'(F14.5)') ROLD
232 WRITE(CHBIT(47:60),'(F14.5)') RNEW
237 IF(MSTU(13).GE.1) WRITE(MSTU(11),1000) CHBIT(1:60)
239 IF(LLOW.LT.LTOT) GOTO 120
241 C...Format statement for output on unit MSTU(11) (by default 6).