19991017-20:46 GMT+1

This commit is contained in:
Viktor Szakats
1999-10-17 19:05:05 +00:00
parent 2b8199a97e
commit b0b8a7dfd4
8 changed files with 244 additions and 30 deletions

View File

@@ -1,3 +1,28 @@
19991017-20:46 GMT+1 Victor Szel <info@szelvesz.hu>
+ source/rtl/samples.c
source/rtl/Makefile
source/rtl/dummy.prg
source/rtl/rtl_test.prg
+ AMPM() (tested)
+ DAYS()
+ ELAPTIME()
+ LENNUM()
+ SECS()
+ TSTRING()
Functions added, mostly not yet tested. RTL_TEST tests added for AMPM().
WARNING ! Please add new file to non-GNU make systems.
* include/extend.h
+ hb_strVal() prototype added.
+ hb_strLTrim() prototype added.
* source/rtl/dummy.prg
include/hbextern.ch
source/runner/stdalone/external.prg
! Some internal functions removed (added today), since they seem not
real Clipper functions.
+ Several new Clipper (documented) functions added (db*() for 5.3, and
SOUNDEX())
+ One new undocumented function added. (__FLEDIT)
19991017-09:00 EDT Paul Tucker <ptucker@sympatico.ca>
* makefile.vc
+ source/rtl/oldbox.prg

View File

@@ -343,6 +343,8 @@ extern ULONG hb_strAt( char * szSub, ULONG ulSubLen, char * szText, ULONG ulL
extern char * hb_strUpper( char * szText, ULONG ulLen );
extern char * hb_strLower( char * szText, ULONG ulLen );
extern char * hb_strncpyUpper( char * pDest, char * pSource, ULONG ulLen );
extern double hb_strVal( char * szText );
extern char * hb_strLTrim( char * szText, ULONG * ulLen );
extern double hb_numRound( double dResult, int iDec );

View File

@@ -462,12 +462,17 @@ EXTERNAL DBSEEK
EXTERNAL DBSETRELATION
EXTERNAL DBCLEARRELATION
EXTERNAL DBEVAL
EXTERNAL DBFILEGET
EXTERNAL DBFILEPUT
EXTERNAL DBINFO
EXTERNAL DBORDERINFO
EXTERNAL DBRECORDINFO
EXTERNAL DBFIELDINFO
EXTERNAL MEMOEDIT
EXTERNAL MLCTOPOS
EXTERNAL MLPOS
EXTERNAL MPOSTOLC
EXTERNAL __DBAPP
EXTERNAL __DBCONTINUE
EXTERNAL __DBCOPY
EXTERNAL __DBCOPYSTRUCT
EXTERNAL __DBCOPYXSTRUCT
@@ -475,7 +480,6 @@ EXTERNAL __DBCREATE
EXTERNAL __DBDELIM
EXTERNAL __DBJOIN
EXTERNAL __DBLIST
EXTERNAL __DBLOCATE
EXTERNAL __DBPACK
EXTERNAL __DBSDF
EXTERNAL __DBSORT
@@ -512,10 +516,7 @@ EXTERNAL SECS
EXTERNAL DAYS
EXTERNAL LENNUM
EXTERNAL ELAPTIME
EXTERNAL __BNAMES
EXTERNAL __LNAMES
EXTERNAL __SNAMES
EXTERNAL __SRCNAME
EXTERNAL SOUNDEX
EXTERNAL _NATSORTVER
EXTERNAL ISAFFIRM
EXTERNAL ISNEGATIVE

View File

@@ -33,6 +33,7 @@ C_SOURCES=\
mtran.c \
oldbox.c \
oldclear.c \
samples.c \
set.c \
setcolor.c \
strings.c \

View File

@@ -54,6 +54,12 @@ FUNCTION dbSeek() ; RETURN .F.
FUNCTION dbSetRelation() ; RETURN NIL
FUNCTION dbClearRelation() ; RETURN NIL
FUNCTION dbEval() ; RETURN NIL
FUNCTION dbFileGet() ; RETURN .F. /* 5.3 */
FUNCTION dbFilePut() ; RETURN .F. /* 5.3 */
FUNCTION dbInfo() ; RETURN NIL /* 5.3 */
FUNCTION dbOrderInfo() ; RETURN NIL /* 5.3 */
FUNCTION dbRecordInfo() ; RETURN NIL /* 5.3 */
FUNCTION dbFieldInfo() ; RETURN NIL /* 5.3 */
FUNCTION MemoEdit( str ) ; RETURN str
FUNCTION MLCToPos() ; RETURN 0
@@ -83,6 +89,7 @@ FUNCTION __dbSetFound() ; RETURN NIL
FUNCTION __dbSetLocate() ; RETURN NIL
FUNCTION __dbTrans() ; RETURN NIL
FUNCTION __dbTransRec() ; RETURN NIL
FUNCTION __FLEdit ; RETURN {}
FUNCTION dbEdit() ; RETURN NIL
FUNCTION IsPrinter() ; RETURN .T.
@@ -103,17 +110,7 @@ FUNCTION ReadUpdated() ; RETURN .T.
FUNCTION Updated() ; RETURN .T.
FUNCTION __SetFormat() ; RETURN NIL
FUNCTION AMPM() ; RETURN ""
FUNCTION TString() ; RETURN ""
FUNCTION Secs() ; RETURN 0
FUNCTION Days() ; RETURN 0
FUNCTION LenNum() ; RETURN 0
FUNCTION ElapTime() ; RETURN 0
FUNCTION __BNames() ; RETURN NIL
FUNCTION __LNames() ; RETURN NIL
FUNCTION __SNames() ; RETURN NIL
FUNCTION __SrcName() ; RETURN NIL
FUNCTION SoundEx() ; RETURN ""
FUNCTION _NatSortVer() ; RETURN ""
FUNCTION IsAffirm() ; RETURN .F.

View File

@@ -0,0 +1,167 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
* AMPM() function
*
* Copyright 1999 Victor Szel <info@szelvesz.hu>
* www - http://www.harbour-project.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version, with one exception:
*
* The exception is that if you link the Harbour Runtime Library (HRL)
* and/or the Harbour Virtual Machine (HVM) with other files to produce
* an executable, this does not by itself cause the resulting executable
* to be covered by the GNU General Public License. Your use of that
* executable is in no way restricted on account of linking the HRL
* and/or HVM code into it.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA (or visit
* their web site at http://www.gnu.org/).
*
*/
#include "extend.h"
#include "itemapi.h"
/* NOTE: szTime must be 9 chars large */
static char * hb_SecToTimeStr( char * pszTime, ULONG ulTime )
{
USHORT uiValue;
uiValue = ( ulTime / 3600 ) % 24;
pszTime[ 0 ] = ( char ) ( uiValue / 10 ) + '0';
pszTime[ 1 ] = ( char ) ( uiValue % 10 ) + '0';
pszTime[ 2 ] = ':';
uiValue = ( ulTime / 60 ) % 64;
pszTime[ 3 ] = ( char ) ( uiValue / 10 ) + '0';
pszTime[ 4 ] = ( char ) ( uiValue % 10 ) + '0';
pszTime[ 5 ] = ':';
uiValue = ulTime % 60;
pszTime[ 6 ] = ( char ) ( uiValue / 10 ) + '0';
pszTime[ 7 ] = ( char ) ( uiValue % 10 ) + '0';
pszTime[ 8 ] = '\0';
return pszTime;
}
static ULONG hb_TimeStrToSec( char * pszTime )
{
ULONG ulLen = strlen( pszTime );
ULONG ulTime = 0;
if( ulLen >= 0 )
ulTime += ( ULONG ) hb_strVal( pszTime ) * 3600;
if( ulLen >= 4 )
ulTime += ( ULONG ) hb_strVal( pszTime + 3 ) * 60;
if( ulLen >= 7 )
ulTime += ( ULONG ) hb_strVal( pszTime + 6 );
return ulTime;
}
HARBOUR HB_AMPM( void )
{
char * pszTime = hb_parc( 1 );
ULONG ulTimeLen = hb_parclen( 1 );
char * pszResult = ( char * ) hb_xgrab( MAX( ulTimeLen, 2 ) + 3 + 1 );
USHORT uiHour = ( USHORT ) hb_strVal( pszTime );
BOOL bAM;
memset( pszResult, 0, 3 );
memcpy( pszResult, pszTime, ulTimeLen );
if( uiHour == 0 || uiHour == 24 )
{
if( ulTimeLen < 2 )
ulTimeLen = 2;
pszResult[ 0 ] = '1';
pszResult[ 1 ] = '2';
bAM = TRUE;
}
else if( uiHour > 12 )
{
if( ulTimeLen < 2 )
ulTimeLen = 2;
uiHour -= 12;
pszResult[ 0 ] = ( char ) ( uiHour / 10 ) + '0';
pszResult[ 1 ] = ( char ) ( uiHour % 10 ) + '0';
if( pszResult[ 0 ] == '0' )
pszResult[ 0 ] = ' ';
bAM = FALSE;
}
else if( uiHour == 12 )
bAM = FALSE;
else
bAM = TRUE;
strcpy( pszResult + ulTimeLen, bAM ? " am" : " pm" );
hb_retclen( pszResult, ulTimeLen + 3 );
hb_xfree( pszResult );
}
HARBOUR HB_DAYS( void )
{
hb_retnl( hb_parnl( 1 ) / 86400 );
}
HARBOUR HB_ELAPTIME( void )
{
ULONG ulStart = hb_TimeStrToSec( hb_parc( 1 ) );
ULONG ulEnd = hb_TimeStrToSec( hb_parc( 2 ) );
char szTime[ 9 ];
hb_retc( hb_SecToTimeStr( szTime, ( ulEnd < ulStart ? 86400 : 0 ) + ulEnd - ulStart ) );
}
HARBOUR HB_LENNUM( void )
{
PHB_ITEM pNumber = hb_param( 1, IT_NUMERIC );
ULONG ulLen = 0;
if( pNumber )
{
char * pszString = hb_itemStr( pNumber, NULL, NULL );
if( pszString )
{
ulLen = strlen( pszString );
hb_strLTrim( pszString, &ulLen );
hb_xfree( pszString );
}
}
hb_retnl( ulLen );
}
HARBOUR HB_SECS( void )
{
hb_retnl( hb_TimeStrToSec( hb_parc( 1 ) ) );
}
HARBOUR HB_TSTRING( void )
{
char szTime[ 9 ];
hb_retc( hb_SecToTimeStr( szTime, hb_parnl( 1 ) ) );
}

View File

@@ -459,12 +459,17 @@ EXTERNAL DBSEEK
EXTERNAL DBSETRELATION
EXTERNAL DBCLEARRELATION
EXTERNAL DBEVAL
EXTERNAL DBFILEGET
EXTERNAL DBFILEPUT
EXTERNAL DBINFO
EXTERNAL DBORDERINFO
EXTERNAL DBRECORDINFO
EXTERNAL DBFIELDINFO
EXTERNAL MEMOEDIT
EXTERNAL MLCTOPOS
EXTERNAL MLPOS
EXTERNAL MPOSTOLC
EXTERNAL __DBAPP
EXTERNAL __DBCONTINUE
EXTERNAL __DBCOPY
EXTERNAL __DBCOPYSTRUCT
EXTERNAL __DBCOPYXSTRUCT
@@ -472,7 +477,6 @@ EXTERNAL __DBCREATE
EXTERNAL __DBDELIM
EXTERNAL __DBJOIN
EXTERNAL __DBLIST
EXTERNAL __DBLOCATE
EXTERNAL __DBPACK
EXTERNAL __DBSDF
EXTERNAL __DBSORT
@@ -509,10 +513,7 @@ EXTERNAL SECS
EXTERNAL DAYS
EXTERNAL LENNUM
EXTERNAL ELAPTIME
EXTERNAL __BNAMES
EXTERNAL __LNAMES
EXTERNAL __SNAMES
EXTERNAL __SRCNAME
EXTERNAL SOUNDEX
EXTERNAL _NATSORTVER
EXTERNAL ISAFFIRM
EXTERNAL ISNEGATIVE

View File

@@ -1654,14 +1654,17 @@ STATIC FUNCTION Main_STRINGS()
RETURN NIL
#ifdef __HARBOUR__
STATIC FUNCTION New_STRINGS()
TEST_LINE( HB_VALTOSTR( 4 ) , " 4" )
TEST_LINE( HB_VALTOSTR( 4.0 / 2 ) , " 2.00" )
TEST_LINE( HB_VALTOSTR( "String" ) , "String" )
TEST_LINE( HB_VALTOSTR( CTOD( "2001/01/01" ) ), "2001.01.01" )
TEST_LINE( HB_VALTOSTR( NIL ) , "NIL" )
TEST_LINE( HB_VALTOSTR( .F. ) , ".F." )
TEST_LINE( HB_VALTOSTR( .T. ) , ".T." )
TEST_LINE( HB_ValToStr( 4 ) , " 4" )
TEST_LINE( HB_ValToStr( 4.0 / 2 ) , " 2.00" )
TEST_LINE( HB_ValToStr( "String" ) , "String" )
TEST_LINE( HB_ValToStr( SToD( "20010101" ) ) , "2001.01.01" )
TEST_LINE( HB_ValToStr( NIL ) , "NIL" )
TEST_LINE( HB_ValToStr( .F. ) , ".F." )
TEST_LINE( HB_ValToStr( .T. ) , ".T." )
RETURN NIL
STATIC FUNCTION Long_STRINGS()
@@ -1671,10 +1674,27 @@ STATIC FUNCTION Long_STRINGS()
TEST_LINE( ( "1234567890" + SPACE( 810910 ) ) - ( "1234567890" + SPACE( 810910 ) ), "12345678901234567890" + SPACE( 810910 * 2 ) )
RETURN NIL
#endif
STATIC FUNCTION Main_MISC()
/* AMPM() */
TEST_LINE( AMPM( "" ) , "12 am" )
TEST_LINE( AMPM( "HELLO" ) , "12LLO am" )
TEST_LINE( AMPM( " 0:23:45" ) , "12:23:45 am" )
TEST_LINE( AMPM( "00:23:45" ) , "12:23:45 am" )
TEST_LINE( AMPM( " 5:23:45" ) , " 5:23:45 am" )
TEST_LINE( AMPM( "05:23:45" ) , "05:23:45 am" )
TEST_LINE( AMPM( "12:23:45" ) , "12:23:45 pm" )
TEST_LINE( AMPM( "20:23:45" ) , " 8:23:45 pm" )
TEST_LINE( AMPM( "24:23:45" ) , "12:23:45 am" )
TEST_LINE( AMPM( "25:23:45" ) , "13:23:45 pm" )
TEST_LINE( AMPM( "2" ) , "2 am" )
TEST_LINE( AMPM( "02:23" ) , "02:23 am" )
TEST_LINE( AMPM( "02:23:45.10" ) , "02:23:45.10 am" )
/* FOR/NEXT */
TEST_LINE( TFORNEXT( .F., .T., NIL ) , "E BASE 1086 Argument error ++ F:S" )