/* :: bin2dec.g :: :: Mico Loretan, February 2005 :: :: Convert a base-2 integer into a base-10 integer. */ proc bin2dec(b); /* :: input: b base-2 integer, >= 0 :: output: d base-10 integer */ local c,d; /* check for valid input -- a non-negative integer */ if ( b<0 or (round(b) ne b) ); errorlog "Invalid input in proc bin2dec()!"; retp(miss(0,0)); endif; d=0; /* initialize the output variable */ if (b>0); /* process only if b>0 */ do until b==0; c=int(log(b)); /* take integer part of result */ d=d+2^c; b=b-10^c; endo; endif; retp( d ); endp;