home *** CD-ROM | disk | FTP | other *** search
/ Beijing Paradise BBS Backup / PARADISE.ISO / software / BBSDOORW / 3DCTRL.ZIP / SETBIT.PRG < prev   
Encoding:
Text File  |  1995-01-10  |  795 b   |  43 lines

  1. FUNCTION setBit
  2. PARAMETER pnVar, pnBit, pval
  3. PRIVATE i,j,retval, lnOrigVar
  4. lnOrigVar=pnVar
  5. lcRet=""
  6. IF PARAMETERS()=2
  7.     llset="T"
  8. ELSE
  9.     llset=IIF((TYPE('pval')='L' AND pval) OR (TYPE('pval')='N' AND pval=1),'1','0')
  10. ENDIF
  11. IF pnVar=0
  12.     retval=.f.
  13. ELSE
  14.     i=0
  15.     DO WHILE 2^i<=pnVar
  16.         i=i+1
  17.     ENDDO
  18.     FOR j=i-1 TO 0 STEP -1
  19.         IF 2^j<=pnvar
  20.             lcRet=lcRet+"1"
  21.             pnvar=pnvar-2^j
  22.         ELSE
  23.             lcRet=lcRet+"0"
  24.         ENDIF
  25.     ENDFOR
  26.     IF (pnBit+1)>LEN(lcret)
  27.         retval=.f.
  28.     ELSE
  29.         retval=(SUBSTR(lcret,LEN(lcRet)-pnBit,1)=='1')
  30.     ENDIF
  31. ENDIF
  32. DO CASE
  33.     CASE !retval AND llset="1"
  34.         * set the bit
  35.         RETURN lnorigVar+2^pnBit
  36.     CASE retval AND llset="0"
  37.         RETURN lnorigVar-2^pnBit
  38.     CASE llset="T"
  39.         RETURN lnorigVar+IIF(retval,-(2^pnBit),2^pnBit)
  40.     OTHERWISE
  41.         RETURN lnOrigVar
  42. ENDCASE
  43.