ChangeLogTag:19991202-18:00 GMT+1 Bruno Cantero <bruno@issnet.net>
This commit is contained in:
@@ -1,3 +1,13 @@
|
||||
19991202-18:00 GMT+1 Bruno Cantero <bruno@issnet.net>
|
||||
* source/rdd/dbeval.prg
|
||||
* Function dbEval() renamed to Bad_dbEval()
|
||||
* include/rddapi.h
|
||||
source/rdd/dbcmd.c
|
||||
source/rdd/dbf1.c
|
||||
source/rdd/dbfcdx/dbfcdx1.c
|
||||
doc/funclist.txt
|
||||
+ Added dbEval() function.
|
||||
|
||||
19991202-01:45 EST Paul Tucker <ptucker@sympatico.ca>
|
||||
* makefile.vc
|
||||
+ source/rtl/break.c
|
||||
|
||||
@@ -77,7 +77,7 @@ DBCREATE ;R;
|
||||
DBCREATEIND ;S;
|
||||
DBDELETE ;R;
|
||||
DBEDIT ;R;
|
||||
DBEVAL ;S;
|
||||
DBEVAL ;R;
|
||||
DBF ;R;
|
||||
DBFILTER ;R;
|
||||
DBGOBOTTOM ;R;
|
||||
|
||||
@@ -583,6 +583,7 @@ typedef USHORT ( * DBENTRYP_VP )( AREAP area, LPDBOPENINFO param );
|
||||
typedef USHORT ( * DBENTRYP_VF )( AREAP area, LPDBFIELDINFO param );
|
||||
typedef USHORT ( * DBENTRYP_VL )( AREAP area, LPDBLOCKINFO param );
|
||||
typedef USHORT ( * DBENTRYP_VFI )( AREAP area, LPDBFILTERINFO param );
|
||||
typedef USHORT ( * DBENTRYP_VEI )( AREAP area, LPDBEVALINFO param );
|
||||
typedef USHORT ( * DBENTRYP_VLO )( AREAP area, LPDBSCOPEINFO param );
|
||||
typedef USHORT ( * DBENTRYP_SP )( AREAP area, USHORT * param );
|
||||
typedef USHORT ( * DBENTRYP_P )( AREAP area, BYTE * param );
|
||||
@@ -662,9 +663,7 @@ typedef struct _RDDFUNCS
|
||||
DBENTRYP_V release;
|
||||
DBENTRYP_SP structSize;
|
||||
DBENTRYP_P sysName;
|
||||
#if 0
|
||||
DBENTRYP_VP dbEval;
|
||||
#endif
|
||||
DBENTRYP_VEI dbEval;
|
||||
DBENTRYP_V pack;
|
||||
#if 0
|
||||
DBENTRYP_LSP packRec;
|
||||
|
||||
@@ -85,6 +85,7 @@ HARBOUR HB_DBCOMMITALL( void );
|
||||
HARBOUR HB___DBCONTINUE( void );
|
||||
HARBOUR HB_DBCREATE( void );
|
||||
HARBOUR HB_DBDELETE( void );
|
||||
HARBOUR HB_DBEVAL( void );
|
||||
HARBOUR HB_DBF( void );
|
||||
HARBOUR HB_DBFILTER( void );
|
||||
HARBOUR HB_DBGOBOTTOM( void );
|
||||
@@ -319,6 +320,96 @@ static ERRCODE defError( AREAP pArea, PHB_ITEM pError )
|
||||
return hb_errLaunch( pError );
|
||||
}
|
||||
|
||||
static ERRCODE defEval( AREAP pArea, LPDBEVALINFO pEvalInfo )
|
||||
{
|
||||
BOOL bEof, bFor, bWhile;
|
||||
ULONG ulNext;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("defEval(%p, %p)", pArea, pEvalInfo));
|
||||
|
||||
if( pEvalInfo->dbsci.itmRecID )
|
||||
{
|
||||
SELF_GOTOID( ( AREAP ) pCurrArea->pArea, pEvalInfo->dbsci.itmRecID );
|
||||
SELF_EOF( ( AREAP ) pCurrArea->pArea, &bEof );
|
||||
if( !bEof )
|
||||
{
|
||||
if( pEvalInfo->dbsci.itmCobWhile )
|
||||
{
|
||||
hb_vmPushSymbol( &hb_symEval );
|
||||
hb_vmPush( pEvalInfo->dbsci.itmCobWhile );
|
||||
hb_vmDo( 0 );
|
||||
bWhile = hb_itemGetL( &hb_stack.Return );
|
||||
}
|
||||
else
|
||||
bWhile = TRUE;
|
||||
|
||||
if( pEvalInfo->dbsci.itmCobFor )
|
||||
{
|
||||
hb_vmPushSymbol( &hb_symEval );
|
||||
hb_vmPush( pEvalInfo->dbsci.itmCobFor );
|
||||
hb_vmDo( 0 );
|
||||
bFor = hb_itemGetL( &hb_stack.Return );
|
||||
}
|
||||
else
|
||||
bFor = TRUE;
|
||||
|
||||
if( bWhile && bFor )
|
||||
{
|
||||
hb_vmPushSymbol( &hb_symEval );
|
||||
hb_vmPush( pEvalInfo->itmBlock );
|
||||
hb_vmDo( 0 );
|
||||
}
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
if( !pEvalInfo->dbsci.fRest || !hb_itemGetL( pEvalInfo->dbsci.fRest ) )
|
||||
SELF_GOTOP( ( AREAP ) pCurrArea->pArea );
|
||||
|
||||
if( pEvalInfo->dbsci.lNext )
|
||||
ulNext = hb_itemGetNL( pEvalInfo->dbsci.lNext );
|
||||
|
||||
SELF_EOF( ( AREAP ) pCurrArea->pArea, &bEof );
|
||||
while( !bEof )
|
||||
{
|
||||
if( pEvalInfo->dbsci.lNext && ulNext-- < 1 )
|
||||
break;
|
||||
|
||||
if( pEvalInfo->dbsci.itmCobWhile )
|
||||
{
|
||||
hb_vmPushSymbol( &hb_symEval );
|
||||
hb_vmPush( pEvalInfo->dbsci.itmCobWhile );
|
||||
hb_vmDo( 0 );
|
||||
bWhile = hb_itemGetL( &hb_stack.Return );
|
||||
if( !bWhile )
|
||||
break;
|
||||
}
|
||||
else
|
||||
bWhile = TRUE;
|
||||
|
||||
if( pEvalInfo->dbsci.itmCobFor )
|
||||
{
|
||||
hb_vmPushSymbol( &hb_symEval );
|
||||
hb_vmPush( pEvalInfo->dbsci.itmCobFor );
|
||||
hb_vmDo( 0 );
|
||||
bFor = hb_itemGetL( &hb_stack.Return );
|
||||
}
|
||||
else
|
||||
bFor = TRUE;
|
||||
|
||||
if( bFor && bWhile )
|
||||
{
|
||||
hb_vmPushSymbol( &hb_symEval );
|
||||
hb_vmPush( pEvalInfo->itmBlock );
|
||||
hb_vmDo( 0 );
|
||||
}
|
||||
SELF_SKIP( ( AREAP ) pCurrArea->pArea, 1 );
|
||||
SELF_EOF( ( AREAP ) pCurrArea->pArea, &bEof );
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
static ERRCODE defFieldCount( AREAP pArea, USHORT * uiFields )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("defFieldCount(%p, %p)", pArea, uiFields));
|
||||
@@ -728,6 +819,7 @@ static RDDFUNCS defTable = { defBof,
|
||||
defRelease,
|
||||
defStructSize,
|
||||
defSysName,
|
||||
defEval,
|
||||
defUnSupported,
|
||||
defUnSupported,
|
||||
defClearFilter,
|
||||
@@ -1304,6 +1396,75 @@ HARBOUR HB_ALIAS( void )
|
||||
hb_retc( "" );
|
||||
}
|
||||
|
||||
HARBOUR HB_DBEVAL( void )
|
||||
{
|
||||
DBEVALINFO pEvalInfo;
|
||||
|
||||
if( !pCurrArea )
|
||||
hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, "DBEVAL" );
|
||||
else
|
||||
{
|
||||
pEvalInfo.itmBlock = hb_param( 1, IT_BLOCK );
|
||||
if( !pEvalInfo.itmBlock )
|
||||
{
|
||||
hb_errRT_DBCMD( EG_ARG, 12019, NULL, "DBEVAL" );
|
||||
return;
|
||||
}
|
||||
|
||||
pEvalInfo.dbsci.itmCobFor = hb_param( 2, IT_BLOCK );
|
||||
if( !pEvalInfo.dbsci.itmCobFor )
|
||||
{
|
||||
if( !ISNIL( 2 ) )
|
||||
{
|
||||
hb_errRT_DBCMD( EG_ARG, 22019, NULL, "DBEVAL" );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
pEvalInfo.dbsci.itmCobWhile = hb_param( 3, IT_BLOCK );
|
||||
if( !pEvalInfo.dbsci.itmCobWhile )
|
||||
{
|
||||
if( !ISNIL( 3 ) )
|
||||
{
|
||||
hb_errRT_DBCMD( EG_ARG, 32019, NULL, "DBEVAL" );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
pEvalInfo.dbsci.lNext = hb_param( 4, IT_NUMERIC );
|
||||
if( !pEvalInfo.dbsci.lNext )
|
||||
{
|
||||
if( !ISNIL( 4 ) )
|
||||
{
|
||||
hb_errRT_DBCMD( EG_ARG, 42019, NULL, "DBEVAL" );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
pEvalInfo.dbsci.itmRecID = hb_param( 5, IT_NUMERIC );
|
||||
if( !pEvalInfo.dbsci.itmRecID )
|
||||
{
|
||||
if( !ISNIL( 5 ) )
|
||||
{
|
||||
hb_errRT_DBCMD( EG_ARG, 52019, NULL, "DBEVAL" );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
pEvalInfo.dbsci.fRest = hb_param( 6, IT_LOGICAL );
|
||||
if( !pEvalInfo.dbsci.fRest )
|
||||
{
|
||||
if( !ISNIL( 6 ) )
|
||||
{
|
||||
hb_errRT_DBCMD( EG_ARG, 62019, NULL, "DBEVAL" );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
SELF_DBEVAL( ( AREAP ) pCurrArea->pArea, &pEvalInfo );
|
||||
}
|
||||
}
|
||||
|
||||
HARBOUR HB_DBF( void )
|
||||
{
|
||||
LPAREANODE pAreaNode = pWorkAreas;
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
* $END$
|
||||
*/
|
||||
|
||||
FUNCTION dbEval( bBlock, bFor, bWhile, nNext, nRecord, lRest )
|
||||
FUNCTION Bad_dbEval( bBlock, bFor, bWhile, nNext, nRecord, lRest )
|
||||
LOCAL oError
|
||||
LOCAL nCounter
|
||||
|
||||
|
||||
@@ -652,6 +652,7 @@ static RDDFUNCS dbfSuper = { 0 };
|
||||
#define dbfNewArea NULL
|
||||
#define dbfStructSize NULL
|
||||
#define dbfSysName NULL
|
||||
#define dbfEval NULL
|
||||
#define dbfClearFilter NULL
|
||||
#define dbfClearLocate NULL
|
||||
#define dbfFilterText NULL
|
||||
@@ -2038,6 +2039,7 @@ static RDDFUNCS dbfTable = { dbfBof,
|
||||
dbfRelease,
|
||||
dbfStructSize,
|
||||
dbfSysName,
|
||||
dbfEval,
|
||||
dbfPack,
|
||||
dbfZap,
|
||||
dbfClearFilter,
|
||||
|
||||
@@ -303,6 +303,7 @@ static BOOL hb_cdxWriteMemo( AREAP pArea, LPDBFMEMO pMemo, ULONG * lNewRecNo )
|
||||
#define cdxRelease NULL
|
||||
#define cdxStructSize NULL
|
||||
#define cdxSysName NULL
|
||||
#define cdxEval NULL
|
||||
#define cdxPack NULL
|
||||
#define cdxZap NULL
|
||||
#define cdxClearFilter NULL
|
||||
@@ -627,6 +628,7 @@ static RDDFUNCS cdxTable = { cdxBof,
|
||||
cdxRelease,
|
||||
cdxStructSize,
|
||||
cdxSysName,
|
||||
cdxEval,
|
||||
cdxPack,
|
||||
cdxZap,
|
||||
cdxClearFilter,
|
||||
|
||||
Reference in New Issue
Block a user