Previous Topic

Next Topic

Define

The Define() step is where specific data definitions are established by your application and/or process. This involves defining columns/fields and creating the tables/files with optional indices.

Below is the code for Define():

/*
 * Define()
 *
 * Create the tables
 */
void Define(void)
{
   os_printf(DH_STRING_LITERAL("DEFINE\n"));

   Create_CustomerMaster_Table();
   Create_CustomerOrders_Table();
   Create_OrderItems_Table();
   Create_ItemMaster_Table();

   EXEC SQL COMMIT WORK ;
}


/*
 * Create_CustomerMaster_Table()
 *
 * Create the CustomerMaster
 */
void Create_CustomerMaster_Table(void)
{
   /* define table CustomerMaster */
   os_printf(DH_STRING_LITERAL("\ttable CustomerMaster\n"));

   EXEC SQL CREATE TABLE custmast (
         cm_custnumb CHAR(4),
         cm_custzipc CHAR(9),
         cm_custstat CHAR(2),
         cm_custrtng CHAR(1),
         cm_custname VARCHAR(47),
         cm_custaddr VARCHAR(47),
         cm_custcity VARCHAR(47)
      );
   if (sqlca.sqlcode)
      Handle_Error(sqlca.sqlcode, sqlca.sqlerrm);

   EXEC SQL CREATE UNIQUE INDEX cm_custnumb_idx ON custmast (cm_custnumb) ;
   if (sqlca.sqlcode)
      Handle_Error(sqlca.sqlcode, sqlca.sqlerrm);
}


/*
 * Create_CustomerOrders_Table()
 *
 * Create the CustomerOrders
 */
void Create_CustomerOrders_Table(void)
{
   /* define table CustomerOrders */
   os_printf(DH_STRING_LITERAL("\ttable CustomerOrders\n"));

   EXEC SQL CREATE TABLE custordr (
         co_ordrdate DATE,
         co_promdate DATE,
         co_ordrnumb CHAR(6),
         co_custnumb CHAR(4)
      ) ;
   if (sqlca.sqlcode)
      Handle_Error(sqlca.sqlcode, sqlca.sqlerrm);

   EXEC SQL CREATE UNIQUE INDEX co_ordrnumb_idx ON custordr (co_ordrnumb) ;
   if (sqlca.sqlcode)
      Handle_Error(sqlca.sqlcode, sqlca.sqlerrm);

   EXEC SQL CREATE INDEX co_custnumb_idx ON custordr (co_custnumb) ;
   if (sqlca.sqlcode)
      Handle_Error(sqlca.sqlcode, sqlca.sqlerrm);
}


/*
 * Create_OrderItems_Table()
 *
 * Create the OrderItems
 */
void Create_OrderItems_Table(void)
{
   /* define table OrderItems */
   os_printf(DH_STRING_LITERAL("\ttable OrderItems\n"));

   EXEC SQL CREATE TABLE ordritem (
         oi_sequnumb SMALLINT,
         oi_quantity SMALLINT,
         oi_ordrnumb CHAR(6),
         oi_itemnumb CHAR(5)
      ) ;
   if (sqlca.sqlcode)
      Handle_Error(sqlca.sqlcode, sqlca.sqlerrm);

   EXEC SQL CREATE UNIQUE INDEX oi_ordrnumb_idx ON ordritem (oi_ordrnumb, oi_sequnumb) ;
   if (sqlca.sqlcode)
      Handle_Error(sqlca.sqlcode, sqlca.sqlerrm);

   EXEC SQL CREATE INDEX oi_itemnumb_idx ON ordritem (oi_itemnumb) ;
   if (sqlca.sqlcode)
      Handle_Error(sqlca.sqlcode, sqlca.sqlerrm);
}


/*
 * Create_ItemMaster_Table()
 *
 * Create the ItemMaster
 */
void Create_ItemMaster_Table(void)
{
   /* define table ItemMaster */
   os_printf(DH_STRING_LITERAL("\ttable ItemMaster\n"));

   EXEC SQL CREATE TABLE itemmast (
         im_itemwght INTEGER,
         im_itempric MONEY,
         im_itemnumb CHAR(5),
         im_itemdesc VARCHAR(47)
      ) ;
   if (sqlca.sqlcode)
      Handle_Error(sqlca.sqlcode, sqlca.sqlerrm);

   EXEC SQL CREATE UNIQUE INDEX im_itemnumb_idx ON itemmast (im_itemnumb) ;
   if (sqlca.sqlcode)
      Handle_Error(sqlca.sqlcode, sqlca.sqlerrm);
}