diff --git a/harbour/source/rtl/transfrm.c b/harbour/source/rtl/transfrm.c index 074b3c05da..ee0fa7d5b6 100644 --- a/harbour/source/rtl/transfrm.c +++ b/harbour/source/rtl/transfrm.c @@ -402,7 +402,7 @@ HB_FUNC( TRANSFORM ) BOOL bFound = FALSE; BOOL bInit = FALSE; - BOOL bEnd = FALSE; + BOOL bPDec = FALSE; dValue = hb_itemGetND( pValue ); hb_itemGetNLen( pValue, &iOrigWidth, &iOrigDec ); @@ -492,11 +492,9 @@ HB_FUNC( TRANSFORM ) { cPic = szPic[ i ]; - if( bInit && cPic == ' ' ) - bEnd = TRUE; - if( !bInit && ( cPic == '9' || cPic == '#' || cPic == '$' || cPic == '*' ) ) bInit = TRUE; + if( cPic == '9' || cPic == '#' ) { if( iCount < iWidth ) @@ -504,16 +502,18 @@ HB_FUNC( TRANSFORM ) else szResult[ i ] = ' '; } - else if( cPic == '.' && bInit && !bEnd ) + else if( cPic == '.' && bInit ) { - if( uiPicFlags & PF_EXCHANG ) /* Exchange . and , */ + bPDec = TRUE; + + if( uiPicFlags & PF_EXCHANG ) /* Exchange . and , */ { szResult[ i ] = ','; iCount++; } else { - if( uiPicFlags & PF_NUMDATE ) /* Dot in date */ + if( uiPicFlags & PF_NUMDATE || bPDec ) /* Dot in date */ { szResult[ i ] = cPic; iCount++; @@ -524,7 +524,7 @@ HB_FUNC( TRANSFORM ) } } } - else if( ( cPic == '$' || cPic == '*' ) && !bEnd ) + else if( cPic == '$' || cPic == '*' ) { if( szStr[ iCount ] == ' ' ) { @@ -534,7 +534,7 @@ HB_FUNC( TRANSFORM ) else szResult[ i ] = szStr[ iCount++ ]; } - else if( cPic == ',' && bInit && !bEnd ) /* Comma */ + else if( cPic == ',' && bInit ) /* Comma */ { if( iCount && isdigit( ( int ) szStr[ iCount - 1 ] ) ) { /* May we place it */