Define() establishes specific data definitions. This involves defining columns/fields and creating the tables/files with optional indexes.
Below is the code for Define():
//
// Define()
//
// Open the table, if it exists. Otherwise create and open the table
//
static void Define()
{
bool do_create = false;
Console.WriteLine("DEFINE");
try
{
Console.WriteLine("\tOpen table...");
MyTable.Open("custmast", OPEN_MODE.NORMAL_OPEN);
}
catch (CTException)
{
// table does not exist. Try to create it
do_create = true;
}
if (do_create)
{
// create the table
Console.WriteLine("\tAdd fields...");
try
{
MyTable.AddField("cm_custnumb", FIELD_TYPE.FSTRING, 4);
MyTable.AddField("cm_custzipc", FIELD_TYPE.FSTRING, 9);
MyTable.AddField("cm_custstat", FIELD_TYPE.FSTRING, 2);
MyTable.AddField("cm_custrtng", FIELD_TYPE.FSTRING, 1);
MyTable.AddField("cm_custname", FIELD_TYPE.VSTRING, 47);
MyTable.AddField("cm_custaddr", FIELD_TYPE.VSTRING, 47);
MyTable.AddField("cm_custcity", FIELD_TYPE.VSTRING, 47);
Console.WriteLine("\tCreate table...");
MyTable.Create("custmast", CREATE_MODE.NORMAL_CREATE);
MyTable.Open("custmast", OPEN_MODE.NORMAL_OPEN);
}
catch (CTException E)
{
Handle_Exception(E);
}
}
else
Check_Table_Mode(MyTable);
}
//
// Check_Table_Mode()
//
// Check if existing table has transaction processing flag enabled.
// If a table is under transaction processing control, modify the
// table mode to disable transaction processing
//
static void Check_Table_Mode(CTTable table)
{
try
{
// get table create mode
CREATE_MODE mode = table.GetCreateMode();
// check if table is under transaction processing control
if ((mode & CREATE_MODE.TRNLOG_CREATE) != 0)
{
// change file mode to disable transaction processing
mode ^= CREATE_MODE.TRNLOG_CREATE;
table.UpdateCreateMode(mode);
}
}
catch (CTException E)
{
Handle_Exception(E);
}
}