Compile function Copy_NCR_Record_To_SQL(Connection, Key, Record) /*****************************************************************************\ Copies the given NCR record to the MSSQL database. History ------- 04/22/2010 KRF Original Programmer 07/01/2012 KRF Removed REJ_CNT_FIELD, REJ_CNT_VALUE, and REJ_CNT_ORIG fields and added TOT_REJ symbolic. 03/15/2019 DJS Updated Dim Rec(76) to Dim Rec(82) to resolve SQL_ERROR. \*****************************************************************************/ $insert NCR_EQUATES Declare function SQL_Write, SQL_Write_MV, SQL_Format Ans = "" // Parse record into a dimensioned array for speed ! Caution! Dim size must me large enough for all physical columns. //Dim Rec(76) Dim Rec(82) MatParse Record into Rec // List of key names and their values Keys = "SEQ":@VM:SQL_Format(Key, "INT") // Conversions NCR_Status = OConv(Rec(NCR_STATUS$), "[NCR_STATUS_CONV]") NCR_LossBy = OConv(Rec(NCR_LOSS_BY$), "[NCR_LOSS_BY_CONV]") // List of data fields and their values DataFields = "ENTRY_ID" :@VM:SQL_Format(Rec(NCR_ENTRY_ID$), "STR"):@FM DataFields := "ENTRY_DATE" :@VM:SQL_Format(Rec(NCR_ENTRY_DATE$), "DATE"):@FM DataFields := "ENTRY_TIME" :@VM:SQL_Format(Rec(NCR_ENTRY_TIME$), "TIME"):@FM DataFields := "DEPT" :@VM:SQL_Format(Rec(NCR_DEPT$), "STR"):@FM DataFields := "SHIFT" :@VM:SQL_Format(Rec(NCR_SHIFT$), "STR"):@FM DataFields := "STATUS" :@VM:SQL_Format(NCR_Status, "STR"):@FM DataFields := "LOSS_COMMENTS" :@VM:SQL_Format(Rec(NCR_LOSS_COMMENTS$), "STR", 1):@FM DataFields := "AC_COMMENTS" :@VM:SQL_Format(Rec(NCR_AC_COMMENTS$), "STR", 1):@FM DataFields := "DEPT_RESP" :@VM:SQL_Format(Rec(NCR_DEPT_RESP$), "STR"):@FM DataFields := "DEPT_MGR_SIG" :@VM:SQL_Format(Rec(NCR_DEPT_MGR_SIG$), "STR"):@FM DataFields := "AUTH_SHIP_SIG" :@VM:SQL_Format(Rec(NCR_AUTH_SHIP_SIG$), "STR"):@FM DataFields := "AUTH_REWORK_SIG" :@VM:SQL_Format(Rec(NCR_AUTH_REWORK_SIG$), "STR"):@FM DataFields := "AUTH_REJ_SIG" :@VM:SQL_Format(Rec(NCR_AUTH_REJ_SIG$), "STR"):@FM DataFields := "AUTH_DEV_SIG" :@VM:SQL_Format(Rec(NCR_AUTH_DEV_SIG$), "STR"):@FM DataFields := "VP_SIG" :@VM:SQL_Format(Rec(NCR_VP_SIG$), "STR"):@FM * DataFields := "REJ_CNT_FIELD" :@VM:SQL_Format(Rec(NCR_REJ_CNT_FIELD$), "STR"):@FM * DataFields := "REJ_CNT_VALUE" :@VM:SQL_Format(Rec(NCR_REJ_CNT_VALUE$), "INT"):@FM DataFields := "GENERAL_COMMENTS" :@VM:SQL_Format(Rec(NCR_GENERAL_COMMENTS$), "STR", 1):@FM DataFields := "VERIFIED_COMMENTS":@VM:SQL_Format(Rec(NCR_VERIFIED_COMMENTS$), "STR", 1):@FM DataFields := "LOSS_CODE_ORIG" :@VM:SQL_Format(Rec(NCR_LOSS_CODE_ORIG$), "STR"):@FM DataFields := "AC_CODE_ORIG" :@VM:SQL_Format(Rec(NCR_AC_CODE_ORIG$), "STR"):@FM * DataFields := "REJ_CNT_ORIG" :@VM:SQL_Format(Rec(NCR_REJ_CNT_ORIG$), "INT"):@FM DataFields := "DEPT_MGR_COMMENTS":@VM:SQL_Format(Rec(NCR_DEPT_MGR_COMMENTS$), "STR", 1):@FM DataFields := "CONTAIN_ACTIONS" :@VM:SQL_Format(Rec(NCR_CONTAIN_ACTIONS$), "STR", 1):@FM DataFields := "TTHICK_AVG" :@VM:SQL_Format(Rec(NCR_TTHICK_AVG$), "DEC", "2"):@FM DataFields := "TTHICK_STDEV" :@VM:SQL_Format(Rec(NCR_TTHICK_STDEV$), "DEC", "3"):@FM DataFields := "TTHICK_MAX" :@VM:SQL_Format(Rec(NCR_TTHICK_MAX$), "DEC", "2"):@FM DataFields := "TTHICK_MIN" :@VM:SQL_Format(Rec(NCR_TTHICK_MIN$), "DEC", "2"):@FM DataFields := "TTHICK_UNIF" :@VM:SQL_Format(Rec(NCR_TTHICK_UNIF$), "DEC", "2"):@FM DataFields := "TRES_AVG" :@VM:SQL_Format(Rec(NCR_TRES_AVG$), "DEC", "3"):@FM DataFields := "TRES_STDEV" :@VM:SQL_Format(Rec(NCR_TRES_STDEV$), "DEC", "3"):@FM DataFields := "TRES_MAX" :@VM:SQL_Format(Rec(NCR_TRES_MAX$), "DEC", "3"):@FM DataFields := "TRES_MIN" :@VM:SQL_Format(Rec(NCR_TRES_MIN$), "DEC", "3"):@FM DataFields := "TRES_UNIF" :@VM:SQL_Format(Rec(NCR_TRES_UNIF$), "DEC", "2"):@FM DataFields := "LPD" :@VM:SQL_Format(Rec(NCR_LPD$), "INT"):@FM DataFields := "PITS" :@VM:SQL_Format(Rec(NCR_PITS$), "INT"):@FM DataFields := "MOUNDS" :@VM:SQL_Format(Rec(NCR_MOUNDS$), "INT"):@FM DataFields := "BL_DEFECTS" :@VM:SQL_Format(Rec(NCR_BL_DEFECTS$), "INT"):@FM DataFields := "STACK_FAULTS" :@VM:SQL_Format(Rec(NCR_STACK_FAULTS$), "INT"):@FM DataFields := "SPIKES" :@VM:SQL_Format(Rec(NCR_SPIKES$), "INT"):@FM DataFields := "SPOTS" :@VM:SQL_Format(Rec(NCR_SPOTS$), "INT"):@FM DataFields := "SPOT_FOV" :@VM:SQL_Format(Rec(NCR_SPOT_FOV$), "INT"):@FM DataFields := "SCRATCHES" :@VM:SQL_Format(Rec(NCR_SCRATCHES$), "INT"):@FM DataFields := "SCRATCH_LEN" :@VM:SQL_Format(Rec(NCR_SCRATCH_LEN$), "INT"):@FM DataFields := "SURF_DEFECTS" :@VM:SQL_Format(Rec(NCR_SURF_DEFECTS$), "INT"):@FM DataFields := "SURF_HAZE" :@VM:SQL_Format(Rec(NCR_SURF_HAZE$), "DEC", "2"):@FM DataFields := "UNIT_TYPE" :@VM:SQL_Format(Rec(NCR_UNIT_TYPE$), "STR"):@FM DataFields := "LOSS_BY" :@VM:SQL_Format(NCR_LossBy, "STR"):@FM DataFields := "LOSS_STAGE" :@VM:SQL_Format(Rec(NCR_LOSS_STAGE$), "STR"):@FM DataFields := "AC_CODE" :@VM:SQL_Format(Rec(NCR_AC_CODE$), "STR"):@FM DataFields := "LOSS_CODE" :@VM:SQL_Format(Rec(NCR_LOSS_CODE$), "STR"):@FM DataFields := "WO_NO" :@VM:SQL_Format(Rec(NCR_WO_NO$), "STR"):@FM DataFields := "WO_STEP" :@VM:SQL_Format(Rec(NCR_WO_STEP$), "INT"):@FM DataFields := "WO_MAT_CASS_NO" :@VM:SQL_Format(Rec(NCR_WO_MAT_CASS_NO$), "INT"):@FM DataFields := "REC_VER" :@VM:SQL_Format(Rec(NCR_REC_VER$), "INT"):@FM DataFields := "LAST_QTY_DTM" :@VM:SQL_Format(Rec(NCR_LAST_QTY_DTM$), "DATETIME"):@FM // Symblics DataFields := "TOT_REJ" :@VM:SQL_Format({TOT_REJ}, "INT"):@FM DataFields := "AC_DESC" :@VM:SQL_Format({AC_DESC}, "STR"):@FM DataFields := "CUST_ID" :@VM:SQL_Format({CUST_ID}, "INT"):@FM DataFields := "CUST_NAME" :@VM:SQL_Format({CUST_NAME}[1,50], "STR"):@FM DataFields := "LOSS_DESC" :@VM:SQL_Format({LOSS_DESC}, "STR"):@FM DataFields := "PROD_SPEC_NO":@VM:SQL_Format({PROD_SPEC_NO}, "STR"):@FM DataFields := "REACTOR_TYPE":@VM:SQL_Format({REACTOR_TYPE}, "STR"):@FM DataFields := "SAP_BATCH_NO":@VM:SQL_Format({SAP_BATCH_NO}, "STR"):@FM DataFields := "CASS_ID_SAP" :@VM:SQL_Format({CASS_ID_SAP}, "STR"):@FM DataFields := "ENTRY_DTM" :@VM:SQL_Format({ENTRY_DTM}, "DATETIME") // Write the data to the SQL database Ans = SQL_Write(Connection, "NCR", Keys, DataFields) //------------------------------------------------------------------------------------------------- // Multi-valued Fields // RDS IDs If Ans EQ "" AND (Rec(NCR_RDS_ID$) NE "" OR Rec(NCR_REACTOR$) NE "") then // List of data fields and their values MvFields = "RDS_ID" :@FM:SQL_Format(Rec(NCR_RDS_ID$), "INT"):@RM MvFields := "REACTOR":@FM:SQL_Format(Rec(NCR_REACTOR$), "INT") // Write the data to the SQL database Ans = SQL_Write_MV(Connection, "NCR_RDS", Keys, MvFields); end // Thick Reads If Ans EQ "" AND Rec(NCR_THICK_READ$) NE "" then // List of data fields and their values MvFields = "THICK_READ":@FM:SQL_Format(Rec(NCR_THICK_READ$), "DEC", 2) // Write the data to the SQL database Ans = SQL_Write_MV(Connection, "NCR_THICK_READS", Keys, MvFields); end // RHO Reads If Ans EQ "" AND Rec(NCR_SHEETRHO_READ$) NE "" then // List of data fields and their values MvFields = "SHEETRHO_READ":@FM:SQL_Format(Rec(NCR_SHEETRHO_READ$), "DEC", 2) // Write the data to the SQL database Ans = SQL_Write_MV(Connection, "NCR_RHO_READS", Keys, MvFields); end // Trej Counts If Ans EQ "" AND Rec(NCR_TREJ_CNT$) NE "" then // List of data fields and their values MvFields = "TREJ_CNT":@FM:SQL_Format(Rec(NCR_TREJ_CNT$), "INT") // Write the data to the SQL database Ans = SQL_Write_MV(Connection, "NCR_TREJ_CNTS", Keys, MvFields); end // Combines the SLOT_REJECT, CASS_NO, and CASSETTE_SLOT edittables If Ans EQ "" AND (Rec(57) NE "" OR Rec(58) NE "" OR Rec(59) NE "" OR Rec(60) NE "" OR Rec(61) NE "" OR Rec(65) NE "" OR Rec(66) NE "" OR Rec(67) NE "" OR Rec(68) NE "" OR Rec(69) NE "" OR Rec(70) NE "" OR Rec(71) NE "" OR Rec(72) NE "" OR Rec(73) NE "") then // List of data fields and their values MvFields = "SLOT_NO":@FM:SQL_Format(Rec(57), "INT"):@RM MvFields := "CASS_NO":@FM:SQL_Format(Rec(58), "INT"):@RM MvFields := "POCKET_NO":@FM:SQL_Format(Rec(59), "INT"):@RM MvFields := "OUT_CASS_NO":@FM:SQL_Format(Rec(60), "INT"):@RM MvFields := "OUT_SLOT_NO":@FM:SQL_Format(Rec(61), "INT"):@RM MvFields := "WM_RDS_NO":@FM:SQL_Format(Rec(65), "INT"):@RM MvFields := "ZONE":@FM:SQL_Format(Rec(66), "STR"):@RM MvFields := "REJ_WAFER_ID":@FM:SQL_Format(Rec(67), "STR"):@RM MvFields := "PREV_NCR_NO":@FM:SQL_Format(Rec(68), "STR"):@RM MvFields := "REJ_MET_NO":@FM:SQL_Format(Rec(69), "STR"):@RM MvFields := "MU_WO_NO":@FM:SQL_Format(Rec(70), "STR"):@RM MvFields := "MU_STEP":@FM:SQL_Format(Rec(71), "STR"):@RM MvFields := "MU_CASS":@FM:SQL_Format(Rec(72), "STR"):@RM MvFields := "MU_SLOT":@FM:SQL_Format(Rec(73), "STR") // Write the data to the SQL database Ans = SQL_Write_MV(Connection, "NCR_SLOTS", Keys, MvFields); end // NCR_LOT_NUM LotNum = {LOT_NUM} If Ans EQ "" AND LotNum NE "" then // List of data fields and their values MvFields = "LOT_NUM":@FM:SQL_Format(LotNum, "STR") // Write the data to the SQL database Ans = SQL_Write_MV(Connection, "NCR_LOT_NUM", Keys, MvFields); end // NCR_PART_NUM PartNo = {PART_NO} If Ans EQ "" AND PartNo NE "" then // List of data fields and their values MvFields = "PART_NO":@FM:SQL_Format(PartNo, "STR") // Write the data to the SQL database Ans = SQL_Write_MV(Connection, "NCR_PART_NUM", Keys, MvFields); end Return Ans