# BITLIB ܿȤ

BITLIB  FORTRAN77 εʤˤϤʤӥåΥϥɥ󥰤˴ؤʲ
롼ޤǤ.

  IAND(I1,I2)     : I1  I2 ΥӥåΥ֡Ѥ֤. 
  IOR(I1,I2)      : I1  I2 ΥӥåΥ֡¤֤. 
  ISHIFT(IWORD,N) : IWORD ΥӥåNӥåȥեȤ. Nʤ鱦
                    եȤ򤷤ƺ¦ˤ0Ĥ. Nʤ麸˥
                    åʥեȤ򤹤.

, ϤդĤϤƱ̾Υ롼ѰդƤ뤫, Ʊ
̾ΤΤʤƤƱư򤹤Τñ˽񤯤ȤǤΤ, 
ƥԤŬڤʥ󥿡ե롼Ѱդ뤳. ʲ, Sun
FORTRAN 1.4  C ǵҤ IAND, IOR, ISHIFT 򼨤(
32-bit ƥǤǤ). ʤ C ǽ񤫤줿 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);
}
