59 SUBROUTINE g2_gbytesc(IN,IOUT,ISKIP,NBYTE,NSKIP,N)
64 integer,
parameter :: ones(8) = (/ 1,3,7,15,31,63,127,255 /)
72 nbit = nbit + nbyte + nskip
75 tbit = min(bitcnt,8-ibit)
76 itmp = iand(mova2i(in(index)),ones(8-ibit))
77 if (tbit.ne.8-ibit) itmp = ishft(itmp,tbit-8+ibit)
79 bitcnt = bitcnt - tbit
82 do while (bitcnt.ge.8)
83 itmp = ior(ishft(itmp,8),mova2i(in(index)))
90 itmp = ior(ishft(itmp,bitcnt),iand(ishft(mova2i(in(index)),
91 1 -(8-bitcnt)),ones(bitcnt)))
114 SUBROUTINE g2_sbytesc(OUT,IN,ISKIP,NBYTE,NSKIP,N)
117 integer in(N), bitcnt, tbit
118 integer,
parameter :: ones(8)=(/ 1, 3, 7, 15, 31, 63,127,255/)
123 nbit = iskip + nbyte - 1
129 nbit = nbit + nbyte + nskip
133 tbit = min(bitcnt,ibit+1)
134 imask = ishft(ones(tbit),7-ibit)
135 itmp2 = iand(ishft(itmp,7-ibit),imask)
136 itmp3 = iand(mova2i(out(index)), 255-imask)
137 out(index) = char(ior(itmp2,itmp3))
138 bitcnt = bitcnt - tbit
139 itmp = ishft(itmp, -tbit)
146 do while (bitcnt.ge.8)
147 out(index) = char(iand(itmp,255))
148 itmp = ishft(itmp,-8)
155 if (bitcnt.gt.0)
then
156 itmp2 = iand(itmp,ones(bitcnt))
157 itmp3 = iand(mova2i(out(index)), 255-ones(bitcnt))
158 out(index) = char(ior(itmp2,itmp3))