diff --git a/harbour/ChangeLog b/harbour/ChangeLog index f8660e5fc1..9e2360eba7 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,16 @@ 2002-12-01 23:12 UTC+0100 Foo Bar */ +2003-07-21 11:10 UTC-0300 Antonio Carlos Pantaglione + * source/rtl/transfrm.c + ! Fixed the problem with @E and negative numbers. + + local nValue := -134.24 + msginfo( Val( AllTrim( Transform( nValue, "@E 99,999.99" ) ) ) ) + msginfo( Val( AllTrim( Transform( nValue, "@E99,999.99" ) ) ) ) + + Thanks to Enrico Maria Giordano for this fix. + 2003-07-17 23:00 UTC-0300 Antonio Carlos Pantaglione * source/rtl/transfrm.c ! Removed some old commented lines diff --git a/harbour/source/rtl/transfrm.c b/harbour/source/rtl/transfrm.c index 28623c63a2..760222200a 100644 --- a/harbour/source/rtl/transfrm.c +++ b/harbour/source/rtl/transfrm.c @@ -1,4 +1,4 @@ -/* +/* * $Id$ */ @@ -87,7 +87,7 @@ #define PF_PARNEGWOS 0x1000 /* @) Similar to PF_PARNEG but without leading spaces */ extern PHB_CODEPAGE s_cdpage; -#define TOUPPER(c) ((s_cdpage->nChars)? (char)s_cdpage->s_upper[c&255] : toupper(c)) +#define TOUPPER(c) ((s_cdpage->nChars)? (char)s_cdpage->s_upper[c&255] : (char)toupper(c)) HB_FUNC( TRANSFORM ) { @@ -135,6 +135,7 @@ HB_FUNC( TRANSFORM ) switch( toupper( *szPic ) ) { case HB_CHAR_HT: + case '9': case ' ': bDone = TRUE; /* End of function string */ break; @@ -265,7 +266,7 @@ HB_FUNC( TRANSFORM ) szResult[ ulResultPos++ ] = ( szExp[ ulExpPos ] == 't' || szExp[ ulExpPos ] == 'T' || szExp[ ulExpPos ] == 'y' || - szExp[ ulExpPos ] == 'Y' ) ? 'Y' : 'N'; + szExp[ ulExpPos ] == 'Y' ) ? ( char ) 'Y' : ( char ) 'N'; ulExpPos++; bAnyPic = TRUE; break; @@ -553,6 +554,12 @@ HB_FUNC( TRANSFORM ) szResult[ i ] = '*'; else szResult[ i ] = ' '; + + if ( i && szResult[ i - 1 ] == '-' ) + { + szResult[ i -1 ] = ' '; + szResult[ i ] = '-'; + } } } else @@ -739,7 +746,7 @@ HB_FUNC( TRANSFORM ) { if( !bDone ) { - szResult[ ulResultPos ] = hb_itemGetL( pValue ) ? 'Y' : 'N'; + szResult[ ulResultPos ] = hb_itemGetL( pValue ) ? ( char ) 'Y' : ( char ) 'N'; bDone = TRUE; /* Logical written */ } else @@ -754,7 +761,7 @@ HB_FUNC( TRANSFORM ) { if( !bDone ) { - szResult[ ulResultPos ] = hb_itemGetL( pValue ) ? 'T' : 'F'; + szResult[ ulResultPos ] = hb_itemGetL( pValue ) ? ( char ) 'T' : ( char ) 'F'; bDone = TRUE; } else