Listing 4 (lookup.c)

#include <stdio.h>
#include "common.h"     /* define structures */

FUNC lookup (int type, struct record *position_ptr,
       struct record *tran_start,
       int transaction_size, void *user_value)
{

  int i;           /* loop control */
  BOOL found=OFF;  /* bool value for search lookup */

  int integer;     /* hold integer value */
  float floater;   /* hold float value */


  switch (type) {

    case INT:

       for (i=0, integer = *((int *) position_ptr);
         i < transaction_size; i++,
         position_ptr++, integer = *((int *) position_ptr) )
{

           if (integer == *( (int *) user_value) ) {
               found = ON;
               lookup_print(&tran_start[i]);
           }

       }

       break;

    case FLOAT:

       for (i=0, floater = *((float *) position_ptr);
         i < transaction_size; i++, position_ptr++,
         floater = *((float *) position_ptr) ) {

           if (floater == *( (float *) user_value) ) {
               found = ON;
               lookup_print(&tran_start[i]);
           }

         }

         break;

    case STRING:

         for (i=0; i < transaction_size; i++, position_ptr++) {

           if ( !strcmp( position_ptr, (char *) user_value)
) {
               found = ON;
               lookup_print(&tran_start[i]);
           }
         }

               break;


  };

  /*
    If a comparison was successful, then return SUCCEED,
otherwise
    return FAIL.
  */

  if (!found) {
       return FAIL;
  } else {
       return SUCCEED;
  }

}
/* End of File */