]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/packlib/kernlib/kerngen/tcgens/upkch.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / MINICERN / packlib / kernlib / kerngen / tcgens / upkch.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1996/02/15 17:50:16 mclareni
6* Kernlib
7*
8*
9#include "kerngen/pilot.h"
10 SUBROUTINE UPKCH (ICHV,IGV,NN,IPAR)
11C
12C CERN PROGLIB# M427 UPKCH .VERSION KERNFOR 4.20 881028
13C ORIG. 07/07/72 JZ
14C
15 COMMON /SLATE/ JCH,N,NBITS,NCHAR,NZONE,IGNOR,JIN,NBDONE,NBEND
16 +, JGO,JBT,NLEFT,NRIGH,DUMMY(27)
17 DIMENSION ICHV(*),IGV(*),IPAR(9)
18C .
19C
20#include "kerngen/wordsize.inc"
21C
22#include "kerngen/q_jbit.inc"
23* Ignoring t=pass
24C
25C
26 N = NN
27 IF (N.EQ.0) RETURN
28 NBITS = IPAR(1)
29 NCHAR = IPAR(2)
30 NZONE = IPAR(3)
31 IGNOR = IPAR(4)
32 JIN = 1
33 JCH = 1
34 IF (NZONE.NE.0) GO TO 41
35C
36C---- ZONE = WORD
37C
38 21 JGO = NBITPW+1 - IGNOR
39 NBEND= NBITS + 1
40 IF (NCHAR.EQ.0) GO TO 22
41 NBEND= MAX (NBEND, JGO-NBITS*(NCHAR-1))
42C
43 22 JBT = JGO
44C
45 24 JBT = JBT - NBITS
46 IGV(JIN)= JBYT (ICHV(JCH),JBT,NBITS)
47 IF (JIN.EQ.N) RETURN
48 JIN = JIN + 1
49 IF (JBT.GE.NBEND) GO TO 24
50 JCH = JCH + 1
51 GO TO 22
52C
53C---- ZONE NOT EQUALS A WORD
54C
55 41 IF (NZONE.EQ.NBITPW) GO TO 21
56 JBT = NBITPW - IGNOR
57 NBEND = NZONE+1 - NBITS
58 IF (NCHAR.EQ.0) GO TO 42
59 NBEND = MIN (NBEND, IGNOR+NCHAR*NBITS)
60C
61 42 NBDONE= IGNOR
62 43 IF (JBT.GE.0) GO TO 44
63 JBT= JBT + NBITPW
64 JCH= JCH + 1
65 GO TO 43
66C
67 44 JBT = JBT - NBITS
68 IF (JBT.LT.0) GO TO 51
69 IGV(JIN)= JBYT (ICHV(JCH),JBT+1,NBITS)
70 GO TO 58
71C
72C-- CHARACTER ACROSS WORD BOUNDARY
73 51 NLEFT= NBITS + JBT
74 NRIGH= -JBT
75 JBT = JBT + NBITPW
76 IGV(JIN)= JBYT (ICHV(JCH+1),JBT+1,NRIGH)
77 IF (NLEFT.EQ.0) GO TO 54
78 CALL CBYT (ICHV(JCH),1,IGV(JIN),NRIGH+1,NLEFT)
79 54 JCH= JCH + 1
80C
81 58 IF (JIN.EQ.N) RETURN
82 JIN= JIN + 1
83 NBDONE= NBDONE + NBITS
84 IF (NBDONE.LT.NBEND) GO TO 44
85 JBT = JBT - (NZONE-NBDONE) - IGNOR
86 GO TO 42
87 END