# BITLIB ڐAƂ̒

BITLIB  FORTRAN77 ̋Kiɂ͂Ȃrbg̃nhOɊւȉ
[`܂ł.

  IAND(I1,I2)     : I1  I2 ̃rbg̃u[ςԂ. 
  IOR(I1,I2)      : I1  I2 ̃rbg̃u[aԂ. 
  ISHIFT(IWORD,N) : IWORD ̃rbgNrbgVtg. NȂE
                    Vtgčɂ0߂. NȂ獶ɃTCN
                    bNȃVtg.

, ͂ӂnÕ[`pӂĂ邩, 
Ô̂ȂĂ̂ȒPɏƂł̂, V
XeǗ҂K؂ȃC^[tFCX[`pӂ邱. ȉ, Sun
FORTRAN 1.4  C ŋLq IAND, IOR, ISHIFT ̗(
32-bit VXeł̗ł). Ȃ C ŏꂽ\[X NCARG 
܂܂Ă̂ɂƂÂĂ. 

*-----------------------------------------------------------------------
*     IAND
*-----------------------------------------------------------------------
      INTEGER FUNCTION IAND(I1,I2)
 
      INTEGER  AND
 
 
      IAND=AND(I1,I2)
 
      END
*-----------------------------------------------------------------------
*     IOR
*-----------------------------------------------------------------------
      INTEGER FUNCTION IOR(I1,I2)
 
      INTEGER  OR
 
 
      IOR=OR(I1,I2)
 
      END
*-----------------------------------------------------------------------
*     ISHIFT
*-----------------------------------------------------------------------
      INTEGER FUNCTION ISHIFT(IWORD,N)

      INTEGER  OR

 
      IF (N.GT.0) THEN
        NS=MOD(N,32)
        ILFT=ISHFT(IWORD,NS)
        IRGT=ISHFT(IWORD,NS-32)
        ISHIFT=OR(ILFT,IRGT)
      ELSE
        ISHIFT=ISHFT(IWORD,N)
      END IF
 
      END

/*
 *	iand
 */
long iand_(i, j)
    long *i, *j;
{
    return (*i & *j);
}

/*
 *	ior
 */
long ior_(i, j)
    long *i, *j;
{
    return (*i | *j);
}

/*
 *	ishift
 */
long ishift_(i, nshift)
    long *i, *nshift;
{
    long jshift, nbits;

    if (*nshift < 0) {
	nbits = (*nshift < -32 ? 32 : -*nshift);
	jshift = (*i >> nbits) & (017777777777 >> (nbits - 1));
    }
    else {
	nbits = *nshift % 32;
	jshift = (*i << nbits) | ((*i >> (32 - nbits))
				  & (~(037777777777 << nbits)));
    }
    return (jshift);
}
