Compile function Copy_REACTOR_Record_To_SQL(Connection, Key, Record)

/*****************************************************************************\
	Copies the given REACTOR record to the MSSQL database.
	
	History
	-------
	06/21/2010    KRF   Original Programmer
	09/18/2017    DMB   Pull CurrModeKey from REACTOR_CHILD_KEY_IDS table instead
	                    of the REACTOR table.
\*****************************************************************************/

$insert REACTOR_EQUATES
$insert REACTOR_CHILD_KEY_IDS_EQUATES

Declare function SQL_Write, SQL_Write_MV, SQL_Format
Ans = ""

// Parse record into a dimensioned array for speed
Dim Rec(52)
MatParse Record into Rec

// List of key names and their values
Keys = "REACT_NO":@VM:SQL_Format(Key, "INT")

// Conversions
ReactType       = OConv(Rec(REACTOR_REACT_TYPE$), "[REACT_TYPE_CONV,OPSREF]")
ReactAssignment = OConv(Rec(REACTOR_REACT_ASSIGNMENT$), "[REACT_ASSIGN_CONV]")
* CurrModeKey     = Rec(REACTOR_CURR_MODE_KEY$)[1, @vm]
CurrModeKey     = Xlate('REACTOR_CHILD_KEY_IDS', Key, REACTOR_CHILD_KEY_IDS_REACT_MODE_KEY_IDS$, 'X')<1, 1>

// List of data fields and their values
DataFields  = "REACT_TYPE"          :@VM:SQL_Format(ReactType,                          "STR"):@FM
DataFields := "REDUCED_PRESS"       :@VM:SQL_Format(Rec(REACTOR_REDUCED_PRESS$),        "BIT"):@FM
DataFields := "REACT_ASSIGNMENT"    :@VM:SQL_Format(ReactAssignment,                    "STR"):@FM
DataFields := "TEMP_TYPE"           :@VM:SQL_Format(Rec(REACTOR_TEMP_TYPE$),            "STR"):@FM
DataFields := "REACT_DESC"          :@VM:SQL_Format(Rec(REACTOR_REACT_DESC$),           "STR"):@FM
DataFields := "CURR_MODE_KEY"       :@VM:SQL_Format(CurrModeKey,                        "STR"):@FM
DataFields := "HEAVY_DOPE"          :@VM:SQL_Format(Rec(REACTOR_HEAVY_DOPE$),           "BIT"):@FM
DataFields := "ATV"                 :@VM:SQL_Format(Rec(REACTOR_ATV$),                  "BIT"):@FM
DataFields := "INJECT_TYPE"         :@VM:SQL_Format(Rec(REACTOR_INJECT_TYPE$),          "STR"):@FM
DataFields := "SOS_SENSORS"         :@VM:SQL_Format(Rec(REACTOR_SOS_SENSORS$),          "BIT"):@FM
DataFields := "SERIAL_NO"           :@VM:SQL_Format(Rec(REACTOR_SERIAL_NO$),            "STR"):@FM
DataFields := "MFR_TYPE"            :@VM:SQL_Format(Rec(REACTOR_MFR_TYPE$),             "STR"):@FM
DataFields := "ASM_MFR_YEAR"        :@VM:SQL_Format(Rec(REACTOR_ASM_MFR_YEAR$),         "STR"):@FM
DataFields := "ARM_TYPE"            :@VM:SQL_Format(Rec(REACTOR_ARM_TYPE$),             "STR"):@FM
DataFields := "PROCESSOR"           :@VM:SQL_Format(Rec(REACTOR_PROCESSOR$),            "STR"):@FM
DataFields := "CONFIG_NOTES"        :@VM:SQL_Format(Rec(REACTOR_CONFIG_NOTES$),         "STR", 1):@FM
DataFields := "EXT_TYPE"            :@VM:SQL_Format(Rec(REACTOR_EXT_TYPE$),             "STR"):@FM
DataFields := "HTHF"                :@VM:SQL_Format(Rec(REACTOR_HTHF$),                 "BIT"):@FM
DataFields := "LAST_READ_HRS_DTM"   :@VM:SQL_Format(Rec(REACTOR_LAST_READ_HRS_DTM$),    "DATETIME"):@FM
DataFields := "LAST_READ_CYCLES_DTM":@VM:SQL_Format(Rec(REACTOR_LAST_READ_WFRS_DTM$),   "DATETIME"):@FM
DataFields := "WAFER_SIZE"          :@VM:SQL_Format(Rec(REACTOR_WAFER_SIZE$),           "STR"):@FM
DataFields := "SUSC_POCKET_SIZE"    :@VM:SQL_Format(Rec(REACTOR_SUSC_POCKET_SIZE$),     "STR"):@FM
DataFields := "PICK_PLACE"          :@VM:SQL_Format(Rec(REACTOR_PICK_PLACE$),           "BIT"):@FM
DataFields := "VENDOR"              :@VM:SQL_Format(Rec(REACTOR_VENDOR$),               "STR"):@FM
DataFields := "LOCATIONX"           :@VM:SQL_Format(Rec(REACTOR_LOCATIONX$),            "STR"):@FM
DataFields := "SUSC_POCKET_QTY"     :@VM:SQL_Format(Rec(REACTOR_SUSC_POCKET_QTY$),      "INT"):@FM
DataFields := "ACTIVE_LL_DISABLED"  :@VM:SQL_Format(Rec(REACTOR_ACTIVE_LL_DISABLED$),   "STR"):@FM

// Symbolics
DataFields := "TOOL_WH"             :@VM:SQL_Format({TOOL_WH_DESC},                     "STR"):@FM
DataFields := "TOOL_LOC"            :@VM:SQL_Format({TOOL_LOC_DESC},                    "STR"):@FM
DataFields := "LOCATION"            :@VM:SQL_Format({LOCATION},                         "STR"):@FM
DataFields := "AREA"                :@VM:SQL_Format({AREA},                             "STR")

// Write the data to the SQL database
Ans = SQL_Write(Connection, "REACTOR", Keys, DataFields)

//-------------------------------------------------------------------------------------------------
// Multi-valued Fields

// REACTOR_GAS_SRC

* If Ans EQ "" AND Rec(5) NE "" then
*    GasIDs = Rec(5)
*    NumVals = Count(GasIDs, @VM) + (GasIDs NE "")
*    For ValLoop = 1 to NumVals
*        mvKey  = "REACT_NO":@VM:SQL_Format(Key, "INT"):@FM
*        mvKey := "AREA":@VM:SQL_Format(Field(GasIDs<0, ValLoop>, "*", 1, 1), "STR"):@FM
*        mvKey := "CAB":@VM:SQL_Format(Field(GasIDs<0, ValLoop>, "*", 2, 1), "STR"):@FM
*        mvKey := "POS":@VM:SQL_Format(Field(GasIDs<0, ValLoop>, "*", 3, 1), "STR")
*        mvDataFields = ""
*        Ans = SQL_Write(Connection, "REACTOR_GAS_SRC", mvKey, mvDataFields);
*    Next Vals
*    
* end

// REACTOR_MFC
* If Ans EQ "" AND Rec(3) NE "" then
*    
*    // List of data fields and their values
*    MvFields  = "MFC_LOC":@FM:SQL_Format(Rec(3), "STR"):@RM
*    MvFields := "MFC_SERIAL":@FM:SQL_Format(Rec(4), "STR"):@RM
*    MvFields := "MFC_LOC_PN":@FM:SQL_Format(Rec(8), "STR")
*    
*    // Write the data to the SQL database
*    Ans = SQL_Write_MV(Connection, "REACTOR_MFC", Keys, MvFields);
*    
* end

// REACTOR_ESCALATION
If Ans EQ "" AND Rec(10) NE "" then
	
	// List of data fields and their values
	MvFields = "ACTIVE_ESCALATION":@FM:SQL_Format(Rec(10), "STR")
	
	// Write the data to the SQL database
	Ans = SQL_Write_MV(Connection, "REACTOR_ESCALATION", Keys, MvFields);
	
end


// REACTOR_ESC_START_DTM
If Ans EQ "" AND Rec(9) NE "" then
	
	// List of data fields and their values
	MvFields = "ESC_START_DTM":@FM:SQL_Format(Rec(9), "DATETIME")
	
	// Write the data to the SQL database
	Ans = SQL_Write_MV(Connection, "REACTOR_ESC_START_DTM", Keys, MvFields);
	
end

Return Ans

