Return TypeFunction nameArguments
const char*FormalNumber(uint64_t,uint32_t,)

Declared in file: hzTextproc.h
Defined in file : hzTextproc.cpp

Function Logic:

0:START 1:pBuf i 2:unknown 3:* - nValue nValue ( 4:a nValue ( ( b nValue ( ( c nValue ( ( B nValue ( ( M nValue ( ( T nValue ( U 5:unknown 6:unknown 7:nMaxlen 8:unknown 9:items 10:unknown 11:nMaxlen 12:a 13:nMaxlen 14:b>99 15:nMaxlen 16:b>9 17:nMaxlen 18:b 19:nMaxlen 20:c>99 21:nMaxlen 22:c>9 23:nMaxlen 24:c 25:nMaxlen 26:B>99 27:nMaxlen 28:B>9 29:nMaxlen 30:B 31:nMaxlen 32:M>99 33:nMaxlen 34:M>9 35:nMaxlen 36:M 37:nMaxlen 38:T>99 39:nMaxlen 40:T>9 41:nMaxlen 42:T 43:nMaxlen 44:U>99 45:nMaxlen 46:U>9 47:nMaxlen 48:items 49:unknown 50:* 51:unknown 52:items 53:b 54:items 55:c 56:items 57:B 58:items 59:M 60:items 61:T 62:items 63:items 64:Return pBuf

Function body:

const char* FormalNumber (uint64_t nValue)uint32_t nMaxlen, 
{
   _hzfunc("FormalNumber(u64)") ;
   char*       i ;     //  Working buffer pointer
   char*       pBuf ;  //  Working buffer
   uint32_t    a ;     //  Number of billion billions
   uint32_t    b ;     //  Number of million billions
   uint32_t    c ;     //  Number of million millions
   uint32_t    B ;     //  Number of billions
   uint32_t    M ;     //  Number of millions
   uint32_t    T ;     //  Number of thousands
   uint32_t    U ;     //  Number of units
   i = pBuf = _thisfn.ScratchPad(32);
   if (nValue < 0)
   {
       *i++ = CHAR_MINUS ;
       nValue *= -1;
   }
   a = (uint32_t) ((nValue / 1000000000000000000))&0xffff;
   b = (uint32_t) ((nValue % 1000000000000000000)/1000000000000000)&0xffff;
   c = (uint32_t) ((nValue % 1000000000000000)/1000000000000)&0xffff;
   B = (uint32_t) ((nValue % 1000000000000)/1000000000)&0xffff;
   M = (uint32_t) ((nValue % 1000000000)/1000000)&0xffff;
   T = (uint32_t) ((nValue % 1000000)/1000)&0xffff;
   U = (uint32_t) ((nValue % 1000))&0xffff;
   if (nMaxlen > 0)
   {
       if (nMaxlen > 27)
           nMaxlen = 27;
       if (i[0]== CHAR_MINUS)
           nMaxlen-- ;
       if      (a > 9)     nMaxlen -= 26;
       else if (a)         nMaxlen -= 25;
       else if (b > 99)nMaxlen -= 23;
       else if (b > 9)     nMaxlen -= 22;
       else if (b)         nMaxlen -= 21;
       else if (c > 99)nMaxlen -= 19;
       else if (c > 9)     nMaxlen -= 18;
       else if (c)         nMaxlen -= 17;
       else if (B > 99)nMaxlen -= 15;
       else if (B > 9)     nMaxlen -= 14;
       else if (B)         nMaxlen -= 13;
       else if (M > 99)nMaxlen -= 11;
       else if (M > 9)     nMaxlen -= 10;
       else if (M)         nMaxlen -= 9;
       else if (T > 99)nMaxlen -= 7;
       else if (T > 9)     nMaxlen -= 6;
       else if (T)         nMaxlen -= 5;
       else if (U > 99)nMaxlen -= 3;
       else if (U > 9)     nMaxlen -= 2;
       else
           nMaxlen-- ;
       for (; nMaxlen > 0; nMaxlen--)
           *i++ = CHAR_SPACE ;
   }
   if      (a) sprintf(i, "%u,%03u,%03u,%03u,%03u,%03u,%03u", a, b, c, B, M, T, U) ;
   else if (b) sprintf(i, "%u,%03u,%03u,%03u,%03u,%03u", b, c, B, M, T, U) ;
   else if (c) sprintf(i, "%u,%03u,%03u,%03u,%03u", c, B, M, T, U) ;
   else if (B) sprintf(i, "%u,%03u,%03u,%03u", B, M, T, U) ;
   else if (M) sprintf(i, "%u,%03u,%03u", M, T, U) ;
   else if (T) sprintf(i, "%u,%03u", T, U) ;
   else        sprintf(i, "%u", U) ;
   //  correct font problem
   return pBuf ;
}