campo-sirio/cb/source/f4ass_f.c
alex af15e0698b Codebase
git-svn-id: svn://10.65.10.50/trunk@4679 c028cbd2-c16b-5b4b-a496-9718f37d4682
1997-06-16 13:01:08 +00:00

68 lines
1.9 KiB
C
Executable File

/* f4ass_f.c (c)Copyright Sequiter Software Inc., 1988-1996. All rights reserved. */
#include "d4all.h"
#ifndef S4UNIX
#ifdef __TURBOC__
#pragma hdrstop
#endif
#endif
#ifndef S4OFF_WRITE
void S4FUNCTION f4assignField( FIELD4 *fieldTo, const FIELD4 *fieldFrom )
{
#ifdef E4PARM_HIGH
if ( fieldTo == 0 || fieldFrom == 0 )
{
error4( 0, e4parm_null, E90501 ) ;
return ;
}
#endif
if ( error4code( fieldTo->data->codeBase ) < 0 )
return ;
#ifndef S4SERVER
#ifndef S4OFF_ENFORCE_LOCK
if ( fieldTo->data->codeBase->lockEnforce && fieldTo->data->recNum > 0L )
if ( d4lockTest( fieldTo->data, fieldTo->data->recNum ) != 1 )
{
error4( fieldTo->data->codeBase, e4lock, E90501 ) ;
return ;
}
#endif
#endif
switch( fieldTo->type )
{
case r4str:
f4assignN( fieldTo, f4ptr( fieldFrom ), fieldFrom->len ) ;
break ;
case r4num:
case r4float:
if( fieldFrom->len == fieldTo->len && fieldFrom->dec == fieldTo->dec &&
(fieldFrom->type == r4num || fieldFrom->type == r4float) )
memcpy( f4assignPtr( fieldTo ), f4ptr( fieldFrom ), fieldTo->len ) ;
else
f4assignDouble( fieldTo, f4double( fieldFrom ) ) ;
break ;
case r4log:
if( fieldFrom->type == r4log )
*f4assignPtr( fieldTo ) = *f4ptr( fieldFrom ) ;
break ;
case r4date:
#ifdef S4CLIENT_OR_FOX
case r4currency:
case r4dateTime:
case r4int:
case r4double:
#endif
if( fieldFrom->type == fieldTo->type )
memcpy( f4assignPtr( fieldTo ), f4ptr( fieldFrom ), fieldTo->len ) ;
break ;
default:
error4( fieldTo->data->codeBase, e4info, E80501 ) ;
}
}
#endif /* S4OFF_WRITE */