From 9d49d09c1f927679ad4b979ad8ce68dcaae1941c Mon Sep 17 00:00:00 2001 From: Eddie Runia Date: Sun, 18 Jul 1999 12:18:02 +0000 Subject: [PATCH] See changelog --- harbour/ChangeLog | 32 +++ harbour/build32.bat | 4 +- harbour/include/initsymb.h | 1 + harbour/makedos.env | 2 +- harbour/makefile.b16 | 4 +- harbour/makefile.b31 | 3 +- harbour/makefile.b32 | 3 +- harbour/makefile.icc | 2 + harbour/makefile.vc | 3 + harbour/source/rtl/dates.c | 5 + harbour/source/rtl/descend.c | 29 +++ harbour/source/rtl/hardcr.c | 29 +++ harbour/source/rtl/msgxxx.c | 2 + harbour/source/rtl/mtran.c | 30 ++- harbour/source/rtl/natmsg/msgeo.c | 15 ++ harbour/source/runner/runner.c | 1 + harbour/source/tools/Makefile | 1 + harbour/source/tools/dates2.c | 315 ++++++++++++++++++++++++++++++ harbour/source/vm/initsymb.c | 1 + harbour/tests/working/dates4.prg | 32 +++ harbour/tests/working/run_all.bat | 2 + 21 files changed, 510 insertions(+), 6 deletions(-) create mode 100644 harbour/source/rtl/natmsg/msgeo.c create mode 100644 harbour/source/tools/dates2.c create mode 100644 harbour/tests/working/dates4.prg create mode 100644 harbour/tests/working/run_all.bat diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 5d7d2d1265..571fbabd88 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,35 @@ +19990718-14:00 CET Eddie Runia + * build32.bat + bldhbpp.bat called + * makefile.b16; makefile.b31; makefile.b32; makefile.icc; makefile.vc + dates2 included + * makedos.env + very strange error. msgxxx could not include natmsg/msguk.c. + I haven't seen this error before, -Isource/rtl was added to resolve + the problem + * source/rtl/dates.c; source/rtl/descend.c; source/rtl/hardcr.c; + source/rtl/mtran.c + Copyright Jose Lalin added + * source/rtl/msgxxx.c + Esparanto added + + source/rtl/natmsg/msgeo.c + Esparanto added + + source/tools/dates2.c + File from Jose Lalin added. + The following modification have been made : + * Symbol table added + * Bug as reported by Andi resolved + * Casts added to eliminate warnings produced by DJGPP + * source/rtl/makefile + dates.c added + * include/initsymb.h; source/runner/runner.c; source/vm/initsymb.c + Dates2 added to file list. + + tests/working/dates4.prg + Test program tools/dates2 added + + tests/working/run_all.bat + Batch file for testbench added. Will run test_all.prg and subsequently + run all symbols + 19990716-20:00 EDT David G. Holm * config/rules.cf + Added ifeq section for BCC, which requires that the output diff --git a/harbour/build32.bat b/harbour/build32.bat index e0f12e9b7a..3acede83b2 100644 --- a/harbour/build32.bat +++ b/harbour/build32.bat @@ -1,8 +1,10 @@ @echo off del build32.err -make -fmakefile.b32 > build32.err +make -fhbpplib.b32 > build32.err +make -fmakefile.b32 >> build32.err make -fterminal.b32 >> build32.err call bldgt32.bat >> build32.err +call bldhbpp.bat >> build32.err cd tests\working call bld32exe.bat ..\..\source\runner\runner runner >> build32.err cd ..\.. diff --git a/harbour/include/initsymb.h b/harbour/include/initsymb.h index 850286e8a3..386640a9b3 100644 --- a/harbour/include/initsymb.h +++ b/harbour/include/initsymb.h @@ -9,6 +9,7 @@ Console__InitSymbols(); CopyFile__InitSymbols(); Dates__InitSymbols(); + Dates2__InitSymbols(); Descend__InitSymbols(); Dir__InitSymbols(); Environ__InitSymbols(); diff --git a/harbour/makedos.env b/harbour/makedos.env index c929b03014..2da7b7896f 100644 --- a/harbour/makedos.env +++ b/harbour/makedos.env @@ -16,7 +16,7 @@ HARBOURLIB=$(HARBOURDIR)/libs/libharb.a # compiler macros for DOS DJGPP CC=gcc -CFLAGS=-Wall -g -DDEBUG -I. -I$(HARBOURDIR)/include -x c +CFLAGS=-Wall -g -DDEBUG -I. -I$(HARBOURDIR)/include -I$(HARBOURDIR)/source/rtl -x c %.c : %.prg ../../bin/harbour -n -i$(HARBOURDIR)/include $< diff --git a/harbour/makefile.b16 b/harbour/makefile.b16 index 876a6d1429..f53ee47da4 100644 --- a/harbour/makefile.b16 +++ b/harbour/makefile.b16 @@ -11,7 +11,8 @@ PROJECT: harbour.lib libs\b16\terminal.lib libs\win16\terminal.lib harbour.exe -harbour.lib : arrays.obj asort.obj classes.obj codebloc.obj dates.obj datesx.obj \ +harbour.lib : arrays.obj asort.obj classes.obj codebloc.obj dates.obj \ + dates2.obj datesx.obj \ debug.obj descend.obj devoutp.obj dynsym.obj environ.obj error.obj \ errorapi.obj errorsys.obj extend.obj files.obj \ hardcr.obj initsymb.obj itemapi.obj math.obj memvars.obj \ @@ -33,6 +34,7 @@ asort.obj : asort.c extend.h hbdefs.h classes.obj : classes.c extend.h hbdefs.h codebloc.obj : codebloc.c extend.h hbdefs.h dates.obj : dates.c extend.h hbdefs.h +dates2.obj : dates2.c extend.h hbdefs.h datesx.obj : datesx.c extend.h hbdefs.h debug.obj : debug.c extend.h hbdefs.h descend.obj : descend.c extend.h hbdefs.h diff --git a/harbour/makefile.b31 b/harbour/makefile.b31 index 1ce606f1bc..1ce4547c57 100644 --- a/harbour/makefile.b31 +++ b/harbour/makefile.b31 @@ -22,7 +22,7 @@ harbour.lib : arrays.obj asort.obj classes.obj codebloc.obj copyfile.obj \ set.obj strings.obj strcmp.obj symbols.obj tclass.obj \ transfrm.obj -hbtools.lib : datesx.obj debug.obj hb_f.obj io.obj mathx.obj \ +hbtools.lib : dates2.obj datesx.obj debug.obj hb_f.obj io.obj mathx.obj \ stringp.obj stringsx.obj \ asciisum.obj ascpos.obj atdiff.obj \ chareven.obj charmix.obj charodd.obj \ @@ -76,6 +76,7 @@ msguk.obj : source\rtl\natmsg\msguk.c extend.h hbdefs.h dynsym.obj : source\vm\dynsym.c extend.h hbdefs.h initsymb.obj : source\vm\initsymb.c extend.h hbdefs.h +dates2.obj : source\tools\dates2.c extend.h hbdefs.h datesx.obj : source\tools\datesx.c extend.h hbdefs.h debug.obj : source\tools\debug.c extend.h hbdefs.h ctoharb.h itemapi.h hb_f.obj : source\tools\hb_f.c extend.h hbdefs.h filesys.api filesys.h fileio.ch diff --git a/harbour/makefile.b32 b/harbour/makefile.b32 index baa9286b71..c134beb2df 100644 --- a/harbour/makefile.b32 +++ b/harbour/makefile.b32 @@ -13,7 +13,7 @@ PROJECT: harbour.exe harbour.lib libs\b32\terminal.lib libs\win32\terminal.lib harbour.lib : arrays.obj asort.obj classes.obj codebloc.obj \ - dates.obj datesx.obj debug.obj descend.obj devoutp.obj \ + dates.obj dates2.obj datesx.obj debug.obj descend.obj devoutp.obj \ dir.obj dynsym.obj environ.obj error.obj \ errorapi.obj errorsys.obj extend.obj files.obj \ hardcr.obj hb_f.obj initsymb.obj itemapi.obj memvars.obj \ @@ -29,6 +29,7 @@ asort.obj : asort.c extend.h hbdefs.h classes.obj : classes.c extend.h hbdefs.h codebloc.obj : codebloc.c extend.h hbdefs.h dates.obj : dates.c extend.h hbdefs.h +dates2.obj : dates2.c extend.h hbdefs.h datesx.obj : datesx.c extend.h hbdefs.h debug.obj : debug.c extend.h hbdefs.h descend.obj : descend.c extend.h hbdefs.h diff --git a/harbour/makefile.icc b/harbour/makefile.icc index a482db2a1e..c94db6425f 100644 --- a/harbour/makefile.icc +++ b/harbour/makefile.icc @@ -59,6 +59,7 @@ $(path_lib)\hbtools.lib: \ $(path_obj)\chrcount.obj \ $(path_obj)\chrfirst.obj \ $(path_obj)\chrtotal.obj \ + $(path_obj)\dates2.obj \ $(path_obj)\datesx.obj \ $(path_obj)\debug.obj \ $(path_obj)\hb_f.obj \ @@ -93,6 +94,7 @@ $(path_obj)\classes.obj : {$(path_c)}classes.c $(path_h)\extend.h $(path_h)\hb $(path_obj)\codebloc.obj : {$(path_c)}codebloc.c $(path_h)\extend.h $(path_h)\hbdefs.h $(path_h)\itemapi.h $(path_obj)\copyfile.obj : {$(path_c)}copyfile.c $(path_h)\extend.h $(path_h)\hbdefs.h $(path_h)\itemapi.h $(path_h)\errorapi.h $(path_h)\error.ch $(path_h)\filesys.h $(path_h)\fileio.ch $(path_h)\filesys.api $(path_obj)\dates.obj : {$(path_c)}dates.c $(path_h)\extend.h $(path_h)\hbdefs.h $(path_h)\dates.h $(path_h)\set.h $(path_h)\errorapi.h $(path_h)\error.ch +$(path_obj)\dates2.obj : {$(path_c)}dates2.c $(path_h)\extend.h $(path_h)\hbdefs.h $(path_obj)\datesx.obj : {$(path_c)}datesx.c $(path_h)\extend.h $(path_h)\hbdefs.h $(path_obj)\debug.obj : {$(path_c)}debug.c $(path_h)\extend.h $(path_h)\hbdefs.h $(path_h)\itemapi.h $(path_h)\ctoharb.h $(path_obj)\descend.obj : {$(path_c)}descend.c $(path_h)\extend.h $(path_h)\hbdefs.h diff --git a/harbour/makefile.vc b/harbour/makefile.vc index 5ffa03aec9..335c300be9 100644 --- a/harbour/makefile.vc +++ b/harbour/makefile.vc @@ -332,6 +332,9 @@ $(OBJ_DIR)\chrfirst.obj : $(TOOLS_DIR)\chrfirst.c $(OBJ_DIR)\chrtotal.obj : $(TOOLS_DIR)\chrtotal.c $(CC) $(CLIBFLAGS) -Fo$@ $** +$(OBJ_DIR)\dates2.obj : $(TOOLS_DIR)\dates2.c + $(CC) $(CLIBFLAGS) -Fo$@ $** + $(OBJ_DIR)\datesx.obj : $(TOOLS_DIR)\datesx.c $(CC) $(CLIBFLAGS) -Fo$@ $** diff --git a/harbour/source/rtl/dates.c b/harbour/source/rtl/dates.c index 02b59b0d8b..5b6dc291f3 100644 --- a/harbour/source/rtl/dates.c +++ b/harbour/source/rtl/dates.c @@ -27,6 +27,11 @@ * The following functions are Copyright 1999 David G. Holm : * HB_CTOD(), HB_DATE(), hb_dtoc(). * See doc/hdr_tpl.txt, Version 1.2 or later, for licensing terms. + * + * The following functions are Copyright 1999 Jose Lalin : + * hb__seconds(), HB_SECONDS(), hb_cmonth(), HB_CMONTH(), + * hb_cdow(), HB_CDOW(), HB_DAY(), HB_MONTH(), HB_YEAR(), + * hb_dow(), HB_DOW() */ #include diff --git a/harbour/source/rtl/descend.c b/harbour/source/rtl/descend.c index 14c22c6697..61da37afb0 100644 --- a/harbour/source/rtl/descend.c +++ b/harbour/source/rtl/descend.c @@ -1,5 +1,34 @@ /* * $Id$ + * + Harbour Project source code + + Copyright(C) 1999 by Jose Lalin. + 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. + + 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/). + + You can contact me at: dezac@corevia.com */ #include diff --git a/harbour/source/rtl/hardcr.c b/harbour/source/rtl/hardcr.c index e9cc363705..4df9d15b73 100644 --- a/harbour/source/rtl/hardcr.c +++ b/harbour/source/rtl/hardcr.c @@ -1,5 +1,34 @@ /* * $Id$ + * + Harbour Project source code + + Copyright(C) 1999 by Jose Lalin. + 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. + + 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/). + + You can contact me at: dezac@corevia.com */ #include diff --git a/harbour/source/rtl/msgxxx.c b/harbour/source/rtl/msgxxx.c index abb7257904..3d21abcdad 100644 --- a/harbour/source/rtl/msgxxx.c +++ b/harbour/source/rtl/msgxxx.c @@ -6,6 +6,8 @@ #include "natmsg/msgbas.c" #elif defined(HARBOUR_LANGUAGE_DUT) #include "natmsg/msgdut.c" +#elif defined(HARBOUR_LANGUAGE_EO) +#include "natmsg/msgeo.c" #elif defined(HARBOUR_LANGUAGE_GAL) #include "natmsg/msggal.c" #elif defined(HARBOUR_LANGUAGE_GER) diff --git a/harbour/source/rtl/mtran.c b/harbour/source/rtl/mtran.c index 6ecf63da75..24d8445647 100644 --- a/harbour/source/rtl/mtran.c +++ b/harbour/source/rtl/mtran.c @@ -1,6 +1,34 @@ /* * $Id$ - */ + Harbour Project source code + + Copyright(C) 1999 by Jose Lalin. + 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. + + 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/). + + You can contact me at: dezac@corevia.com +*/ #include #include diff --git a/harbour/source/rtl/natmsg/msgeo.c b/harbour/source/rtl/natmsg/msgeo.c new file mode 100644 index 0000000000..469caca9b3 --- /dev/null +++ b/harbour/source/rtl/natmsg/msgeo.c @@ -0,0 +1,15 @@ +/* + * Language support unit for Esperanto + * Codepage: N/A + */ + +char *hb_monthsname[ 12 ] = { + "Jaunaro", "Februaro", "Marto", + "Aprilo", "Majo", "Junio", "Julio", + "A–gusto", "Septembro", "Oktobro", + "Novembro", "Decembro" }; + +char *hb_daysname[ 7 ] = { + "dimanco", "lundo", "mardo", + "merkredo", "jaudo", "vendredo", + "sabato" }; diff --git a/harbour/source/runner/runner.c b/harbour/source/runner/runner.c index e76a1224e8..a0d529807c 100644 --- a/harbour/source/runner/runner.c +++ b/harbour/source/runner/runner.c @@ -76,6 +76,7 @@ extern void Classes__InitSymbols( void ); extern void Console__InitSymbols( void ); extern void CopyFile__InitSymbols( void ); extern void Dates__InitSymbols( void ); +extern void Dates2__InitSymbols( void ); extern void Descend__InitSymbols( void ); extern void Dir__InitSymbols( void ); extern void Environ__InitSymbols( void ); diff --git a/harbour/source/tools/Makefile b/harbour/source/tools/Makefile index f4ee95c103..6a684c81f4 100644 --- a/harbour/source/tools/Makefile +++ b/harbour/source/tools/Makefile @@ -14,6 +14,7 @@ C_SOURCES=\ chrcount.c \ chrfirst.c \ chrtotal.c \ + dates2.c \ datesx.c \ debug.c \ hb_f.c \ diff --git a/harbour/source/tools/dates2.c b/harbour/source/tools/dates2.c new file mode 100644 index 0000000000..cbdf105dc1 --- /dev/null +++ b/harbour/source/tools/dates2.c @@ -0,0 +1,315 @@ +/* + * $Id$ + * + Harbour Project source code + + Copyright(C) 1999 by Jose Lalin. + 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. + + 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/). + + You can contact me at: dezac@corevia.com + + The following functions are Copyright 1999 Jose Lalin : + hb_isleapyear(), hb_daysinmonth(), hb_doy(), hb_wom(), hb_woy() + HB_AMONTHS(), HB_ADAYS(), HB_ISLEAPYEAR(), HB_DAYSINMONTH(), + HB_EOM(), HB_BOM(), HB_WOM(), HB_DOY(), HB_WOY(), HB_EOY(), HB_BOY() + */ + +#include +#include +#include +#include +#include +#include + +HARBOUR HB_ADAYS(void); +HARBOUR HB_AMONTHS(void); +HARBOUR HB_BOM(void); +HARBOUR HB_BOY(void); +HARBOUR HB_DAYSINMONTH(void); +HARBOUR HB_DOY(void); +HARBOUR HB_EOM(void); +HARBOUR HB_EOY(void); +HARBOUR HB_ISLEAPYEAR(void); +HARBOUR HB_WOM(void); +HARBOUR HB_WOY(void); + +HB_INIT_SYMBOLS_BEGIN( Dates2__InitSymbols ) +{ "ADAYS", FS_PUBLIC, HB_ADAYS , 0 }, +{ "AMONTHS", FS_PUBLIC, HB_AMONTHS , 0 }, +{ "BOM", FS_PUBLIC, HB_BOM , 0 }, +{ "BOY", FS_PUBLIC, HB_BOY , 0 }, +{ "DAYSINMONTH", FS_PUBLIC, HB_DAYSINMONTH , 0 }, +{ "DOY", FS_PUBLIC, HB_DOY , 0 }, +{ "EOM", FS_PUBLIC, HB_EOM , 0 }, +{ "EOY", FS_PUBLIC, HB_EOY , 0 }, +{ "ISLEAPYEAR", FS_PUBLIC, HB_ISLEAPYEAR , 0 }, +{ "WOM", FS_PUBLIC, HB_WOM , 0 }, +{ "WOY", FS_PUBLIC, HB_WOY , 0 } +HB_INIT_SYMBOLS_END( Dates2__InitSymbols ) +#if ! defined(__GNUC__) +#pragma startup Dates2__InitSymbols +#endif + + +/* In dates.c module */ +void hb_dateDecode( long julian, long * plDay, long * plMonth, long * plYear ); +long hb_dow( long d, long m, long y ); + +/* In msgxxx.c modules */ +extern char *hb_monthsname[]; +extern char *hb_daysname[]; + +static int hb__daysinmonth[ 12 ] = +{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + +int hb_isleapyear( long lYear ) +{ +return (( lYear % 4 == 0 && lYear % 100 != 0 ) || lYear % 400 == 0 )?1:0; +} + +long hb_daysinmonth( long lMonth, long lYear ) +{ + int i = hb_isleapyear( lYear ); + + if( lMonth > 0 && lMonth < 13 ) + return hb__daysinmonth[ lMonth-1 ] + ((i&&lMonth == 2)?1:0); + + return 0; +} + +long hb_doy( long lDay, long lMonth, long lYear ) +{ + int i; + int iDoy = 0; + + for( i = 1; i < lMonth; i++ ) + iDoy += hb_daysinmonth( i, lYear ); + iDoy += lDay; + + return iDoy; +} + +long hb_wom( long lDay, long lMonth, long lYear ) +{ + int iWom = lDay + hb_dow( 1, lMonth, lYear) - 1; + + if( iWom > 0 ) + return ( iWom - hb_dow( lDay, lMonth, lYear ) ) / 7 + 1 ; + else + return 0; +} + +long hb_woy( long lDay, long lMonth, long lYear, int iIso ) +{ + int iWeek, n; + + lDay = hb_doy( lDay, lMonth, lYear ); + n = ( ( ( 1 - (iIso?1:0) ) % 7 ) ) - 1; + lDay += (n>0)?1:0; + iWeek = lDay / 7; + if( iIso ) + iWeek += (n<4)?1:0; + else + ++iWeek; + + return iWeek; +} + +HARBOUR HB_AMONTHS( void ) +{ + PHB_ITEM pReturn = hb_itemArrayNew( 12 ); /* Create array */ + PHB_ITEM pString; + int i; + + for( i = 0; i < 12; i++ ) + { + pString = hb_itemNew( NULL ); + hb_itemPutC( pString, hb_monthsname[ i ] ); + hb_itemArrayPut( pReturn, i+1, pString ); + hb_itemRelease ( pString ); + } + hb_itemReturn ( pReturn ); + hb_itemRelease( pReturn ); +} + +HARBOUR HB_ADAYS( void ) +{ + PHB_ITEM pReturn = hb_itemArrayNew( 7 ); /* Create array */ + PHB_ITEM pString; + int i; + + for( i = 0; i < 7; i++ ) + { + pString = hb_itemNew( NULL ); + hb_itemPutC( pString, hb_daysname[ i ] ); + hb_itemArrayPut( pReturn, i+1, pString ); + hb_itemRelease ( pString ); + } + hb_itemReturn ( pReturn ); + hb_itemRelease( pReturn ); +} + +HARBOUR HB_ISLEAPYEAR( void ) +{ + PHB_ITEM pDate = hb_param( 1, IT_DATE ); + long lDay, lMonth, lYear; + + if( pDate ) + { + hb_dateDecode( pDate->item.asDate.value, &lDay, &lMonth, &lYear ); + hb_retl( hb_isleapyear( lYear ) ); + } + else + { + hb_errorRT_BASE(EG_ARG, 9999, "Argument error", "ISLEAPYEAR"); + } +} + +HARBOUR HB_DAYSINMONTH( void ) +{ + PHB_ITEM pDate = hb_param( 1, IT_DATE ); + long lDay, lMonth, lYear; + + if( pDate ) + { + hb_dateDecode( pDate->item.asDate.value, &lDay, &lMonth, &lYear ); + hb_retni( hb_daysinmonth( lMonth, lYear ) ); + } + else + hb_retni( 0 ); +} + +HARBOUR HB_EOM( void ) +{ + PHB_ITEM pDate = hb_param( 1, IT_DATE ); + long lDay, lMonth, lYear; + char szDateFormat[ 9 ]; + + if( pDate ) + { + hb_dateDecode( pDate->item.asDate.value, &lDay, &lMonth, &lYear ); + lDay = hb_daysinmonth( lMonth, lYear ); + sprintf( szDateFormat, "%04i%02i%02i", (int) lYear, (int) lMonth, (int) lDay ); + hb_retds( szDateFormat ); + } + else + hb_retds( "" ); +} + +HARBOUR HB_BOM( void ) +{ + PHB_ITEM pDate = hb_param( 1, IT_DATE ); + long lDay, lMonth, lYear; + char szDateFormat[ 9 ]; + + if( pDate ) + { + hb_dateDecode( pDate->item.asDate.value, &lDay, &lMonth, &lYear ); + sprintf( szDateFormat, "%04i%02i%02i", (int) lYear, (int) lMonth, 1 ); + hb_retds( szDateFormat ); + } + else + hb_retds( "" ); +} + +HARBOUR HB_WOM( void ) +{ + PHB_ITEM pDate = hb_param( 1, IT_DATE ); + long lDay, lMonth, lYear; + + if( pDate ) + { + hb_dateDecode( pDate->item.asDate.value, &lDay, &lMonth, &lYear ); + hb_retni( hb_wom( lDay, lMonth, lYear ) ); + } + else + hb_retni( 0 ); +} + +HARBOUR HB_DOY( void ) +{ + PHB_ITEM pDate = hb_param( 1, IT_DATE ); + long lDay, lMonth, lYear; + + if( pDate ) + { + hb_dateDecode( pDate->item.asDate.value, &lDay, &lMonth, &lYear ); + hb_retni( hb_doy( lDay, lMonth, lYear ) ); + } + else + hb_retni( 0 ); +} + +HARBOUR HB_WOY( void ) +// Return the nWeek of the year (1 - 52, 0 - 52 if ISO) +{ + PHB_ITEM pDate = hb_param( 1, IT_DATE ); + long lDay, lMonth, lYear; + int iIso = 1; + + if( pDate ) + { + PHB_ITEM pIso = hb_param( 2, IT_LOGICAL ); + if( pIso ) + iIso = pIso->item.asLogical.value; + + hb_dateDecode( pDate->item.asDate.value, &lDay, &lMonth, &lYear ); + hb_retni( hb_woy( lDay, lMonth, lYear, iIso ) ); + } + else + hb_retni( 0 ); +} + +HARBOUR HB_EOY( void ) +{ + PHB_ITEM pDate = hb_param( 1, IT_DATE ); + long lDay, lMonth, lYear; + char szDateFormat[ 9 ]; + + if( pDate ) + { + hb_dateDecode( pDate->item.asDate.value, &lDay, &lMonth, &lYear ); + sprintf( szDateFormat, "%04i%02i%02i", (int) lYear, 12, 31 ); + hb_retds( szDateFormat ); + } + else + hb_retds( "" ); +} + +HARBOUR HB_BOY( void ) +{ + PHB_ITEM pDate = hb_param( 1, IT_DATE ); + long lDay, lMonth, lYear; + char szDateFormat[ 9 ]; + + if( pDate ) + { + hb_dateDecode( pDate->item.asDate.value, &lDay, &lMonth, &lYear ); + sprintf( szDateFormat, "%04i%02i%02i", (int) lYear, 1, 1 ); + hb_retds( szDateFormat ); + } + else + hb_retds( "" ); +} diff --git a/harbour/source/vm/initsymb.c b/harbour/source/vm/initsymb.c index ffb42ee3e3..1b2ac1657e 100644 --- a/harbour/source/vm/initsymb.c +++ b/harbour/source/vm/initsymb.c @@ -15,6 +15,7 @@ extern void Classes__InitSymbols( void ); extern void Console__InitSymbols( void ); extern void CopyFile__InitSymbols( void ); extern void Dates__InitSymbols( void ); +extern void Dates2__InitSymbols( void ); extern void Descend__InitSymbols( void ); extern void Dir__InitSymbols( void ); extern void Environ__InitSymbols( void ); diff --git a/harbour/tests/working/dates4.prg b/harbour/tests/working/dates4.prg new file mode 100644 index 0000000000..5b26ae7f24 --- /dev/null +++ b/harbour/tests/working/dates4.prg @@ -0,0 +1,32 @@ +// Testing Harbour dates management. +#include "set.ch" + +function main() + + LOCAL i + LOCAL dDate := date() + + set( _SET_DATEFORMAT, "dd/mm/yyyy" ) + + for i := 7 to 49 step 7 + CheckDate( dDate ) + dDate += i + next + +return nil + +function CheckDate( dDate ) + + OutStd( "Testing date:", dDate , chr( 10 ) ) + OutStd( "Days in month..:", daysinmonth( dDate ), chr( 10 ) ) + OutStd( "Day of year....:", doy( dDate ), chr( 10 ) ) + OutStd( "Begin of month.:", bom( dDate ), chr( 10 ) ) + OutStd( "End of month...:", eom( dDate ), chr( 10 ) ) + OutStd( "Week of month..:", wom( dDate ), chr( 10 ) ) + OutStd( "Week of year...:", woy( dDate ), chr( 10 ) ) + OutStd( "Begin of year..:", boy( dDate ), chr( 10 ) ) + OutStd( "End of year....:", eoy( dDate ), chr( 10 ) ) + OutStd( chr( 13 ), chr( 13 ) ) + __Accept( "Press ENTER to continue..." ) + +return nil diff --git a/harbour/tests/working/run_all.bat b/harbour/tests/working/run_all.bat new file mode 100644 index 0000000000..d724f608d2 --- /dev/null +++ b/harbour/tests/working/run_all.bat @@ -0,0 +1,2 @@ +runner test_all.hrb hrb +call testall.bat