/* f4char.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 f4assignChar( FIELD4 *field, const int chr )
{
   #ifdef S4VBASIC
      if ( c4parm_check( field, 3, E90502 ) )
         return ;
   #endif

   #ifdef E4PARM_HIGH
      if ( field == 0 )
      {
         error4( 0, e4parm_null, E90502 ) ;
         return ;
      }
      switch( field->type )
      {
         case r4date:
         case r4float:
         case r4num:
         case r4memo:
         case r4gen:
         #ifdef S4FOX
            case r4currency:
            case r4dateTime:
            case r4double:
            case r4int:
            case r4system:
            case r4memoBin:
         #endif
            error4( field->data->codeBase, e4parm, E81409 ) ;
            return ;
         default:
            break ;
      }
   #endif

   if ( error4code( field->data->codeBase ) < 0 )
      return ;

   #ifndef S4SERVER
      #ifndef S4OFF_ENFORCE_LOCK
         if ( field->data->codeBase->lockEnforce && field->data->recNum > 0L )
            if ( d4lockTest( field->data, field->data->recNum ) != 1 )
            {
               error4( field->data->codeBase, e4lock, E90502 ) ;
               return ;
            }
      #endif
   #endif

   f4blank( field ) ;
   *f4assignPtr( field ) = (char)chr ;
}
#endif

int S4FUNCTION f4char( const FIELD4 *field )
{
   #ifdef S4VBASIC
      if ( c4parm_check( field, 3, E90503 ) )
         return -1 ;
   #endif

   #ifdef E4PARM_HIGH
      if ( field == 0 )
      {
         error4( 0, e4parm_null, E90503 ) ;
         return -1 ;
      }
      #ifdef S4FOX
         switch( field->type )
         {
            case r4currency:
            case r4dateTime:
            case r4double:
            case r4int:
               return error4( field->data->codeBase, e4parm, E81409 ) ;
            default:
               break ;
         }
      #endif
   #endif

   /* Return the first character of the record buffer. */
   return *f4ptr( field ) ;
}