129 lines
2.4 KiB
C
129 lines
2.4 KiB
C
|
/***********************************************************************\
|
||
|
* *
|
||
|
* MULTI.C Copyright (C) 1993 Sequiter Software Inc. *
|
||
|
* *
|
||
|
\***********************************************************************/
|
||
|
/* See User's Manual, page 187 */
|
||
|
|
||
|
#include "d4all.h"
|
||
|
|
||
|
#ifdef __TURBOC__
|
||
|
extern unsigned _stklen = 10000;
|
||
|
#endif
|
||
|
|
||
|
CODE4 cb ;
|
||
|
FIELD4 *field_name ;
|
||
|
DATA4 *data_names ;
|
||
|
TAG4 *tag_name ;
|
||
|
|
||
|
void add_record() ;
|
||
|
void find_record() ;
|
||
|
void modify_record() ;
|
||
|
void list_data() ;
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
int command ;
|
||
|
|
||
|
d4init( &cb ) ;
|
||
|
|
||
|
cb.exclusive = 0 ;
|
||
|
cb.read_only = 0 ;
|
||
|
cb.read_lock = 0 ;
|
||
|
cb.lock_attempts = -1 ;
|
||
|
|
||
|
data_names = d4open( &cb, "NAMES" ) ;
|
||
|
e4exit_test( &cb ) ;
|
||
|
|
||
|
field_name = d4field( data_names, "NAME" ) ;
|
||
|
tag_name = d4tag( data_names, "NAME" ) ;
|
||
|
|
||
|
d4top( data_names ) ;
|
||
|
|
||
|
for(;;)
|
||
|
{
|
||
|
e4set( &cb, 0 ) ;
|
||
|
|
||
|
printf( "\n\nRecord #: %ld Name: %s\n"
|
||
|
,d4recno( data_names )
|
||
|
, f4str( field_name ) ) ;
|
||
|
|
||
|
printf( "Enter Command ('a','f','l','m' or 'x')\n" ) ;
|
||
|
|
||
|
command = getchar() ;
|
||
|
switch( command )
|
||
|
{
|
||
|
case 'a':
|
||
|
add_record() ;
|
||
|
break ;
|
||
|
|
||
|
case 'f':
|
||
|
find_record() ;
|
||
|
break ;
|
||
|
|
||
|
case 'l':
|
||
|
list_data() ;
|
||
|
break ;
|
||
|
|
||
|
case 'm':
|
||
|
modify_record() ;
|
||
|
break ;
|
||
|
|
||
|
case 'x':
|
||
|
d4close_all( &cb ) ;
|
||
|
exit(0) ;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void add_record()
|
||
|
{
|
||
|
char buf[100] ;
|
||
|
printf( "Enter New Record\n" ) ;
|
||
|
scanf( "%s", buf ) ;
|
||
|
|
||
|
d4append_start( data_names, 0 ) ;
|
||
|
f4assign( field_name, buf ) ;
|
||
|
d4append( data_names ) ;
|
||
|
|
||
|
d4unlock( data_names ) ;
|
||
|
}
|
||
|
|
||
|
void find_record()
|
||
|
{
|
||
|
char buf[100] ;
|
||
|
printf( "Enter Name to Find\n" ) ;
|
||
|
scanf( "%s", buf ) ;
|
||
|
|
||
|
d4tag_select( data_names, tag_name ) ;
|
||
|
d4seek( data_names, buf ) ;
|
||
|
}
|
||
|
|
||
|
void modify_record()
|
||
|
{
|
||
|
char buf[100] ;
|
||
|
printf( "Enter Replacement Record\n" ) ;
|
||
|
scanf( "%s", buf ) ;
|
||
|
|
||
|
f4assign( field_name, buf ) ;
|
||
|
|
||
|
d4flush( data_names ) ;
|
||
|
d4unlock( data_names ) ;
|
||
|
}
|
||
|
|
||
|
void list_data()
|
||
|
{
|
||
|
d4opt_start( &cb ) ;
|
||
|
d4optimize( data_names, 1 ) ;
|
||
|
|
||
|
d4tag_select( data_names, tag_name ) ;
|
||
|
|
||
|
for( d4top(data_names); ! d4eof(data_names)
|
||
|
; d4skip(data_names,1) )
|
||
|
printf( "%ld %s\n", d4recno(data_names)
|
||
|
, f4str(field_name) ) ;
|
||
|
|
||
|
d4optimize( data_names, 0 ) ;
|
||
|
d4opt_suspend( &cb ) ;
|
||
|
}
|