/* e4not_s.c   (c)Copyright Sequiter Software Inc., 1990-1994.  All rights reserved. */

/* contains error stubs for functions not supported under various compile
   switches */

#include "d4all.h"

#ifndef S4UNIX
#ifdef __TURBOC__
#pragma hdrstop
#endif
#endif

#ifndef S4LOCK_HOOK
#ifdef S4DLL
int S4FUNCTION file4lock_hook( CODE4 *cb, char *file_name, long offset, long num_bytes, int num_tries )
{
#ifdef S4DEBUG
  if ( cb == 0 )
    e4severe( e4parm, E4_F4LOCK_HOOK ) ;
#endif

  return e4( cb, e4not_lock, E4_F4LOCK_HOOK ) ;
}
#endif
#endif

#ifndef S4ERROR_HOOK
#ifdef S4DLL
void S4FUNCTION e4hook( CODE4 S4PTR *c4, int err_code, char *desc1, char *desc2, char *desc3 )
{
#ifdef S4DEBUG
  if ( c4 == 0 )
    e4severe( e4parm, E4_E4HOOK ) ;
#endif

}
#endif
#endif

#ifndef S4MDX
#ifdef S4DLL
int S4FUNCTION t4dump( TAG4 *t4, int out_handle, int display_all )
{
#ifdef S4DEBUG
  if ( t4 == 0 )
    e4severe( e4parm, E4_T4DUMP ) ;
#endif

  return e4( t4->code_base, e4not_index, E4_T4DUMP ) ;
}
#endif
#endif

#ifdef N4OTHER
#ifdef S4DLL

int S4FUNCTION i4add_tag( INDEX4 *i4, TAG4INFO *tag_data )
{
#ifdef S4DEBUG
  if ( i4 == 0 )
    e4severe( e4parm, E4_I4ADD_TAG ) ;
#endif

  return e4( i4->code_base, e4not_write, E4_I4ADD_TAG ) ;
}
#endif
#endif

#ifndef S4CLIPPER
#ifndef S4NDX

int S4FUNCTION t4flush( TAG4 *t4 )
{
#ifdef S4DEBUG
  if ( t4 == 0 )
    e4severe( e4parm, E4_T4FLUSH ) ;
#endif

  return e4( t4->code_base, e4not_write, E4_T4FLUSH ) ;
}

TAG4 *S4FUNCTION t4open( DATA4 *d4, INDEX4 *i4ndx, char *file_name )
{
#ifdef S4VBASIC
  if ( c4parm_check( d4, 2, E4_T4OPEN ) )
    return 0 ;
#endif

#ifdef S4DEBUG
  if ( d4 == 0 )
    e4severe( e4parm, E4_T4OPEN ) ;
#endif

  e4( d4->code_base, e4not_index, E4_T4OPEN ) ;
  return 0 ;
}
#endif

char *S4FUNCTION c4descend_num( char *to, char *from, int len )
{
#ifdef S4DEBUG
  if ( len == 0 )
    e4severe( e4parm, E4_C4DESCEND_NUM ) ;
#endif
  return 0 ;
}

char *S4FUNCTION c4descend_str( char *to, char *from, int len )
{
#ifdef S4DEBUG
  if ( len == 0 )
    e4severe( e4parm, E4_C4DESCEND_STR ) ;
#endif
  return 0 ;
}

char *S4FUNCTION c4descend_date( char *to, long l, int to_len )
{
#ifdef S4DEBUG
  if ( to_len == 0 )
    e4severe( e4parm, E4_C4DESCEND_DATE ) ;
#endif
  return 0 ;
}

int S4FUNCTION c4descend( FIELD4 *f4, char *to, int to_len )
{
#ifdef S4DEBUG
  if ( to_len == 0 )
    e4severe( e4parm, E4_C4DESCEND ) ;
#endif
  return 0 ;
}
#endif

#ifdef S4MEMO_OFF
int S4FUNCTION d4memo_compress( DATA4 *data )
{
#ifdef S4VBASIC
  if ( c4parm_check( data, 2, E4_D4MEMO_COMP ) )
    return -1 ;
#endif

#ifdef S4DEBUG
  if ( data == 0 )
    e4severe( e4parm, E4_D4MEMO_COMP ) ;
#endif
  return e4( data->code_base, e4not_memo, E4_D4MEMO_COMP ) ;
}

int S4FUNCTION f4memo_set_len( FIELD4 S4PTR *field, unsigned ptr_len )
{
  return e4(field->data->code_base,e4not_memo, E4_F4MEMO_SET_LEN );
}

#endif

#ifdef S4OFF_WRITE
void S4FUNCTION d4blank( DATA4 *data )
{
#ifdef S4DEBUG
  if ( data == 0 )
    e4severe( e4parm, E4_D4BLANK ) ;
#endif
  e4( data->code_base, e4not_write, E4_D4BLANK ) ;
}

int S4FUNCTION d4changed( DATA4 *data, int flag )
{
#ifdef S4DEBUG
  if ( data == 0 )
    e4severe( e4parm, E4_D4CHANGED ) ;
#endif
  return e4( data->code_base, e4not_write, E4_D4CHANGED ) ;
}

int S4FUNCTION d4append( DATA4 *data )
{
#ifdef S4VBASIC
  if ( c4parm_check( data, 2, E4_D4APPEND ) )
    return -1 ;
#endif  /* S4VBASIC */

#ifdef S4DEBUG
  if ( data == 0 )
    e4severe( e4parm, E4_D4APPEND ) ;
#endif

  return e4( data->code_base, e4not_write, E4_D4APPEND ) ;
}

int S4FUNCTION d4append_blank( DATA4 *data )
{
#ifdef S4VBASIC
  if ( c4parm_check( data, 2, E4_D4APPEND_BL ) )
    return -1 ;
#endif  /* S4VBASIC */

#ifdef S4DEBUG
  if ( data == 0 )
    e4severe( e4parm, E4_D4APPEND_BL ) ;
#endif

  return e4( data->code_base, e4not_write, E4_D4APPEND_BL ) ;
}

int S4FUNCTION d4append_data( DATA4 *data )
{
#ifdef S4DEBUG
  if ( data == 0 )
    e4severe( e4parm, E4_D4APPEND_DATA ) ;
#endif

  return e4( data->code_base, e4not_write, E4_D4APPEND_DATA ) ;
}

int S4FUNCTION d4append_start( DATA4 *data, int use_memo_entries )
{
#ifdef S4VBASIC
  if ( c4parm_check( data, 2, E4_D4APPEND_STRT ) )
    return -1 ;
#endif  /* S4VBASIC */

#ifdef S4DEBUG
  if ( data == 0 )
    e4severe( e4parm, E4_D4APPEND_STRT ) ;
#endif

  return e4( data->code_base, e4not_write, E4_D4APPEND_STRT ) ;
}

DATA4 *S4FUNCTION d4create( CODE4 *c4, char *name, FIELD4INFO *field_data, TAG4INFO *tag_info )
{
#ifdef S4VBASIC
  if ( c4parm_check( c4, 1, E4_D4CREATE ) )
    return 0 ;
#endif  /* S4VBASIC */

#ifdef S4DEBUG
  if ( c4 == 0 )
    e4severe( e4parm, E4_D4CREATE ) ;
#endif

  e4( c4, e4not_write, E4_D4CREATE ) ;
  return 0 ;
}

void S4FUNCTION d4delete( DATA4 *data )
{
#ifdef S4VBASIC
  if ( c4parm_check( data, 2, E4_D4DELETE ) )
    return ;
#endif  /* S4VBASIC */

#ifdef S4DEBUG
  if ( data == 0 )
    e4severe( e4parm, E4_D4DELETE ) ;
#endif

  e4( data->code_base, e4not_write, E4_D4DELETE ) ;
}


#ifndef S4MEMO_OFF
int S4FUNCTION d4memo_compress( DATA4 *data )
{
#ifdef S4VBASIC
  if ( c4parm_check( data, 2, E4_D4MEMO_COMP ) )
    return -1 ;
#endif

#ifdef S4DEBUG
  if ( data == 0 )
    e4severe( e4parm, E4_D4MEMO_COMP ) ;
#endif

  return e4( data->code_base, e4not_write, E4_D4MEMO_COMP ) ;
}
#endif

int S4FUNCTION d4pack( DATA4 *d4 )
{
#ifdef S4VBASIC
  if ( c4parm_check( d4, 2, E4_D4PACK ) )
    return 0 ;
#endif

#ifdef S4DEBUG
  if ( d4 == 0 )
    e4severe( e4parm, E4_D4PACK ) ;
#endif

  return e4( d4->code_base, e4not_write, E4_D4PACK ) ;
}

int S4FUNCTION d4pack_data( DATA4 *d4 )
{
#ifdef S4DEBUG
  if ( d4 == 0 )
    e4severe( e4parm, E4_D4PACK_DATA ) ;
#endif

  return e4( d4->code_base, e4not_write, E4_D4PACK_DATA ) ;
}

void S4FUNCTION d4recall( DATA4 *data )
{
#ifdef S4DEBUG
  if ( data == 0 )
    e4severe( e4parm, E4_D4RECALL ) ;
#endif

  e4( data->code_base, e4not_write, E4_D4RECALL ) ;
}

int S4FUNCTION d4reindex( DATA4 *data )
{
#ifdef S4VBASIC
  if ( c4parm_check( data, 2, E4_D4REINDEX ) )
    return -1 ;
#endif  /* S4VBASIC */

#ifdef S4DEBUG
  if ( data == 0 )
    e4severe( e4parm, E4_D4REINDEX ) ;
#endif

  return e4( data->code_base, e4not_write, E4_D4REINDEX ) ;
}

int S4FUNCTION d4write( DATA4 *d4, long rec )
{
#ifdef S4VBASIC
  if ( c4parm_check( d4, 2, E4_D4WRITE ) )
    return 0 ;
#endif  /* S4VBASIC */

#ifdef S4DEBUG
  if ( d4 == 0 )
    e4severe( e4parm, E4_D4WRITE ) ;
#endif  /* S4DEBUG */

  return e4( d4->code_base, e4not_write, E4_D4WRITE ) ;
}

int S4FUNCTION d4write_data( DATA4 *d4, long rec )
{
#ifdef S4DEBUG
  if ( d4 == 0 )
    e4severe( e4parm, E4_D4WRITE_DATA ) ;
#endif  /* S4DEBUG */

  return e4( d4->code_base, e4not_write, E4_D4WRITE_DATA ) ;
}

int S4FUNCTION d4write_keys( DATA4 *d4, long rec )
{
#ifdef S4DEBUG
  if ( d4 == 0 )
    e4severe( e4parm, E4_D4WRITE_KEYS ) ;
#endif  /* S4DEBUG */

  return e4( d4->code_base, e4not_write, E4_D4WRITE_KEYS ) ;
}

int S4FUNCTION d4zap( DATA4 *d4, long r1, long r2 )
{
#ifdef S4VBASIC
  if ( c4parm_check( d4, 2, E4_D4ZAP ) )
    return -1 ;
#endif

#ifdef S4DEBUG
  if ( d4 == 0 )
    e4severe( e4parm, E4_D4ZAP ) ;
#endif  /* S4DEBUG */

  return e4( d4->code_base, e4not_write, E4_D4ZAP ) ;
}

int S4FUNCTION d4zap_data( DATA4 *d4, long start_rec, long end_rec )
{
#ifdef S4DEBUG
  if ( d4 == 0 )
    e4severe( e4parm, E4_D4ZAP_DATA ) ;
#endif  /* S4DEBUG */

  return e4( d4->code_base, e4not_write, E4_D4ZAP_DATA ) ;
}

void S4FUNCTION f4assign( FIELD4 *field, char *str )
{
#ifdef S4VBASIC
  if ( c4parm_check( field, 3, E4_F4ASSIGN ) )
    return ;
#endif

#ifdef S4DEBUG
  if ( field == 0 )
    e4severe( e4parm, E4_F4ASSIGN ) ;
#endif

  e4( field->data->code_base, e4not_write, E4_F4ASSIGN ) ;
}

void S4FUNCTION f4assign_char( FIELD4 *field, int chr )
{
#ifdef S4VBASIC
  if ( c4parm_check( field, 3, E4_F4ASSIGN_CHAR ) )
    return ;
#endif

#ifdef S4DEBUG
  if ( field == 0 )
    e4severe( e4parm, E4_F4ASSIGN_CHAR ) ;
#endif

  e4( field->data->code_base, e4not_write, E4_F4ASSIGN_CHAR ) ;
}

void S4FUNCTION f4assign_double( FIELD4 *field, double d_value )
{
#ifdef S4VBASIC
  if ( c4parm_check ( field, 3, E4_F4ASSIGN_DBL )
      return ;
#endif

#ifdef S4DEBUG
      if ( field == 0 )
      e4severe( e4parm, E4_F4ASSIGN_DBL ) ;
#endif

      e4( field->data->code_base, e4not_write, E4_F4ASSIGN_DBL ) ;
    }

  void S4FUNCTION f4assign_field( FIELD4 *field_to, FIELD4 *field_from )
  {
#ifdef S4DEBUG
    if ( field_to == 0 )
      e4severe( e4parm, E4_F4ASSIGN_FLD ) ;
#endif

    e4( field_to->data->code_base, e4not_write, E4_F4ASSIGN_FLD ) ;
  }

  void S4FUNCTION f4assign_int( FIELD4 *field, int i_value )
  {
#ifdef S4VBASIC
    if ( c4parm_check( field, 3, E4_F4ASSIGN_INT ) )
      return ;
#endif

#ifdef S4DEBUG
    if ( field == 0 )
      e4severe( e4parm, E4_F4ASSIGN_INT ) ;
#endif

    e4( field->data->code_base, e4not_write, E4_F4ASSIGN_INT ) ;
  }

  void S4FUNCTION f4assign_long( FIELD4 *field, long l_value )
  {
#ifdef S4VBASIC
    if ( c4parm_check( field, 3, E4_F4ASSIGN_LONG ) )
      return ;
#endif

#ifdef S4DEBUG
    if ( field == 0 )
      e4severe( e4parm, E4_F4ASSIGN_LONG ) ;
#endif

    e4( field->data->code_base, e4not_write, E4_F4ASSIGN_LONG ) ;
  }

  void S4FUNCTION f4assign_n( FIELD4 *field, char *ptr, unsigned ptr_len )
  {
#ifdef S4DEBUG
    if ( field == 0 )
      e4severe( e4parm, E4_F4ASSIGN_N ) ;
#endif

    e4( field->data->code_base, e4not_write, E4_F4ASSIGN_N ) ;
  }

  char *S4FUNCTION f4assign_ptr( FIELD4 *field )
  {
#ifdef S4DEBUG
    if ( field == 0 )
      e4severe( e4parm, E4_F4ASSIGN_PTR ) ;
#endif

    e4( field->data->code_base, e4not_write, E4_F4ASSIGN_PTR ) ;
    return 0 ;
  }

  void S4FUNCTION f4blank( FIELD4 *field )
  {
#ifdef S4VBASIC
    if ( c4parm_check( field, 3, E4_F4BLANK ) )
      return ;
#endif

#ifdef S4DEBUG
    if ( field == 0 )
      e4severe( e4parm, E4_F4BLANK ) ;
#endif

    e4( field->data->code_base, e4not_write, E4_F4BLANK ) ;
  }

  int S4FUNCTION f4memo_assign( FIELD4 *field, char *ptr )
  {
#ifdef S4DEBUG
    if ( field == 0 )
      e4severe( e4parm, E4_F4MEMO_ASSIGN ) ;
#endif

    return e4( field->data->code_base, e4not_write, E4_F4MEMO_ASSIGN ) ;
  }

  int S4FUNCTION f4memo_assign_n( FIELD4 *field, char *ptr, unsigned ptr_len )
  {
#ifdef S4VBASIC
    if ( c4parm_check( field, 3, E4_F4MEMO_ASS_N ) )
      return -1 ;
#endif

#ifdef S4DEBUG
    if ( field == 0 )
      e4severe( e4parm, E4_F4MEMO_ASS_N ) ;
#endif

    return e4( field->data->code_base, e4not_write, E4_F4MEMO_ASS_N ) ;
  }

  int S4FUNCTION i4add_tag( INDEX4 *i4, TAG4INFO *tag_data )
  {
#ifdef S4DEBUG
    if ( i4 == 0 )
      e4severe( e4parm, E4_I4ADD_TAG ) ;
#endif

    return e4( i4->code_base, e4not_write, E4_I4ADD_TAG ) ;
  }

  INDEX4 *S4FUNCTION i4create( DATA4 *d4, char *file_name, TAG4INFO *tag_data )
  {
#ifdef S4VBASIC
    if ( c4parm_check( d4, 2, E4_I4CREATE ) )
      return 0 ;
#endif

#ifdef S4DEBUG
    if ( d4 == 0 )
      e4severe( e4parm, E4_I4CREATE ) ;
#endif

    e4( d4->code_base, e4not_write, E4_I4CREATE ) ;
    return 0 ;
  }

  int S4FUNCTION i4reindex( INDEX4 *i4 )
  {
#ifdef S4VBASIC
    if ( c4parm_check( i4, 0, E4_I4REINDEX ) )
      return -1 ;
#endif  /* S4VBASIC */

#ifdef S4DEBUG
    if ( i4 == 0  )
      e4severe( e4parm, E4_I4REINDEX ) ;
#endif

    return e4( i4->code_base, e4not_write, E4_I4REINDEX ) ;
  }

  int S4FUNCTION t4add( TAG4 *t4, unsigned char *key_info, long rec )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4ADD ) ;
#endif

    return e4( t4->code_base, e4not_write, E4_T4ADD ) ;
  }

  int S4FUNCTION t4add_calc( TAG4 *t4, long rec )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4ADD_CALC ) ;
#endif

    return e4( t4->code_base, e4not_write, E4_T4ADD_CALC ) ;
  }

#ifndef S4MDX
#ifndef S4FOX
  int S4FUNCTION t4flush( TAG4 *t4 )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4FLUSH ) ;
#endif

    return e4( t4->code_base, e4not_write, E4_T4FLUSH ) ;
  }
#endif
#endif

  int S4FUNCTION t4remove( TAG4 *t4, char *ptr, long rec )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4REMOVE ) ;
#endif

    return e4( t4->code_base, e4not_write, E4_T4REMOVE ) ;
  }

  int S4FUNCTION t4remove_calc( TAG4 *t4, long rec )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4REM_CALC ) ;
#endif

    return e4( t4->code_base, e4not_write, E4_T4REM_CALC ) ;
  }

#endif

#ifdef S4INDEX_OFF

  int S4FUNCTION d4seek( DATA4 *d4, char *str )
  {
#ifdef S4VBASIC
    if ( c4parm_check( d4, 2, E4_D4SEEK ) )
      return 0 ;
#endif

#ifdef S4DEBUG
    if ( d4 == 0 )
      e4severe( e4parm, E4_D4SEEK ) ;
#endif

    return e4( d4->code_base, e4not_write, E4_D4SEEK ) ;
  }

  int S4FUNCTION d4seek_double( DATA4 *d4, double dkey )
  {
#ifdef S4VBASIC
    if ( c4parm_check( d4, 2, E4_D4SEEK_DBL ) )
      return 0 ;
#endif

#ifdef S4DEBUG
    if ( d4 == 0 )
      e4severe( e4parm, E4_D4SEEK_DBL ) ;
#endif

    return e4( d4->code_base, e4not_write, E4_D4SEEK_DBL ) ;
  }

  int S4FUNCTION i4close( INDEX4 *i4 )
  {
#ifdef S4VBASIC
    if ( c4parm_check( i4, 0, E4_I4CLOSE ) )
      return -1 ;
#endif

    if ( i4 == 0 )
      return -1 ;

    return e4( i4->code_base, e4not_index, E4_I4CLOSE ) ;
  }

#ifndef S4OFF_WRITE
  INDEX4 *S4FUNCTION i4create( DATA4 *d4, char *file_name, TAG4INFO *tag_data )
  {
#ifdef S4VBASIC
    if ( c4parm_check( d4, 2, E4_I4CREATE ) )
      return 0 ;
#endif

#ifdef S4DEBUG
    if ( d4 == 0 )
      e4severe( e4parm, E4_I4CREATE ) ;
#endif

    e4( d4->code_base, e4not_index, E4_I4CREATE ) ;
    return 0 ;
  }
#endif

  int S4FUNCTION i4lock( INDEX4 *i4 )
  {
#ifdef S4VBASIC
    if ( c4parm_check( i4, 0, E4_I4LOCK ) )
      return -1 ;
#endif

#ifdef S4DEBUG
    if ( i4 == 0 )
      e4severe( e4parm, E4_I4LOCK ) ;
#endif

    return e4( i4->code_base, e4not_index, E4_I4LOCK ) ;
  }

  INDEX4 *S4FUNCTION i4open( DATA4 *d4, char *file_name )
  {
#ifdef S4DEBUG
    if ( d4 == 0 )
      e4severe( e4parm, E4_I4OPEN ) ;
#endif
    e4( d4->code_base, e4not_index, E4_I4OPEN ) ;
    return 0 ;
  }

#ifndef S4OFF_WRITE
  int S4FUNCTION i4reindex( INDEX4 *i4 )
  {
#ifdef S4VBASIC
    if ( c4parm_check( i4, 0, E4_I4REINDEX ) )
      return -1 ;
#endif

#ifdef S4DEBUG
    if ( i4 == 0  )
      e4severe( e4parm, E4_I4REINDEX ) ;
#endif

    return e4( i4->code_base, e4not_index, E4_I4REINDEX ) ;
  }
#endif

  TAG4 *S4FUNCTION i4tag( INDEX4 *i4, char *tag_name )
  {
#ifdef S4VBASIC
    if ( c4parm_check( i4, 0, E4_I4TAG ) )
      return 0 ;
#endif

#ifdef S4DEBUG
    if ( i4 == 0 )
      e4severe( e4parm, E4_I4TAG ) ;
#endif

    e4( i4->code_base, e4not_index, E4_I4TAG ) ;
    return 0 ;
  }

#ifndef S4OFF_WRITE
  int S4FUNCTION i4add_tag( INDEX4 *i4, TAG4INFO *tag_data )
  {
#ifdef S4DEBUG
    if ( i4 == 0 )
      e4severe( e4parm, E4_I4ADD_TAG ) ;
#endif

    e4( i4->code_base, e4not_index, E4_I4ADD_TAG ) ;
  }
#endif

  TAG4INFO *S4FUNCTION i4tag_info( INDEX4 *index )
  {
#ifdef S4DEBUG
    if ( index == 0 )
      e4severe( e4parm, E4_I4TAG_INFO ) ;
#endif

    e4( index->code_base, e4not_index, E4_I4TAG_INFO ) ;
    return 0 ;
  }

  int S4FUNCTION i4unlock( INDEX4 *i4 )
  {
#ifdef S4VBASIC
    if ( c4parm_check( i4, 0, E4_I4UNLOCK ) )
      return -1 ;
#endif

#ifdef S4DEBUG
    if ( i4 == 0 )
      e4severe( e4parm, E4_I4UNLOCK ) ;
#endif

    e4( i4->code_base, e4not_index, E4_I4UNLOCK ) ;
  }

#ifndef S4OFF_WRITE
  int S4FUNCTION t4add( TAG4 *t4, unsigned char *key_info, long rec )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4ADD ) ;
#endif

    return e4( t4->code_base, e4not_index, E4_T4ADD ) ;
  }

  int S4FUNCTION t4add_calc( TAG4 *t4, long rec )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4ADD_CALC ) ;
#endif

    return e4( t4->code_base, e4not_index, E4_T4ADD_CALC ) ;
  }
#endif

  int S4FUNCTION t4bottom( TAG4 *t4 )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4BOTTOM ) ;
#endif

    return e4( t4->code_base, e4not_index, E4_T4BOTTOM ) ;
  }

  int S4FUNCTION t4down( TAG4 *t4 )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4DOWN ) ;
#endif

    return e4( t4->code_base, e4not_index, E4_T4DOWN ) ;
  }

  int S4FUNCTION t4dump( TAG4 *t4, int out_handle, int display_all )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4DUMP ) ;
#endif

    return e4( t4->code_base, e4not_index, E4_T4DUMP ) ;
  }

  int S4FUNCTION t4eof( TAG4 *t4 )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4EOF ) ;
#endif

    return e4( t4->code_base, e4not_index, E4_T4EOF ) ;
  }

#ifndef S4OFF_WRITE
  int S4FUNCTION t4flush( TAG4 *t4 )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4FLUSH ) ;
#endif

    return e4( t4->code_base, e4not_index, E4_T4FLUSH ) ;
  }
#endif

  int S4FUNCTION t4free_all( TAG4 *t4 )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4FREE_ALL ) ;
#endif

    return e4( t4->code_base, e4not_index, E4_T4FREE_ALL ) ;
  }

  int S4FUNCTION t4go( TAG4 *t4, char *ptr, long rec_num )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4GO ) ;
#endif

    return e4( t4->code_base, e4not_index, E4_T4GO ) ;
  }

  char S4PTR *S4FUNCTION t4key( TAG4 S4PTR *t4 )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4KEY ) ;
#endif

    e4( t4->code_base, e4not_index, E4_T4KEY ) ;
    return ;
  }

  TAG4 *S4FUNCTION t4open( DATA4 *d4, INDEX4 *i4ndx, char *file_name )
  {
#ifdef S4VBASIC
    if ( c4parm_check( d4, 2, E4_T4OPEN ) )
      return 0 ;
#endif

#ifdef S4DEBUG
    if ( d4 == 0 )
      e4severe( e4parm, E4_T4OPEN ) ;
#endif

    e4( d4->code_base, e4not_index, E4_T4OPEN ) ;
    return 0 ;
  }

  double S4FUNCTION t4position( TAG4 *t4 )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4POSITION ) ;
#endif

    return e4( t4->code_base, e4not_index, E4_T4POSITION ) ;
  }

  int S4FUNCTION t4position_set( TAG4 *t4, double pos )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4POSITION_SET ) ;
#endif

    return e4( t4->code_base, e4not_index, E4_T4POSITION_SET ) ;
  }

  long S4FUNCTION t4recno( TAG4 *t4 )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4RECNO ) ;
#endif

    return e4( t4->code_base, e4not_index, E4_T4RECNO ) ;
  }

#ifndef S4OFF_WRITE
  int S4FUNCTION t4remove( TAG4 *t4, char *ptr, long rec )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4REMOVE ) ;
#endif

    return e4( t4->code_base, e4not_index, E4_T4REMOVE ) ;
  }

  int S4FUNCTION t4remove_calc( TAG4 *t4, long rec )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4REM_CALC ) ;
#endif

    return e4( t4->code_base, e4not_index, E4_T4REM_CALC ) ;
  }
#endif

  int S4FUNCTION t4seek( TAG4 *t4, void *ptr, int len_ptr )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4SEEK ) ;
#endif

    return e4( t4->code_base, e4not_index, E4_T4SEEK ) ;
  }

  long S4FUNCTION t4skip( TAG4 *t4, long num_skip )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4SKIP ) ;
#endif

    return e4( t4->code_base, e4not_index, E4_T4SKIP ) ;
  }

  int S4FUNCTION t4top( TAG4 *t4 )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4TOP ) ;
#endif

    return e4( t4->code_base, e4not_index, E4_T4TOP ) ;
  }

  int S4FUNCTION t4up( TAG4 *t4 )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4UP ) ;
#endif

    return e4( t4->code_base, e4not_index, E4_T4UP ) ;
  }

  int  S4FUNCTION t4up_to_root( TAG4 *t4 )
  {
#ifdef S4DEBUG
    if ( t4 == 0 )
      e4severe( e4parm, E4_T4UP_TO_ROOT ) ;
#endif

    return e4( t4->code_base, e4not_index, E4_T4UP_TO_ROOT ) ;
  }

#endif

#ifdef S4MEMO_OFF
  int S4FUNCTION f4memo_check( MEMO4FILE *f4memo )
  {
    if ( f4memo == 0 )
      return -1 ;

    return e4( f4memo->data->code_base, e4not_memo, E4_F4MEMO_CHECK ) ;
  }
#else
#ifndef S4MMDX
  int S4FUNCTION f4memo_check( MEMO4FILE *f4memo )
  {
    if ( f4memo == 0 )
      return -1 ;

    return e4( f4memo->data->code_base, e4not_index, E4_F4MEMO_CHECK ) ;
  }
#endif
#endif
