Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
kernlib.f
Go to the documentation of this file.
1*-------------------------------------------------------------------------------
2*
3* This file contains the kernlib's package subset needed to build h2root.
4* It cannot be used by any kernlib application because many kernlib
5* functionalities * are missing.
6*
7*-------------------------------------------------------------------------------
8
9 SUBROUTINE cltou (CHV)
10 CHARACTER CHV*(*)
11 DO 19 jj=1,len(chv)
12 j = ichar(chv(jj:jj))
13 IF (j.LT.97) GO TO 19
14 IF (j.GE.123) GO TO 19
15 chv(jj:jj) = char(j-32)
16 19 CONTINUE
17 END
18
19*-------------------------------------------------------------------------------
20
21 SUBROUTINE cutol (CHV)
22 CHARACTER CHV*(*)
23 DO 19 jj=1,len(chv)
24 j = ichar(chv(jj:jj))
25 IF (j.LT.65) GO TO 19
26 IF (j.GE.91) GO TO 19
27 chv(jj:jj) = char(j+32)
28 19 CONTINUE
29 END
30
31*-------------------------------------------------------------------------------
32
33 SUBROUTINE uoptc (DATA,POSS,IOPTV)
34 INTEGER IOPTV(9)
35 CHARACTER *(*) DATA, POSS
36 np = len(poss)
37 DO 24 j=1,np
38 ioptv(j) = 0
39 IF (index(DATA,poss(j:j)).NE.0) ioptv(j)= 1
40 24 CONTINUE
41 END
42
43*-------------------------------------------------------------------------------
44
45 FUNCTION lenocc (CHV)
46 CHARACTER chv*(*)
47 n = len(chv)
48 DO 17 jj= n,1,-1
49 IF (chv(jj:jj).NE.' ') GO TO 99
50 17 CONTINUE
51 jj = 0
52 99 lenocc = jj
53 END
54
55*-------------------------------------------------------------------------------
56
57 SUBROUTINE ubunch (MS,MT,NCHP)
58 dimension ms(99), mt(99), nchp(9)
59* data iblan1/x'20202020'/
60* data mask1/x'000000ff'/
61 data iblan1/538976288/
62 data mask1/255/
63 nch = nchp(1)
64 IF (nch) 91,39,11
65 11 nwt = ishft(nch,-2)
66 ntrail = iand(nch,3)
67 js = 0
68 IF (nwt.EQ.0) GO TO 31
69 DO 24 jt=1,nwt
70 mt(jt) = ior(ior(ior(
71 + iand(ms(js+1),mask1),
72 + ishft(iand(ms(js+2),mask1), 8)),
73 + ishft(iand(ms(js+3),mask1),16)),
74 + ishft(ms(js+4), 24) )
75 24 js = js + 4
76 IF (ntrail.EQ.0) RETURN
77 31 mwd = iblan1
78 js = nch
79 DO 34 jt=1,ntrail
80 mwd = ior(ishft(mwd,8), iand(ms(js),mask1))
81 34 js = js - 1
82 mt(nwt+1) = mwd
83 39 RETURN
84 91 print*, '>>> Abnormal end'
85 END
86
87*-------------------------------------------------------------------------------
88
89 FUNCTION locf (IVAR)
90 dimension ivar(9)
91 parameter(nadupw=4, ladupw=2)
92 j = loc(ivar)
93 locf = ishft(j, -ladupw)
94 END
95
96 FUNCTION locfr (VAR)
97 dimension var(9)
98 parameter(nadupw=4, ladupw=2)
99 j = loc(var)
100 locfr = ishft(j, -ladupw)
101 END
102
103*-------------------------------------------------------------------------------
104
105 SUBROUTINE vzero (A,N)
106 dimension a(*)
107 IF (n.LE.0) RETURN
108 DO 9 i= 1,n
109 9 a(i)= 0.
110 END
111
112 SUBROUTINE vzeroi (J,N)
113 dimension j(*)
114 IF (n.LE.0) RETURN
115 DO 9 i= 1,n
116 9 j(i)= 0.
117 END
118
119*-------------------------------------------------------------------------------
120
121 FUNCTION jbit (IZW,IZP)
122 jbit = iand(ishft(izw, -(izp-1)), 1)
123 END
124
125*-------------------------------------------------------------------------------
126
127 FUNCTION jbyt (IZW,IZP,NZB)
128 parameter(nbitpw=32)
129 parameter(nchapw=4)
130 jbyt = ishft(ishft(izw,nbitpw+1-izp-nzb), -(nbitpw-nzb))
131 END
132
133*-------------------------------------------------------------------------------
134
135 FUNCTION locati(ARRAY,LENGTH,OBJECT)
136 dimension array(2)
137 INTEGER array,object
138 nabove = length + 1
139 nbelow = 0
140 10 IF (nabove-nbelow .LE. 1) GO TO 200
141 middle = (nabove+nbelow) / 2
142 IF (object - array(middle)) 100, 180, 140
143 100 nabove = middle
144 GO TO 10
145 140 nbelow = middle
146 GO TO 10
147 180 locati = middle
148 GO TO 300
149 200 locati = -nbelow
150 300 RETURN
151 END
152
153*-------------------------------------------------------------------------------
154
155 SUBROUTINE vfill (A,N,STUFF)
156 INTEGER A(*), STUFF
157 IF (n.LE.0) RETURN
158 DO 9 i= 1,n
159 9 a(i)= stuff
160 END
161
162*-------------------------------------------------------------------------------
163
164 SUBROUTINE vblank (A,N)
165 INTEGER A(*), BLANK
166 DATA blank / 4h /
167 IF (n.LE.0) RETURN
168 DO 9 i= 1,n
169 9 a(i)= blank
170 END
171
172*-------------------------------------------------------------------------------
173
174 SUBROUTINE sbyt (IT,IZW,IZP,NZB)
175 parameter(nbitpw=32)
176 parameter(nchapw=4)
177 parameter(iall11 = -1)
178 msk = ishft(iall11, -(nbitpw-nzb))
179 izw = ior( iand(izw, not(ishft(msk,izp-1)))
180 +, ishft(iand(it,msk),izp-1))
181 END
182
183*-------------------------------------------------------------------------------
184
185 SUBROUTINE sbit1 (IZW,IZP)
186 izw = ior(izw, ishft(1,izp-1))
187 END
188
189*-------------------------------------------------------------------------------
190
191 SUBROUTINE sbit0 (IZW,IZP)
192 izw = iand(izw, not(ishft(1,izp-1)) )
193 END
194
195*-------------------------------------------------------------------------------
196
197 SUBROUTINE uctoh (MS,MT,NPW,NCH)
198 CHARACTER MS*99
199 dimension mt(99)
200 parameter(nbitpw=32)
201 parameter(nchapw=4)
202 CHARACTER CHWORD*(NCHAPW)
203 CHARACTER BLANK *(NCHAPW)
204 parameter(blank = ' ')
205 INTEGER IWORD
206 equivalence(iword,chword)
207 IF (nch) 91, 29, 11
208 11 IF (npw.LE.0) GO TO 91
209 IF (npw.EQ.1) GO TO 21
210 IF (npw.LT.nchapw) GO TO 31
211 js = 0
212 nwt = nch / nchapw
213 ntrail = nch - nwt*nchapw
214 DO 14 jt=1,nwt
215 chword = ms(js+1:js+nchapw)
216 mt(jt) = iword
217 14 js = js + nchapw
218 IF (ntrail.EQ.0) RETURN
219 chword = ms(js+1:js+ntrail)
220 mt(nwt+1) = iword
221 RETURN
222 21 chword = blank
223 DO 24 js=1,nch
224 chword(1:1) = ms(js:js)
225 mt(js) = iword
226 24 CONTINUE
227 29 RETURN
228 31 chword = blank
229 js = 0
230 nwt = nch / npw
231 ntrail = nch - nwt*npw
232 DO 34 jt=1,nwt
233 chword(1:npw) = ms(js+1:js+npw)
234 mt(jt) = iword
235 34 js = js + npw
236 IF (ntrail.EQ.0) RETURN
237 chword = ms(js+1:js+ntrail)
238 mt(nwt+1) = iword
239 RETURN
240 91 print*, '>>> Abnormal end'
241 END
242
243*-------------------------------------------------------------------------------
244
245 SUBROUTINE uhtoc (MS,NPW,MT,NCH)
246 dimension ms(99)
247 CHARACTER MT*99
248 parameter(nchapw=4)
249 CHARACTER CHWORD*(NCHAPW)
250 INTEGER IWORD
251 equivalence(iword,chword)
252 IF (nch) 91, 29, 11
253 11 IF (npw.LE.0) GO TO 91
254 IF (npw.EQ.1) GO TO 21
255 IF (npw.LT.nchapw) GO TO 31
256 jt = 0
257 nws = nch / nchapw
258 ntrail = nch - nws*nchapw
259 DO 14 js=1,nws
260 iword = ms(js)
261 mt(jt+1:jt+nchapw) = chword
262 14 jt = jt + nchapw
263 IF (ntrail.EQ.0) RETURN
264 iword = ms(nws+1)
265 mt(jt+1:jt+ntrail) = chword(1:ntrail)
266 RETURN
267 21 DO 24 js=1,nch
268 iword = ms(js)
269 mt(js:js) = chword(1:1)
270 24 CONTINUE
271 29 RETURN
272 31 jt = 0
273 nws = nch / npw
274 ntrail = nch - nws*npw
275 DO 34 js=1,nws
276 iword = ms(js)
277 mt(jt+1:jt+npw) = chword(1:npw)
278 34 jt = jt + npw
279 IF (ntrail.EQ.0) RETURN
280 iword = ms(nws+1)
281 mt(jt+1:jt+ntrail) = chword(1:ntrail)
282 RETURN
283 91 print *,' UHTOC: wrong args.'
284 END
285
286*-------------------------------------------------------------------------------
287
288 SUBROUTINE uctoh1 (MS,MT,NCH)
289 CHARACTER MS*99
290 dimension mt(99)
291 parameter(nbitpw=32)
292 parameter(nchapw=4)
293 CHARACTER CHWORD*(NCHAPW)
294 CHARACTER BLANK *(NCHAPW)
295 parameter(blank = ' ')
296 INTEGER IWORD
297 equivalence(iword,chword)
298 IF (nch) 91, 29, 11
299 11 chword = blank
300 DO 24 js=1,nch
301 chword(1:1) = ms(js:js)
302 mt(js) = iword
303 24 CONTINUE
304 29 RETURN
305 91 print*, '>>> Abnormal end'
306 END
307
308*-------------------------------------------------------------------------------
309
310 SUBROUTINE ucopyi (IA,IB,N)
311 dimension ia(*),ib(*)
312 IF (n.EQ.0) RETURN
313 DO 21 i=1,n
314 21 ib(i)=ia(i)
315 END
316 SUBROUTINE ucopy (A,B,N)
317 dimension a(*),b(*)
318 IF (n.EQ.0) RETURN
319 DO 21 i=1,n
320 21 b(i)=a(i)
321 END
322
323*-------------------------------------------------------------------------------
324
325 SUBROUTINE upkbyt (MBV,JTHP,MIV,NINTP,NBITS)
326 dimension miv(99), mbv(99), jthp(9), nintp(9), nbits(2)
327 parameter(nbitpw=32)
328 parameter(nchapw=4)
329 parameter(iall11 = -1)
330
331 jth = jthp(1)
332 nint = nintp(1)
333 IF (nint.LE.0) RETURN
334 nzb = nbits(1)
335 IF (nzb.GT.0) GO TO 11
336 nzb = 1
337 npwd = nbitpw
338 mska = 1
339 GO TO 12
340 11 npwd = nbits(2)
341 mska = ishft(iall11, -(nbitpw-nzb))
342 12 jbv = 1
343 jiv = 0
344 IF (jth.LT.2) GO TO 21
345 jbv = (jth-1)/npwd + 1
346 jpos = jth - (jbv-1)*npwd - 1
347 IF (jpos.EQ.0) GO TO 21
348 nr = jpos*nzb
349 jive = npwd - jpos
350 izw = ishft(mbv(jbv), -nr)
351 GO TO 22
352 21 jive = jiv + npwd
353 izw = mbv(jbv)
354 22 jive = min(nint,jive)
355 24 jiv = jiv + 1
356 miv(jiv) = iand(mska,izw)
357 IF (jiv.EQ.jive) GO TO 27
358 izw = ishft(izw, -nzb)
359 GO TO 24
360 27 IF (jiv.EQ.nint) RETURN
361 jbv = jbv + 1
362 GO TO 21
363 END
364
365*-------------------------------------------------------------------------------
366
367 SUBROUTINE cfopen (LUNDES, MEDIUM, NWREC, MODE, NBUF, NAME, ISTAT)
368 dimension lundes(9), istat(9)
369 CHARACTER MODE*(*), NAME*(*)
370 dimension nvmode(4)
371 CHARACTER CHUSE*4
372 lgn = lnblnk(name)
373 chuse = mode
374 CALL cutol (chuse)
375 CALL vzeroi (nvmode,4)
376 IF (index(chuse,'a').NE.0) nvmode(1) = 2
377 IF (index(chuse,'w').NE.0) THEN
378 IF (nvmode(1).NE.0) GO TO 91
379 nvmode(1) = 1
380 ENDIF
381 IF (index(chuse,'r').NE.0) THEN
382 IF (nvmode(1).NE.0) GO TO 91
383 ENDIF
384 IF (index(chuse,'+').NE.0) nvmode(2) = 1
385 IF (index(chuse,'l').NE.0) nvmode(3) = 1
386 CALL cfopei (lundes,medium,nwrec,nvmode,nbuf,name,istat,lgn)
387 RETURN
388 91 lundes(1) = 0
389 istat(1) = -1
390 END
391
392*-------------------------------------------------------------------------------
393
394 INTEGER FUNCTION cfstat (NAME, INFO)
395 CHARACTER*(*) name
396 INTEGER info(12), cfstati
397 lgn = lnblnk(name)
398 cfstat = cfstati(name, info, lgn)
399 END
400
401*-------------------------------------------------------------------------------
402
403 SUBROUTINE ucopy2 (A,B,N)
404 dimension a(*),b(*)
405 IF (n.LT.2) GO TO 41
406 ia = locfr(a)
407 ib = locfr(b)
408 IF (ia-ib) 20,99,10
409 10 DO 15 i=1,n
410 15 b(i) = a(i)
411 RETURN
412 20 DO 25 i=n,1,-1
413 25 b(i) = a(i)
414 RETURN
415 41 IF (n.LE.0) RETURN
416 b(1) = a(1)
417 99 RETURN
418 END
419
420*-------------------------------------------------------------------------------
#define b(i)
Definition RSha256.hxx:100
#define a(i)
Definition RSha256.hxx:99
#define h(i)
Definition RSha256.hxx:106
function locfr(var)
Definition kernlib.f:97
subroutine sbyt(it, izw, izp, nzb)
Definition kernlib.f:175
subroutine cutol(chv)
Definition kernlib.f:22
subroutine ucopyi(ia, ib, n)
Definition kernlib.f:311
subroutine upkbyt(mbv, jthp, miv, nintp, nbits)
Definition kernlib.f:326
subroutine ubunch(ms, mt, nchp)
Definition kernlib.f:58
subroutine uoptc(data, poss, ioptv)
Definition kernlib.f:34
subroutine uctoh(ms, mt, npw, nch)
Definition kernlib.f:198
function jbyt(izw, izp, nzb)
Definition kernlib.f:128
function locati(array, length, object)
Definition kernlib.f:136
subroutine vzero(a, n)
Definition kernlib.f:106
subroutine uctoh1(ms, mt, nch)
Definition kernlib.f:289
subroutine vzeroi(j, n)
Definition kernlib.f:113
integer function cfstat(name, info)
Definition kernlib.f:395
subroutine cfopen(lundes, medium, nwrec, mode, nbuf, name, istat)
Definition kernlib.f:368
subroutine sbit1(izw, izp)
Definition kernlib.f:186
subroutine vfill(a, n, stuff)
Definition kernlib.f:156
subroutine vblank(a, n)
Definition kernlib.f:165
subroutine ucopy(a, b, n)
Definition kernlib.f:317
function jbit(izw, izp)
Definition kernlib.f:122
function locf(ivar)
Definition kernlib.f:90
subroutine ucopy2(a, b, n)
Definition kernlib.f:404
subroutine sbit0(izw, izp)
Definition kernlib.f:192
function lenocc(chv)
Definition kernlib.f:46
subroutine cltou(chv)
Definition kernlib.f:10
subroutine uhtoc(ms, npw, mt, nch)
Definition kernlib.f:246