2008-03-11 14:04 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/utils/hbtest/rt_trans.prg
    * cleaned TRANSFORM() tests

  * harbour/contrib/rddads/ads1.c
    ! fixed binary number formatting
This commit is contained in:
Przemyslaw Czerpak
2008-03-11 13:04:47 +00:00
parent 8f184a368d
commit ca6ba143cd
3 changed files with 344 additions and 298 deletions

View File

@@ -7,6 +7,13 @@
For example:
2002-12-01 13:30 UTC+0100 Foo Bar <foo.bar@foobar.org>
*/
2008-03-11 14:04 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/utils/hbtest/rt_trans.prg
* cleaned TRANSFORM() tests
* harbour/contrib/rddads/ads1.c
! fixed binary number formatting
2008-03-10 09:53 UTC+0100 Belgrano Massimo (mbelgrano/at/deltain.it)
* harbour/utils/hbtest/rt_trans.prg
! added news regression test

View File

@@ -1839,7 +1839,6 @@ static ERRCODE adsGetValue( ADSAREAP pArea, USHORT uiIndex, PHB_ITEM pItem )
LPFIELD pField;
BYTE * pBuffer = pArea->pRecord;
UNSIGNED32 u32Length;
DOUBLE dVal = 0;
UNSIGNED32 ulRetVal;
HB_TRACE(HB_TR_DEBUG, ("adsGetValue(%p, %hu, %p)", pArea, uiIndex, pItem));
@@ -1882,71 +1881,106 @@ static ERRCODE adsGetValue( ADSAREAP pArea, USHORT uiIndex, PHB_ITEM pItem )
hb_itemPutCL( pItem, ( char * ) pBuffer, pField->uiLen );
break;
/* TODO: clean the code below, Druzus */
case HB_FT_LONG:
case HB_FT_INTEGER:
case HB_FT_DOUBLE:
case HB_FT_TIME:
case HB_FT_DAYTIME:
case HB_FT_MODTIME:
case HB_FT_ROWVER:
case HB_FT_AUTOINC:
case HB_FT_CURDOUBLE:
case HB_FT_TIME:
u32Length = pArea->maxFieldLen + 1;
if ( pField->uiTypeExtended == ADS_TIMESTAMP ||
pField->uiTypeExtended == ADS_MODTIME ||
pField->uiTypeExtended == ADS_TIME )
{
ulRetVal = AdsGetField( pArea->hTable, ADSFIELD( uiIndex ), pBuffer, &u32Length, ADS_NONE );
/*
ulRetVal = AdsGetFieldRaw( pArea->hTable, ADSFIELD( uiIndex ), pBuffer, &u32Length );
dVal = (double) *pBuffer;
TraceLog( NULL, "u32Length %d float %f pBuffer: %d \n", u32Length , (double) *pBuffer, (double) *pBuffer );
TraceLog( NULL, "u32Length %d pBuffer: %s \n", u32Length , pBuffer );
*/
}
else
{
ulRetVal = AdsGetDouble( pArea->hTable, ADSFIELD( uiIndex ), &dVal );
}
ulRetVal = AdsGetField( pArea->hTable, ADSFIELD( uiIndex ), pBuffer, &u32Length, ADS_NONE );
if( ulRetVal == AE_NO_CURRENT_RECORD )
{
memset( pBuffer, ' ', pArea->maxFieldLen + 1 );
pArea->fEof = TRUE;
dVal = 0.0;
}
hb_itemPutCL( pItem, ( char * ) pBuffer, u32Length );
break;
if( pField->uiDec )
case HB_FT_INTEGER:
{
SIGNED32 lVal = 0;
ulRetVal = AdsGetLong( pArea->hTable, ADSFIELD( uiIndex ), &lVal );
if( ulRetVal == AE_NO_CURRENT_RECORD )
{
lVal = 0;
pArea->fEof = TRUE;
}
if( pField->uiTypeExtended == ADS_SHORTINT )
hb_itemPutNILen( pItem, ( int ) lVal, 6 );
else
hb_itemPutNLLen( pItem, ( LONG ) lVal, 11 );
break;
}
#ifndef HB_LONG_LONG_OFF
case HB_FT_AUTOINC:
{
SIGNED64 qVal = 0;
ulRetVal = AdsGetLongLong( pArea->hTable, ADSFIELD( uiIndex ), &qVal );
if( ulRetVal == AE_NO_CURRENT_RECORD )
{
qVal = 0;
pArea->fEof = TRUE;
}
hb_itemPutNIntLen( pItem, ( HB_LONG ) qVal, 10 );
break;
}
case HB_FT_ROWVER:
{
SIGNED64 qVal = 0;
ulRetVal = AdsGetLongLong( pArea->hTable, ADSFIELD( uiIndex ), &qVal );
if( ulRetVal == AE_NO_CURRENT_RECORD )
{
qVal = 0;
pArea->fEof = TRUE;
}
hb_itemPutNIntLen( pItem, ( HB_LONG ) qVal, 20 );
break;
}
#else
case HB_FT_AUTOINC:
case HB_FT_ROWVER:
{
DOUBLE dVal = 0;
ulRetVal = AdsGetDouble( pArea->hTable, ADSFIELD( uiIndex ), &dVal );
if( ulRetVal == AE_NO_CURRENT_RECORD )
{
dVal = 0.0;
pArea->fEof = TRUE;
}
hb_itemPutNLen( pItem, dVal,
pField->uiTypeExtended == HB_FT_AUTOINC ? 10 : 20, 0 );
}
#endif
case HB_FT_LONG:
case HB_FT_DOUBLE:
case HB_FT_CURDOUBLE:
{
DOUBLE dVal = 0;
ulRetVal = AdsGetDouble( pArea->hTable, ADSFIELD( uiIndex ), &dVal );
if( ulRetVal == AE_NO_CURRENT_RECORD )
{
dVal = 0.0;
pArea->fEof = TRUE;
}
if( pField->uiTypeExtended == ADS_CURDOUBLE ||
pField->uiTypeExtended == ADS_DOUBLE )
{
hb_itemPutNDLen( pItem, dVal,
( int ) pField->uiLen - ( ( int ) pField->uiDec + 1 ),
( int ) pField->uiDec );
20 - ( pField->uiDec > 0 ? ( pField->uiDec + 1 ) : 0 ),
( int ) pField->uiDec );
}
else if( pField->uiDec )
{
hb_itemPutNDLen( pItem, dVal,
( int ) pField->uiLen - ( pField->uiDec + 1 ),
( int ) pField->uiDec );
}
else
{
switch ( pField->uiTypeExtended )
{
case ADS_CURDOUBLE :
case ADS_DOUBLE :
hb_itemPutNDLen( pItem, dVal,
( int ) pField->uiLen,
( int ) pField->uiDec );
break;
/*case ADS_AUTOINC:
hb_itemPutNLen( pItem, dVal, ( int ) 10 , (int) 0 );
break; */
case ADS_TIMESTAMP:
case ADS_MODTIME:
case ADS_TIME:
hb_itemPutCL( pItem, ( char * ) pBuffer, u32Length );
break;
default:
hb_itemPutNLen( pItem, dVal, ( int ) pField->uiLen, 0 );
}
hb_itemPutNLen( pItem, dVal, ( int ) pField->uiLen, 0 );
}
break;
}
case HB_FT_DATE:
{
SIGNED32 lDate;

View File

@@ -56,10 +56,11 @@
#include "rt_vars.ch"
FUNCTION Main_TRANS()
LOCAL cOldDate := Set(_SET_DATEFORMAT)
local cOldFixed :=set(_SET_FIXED)
local cOldDecim :=set(_SET_DECIMALS)
LOCAL cOldDate := Set( _SET_DATEFORMAT )
local cOldFixed := Set( _SET_FIXED )
local cOldDecim := Set( _SET_DECIMALS )
local dt
/* TRANSFORM() */
TEST_LINE( Transform( NIL , NIL ) , "E BASE 1122 Argument error TRANSFORM A:2:U:NIL;U:NIL F:S" )
@@ -513,273 +514,277 @@ FUNCTION Main_TRANS()
TEST_LINE( Transform( .T., "@RZ ABCDEFGHIJKLMNOPQRSTUVWXYZ9#!$ *.,") , " " )
TEST_LINE( Transform( .F., "@RZ ABCDEFGHIJKLMNOPQRSTUVWXYZ9#!$ *.,") , " " )
Set( _SET_DATEFORMAT, cOldDate )
TEST_LINE( Transform( "abcd", "@9!*") , "ABCD" )
TEST_LINE( Transform( "abcd", "@_9!*") , "ABCD" )
TEST_LINE( Transform( "abcd", "@_9"+chr(9)+"9!9"), "aBc" )
TEST_LINE( Transform( "abcd", "@!!!" ), "ABCD" )
TEST_LINE( Transform( "abcd", "@9"), "abcd" )
TEST_LINE( Transform( 134.24, "99,999.99") , " 134.24" )
TEST_LINE( Transform( 134.24, "@E 99,999.99") , " 134,24" )
TEST_LINE( Transform( -134.24,"@E 99,999.99") , " -134,24" )
TEST_LINE( Transform( 134.24, "@E99,999.99") , " 134,24" )
TEST_LINE( Transform( -134.24, "@E99,999.99") , " -134,24" )
TEST_LINE( Transform(-7, "@X 9999") , " 7 DB")
SET DATE FORMAT TO "MM/DD/YY"
TEST_LINE( Transform(stod("19920509"), "@E") , "09/05/92")
TEST_LINE( Transform(val("3.10"),"@X") , "3.10")
TEST_LINE( Transform(0.80,".9999") , ".8000" )
TEST_LINE( Transform(-0.80, ".9999") , ".****" )
TEST_LINE( Transform(12345.123, "@X99") , " 12345.123")
TEST_LINE( Transform(-12345.123, "@X99") , " 12345.123 DB" )
TEST_LINE( Transform( 123456.78, "@E"), " 123456,78")
TEST_LINE( Transform(0,"@C 9.99"), "0.00")
TEST_LINE( Transform( "abcd", "@9!*" ) , "ABCD" )
TEST_LINE( Transform( "abcd", "@_9!*" ) , "ABCD" )
TEST_LINE( Transform( "abcd", "@_9" + chr( 9 ) + "9!9") , "aBc" )
TEST_LINE( Transform( "abcd", "@!!!" ) , "ABCD" )
TEST_LINE( Transform( "abcd", "@9" ) , "abcd" )
TEST_LINE( Transform( 134.24, "99,999.99" ) , " 134.24" )
TEST_LINE( Transform( 134.24, "@E 99,999.99" ) , " 134,24" )
TEST_LINE( Transform( -134.24, "@E 99,999.99" ) , " -134,24" )
TEST_LINE( Transform( 134.24, "@E99,999.99" ) , " 134,24" )
TEST_LINE( Transform( -134.24, "@E99,999.99" ) , " -134,24" )
TEST_LINE( Transform( 7, "@C 9999" ) , " 7 CR" )
TEST_LINE( Transform( -7, "@X 9999" ) , " 7 DB" )
TEST_LINE( Transform( HB_SToD( "19920509" ), "@E" ) , "09/05/92" )
TEST_LINE( Transform( val("3.10"), "@X" ) , "3.10" )
TEST_LINE( Transform( 0.80, ".9999" ) , ".8000" )
TEST_LINE( Transform( -0.80, ".9999" ) , ".****" )
TEST_LINE( Transform( 12345.123, "@X99" ) , " 12345.123" )
TEST_LINE( Transform( -12345.123, "@X99" ) , " 12345.123 DB" )
TEST_LINE( Transform( 123456.78, "@E" ) , " 123456,78" )
TEST_LINE( Transform( 0, "@C 9.99" ) , "0.00" )
dt := HB_SToD( "19871231" )
SET DATE FORMAT TO "MM:DD:YYYY"
TEST_LINE( Transform( dt, "@E" ) , "31:12:1987" )
SET DATE FORMAT TO "MM:DD:YY"
TEST_LINE( Transform( dt, "@E" ) , "31:12:87" )
SET DATE FORMAT TO "MM<DD>YY"
TEST_LINE( Transform( dt, "@E" ) , "31<12>87" )
#ifdef __HARBOUR__
dt:=stod("19871231")
set date format to "MM:DD:YYYY"
TEST_LINE( Transform( dt, "@E") , "31:12:1987" )
set date format to "DD:MM:YYYY"
TEST_LINE( Transform( dt, "@E") , "31:12:1987")
set date format to "YYYY:MM:DD"
TEST_LINE( Transform( dt, "@E") , "31:12:1987")
set date format to "YYYY:DD:MM"
TEST_LINE( Transform( dt, "@E") , "31:12:1987")
set date format to "YY:MM:DD"
TEST_LINE( Transform( dt, "@E") , "31:12:87")
set date format to "MM:DD:YY"
TEST_LINE( Transform( dt, "@E") , "31:12:87")
set date format to "DD:MM:YY"
TEST_LINE( Transform( dt, "@E") , "31:12:87")
set date format to "<YY:DD.MM>"
TEST_LINE( Transform( dt, "@E") , "<31:12.87>")
set date format to "|YY|MM|DD|"
TEST_LINE( Transform( dt, "@E") , "|31|12|87|")
set date format to "MM<DD>YY"
TEST_LINE( Transform( dt, "@E") , "31<12>87")
/* this are wrongly converted by CA-Cl*pper */
SET DATE FORMAT TO "DD:MM:YYYY"
TEST_LINE( Transform( dt, "@E" ) , "31:12:1987" )
SET DATE FORMAT TO "YYYY:MM:DD"
TEST_LINE( Transform( dt, "@E" ) , "31:12:1987" )
SET DATE FORMAT TO "YYYY:DD:MM"
TEST_LINE( Transform( dt, "@E" ) , "31:12:1987" )
SET DATE FORMAT TO "YY:MM:DD"
TEST_LINE( Transform( dt, "@E" ) , "31:12:87" )
SET DATE FORMAT TO "DD:MM:YY"
TEST_LINE( Transform( dt, "@E" ) , "31:12:87" )
SET DATE FORMAT TO "<YY:DD.MM>"
TEST_LINE( Transform( dt, "@E" ) , "<31:12.87>" )
SET DATE FORMAT TO "|YY|MM|DD|"
TEST_LINE( Transform( dt, "@E" ) , "|31|12|87|" )
#endif
Set( _SET_DATEFORMAT, cOldDate)
TEST_LINE( Transform( -5, "@(Z $###,##9.99") , "( 5.00)" )
TEST_LINE( Transform( -10, "@)Z $###,##9.99") , "$ (10.00)" )
TEST_LINE( Transform( -20, "@Z $###,##9.99") , "$ -20.00" )
TEST_LINE( Transform(100,"9999.") , " 100.")
TEST_LINE( Transform(1.1,"@B!99.99") , "1.1 ")
TEST_LINE( Transform(12.345,"@R 99/99") , " /12")
TEST_LINE( Transform( "1234567890", "@9") , "1234567890")
TEST_LINE( Transform( 1234567890, "@9") , " 1234567890")
TEST_LINE( Transform( 1234, "9 999") , "1 234" )
TEST_LINE( Transform( 123.123456, "999.99.99.99") , "123.12.45. " )
TEST_LINE( Transform( 123.123456, "$$$.$$.$$.$$") , "123.12.45. " )
TEST_LINE( Transform( 123.123456, "***.**.**.**") , "123.12.45. " )
TEST_LINE( Transform( 99999, "9.999") , "*.***" )
TEST_LINE( Transform( 99, "*.***") , "*.***" )
TEST_LINE( Transform( 12345, "9999.") , "****." )
SET DATE FORMAT TO "MM.DD.YYYY"
TEST_LINE( Transform( dt, "@E" ) , "31.12.1987" )
TEST_LINE( Transform(-12345.00, "@(") , "( 12345.00)")
TEST_LINE( Transform(-12345.00, "@)") , " (12345.00)")
TEST_LINE( Transform(-123456789.00, "@(") , "(123456789.00)")
TEST_LINE( Transform(-123456789.00, "@)") , "(123456789.00)")
TEST_LINE( Transform(-1234567890, "@(") , "( 1234567890)")
TEST_LINE( Transform(-1234567890, "@)") , " (1234567890)")
TEST_LINE( Transform(-12345, "@( [999999]") , "( 12345])")
TEST_LINE( Transform(-12345, "@) [999999]") , "[(12345])")
TEST_LINE( Transform(-12345, "@( $999999") , "( 12345)")
TEST_LINE( Transform(-12345, "@) $999999") , "$(12345)")
TEST_LINE( Transform(-12345, "@( #999999") , "( 12345)")
TEST_LINE( Transform(-12345, "@) #999999") , " (12345)")
TEST_LINE( Transform(-12345, "@( $99999") , "(12345)")
TEST_LINE( Transform(-12345, "@) $99999") , "(12345)")
TEST_LINE( Transform(-12345, "@( #99999") , "(12345)")
TEST_LINE( Transform(-12345, "@) #99999") , "(12345)")
TEST_LINE( Transform(-12345, "@( 6798^999") , "(7*8^***)")
TEST_LINE( Transform(-12345, "@( 9798^9999") , "(718^2345)")
TEST_LINE( Transform( -5, "@(Z $###,##9.99" ) , "( 5.00)" )
TEST_LINE( Transform( -10, "@)Z $###,##9.99" ) , "$ (10.00)" )
TEST_LINE( Transform( -20, "@Z $###,##9.99" ) , "$ -20.00" )
TEST_LINE( Transform( 100, "9999." ) , " 100." )
TEST_LINE( Transform( 1.1, "@B!99.99" ) , "1.1 " )
TEST_LINE( Transform( 12.345, "@R 99/99" ) , " /12" )
TEST_LINE( Transform( "1234567890", "@9" ) , "1234567890" )
TEST_LINE( Transform( 1234567890, "@9" ) , " 1234567890" )
TEST_LINE( Transform( 1234, "9 999" ) , "1 234" )
TEST_LINE( Transform( 123.123456, "999.99.99.99" ) , "123.12.45. " )
TEST_LINE( Transform( 123.123456, "$$$.$$.$$.$$" ) , "123.12.45. " )
TEST_LINE( Transform( 123.123456, "***.**.**.**" ) , "123.12.45. " )
TEST_LINE( Transform( 99999, "9.999" ) , "*.***" )
TEST_LINE( Transform( 99, "*.***" ) , "*.***" )
TEST_LINE( Transform( 12345, "9999." ) , "****." )
TEST_LINE( Transform( 134.24, "@E99,999.99") , " 134,24" )
TEST_LINE( Transform( -134.24, "@E99,999.99") , " -134,24" )
TEST_LINE( Transform(0.80,".9999") , ".8000")
TEST_LINE( Transform(-0.80,".9999") , ".****")
TEST_LINE( Transform(12345.123, "@X99") , " 12345.123")
TEST_LINE( Transform(-12345.123, "@X99") , " 12345.123 DB")
TEST_LINE( Transform( 123456.78, "@E" ) , " 123456,78")
TEST_LINE( Transform(0,"@C 9.99") , "0.00")
TEST_LINE( Transform(1.1,"@B!99.99") , "1.1 ")
TEST_LINE( Transform(-12345, "@) [999999]") , "[(12345])")
TEST_LINE( Transform(-12345, "@) $999999") , "$(12345)")
TEST_LINE( Transform(-12345, "@) *999999") , "*(12345)")
TEST_LINE( Transform(-12345, "@) #999999") , " (12345)")
TEST_LINE( Transform(-12345, "@) *9$9*999]") , "*($12345])")
TEST_LINE( Transform(-12345, "@) *999*999]") , "* (12345])")
TEST_LINE( Transform(-12345, "@) 0999*999]") , "0 (12345])")
TEST_LINE( Transform(-12345, "@) 1999*999]") , "1 (12345])")
TEST_LINE( Transform(-12345, "@) *[99*999]") , "([ 12345])")
TEST_LINE( Transform(-12345, "@) *****999]") , "(**12345])")
TEST_LINE( Transform(-12345, "@) *1***999]") , "(1*12345])")
TEST_LINE( Transform(-12345, "@) * 999999]") , "* (12345])")
TEST_LINE( Transform( -5, "@(Z $###,##9.99") , "( 5.00)" )
TEST_LINE( Transform( -10, "@)Z $###,##9.99") , "$ (10.00)" )
TEST_LINE( Transform( -5, "@(Z $999,999.99") , "( 5.00)" )
TEST_LINE( Transform( -10, "@)Z $999,999.99") , "$ (10.00)" )
TEST_LINE( Transform( -5, "@(Z 999,999.99") , "( 5.00)" )
TEST_LINE( Transform( -10, "@)Z 999,999.99") , " (10.00)" )
TEST_LINE( Transform( -20, "@Z $###,##9.99") , "$ -20.00" )
TEST_LINE( Transform(0.1,".9") , ".1")
TEST_LINE( Transform(0.0,".9") , ".0")
TEST_LINE( Transform(1,".9") , ".*")
TEST_LINE( Transform(.456,".9") , ".5")
TEST_LINE( Transform(123,"99.-") , "**.-")
TEST_LINE( Transform( -12345.00, "@(" ) , "( 12345.00)" )
TEST_LINE( Transform( -12345.00, "@)" ) , " (12345.00)" )
TEST_LINE( Transform(-123456789.00, "@(" ) , "(123456789.00)" )
TEST_LINE( Transform(-123456789.00, "@)" ) , "(123456789.00)" )
TEST_LINE( Transform( -1234567890, "@(" ) , "( 1234567890)" )
TEST_LINE( Transform( -1234567890, "@)" ) , " (1234567890)" )
TEST_LINE( Transform( -12345, "@( [999999]" ) , "( 12345])" )
TEST_LINE( Transform( -12345, "@) [999999]" ) , "[(12345])" )
TEST_LINE( Transform( -12345, "@( $999999" ) , "( 12345)" )
TEST_LINE( Transform( -12345, "@) $999999" ) , "$(12345)" )
TEST_LINE( Transform( -12345, "@( #999999" ) , "( 12345)" )
TEST_LINE( Transform( -12345, "@) #999999" ) , " (12345)" )
TEST_LINE( Transform( -12345, "@( $99999" ) , "(12345)" )
TEST_LINE( Transform( -12345, "@) $99999" ) , "(12345)" )
TEST_LINE( Transform( -12345, "@( #99999" ) , "(12345)" )
TEST_LINE( Transform( -12345, "@) #99999" ) , "(12345)" )
TEST_LINE( Transform( -12345, "@( 6798^999" ) , "(7*8^***)" )
TEST_LINE( Transform( -12345, "@( 9798^9999" ) , "(718^2345)" )
TEST_LINE( Transform(-123.45,"999,999.99") , " -123.45")
TEST_LINE( Transform(-123456.78,"999,999,999.99") , " -123,456.78")
TEST_LINE( Transform(-123456.78,"$$$,$$$,$$$.$$") , "$$ -123,456.78")
TEST_LINE( Transform(-123456.78,"***,***,***.**") , "***-123,456.78")
TEST_LINE( Transform(123456.78,"@E 888,$$$,$$$.$$") , "888.123.456,78")
TEST_LINE( Transform(123456.78,"@E 888x,$$$,$$$.$$") , "888xx123.456,78")
TEST_LINE( Transform(123456.78,"@E 888x,,$$$,$$$.$$") , "888xxx123.456,78")
TEST_LINE( Transform(123456.78,"@E 8,88x,,$$$,$$$.$$") , "8.88xxx123.456,78")
TEST_LINE( Transform(123456.78,"@E 8,88x,,$$$,,$$$.$$") , "8.88xxx123..456,78")
TEST_LINE( Transform(123456.78,"@E 8,88x,,$$$,,$$$.$$77,7") , "8.88xxx123..456,7877,7")
TEST_LINE( Transform(123456,"@E 8,88x,,$$$,,$$$77,7") , "8.88xxx123..45677,7")
TEST_LINE( Transform(123456,"@E -,999,999") , " -123.456")
TEST_LINE( Transform(12345,"@E -,999,999") , " - 12.345")
TEST_LINE( Transform(12345,"@E -,|999,999") , " -| 12.345")
TEST_LINE( Transform(12345,"@E ^-,|999,999") , "^^-| 12.345")
TEST_LINE( Transform(12345,"@E 1-,|999,999") , "11-| 12.345")
TEST_LINE( Transform(12345,"@E |--,|999,999") , "|---| 12.345")
TEST_LINE( Transform( 134.24, "@E99,999.99" ) , " 134,24" )
TEST_LINE( Transform( -134.24, "@E99,999.99" ) , " -134,24" )
TEST_LINE( Transform( 0.80, ".9999" ) , ".8000" )
TEST_LINE( Transform( -0.80, ".9999" ) , ".****" )
TEST_LINE( Transform( 12345.123, "@X99" ) , " 12345.123" )
TEST_LINE( Transform( -12345.123, "@X99" ) , " 12345.123 DB" )
TEST_LINE( Transform( 123456.78, "@E" ) , " 123456,78" )
TEST_LINE( Transform( 0, "@C 9.99" ) , "0.00" )
TEST_LINE( Transform( 1.1, "@B!99.99" ) , "1.1 " )
TEST_LINE( Transform( -12345, "@) [999999]" ) , "[(12345])" )
TEST_LINE( Transform( -12345, "@) $999999" ) , "$(12345)" )
TEST_LINE( Transform( -12345, "@) *999999" ) , "*(12345)" )
TEST_LINE( Transform( -12345, "@) #999999" ) , " (12345)" )
TEST_LINE( Transform( -12345, "@) *9$9*999]" ) , "*($12345])" )
TEST_LINE( Transform( -12345, "@) *999*999]" ) , "* (12345])" )
TEST_LINE( Transform( -12345, "@) 0999*999]" ) , "0 (12345])" )
TEST_LINE( Transform( -12345, "@) 1999*999]" ) , "1 (12345])" )
TEST_LINE( Transform( -12345, "@) *[99*999]" ) , "([ 12345])" )
TEST_LINE( Transform( -12345, "@) *****999]" ) , "(**12345])" )
TEST_LINE( Transform( -12345, "@) *1***999]" ) , "(1*12345])" )
TEST_LINE( Transform( -12345, "@) * 999999]" ) , "* (12345])" )
TEST_LINE( Transform( -5, "@(Z $###,##9.99" ) , "( 5.00)" )
TEST_LINE( Transform( -10, "@)Z $###,##9.99" ) , "$ (10.00)" )
TEST_LINE( Transform( -5, "@(Z $999,999.99" ) , "( 5.00)" )
TEST_LINE( Transform( -10, "@)Z $999,999.99" ) , "$ (10.00)" )
TEST_LINE( Transform( -5, "@(Z 999,999.99" ) , "( 5.00)" )
TEST_LINE( Transform( -10, "@)Z 999,999.99" ) , " (10.00)" )
TEST_LINE( Transform( -20, "@Z $###,##9.99" ) , "$ -20.00" )
TEST_LINE( Transform( 0.1, ".9" ) , ".1" )
TEST_LINE( Transform( 0.0, ".9" ) , ".0" )
TEST_LINE( Transform( 1, ".9" ) , ".*" )
TEST_LINE( Transform( .456, ".9" ) , ".5" )
TEST_LINE( Transform( 123, "99.-" ) , "**.-" )
TEST_LINE( Transform(12.34,"@E 99'99") , " '12")
TEST_LINE( Transform(12.34,"99,99,11") , " 12,11")
TEST_LINE( Transform(12.34,"@E 99,99,11") , " 12,11")
TEST_LINE( Transform(12.34,"@E 99,") , "12,")
TEST_LINE( Transform(12.34,"@E 9,9") , "1.2")
TEST_LINE( Transform(12.34,"@E ab,cd.ef9,9.99,.--") , "abbcd,ef***,* ,.--")
TEST_LINE( Transform(12.34,"@E ab,cd,ef9,9.99,.--") , "abbcddef1.2,34,.--")
TEST_LINE( Transform(12.34,"@E ,ab,cd,ef9,9.99,.--") , ",abbcddef1.2,34,.--")
TEST_LINE( Transform(12.34,"@E ,,,,99,.99,.--") , ",,,,12.,34,.--")
TEST_LINE( Transform(124.4,"@E ,,,,9,9.99,.--") , ",,,,***,**,.--")
TEST_LINE( Transform( 1.2,"@E ,,,,*,*.**,.--") , ",,,,**1,20,.--")
TEST_LINE( Transform(12.34,"@E ,,,,*,*.**,.--") , ",,,,1.2,34,.--")
TEST_LINE( Transform(12.34,"@E ,,,,*,*.**,.--,--") , ",,,,1.2,34,.--,--")
TEST_LINE( Transform(12.34,"@E ,,,,*,*,.,**") , ",,,,1.2.,,34")
TEST_LINE( Transform(12.34,",,,,*,*,.,**") , ",,,,1,2,..34")
TEST_LINE( Transform(12.34,",,,,*,*,.,*|,*") , ",,,,1,2,..3||4")
TEST_LINE( Transform(12.34,",,,,*,*,.,*,*") , ",,,,1,2,..3,4")
TEST_LINE( Transform(123.345678912,"@E 999.99.99,99.99.") , "123,34,67.89, .")
TEST_LINE( Transform( -123.45, "999,999.99" ) , " -123.45" )
TEST_LINE( Transform( -123456.78, "999,999,999.99" ) , " -123,456.78" )
TEST_LINE( Transform( -123456.78, "$$$,$$$,$$$.$$" ) , "$$ -123,456.78" )
TEST_LINE( Transform( -123456.78, "***,***,***.**" ) , "***-123,456.78" )
TEST_LINE( Transform( 123456.78, "@E 888,$$$,$$$.$$" ) , "888.123.456,78" )
TEST_LINE( Transform( 123456.78, "@E 888x,$$$,$$$.$$" ) , "888xx123.456,78" )
TEST_LINE( Transform( 123456.78, "@E 888x,,$$$,$$$.$$" ) , "888xxx123.456,78" )
TEST_LINE( Transform( 123456.78, "@E 8,88x,,$$$,$$$.$$" ) , "8.88xxx123.456,78" )
TEST_LINE( Transform( 123456.78, "@E 8,88x,,$$$,,$$$.$$" ) , "8.88xxx123..456,78" )
TEST_LINE( Transform( 123456.78, "@E 8,88x,,$$$,,$$$.$$77,7") , "8.88xxx123..456,7877,7" )
TEST_LINE( Transform( 123456, "@E 8,88x,,$$$,,$$$77,7" ) , "8.88xxx123..45677,7" )
TEST_LINE( Transform( 123456, "@E -,999,999" ) , " -123.456" )
TEST_LINE( Transform( 12345, "@E -,999,999" ) , " - 12.345" )
TEST_LINE( Transform( 12345, "@E -,|999,999" ) , " -| 12.345" )
TEST_LINE( Transform( 12345, "@E ^-,|999,999" ) , "^^-| 12.345" )
TEST_LINE( Transform( 12345, "@E 1-,|999,999" ) , "11-| 12.345" )
TEST_LINE( Transform( 12345, "@E |--,|999,999" ) , "|---| 12.345" )
TEST_LINE( Transform( 12.34, "@E 99'99" ) , " '12" )
TEST_LINE( Transform( 12.34, "99,99,11" ) , " 12,11" )
TEST_LINE( Transform( 12.34, "@E 99,99,11" ) , " 12,11" )
TEST_LINE( Transform( 12.34, "@E 99," ) , "12," )
TEST_LINE( Transform( 12.34, "@E 9,9" ) , "1.2" )
TEST_LINE( Transform( 12.34, "@E ab,cd.ef9,9.99,.--" ) , "abbcd,ef***,* ,.--" )
TEST_LINE( Transform( 12.34, "@E ab,cd,ef9,9.99,.--" ) , "abbcddef1.2,34,.--" )
TEST_LINE( Transform( 12.34, "@E ,ab,cd,ef9,9.99,.--" ) , ",abbcddef1.2,34,.--" )
TEST_LINE( Transform( 12.34, "@E ,,,,99,.99,.--" ) , ",,,,12.,34,.--" )
TEST_LINE( Transform( 124.4, "@E ,,,,9,9.99,.--" ) , ",,,,***,**,.--" )
TEST_LINE( Transform( 1.2, "@E ,,,,*,*.**,.--" ) , ",,,,**1,20,.--" )
TEST_LINE( Transform( 12.34, "@E ,,,,*,*.**,.--" ) , ",,,,1.2,34,.--" )
TEST_LINE( Transform( 12.34, "@E ,,,,*,*.**,.--,--" ) , ",,,,1.2,34,.--,--" )
TEST_LINE( Transform( 12.34, "@E ,,,,*,*,.,**" ) , ",,,,1.2.,,34" )
TEST_LINE( Transform( 12.34, ",,,,*,*,.,**" ) , ",,,,1,2,..34" )
TEST_LINE( Transform( 12.34, ",,,,*,*,.,*|,*" ) , ",,,,1,2,..3||4" )
TEST_LINE( Transform( 12.34, ",,,,*,*,.,*,*" ) , ",,,,1,2,..3,4" )
TEST_LINE( Transform(123.345678912, "@E 999.99.99,99.99." ) , "123,34,67.89, ." )
#ifdef __HARBOUR__
TEST_LINE( Transform( 1234567890123456789, "99999999999999999999") , " 1234567890123456789" )
TEST_LINE( Transform( -1234567890123456789, "99999999999999999999") , "-1234567890123456789" )
TEST_LINE( Transform( 1234567890123456789, "99999999999999999999" ) , " 1234567890123456789" )
TEST_LINE( Transform( -1234567890123456789, "99999999999999999999" ) , "-1234567890123456789" )
#else
TEST_LINE( Transform( 1234567890123456789, "99999999999999999999") , " 1234567890123457000" )
TEST_LINE( Transform( -1234567890123456789, "99999999999999999999") , "-1234567890123457000" )
TEST_LINE( Transform( 1234567890123456789, "99999999999999999999" ) , " 1234567890123457000" )
TEST_LINE( Transform( -1234567890123456789, "99999999999999999999" ) , "-1234567890123457000" )
#endif
set(_SET_DATEFORMAT,"YYYY/MM/DD")
TEST_LINE( Transform(12345678,"@D") , "1234/56/78")
set(_SET_DATEFORMAT,"YYYY.MM.DD")
TEST_LINE( Transform(1234.56789,"@D") , "1234.56.9 ")
set(_SET_DATEFORMAT,"YYYY.MM:DD")
TEST_LINE( Transform(1234.56789,"@D"), "1234.56:79")
TEST_LINE( Transform(123.345678912,"@D ") , " 123.34:57")
set(_SET_DATEFORMAT,cOldDate)
SET( _SET_DATEFORMAT, "YYYY/MM/DD" )
TEST_LINE( Transform( 12345678, "@D" ), "1234/56/78" )
SET( _SET_DATEFORMAT, "YYYY.MM.DD" )
TEST_LINE( Transform( 1234.56789, "@D" ), "1234.56.9 " )
SET( _SET_DATEFORMAT, "YYYY.MM:DD" )
TEST_LINE( Transform( 1234.56789, "@D" ), "1234.56:79" )
TEST_LINE( Transform( 123.345678912, "@D" ), " 123.34:57" )
TEST_LINE( Transform(.t.,"@RE <|,yY#lL,|>") , "99-99-9999T")
TEST_LINE( Transform(.f.,"@RE <|,yY#lL,|>") , "99-99-9999F")
TEST_LINE( Transform(.t.,"@RD <|,yY#lL,|>") , "99-99-9999T")
TEST_LINE( Transform(.f.,"@RD <|,yY#lL,|>") , "99-99-9999F")
TEST_LINE( Transform(.f.,"@DE <|,yY#lL,|>") , "9")
TEST_LINE( Transform("abcdefghij","@S15! <XXXXXXXX>") , "<BCDEFGHI>")
TEST_LINE( Transform("abcdefghij","@S0! <XXXXXXXX>") , "<BCDEFGHI>")
TEST_LINE( Transform("abcdefghij","@S5! <XXXXXXXX>") , "<BCDE")
SET( _SET_DATEFORMAT, "MM-DD-YYYY" )
TEST_LINE( Transform( .t., "@RE <|,yY#lL,|>" ) , "99-99-9999T" )
TEST_LINE( Transform( .f., "@RE <|,yY#lL,|>" ) , "99-99-9999F" )
TEST_LINE( Transform( .t., "@RD <|,yY#lL,|>" ) , "99-99-9999T" )
TEST_LINE( Transform( .f., "@RD <|,yY#lL,|>" ) , "99-99-9999F" )
TEST_LINE( Transform( .f., "@DE <|,yY#lL,|>" ) , "9" )
set fixed on
TEST_LINE( Transform( 1234, ) , " 1234" )
TEST_LINE( Transform( 1234, "" ) , " 1234" )
TEST_LINE( Transform( 1234, "@" ), " 1234" )
TEST_LINE( Transform( 1234, "@!"), " 1234" )
TEST_LINE( Transform( -1234, ), " -1234" )
TEST_LINE( Transform( -1234, "@" ), " -1234" )
TEST_LINE( Transform( "abcdefghij", "@S15! <XXXXXXXX>" ) , "<BCDEFGHI>" )
TEST_LINE( Transform( "abcdefghij", "@S0! <XXXXXXXX>" ) , "<BCDEFGHI>" )
TEST_LINE( Transform( "abcdefghij", "@S5! <XXXXXXXX>" ) , "<BCDE" )
SET FIXED ON
TEST_LINE( Transform( 1234, ), " 1234" )
TEST_LINE( Transform( 1234, "" ), " 1234" )
TEST_LINE( Transform( 1234, "@" ), " 1234" )
TEST_LINE( Transform( 1234, "@!" ), " 1234" )
TEST_LINE( Transform( -1234, ), " -1234" )
TEST_LINE( Transform( -1234, "@" ), " -1234" )
#ifdef HB_C52_STRICT
TEST_LINE( Transform( round(123,0), ) , " 123.00" )
TEST_LINE( Transform( round(123,0), "@!") , " 123.00" )
TEST_LINE( Transform( round(123.0,0), ) , " 123.00" )
TEST_LINE( Transform( round(123.0,0),"@!") , " 123.00" )
TEST_LINE( Transform( round(123 ,0), ), " 123.00" )
TEST_LINE( Transform( round(123, 0), "@!" ), " 123.00" )
TEST_LINE( Transform( round(123.0,0), ), " 123.00" )
TEST_LINE( Transform( round(123.0,0), "@!" ), " 123.00" )
#endif
TEST_LINE( Transform( 1234.567, ) , " 1234.57" )
TEST_LINE( Transform( 1234.567, "") , " 1234.57" )
TEST_LINE( Transform( 1234.567, "@" ) , " 1234.57" )
TEST_LINE( Transform( 1234.567, "@!") , " 1234.57" )
TEST_LINE( Transform( -1234.567, ) , " -1234.57" )
TEST_LINE( Transform( -1234.567, "@") , " -1234.57" )
TEST_LINE( Transform( val("-1.0"), ) , "-1.00" )
TEST_LINE( Transform( val("-1.0"), "@") , "-1.00" )
TEST_LINE( Transform( val("-123"), ) , " -123" )
TEST_LINE( Transform( val("-123"), "@") , " -123" )
TEST_LINE( Transform( 0, ) , " 0" )
TEST_LINE( Transform( 0.0, ) , " 0.00" )
TEST_LINE( Transform( val("1"), ) , " 1" )
TEST_LINE( Transform( val("12"), ) , " 12" )
TEST_LINE( Transform( val("123"), ) , " 123" )
TEST_LINE( Transform( val("1234"), ) , " 1234" )
set decimal to 3
TEST_LINE( Transform( 0.0, ) , " 0.000" )
TEST_LINE( Transform( val("1"), ) , " 1" )
TEST_LINE( Transform( val("12"), ) , " 12" )
TEST_LINE( Transform( val("123"), ) , " 123" )
TEST_LINE( Transform( val("1234"), ) , " 1234" )
set decimal to 4
TEST_LINE( Transform( 0.0, ) , " 0.0000" )
TEST_LINE( Transform( val("1"), ) , " 1" )
TEST_LINE( Transform( val("12"), ) , " 12" )
TEST_LINE( Transform( val("123"), ) , " 123" )
TEST_LINE( Transform( val("1234"), ) , " 1234" )
TEST_LINE( Transform( 1234.567, ), " 1234.57" )
TEST_LINE( Transform( 1234.567, "" ), " 1234.57" )
TEST_LINE( Transform( 1234.567, "@" ), " 1234.57" )
TEST_LINE( Transform( 1234.567, "@!" ), " 1234.57" )
TEST_LINE( Transform( -1234.567, ), " -1234.57" )
TEST_LINE( Transform( -1234.567, "@" ), " -1234.57" )
TEST_LINE( Transform( val("-1.0"), ), "-1.00" )
TEST_LINE( Transform( val("-1.0"), "@" ), "-1.00" )
TEST_LINE( Transform( val("-123"), ), " -123" )
TEST_LINE( Transform( val("-123"), "@" ), " -123" )
TEST_LINE( Transform( 0, ), " 0" )
TEST_LINE( Transform( 0.0, ), " 0.00" )
TEST_LINE( Transform( val("1"), ), " 1" )
TEST_LINE( Transform( val("12"), ), " 12" )
TEST_LINE( Transform( val("123"), ), " 123" )
TEST_LINE( Transform( val("1234"), ), " 1234" )
SET DECIMAL TO 3
TEST_LINE( Transform( 0.0, ), " 0.000" )
TEST_LINE( Transform( val("1"), ), " 1" )
TEST_LINE( Transform( val("12"), ), " 12" )
TEST_LINE( Transform( val("123"), ), " 123" )
TEST_LINE( Transform( val("1234"), ), " 1234" )
SET DECIMAL TO 4
TEST_LINE( Transform( 0.0, ), " 0.0000" )
TEST_LINE( Transform( val("1"), ), " 1" )
TEST_LINE( Transform( val("12"), ), " 12" )
TEST_LINE( Transform( val("123"), ), " 123" )
TEST_LINE( Transform( val("1234"), ), " 1234" )
set(_SET_FIXED,cOldFixed )
set(_SET_DECIMALS,cOldDecim)
SET FIXED OFF
TEST_LINE( Transform( -1234, ) , " -1234" )
TEST_LINE( Transform( -1234, "@B") , "-1234 " )
TEST_LINE( Transform( -1234, "@(") , "( 1234)" )
TEST_LINE( Transform( -1234, "@)") , " (1234)" )
TEST_LINE( Transform( -1234, "@B)") , "(1234) " )
TEST_LINE( Transform( -1234, "@B(") , "(1234) " )
TEST_LINE( Transform( "( 12)", "@B(") , "( 12)" )
TEST_LINE( Transform( "( 12)", "@B)") , "( 12)" )
TEST_LINE( Transform( " 12", "@B(") , "12 " )
TEST_LINE( Transform( " 12", "@B)") , "12 " )
#ifdef __HARBOUR__
TEST_LINE( Transform( 1234, "@L") , "0000001234" )
TEST_LINE( Transform( 1234, "@0") , "0000001234" )
TEST_LINE( Transform( 1234, "@L(") , "0000001234" )
TEST_LINE( Transform( 1234, "@0)") , "0000001234" )
TEST_LINE( Transform( -1234, "@L(") , "(000001234)" )
TEST_LINE( Transform( -1234, "@0)") , "(000001234)" )
/* please test it with FoxPro and xbase++ to check if they give the same result */
TEST_LINE( Transform( -1234, "@L") , "-000001234" )
TEST_LINE( Transform( -1234, "@0") , "-000001234" )
TEST_LINE( Transform( -1234, ), " -1234" )
TEST_LINE( Transform( -1234, "@B" ), "-1234 " )
TEST_LINE( Transform( -1234, "@(" ), "( 1234)" )
TEST_LINE( Transform( -1234, "@)" ), " (1234)" )
TEST_LINE( Transform( -1234, "@B)" ), "(1234) " )
TEST_LINE( Transform( -1234, "@B(" ), "(1234) " )
TEST_LINE( Transform( "( 12)", "@B(" ), "( 12)" )
TEST_LINE( Transform( "( 12)", "@B)" ), "( 12)" )
TEST_LINE( Transform( " 12", "@B(" ), "12 " )
TEST_LINE( Transform( " 12", "@B)" ), "12 " )
#ifndef __CLIPPER__
TEST_LINE( Transform( 1234, "@L" ), "0000001234" )
TEST_LINE( Transform( 1234, "@0" ), "0000001234" )
TEST_LINE( Transform( 1234, "@L(" ), "0000001234" )
TEST_LINE( Transform( 1234, "@0)" ), "0000001234" )
TEST_LINE( Transform( -1234, "@L(" ), "(000001234)" )
TEST_LINE( Transform( -1234, "@0)" ), "(000001234)" )
/* please test it with FoxPro and xbase++ to check if they give
* the same result
*/
TEST_LINE( Transform( -1234, "@L" ), "-000001234" )
TEST_LINE( Transform( -1234, "@0" ), "-000001234" )
#endif
/* FlagShip extensions */
TEST_LINE( Transform( -1234, "@Z") , " -1234" )
TEST_LINE( Transform( 1234, "@Z") , " 1234" )
TEST_LINE( Transform( -1234, "@F") , " -1234" )
TEST_LINE( Transform( 1234, "@F") , " 1234" )
TEST_LINE( Transform( -1234, "@T") , " -1234" )
TEST_LINE( Transform( 1234, "@T") , " 1234" )
/* FlagShip extensions */
TEST_LINE( Transform( -1234, "@Z" ), " -1234" )
TEST_LINE( Transform( 1234, "@Z" ), " 1234" )
TEST_LINE( Transform( -1234, "@F" ), " -1234" )
TEST_LINE( Transform( 1234, "@F" ), " 1234" )
TEST_LINE( Transform( -1234, "@T" ), " -1234" )
TEST_LINE( Transform( 1234, "@T" ), " 1234" )
TEST_LINE( Transform( 123456789.12, "@,39 999,999,999.99") , "123,456,789.12" )
TEST_LINE( Transform( 123456789.12, "@,39 999,999,999.99") , "123,456,789.12" )
TEST_LINE( Transform( 123.456, "@R 9 9 9.9") , "1 2 3.5" )
TEST_LINE( Transform( 123456789.12, "@,39 999,999,999.99" ) , "123,456,789.12" )
TEST_LINE( Transform( 123456789.12, "@,39 999,999,999.99" ) , "123,456,789.12" )
TEST_LINE( Transform( 123.456, "@R 9 9 9.9" ) , "1 2 3.5" )
SET( _SET_FIXED, cOldFixed )
SET( _SET_DECIMALS, cOldDecim )
SET( _SET_DATEFORMAT, cOldDate )
RETURN NIL
#ifndef __HARBOUR__
func stod(s)
local cDf:=set(_SET_DATEFORMAT,"YYYY/MM/DD"), dt
dt:=ctod(stuff(stuff(s,7,0,"/"),5,0,"/"))
set(_SET_DATEFORMAT,cDf)
return dt
#endif
/* Don't change the position of this #include. */
#include "rt_init.ch"