Listing 6 (search.c)

#include <stdio.h>
#include "common.h" /* shared by all files */

/*
   Initialization of the tran_record file. This
   would normally be done through file input.
*/

struct record tran_record[] = {
       0,  0,  0.0, "zero",
       1, 11, 11.1, "one",
       2, 22, 22.2, "two",
       3, 33, 33.3, "three",
       4, 44, 44.4, "four",
};

struct field_definition definitions[] = {
  "id",     INT,    &tran_record[0].id,
  "number", INT,    &tran_record[0].number,
  "price",  FLOAT,  &tran_record[0].price,
  "code",   STRING, &tran_record[0].code,
  "last",   NULL,   NULL,
};

main()
{

  /* loop control */

  int i;

  /* holds definition type */

  char user_keyword[10];

  /* ascii string search key */

  char user_value[100];

  /* transaction_size of the transaction array */

  int transaction_size;


  /* calculate size of a transaction */

  transaction_size =
    sizeof(tran_record)/sizeof(tran_record[0]);

  /* set up the test to search for integer id */

  strcpy (user_value, "0");
  strcpy (user_keyword, "id");
  printf ("\nuser_value = %s\n", user_value);
  printf ("user_keyword = %s\n", user_keyword);
  if ( (type_check(definitions, tran_record,
       transaction_size,
       user_keyword, user_value) != SUCCEED) )
       printf ("Error: search failed\n");

  /* set up the test to search for integer number */

  strcpy (user_value, "11");
  strcpy (user_keyword, "number");
  printf ("\nuser_value = %s\n", user_value);
  printf ("user_keyword = %s\n", user_keyword);
  if ( (type_check(definitions, tran_record,
       transaction_size,
       user_keyword, user_value) != SUCCEED) )
       printf ("Error: search failed\n");

  /* set up the test to search for float */

  strcpy (user_value, "33.3");
  strcpy (user_keyword, "price");
  printf ("\nuser_value = %s\n", user_value);
  printf ("user_keyword = %s\n", user_keyword);
  if ( (type_check(definitions, tran_record,
       transaction_size,
       user_keyword, user_value) != SUCCEED) )
       printf ("Error: search failed\n");

  /* set up the test to search for string */

  strcpy (user_value,"two");
  strcpy (user_keyword, "code");
  printf ("\nuser_value = %s\n", user_value);
  printf ("user_keyword = %s\n", user_keyword);
  if ( (type_check(definitions, tran_record,
       transaction_size,
       user_keyword, user_value) != SUCCEED) )
       printf ("Error: search failed\n");

  /* set up the test to return 'No match' */

  strcpy (user_value, "99");
  strcpy (user_keyword, "number");
  printf ("\nuser_value = %s\n", user_value);
  printf ("user_keyword = %s\n", user_keyword);
  if ( (type_check(definitions, tran_record,
       transaction_size,
       user_keyword, user_value) != SUCCEED) )
       printf ("Error: search failed\n");

  /*
     Generate invalid search,
     CHAR is not define as a keyword
  */

  strcpy (user_value, "99");
  strcpy (user_keyword, "char");
  printf ("\nuser_value = %s\n", user_value);
  printf ("user_keyword = %s\n", user_keyword);
  if ( (type_check(definitions, tran_record,
       transaction_size,
       user_keyword, user_value) != SUCCEED) )
       printf ("Error: search failed\n");

  exit(0);
}
/* End of File */