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
		
			
				
	
	
		
			109 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /*********************************************************************
 | |
| 
 | |
|   d4ascii.c     (c)Copyright Sequiter Software Inc., 1990-1991.
 | |
|   All rights reserved.
 | |
| 
 | |
|   Creates a database file from an ASCII file.
 | |
| 
 | |
|   NOTE: Make sure that the accompanying ascii file, 'INVENTOR.ASC' 
 | |
|   is with this file when executing the program.
 | |
| 
 | |
|   *********************************************************************/
 | |
| 
 | |
| #include "d4all.h"
 | |
| 
 | |
| #ifdef __TURBOC__
 | |
| extern unsigned  _stklen =  10000 ;  /* Borland only */
 | |
| #endif
 | |
| 
 | |
| #define DESC_LEN      20
 | |
| #define CODE_LEN      4
 | |
| #define VALUE_LEN     6
 | |
| #define QUANTITY_LEN  5
 | |
| 
 | |
| #define DESC_POS      0
 | |
| #define CODE_POS      (DESC_POS + DESC_LEN)
 | |
| #define VALUE_POS     (CODE_POS + CODE_LEN)
 | |
| #define QUANTITY_POS  (VALUE_POS+ VALUE_LEN)
 | |
| 
 | |
| /* The carriage return and line feed characters are included. */
 | |
| 
 | |
| #ifdef S4UNIX
 | |
| #define TOTAL_LEN     (QUANTITY_POS + QUANTITY_LEN + 1)
 | |
| #else
 | |
| #define TOTAL_LEN     (QUANTITY_POS + QUANTITY_LEN + 2)
 | |
| #endif
 | |
| 
 | |
| CODE4   code_base ;
 | |
| DATA4  *inventory ;
 | |
| FIELD4 *descrip, *code, *value, *quantity ;
 | |
| 
 | |
| FILE4   ascii ;
 | |
| FILE4SEQ_READ seq_read ;
 | |
| 
 | |
| char     ascii_buf[TOTAL_LEN], seq_read_buf[1024] ;
 | |
| 
 | |
| FIELD4INFO inventory_fields[] =
 | |
| {
 | |
| { "CODE",     'C',  4, 0 },
 | |
| { "DESCRIP",  'C', 30, 0 },
 | |
| { "DATE",     'D',  8, 0 },
 | |
| { "VALUE",    'N',  8, 2 },
 | |
| { "QUANTITY", 'N',  6, 0 },
 | |
| { 0,0,0,0 }
 | |
| } ;
 | |
| 
 | |
| 
 | |
| void main()
 | |
| {
 | |
|   d4init( &code_base ) ;
 | |
| 
 | |
|   code_base.safety = 0 ;
 | |
| 
 | |
|   /* Create the data file; open the ASCII file.  */
 | |
|   inventory = d4create( &code_base, "INVENTOR", inventory_fields,0);
 | |
|   file4open( &ascii, &code_base, "inventor.asc", 0 ) ;
 | |
|   e4exit_test( &code_base ) ;
 | |
| 
 | |
|   descrip  =  d4field( inventory, "DESCRIP" ) ;
 | |
|   code     =  d4field( inventory, "CODE" ) ;
 | |
|   value    =  d4field( inventory, "VALUE" ) ;
 | |
|   quantity =  d4field( inventory, "QUANTITY" ) ;
 | |
| 
 | |
|   /* Initialize to read the ASCII file with extra fast performance. */
 | |
| 
 | |
|   file4seq_read_init( &seq_read, &ascii, 0, seq_read_buf,
 | |
|                      sizeof(seq_read_buf) ) ;
 | |
| 
 | |
|   for(;;)
 | |
|   {
 | |
|     unsigned len_read ;
 | |
| 
 | |
|     /* Read one ASCII record. */
 | |
|     len_read =  file4seq_read( &seq_read, ascii_buf, sizeof(ascii_buf) );
 | |
| 
 | |
|     if ( len_read != sizeof(ascii_buf) )  break ;
 | |
| 
 | |
|     /* Start the Append Operation */
 | |
|     d4append_start( inventory, 0 ) ;
 | |
| 
 | |
|     /* Assign the fields. */
 | |
|     f4assign_n( descrip, ascii_buf+DESC_POS, DESC_LEN ) ;
 | |
|     f4assign_n( code,    ascii_buf+CODE_POS, CODE_LEN ) ;
 | |
| 
 | |
|     f4assign_double( value, c4atod( ascii_buf+VALUE_POS, VALUE_LEN) ) ;
 | |
|     f4assign_double( quantity, c4atod( ascii_buf+QUANTITY_POS,
 | |
|                                       QUANTITY_LEN) ) ;
 | |
| 
 | |
|     /* Append the new record */
 | |
|     d4append( inventory ) ;
 | |
|   }
 | |
| 
 | |
|   d4close(inventory) ;
 | |
|   file4close( &ascii ) ;
 | |
|   d4init_undo( &code_base ) ;
 | |
|   mem4reset() ;
 | |
| 
 | |
|   exit(0) ;
 | |
| }
 |