open-insight/LSL2/STPROC/LOAD_CLEAN_INSP_WMO.txt
Infineon\StieberD 7762b129af pre cutover push
2024-09-04 20:33:41 -07:00

163 lines
5.4 KiB
Plaintext

COMPILE ROUTINE LOAD_CLEAN_INSP_WMO(Dummy)
ROWDEF(CHARSTR)
DECLARE SUBROUTINE obj_Schedule,Send_Dyn,Send_Info, ErrMsg
DECLARE FUNCTION Get_Status, Set_Printer, NextKey
$INSERT OIPRINT_EQUATES
$INSERT WM_OUT_EQUATES
$INSERT CLEAN_INSP_EQUATES
$INSERT SURFACE_SCAN_EQUATES
$INSERT PROD_SPEC_EQU
OPEN 'WM_OUT' TO WMOutTable ELSE GOTO Bail
OPEN 'CLEAN_INSP' TO CITable ELSE GOTO Bail
SELECT WMOutTable
Done = 0
RecCnt = 0
LOOP
READNEXT WMOutKey ELSE Done = 1
UNTIL Done
RecCnt += 1
Send_Info(RecCnt)
READ WMOutRec FROM WMOutTable,WMOutKey THEN
WONo = WMOutKey[1,'*']
WOStep = WMOutKey[COL2()+1,'*']
CassNo = WMOutKey[COL2()+1,'*']
IF WONo ='' OR WOStep = '' OR CassNo = '' THEN GOTO Skip
Stage = 'PC'
PSNo = XLATE('WO_STEP',WONo:'*':WOStep,1,'X')
PSrec = XLATE('PROD_SPEC',PSNo,'','X')
CINo = WMOutRec<WM_OUT_CI_NO$>
IF CINo = '' THEN
* Build the basic CleanInspRecord
CINo = NextKey('CLEAN_INSP')
WMOutRec<WM_OUT_CI_NO$> = CINo
WRITE WMOutRec ON WMOutTable,WMOutKey ELSE
DEBUG
END
END ELSE
READ CIRec FROM CITable,CINo ELSE
ErrMsg('Unable to read CIRec ':QUOTE(CINo))
END
END
PSNo = XLATE('WO_STEP',WONo:'*':WOStep,1,'X')
PSrec = XLATE('PROD_SPEC',PSNo,'','X')
ReactorType = PSRec<PROD_SPEC_REACTOR_TYPE$>
CIRec = ''
CIRec<CLEAN_INSP_WO_NO$> = WONo
CIRec<CLEAN_INSP_WO_STEP$> = WOStep
CIRec<CLEAN_INSP_CASS_NO$> = CassNo
CIRec<CLEAN_INSP_STAGE$> = 'POST'
CIRec<CLEAN_INSP_RDS_NO$> = ''
CIRec<CLEAN_INSP_SPEC_BRIGHTLIGHT$> = PSRec<PROD_SPEC_POST_CLEAN_BRIGHTLIGHT$>
CIRec<CLEAN_INSP_SPEC_SURFSCAN$> = PSRec<PROD_SPEC_POST_CLEAN_SURFSCAN$>
CIRec<CLEAN_INSP_SPEC_SURFSCAN_RECIPE$> = PSRec<PROD_SPEC_POST_CLEAN_SURFSCAN_RECIPE$>
IF CIRec<CLEAN_INSP_SPEC_BRIGHTLIGHT$> = 1 THEN
CIRec<CLEAN_INSP_SPEC_PITS$> = PSRec<PROD_SPEC_POST_PITS$>
CIRec<CLEAN_INSP_SPEC_MOUNDS$> = PSRec<PROD_SPEC_POST_MOUNDS$>
CIRec<CLEAN_INSP_SPEC_BL_DEFECTS$> = PSRec<PROD_SPEC_POST_BL_DEFECTS$>
CIRec<CLEAN_INSP_SPEC_SPOTS$> = PSRec<PROD_SPEC_POST_SPOTS$>
CIRec<CLEAN_INSP_SPEC_FOV$> = PSRec<PROD_SPEC_POST_FOV$>
CIRec<CLEAN_INSP_SPEC_SCRATCHES$> = PSRec<PROD_SPEC_POST_SCRATCHES$>
CIRec<CLEAN_INSP_SPEC_SCRATCH_LEN$> = PSRec<PROD_SPEC_POST_SCRATCH_LEN$>
CIRec<CLEAN_INSP_SPEC_LPD$> = PSRec<PROD_SPEC_POST_LPD$>
CIRec<CLEAN_INSP_SPEC_STACK_FAULTS$> = PSRec<PROD_SPEC_POST_STACK_FAULTS$>
CIRec<CLEAN_INSP_SPEC_SPIKES$> = PSRec<PROD_SPEC_POST_SPIKES$>
END
CIRec<CLEAN_INSP_SPEC_SURF_HAZE$> = PSRec<PROD_SPEC_POST_CLEAN_SURF_HAZE$>
CIRec<CLEAN_INSP_SPEC_SURF_DEFECTS$> = PSRec<PROD_SPEC_POST_CLEAN_SURF_DEFECTS$>
CIRec<CLEAN_INSP_SPEC_SS_SAMP_QTY$> = PSRec<PROD_SPEC_POST_CLEAN_SS_SAMP_QTY$>
CIRec<CLEAN_INSP_SPEC_CLEAN_SUBOXIDE$> = XLATE('PROD_SPEC',PSNo,'SUB_OXIDE_STRIP','X')
CIRec<CLEAN_INSP_SPEC_CLEAN_OXIDE_ANGSTROMS$> = XLATE('PROD_SPEC',PSNo,'SUB_OXIDE_ANGSTROMS','X')
CIRec<CLEAN_INSP_SPEC_CLEAN_TOOL$> = XLATE('PROD_SPEC',PSNo,'SUB_POST_CLEAN','X')
CIRec<CLEAN_INSP_SPEC_CLEAN_AKRION_RECIPE$> = XLATE('PROD_SPEC',PSNo,'POST_AKRION_RECIPE','X')
CIRec<CLEAN_INSP_CLEAN_CODE$> = WMOutRec<WM_OUT_POST_CODE$>
CIRec<CLEAN_INSP_CLEAN_BOAT_ID$> = WMOutRec<WM_OUT_POST_BOAT_ID$>
CIRec<CLEAN_INSP_CLEAN_SRD_NO$> = WMOutRec<WM_OUT_POST_SRD_NO$>
CIRec<CLEAN_INSP_CLEAN_SIG$> = WMOutRec<WM_OUT_POST_EPI_SIG$>
CIRec<CLEAN_INSP_CLEAN_SIG_DTM$> = WMOutRec<WM_OUT_POST_EPI_SIG_DTM$>
CIRec<CLEAN_INSP_PITS$> = WMOutRec<WM_OUT_POST_PITS$>
CIRec<CLEAN_INSP_MOUNDS$> = WMOutRec<WM_OUT_POST_MOUNDS$>
CIRec<CLEAN_INSP_LPD_IN$> = WMOutRec<WM_OUT_LPD_FIRSTWAFER$>
CIRec<CLEAN_INSP_LPD_OUT$> = WMOutRec<WM_OUT_LPD_POSTCLEAN$>
CIRec<CLEAN_INSP_INSP_SIG$> = WMOutRec<WM_OUT_SUP_VER_SIG$>
CIRec<CLEAN_INSP_INSP_SIG_DTM$> = WMOutRec<WM_OUT_SUP_VER_SIG_DTM$>
CIRec<CLEAN_INSP_BL_DEFECTS$> = WMOutRec<WM_OUT_POST_BL_DEFECTS$>
CIRec<CLEAN_INSP_STACK_FAULTS$> = WMOutRec<WM_OUT_POST_STACK_FAULTS$>
CIRec<CLEAN_INSP_SPIKES$> = WMOutRec<WM_OUT_POST_SPIKES$>
CIRec<CLEAN_INSP_SPOTS$> = WMOutRec<WM_OUT_POST_SPOTS$>
CIRec<CLEAN_INSP_FOV$> = WMOutRec<WM_OUT_POST_FOV$>
CIRec<CLEAN_INSP_SCRATCHES$> = WMOutRec<WM_OUT_POST_SCRATCHES$>
CIRec<CLEAN_INSP_SCRATCH_LEN$> = WMOutRec<WM_OUT_POST_SCRATCH_LEN$>
SurfScanKey = WONO:'*':WOStep:'*':CassNo:'*':'PC'
SurfScanRec = XLATE('SURFACE_SCAN',SurfScanKey,'','X')
IF SurfScanRec NE '' THEN
CIRec<CLEAN_INSP_SCAN_TOOL$> = SurfScanRec<SURFACE_SCAN_SCAN_TOOL$>
CIRec<CLEAN_INSP_SCAN_DTM$> = SurfScanRec<SURFACE_SCAN_SCAN_DTM$>
CIRec<CLEAN_INSP_SCAN_SUM_OF_DEF_MIN$> = SurfScanRec<SURFACE_SCAN_SUM_OF_DEF_MIN$>
CIRec<CLEAN_INSP_SCAN_SUM_OF_DEF_MAX$> = SurfScanRec<SURFACE_SCAN_SUM_OF_DEF_MAX$>
CIRec<CLEAN_INSP_SCAN_SUM_OF_DEF_AVG$> = SurfScanRec<SURFACE_SCAN_SUM_OF_DEF_AVG$>
CIRec<CLEAN_INSP_SCAN_HAZE_AVG_MIN$> = SurfScanRec<SURFACE_SCAN_HAZE_AVG_MIN$>
CIRec<CLEAN_INSP_SCAN_HAZE_AVG_MAX$> = SurfScanRec<SURFACE_SCAN_HAZE_AVG_MAX$>
CIRec<CLEAN_INSP_SCAN_HAZE_AVG_AVG$> = SurfScanRec<SURFACE_SCAN_HAZE_AVG_AVG$>
END
WRITE CIRec ON CITable,CINo THEN
*Send_Dyn(CINo:' ':RecCnt)
END
END
* * * * * *
Skip:
* * * * * *
REPEAT
* * * * * * *
Bail:
* * * * * * *