which included commits to RCS files with non-trunk default branches. git-svn-id: svn://10.65.10.50/trunk@976 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			171 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			171 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /*********************************************************************
 | |
|   d4exmemo.c   (c)Copyright Sequiter Software Inc., 1991-1993.
 | |
|   All rights reserved.
 | |
| 
 | |
|   This example program creates and places data into a database.     
 | |
|   The contents are then displayed using the selected tags.
 | |
| 
 | |
|   *********************************************************************/
 | |
| 
 | |
| #include "d4all.h"
 | |
| 
 | |
| #ifdef __TURBOC__
 | |
| #pragma hdrstop                     /* use pre-defined headers */
 | |
| #endif
 | |
| 
 | |
| #ifdef __TURBOC__                      /* if Borland C is the compiler */
 | |
| extern unsigned _stklen = 10000 ;   /* set stack length to 10000 */
 | |
| #endif
 | |
| 
 | |
| CODE4   cb ;                          /* initialize global variables */
 | |
| DATA4  *data ;
 | |
| FIELD4 *f_name, *l_name, *grade, *student_id, *birthdate, *will_pass, *notes ;
 | |
| TAG4 *name, *class_list ;
 | |
| 
 | |
| static FIELD4INFO field_info[] =     /* define database field structure */
 | |
| {
 | |
|   /* field name,   type, width, decimals */
 | |
| { "F_NAME",      'C',   17,     0 },
 | |
| { "L_NAME",      'C',   17,     0 },
 | |
| { "GRADE",       'N',    5,     2 },
 | |
| { "STUDENT_ID",  'N',    6,     0 },
 | |
| { "BIRTHDT",     'D',    8,     0 },
 | |
| { "WILL_PASS",   'L',    1,     0 },
 | |
| { "NOTES",       'M',   10,     0 },
 | |
| { 0, 0, 0, 0 },
 | |
| } ;
 | |
| 
 | |
| static TAG4INFO tag_info[] =         /* define multiple tags */
 | |
| {
 | |
|   /* name,        expression,      filter, unique,           descending */
 | |
| { "NAME",       "L_NAME+F_NAME", "",    r4unique_continue,      0       },
 | |
| { "CLASS_LIST", "GRADE",         "",      0,               r4descending },
 | |
| { 0,  0,  0, 0, 0 },
 | |
| };
 | |
| 
 | |
| 
 | |
| void main()
 | |
| {
 | |
|   FIELD4 *field_ptr ;
 | |
|   int  j ;
 | |
|   double d ;
 | |
|   char buffer[13] ;
 | |
| 
 | |
|   d4init( &cb ) ;
 | |
|   cb.safety = 0 ;        /* will create new database, regardless of */
 | |
|   /* it's current existence  */
 | |
|   printf("Creating Database. . .\n") ;
 | |
| 
 | |
|   data = d4create( &cb, "EXAMPLE", field_info, tag_info ) ;
 | |
| 
 | |
|   f_name   =  d4field( data, "F_NAME" ) ;     /* assign pointers to fields */
 | |
|   l_name   =  d4field( data, "L_NAME" ) ;
 | |
|   grade    =  d4field( data, "GRADE" ) ;
 | |
|   student_id  =  d4field( data, "STUDENT_ID" ) ;
 | |
|   birthdate   =  d4field( data, "BIRTHDT" ) ;
 | |
|   will_pass   =  d4field( data, "WILL_PASS" ) ;
 | |
|   notes    =  d4field( data, "NOTES" ) ;
 | |
| 
 | |
|   d4append_start( data, 0 ) ;              /* append records */  
 | |
|   f4assign( f_name , "Fred" ) ;
 | |
|   f4assign( l_name , "Jones" ) ;
 | |
|   d = 76.8 ;
 | |
|   f4assign_double( grade , d ) ;
 | |
|   f4assign_long( student_id, 164534L ) ;
 | |
|   f4assign( birthdate, "19651012" ) ;
 | |
|   f4assign_char( will_pass , 'N' ) ;
 | |
|   f4memo_assign( notes , "Fred must study more, and be more attentive. \
 | |
|             \n        His marks have been dropping, and his attendance \
 | |
|             \n        is poor.  I recommend that you send a note home \
 | |
|             \n        to his parents." ) ;
 | |
|   d4append( data ) ;
 | |
| 
 | |
|   d4append_start( data, 0 ) ;
 | |
|   f4assign( f_name , "Mary" ) ;
 | |
|   f4assign( l_name , "Borgerson" ) ;
 | |
|   d = 89.2 ;
 | |
|   f4assign_double( grade , d ) ;
 | |
|   f4assign_long( student_id, 145464L ) ;
 | |
|   f4assign( birthdate, "19640821" ) ;
 | |
|   f4assign_char( will_pass , 'Y' ) ;
 | |
|   f4memo_assign( notes , "Mary is doing well." ) ;
 | |
|   d4append( data ) ;
 | |
| 
 | |
|   d4append_start( data, 0 ) ;
 | |
|   f4assign( f_name , "Larry" ) ;
 | |
|   f4assign( l_name , "Smith" ) ;
 | |
|   d = 45.4 ;
 | |
|   f4assign_double( grade , d ) ;
 | |
|   f4assign_long( student_id, 134578L ) ;
 | |
|   f4assign( birthdate, "19650430" ) ;
 | |
|   f4assign_char( will_pass , 'Y' ) ;
 | |
|   f4memo_assign( notes , "Larry is going to be moving away.  Please \
 | |
|             \n        forward his transcripts to the new school" ) ;
 | |
|   d4append( data ) ;
 | |
| 
 | |
|   d4append_start( data, 0 ) ;
 | |
|   f4assign( f_name , "Sara" ) ;
 | |
|   f4assign( l_name , "Abbott" ) ;
 | |
|   d = 54.0 ;
 | |
|   f4assign_double( grade , d ) ;
 | |
|   f4assign_long( student_id, 124344L ) ;
 | |
|   f4assign( birthdate, "19641102" ) ;
 | |
|   f4assign_char( will_pass , 'Y' ) ;
 | |
|   f4memo_assign( notes , "Sara's parents have requested some further \
 | |
|             \n        information on the special school programs. \
 | |
|             \n        Please send that information out." ) ;
 | |
|   d4append( data ) ;
 | |
| 
 | |
|   /* print database ordered by first tag */
 | |
|   printf("\n\nThe listing of the Database ordered using last name,first name:\n");
 | |
|   printf("\n  FIRST NAME         LAST NAME          GRADE   I.D.    BIRTHDATE     PASS?\n");
 | |
|   printf(" -------------------------------------------------------------------------\n");
 | |
| 
 | |
|   d4tag_select( data , d4tag_default( data )) ;
 | |
|   /* Loop through the entire data file. */
 | |
|   for ( d4top( data ); ! d4eof( data ); d4skip( data, 1L ) )
 | |
|   {
 | |
|     printf( "\n" ) ;  /* Display the record on a new line. */
 | |
| 
 | |
|     /* Loop through every field */
 | |
|     for ( j = 1; j < d4num_fields( data ); j++ )
 | |
|     {
 | |
|       switch( f4type( field_ptr = d4field_j( data, j ) ) )
 | |
|       {
 | |
| 
 | |
|       case 'L':  /* if the logical field */
 | |
|         if ( f4true( field_ptr ) )
 | |
|           printf( "   YES" ) ; 
 | |
|         else
 | |
|           printf( "   NO" ) ; 
 | |
|         break ;
 | |
| 
 | |
|       case 'D':  /* if the date field */
 | |
|         date4format( f4memo_str( field_ptr), buffer, "MMM DD/CCYY" ) ;
 | |
|         printf( "  %s", buffer ) ; /* Display the field. */
 | |
|         break ;
 | |
| 
 | |
|       case 'N':  /* if a numeric field */
 | |
|         printf( "  %s", f4memo_str( field_ptr ) ) ; /* Display the field. */
 | |
|         if ( !memcmp( f4name( field_ptr ), "GRADE", 5 ) )
 | |
|           printf( "\%" ) ; 
 | |
|         break ;
 | |
| 
 | |
|       default:
 | |
|         printf( "  %s", f4memo_str( field_ptr ) ) ; /* Display the field. */
 | |
|         break ;
 | |
|       }
 | |
|     }
 | |
|     field_ptr =  d4field_j( data, d4num_fields(data) ) ;
 | |
|     printf( "\nNOTES:" ) ; 
 | |
|     printf( "  %s\n", f4memo_str( field_ptr ) ) ; /* Display the memo field. */
 | |
| 
 | |
|   }
 | |
| 
 | |
|   d4close_all( &cb ) ;     /* close all database, index and/or memo files */
 | |
|   d4init_undo( &cb ) ;     /* free up memory */
 | |
|   mem4reset() ;            /* free up memory */
 | |
| 
 | |
|   printf("\nFINISHED\n") ;
 | |
| }
 |