COMPILE ROUTINE MOVE_PROD_SPEC(Dummy) ROWDEF (CHARSTR) DECLARE SUBROUTINE SEND_INFO, SEND_DYN, Utility, msg $INSERT PR_SPEC_EQU $INSERT PRS_LAYER_EQU $INSERT PRS_SURFACE_EQU $INSERT PRS_SUBSTRATE_EQU OPEN 'PROD_SPEC' TO FileIn ELSE DEBUG GOTO Bail END OPEN 'PR_SPEC' TO PRSpec ELSE DEBUG GOTO Bail END OPEN 'PRS_LAYER' TO PRSLayer ELSE debug GOTO Bail END OPEN 'PRS_SURFACE' TO PRSSurface ELSE debug GOTO Bail END OPEN 'PRS_SUBSTRATE' TO PRSSubstrate ELSE debug GOTO Bail END SELECT FileIn RecCnt = 0 Done = 0 LOOP ReadNext PS_No ELSE Done = 1 UNTIL Done READ ProdSpecRec FROM FileIn,PS_No THEN PRSpecRec = '' PRSpecRec = ProdSpecRec<1> PRSpecRec = ProdSpecRec<2> PRSpecRec = ProdSpecRec<9> PRSpecRec = ProdSpecRec<8> PRSpecRec = ProdSpecRec<3> PRSpecRec = ProdSpecRec<49> PRSpecRec = ProdSpecRec<4> PRSpecRec = ProdSpecRec<6> PRSpecRec = ProdSpecRec<5> PRSpecRec = ProdSpecRec<7> PRSpecRec = ProdSpecRec<47> PRSpecRec = ProdSpecRec<48> PRSpecRec = ProdSpecRec<93> PRSpecRec = ProdSpecRec<85> PRSpecRec = ProdSpecRec<17> PRSpecRec = ProdSpecRec<22> PRSpecRec = ProdSpecRec<20> PRSpecRec = ProdSpecRec<97> PRSpecRec = ProdSpecRec<98> PRSpecRec = ProdSpecRec<88> PRSpecRec = ProdSpecRec<68> PRSpecRec = '' PRSpecRec = '' SpecAddtl = ProdSpecRec<25> PRSpecRec = SpecAddtl<1,10> IF SpecAddtl<1,10> = '' THEN PRSpecRec = '' END ELSE PRSpecRec = ICONV(OCONV(SpecAddtl<1,17>,'D'):' ':OCONV(SpecAddtl<1,18>,'MTS'),'DT') END PRSpecRec = SpecAddtl<1,2> IF SpecAddtl<1,2> = '' THEN PRSpecRec = '' END ELSE PRSpecRec = ICONV(OCONV(SpecAddtl<1,13>,'D'):' ':OCONV(SpecAddtl<1,14>,'MTS'),'DT') END PRSpecRec = SpecAddtl<1,9> IF SpecAddtl<1,9> = '' THEN PRSpecRec = '' END ELSE PRSpecRec = ICONV(OCONV(SpecAddtl<1,15>,'D'):' ':OCONV(SpecAddtl<1,16>,'MTS'),'DT') END PRSpecRec = SpecAddtl<1,1> IF SpecAddtl<1,1> = '' THEN PRSpecRec = '' END ELSE PRSpecRec = ICONV(OCONV(SpecAddtl<1,11>,'D'):' ':OCONV(SpecAddtl<1,12>,'MTS'),'DT') END WRITE PRSpecRec ON PRSpec,PS_No THEN RecCnt += 1 Send_Info(RecCnt) END EpiLayers = ProdSpecRec<15> CONVERT CHAR(248) TO @RM IN EpiLayers CONVERT @VM TO @FM IN EpiLayers CONVERT @SVM TO @VM IN EpiLayers CONVERT '~' TO @VM IN EpiLayers FOR I = 1 TO COUNT(EpiLayers,@RM) + (EpiLayers NE '') EpiLayer = FIELD(EpiLayers,@RM,I,1) PRSLayerRec = '' BEGIN CASE CASE I = 1 Layer = 'L1' PRSLayerRec = SpecAddtl<1,6> PRSLayerRec = SpecAddtl<1,7> PRSLayerRec = SpecAddtl<1,4> PRSLayerRec = SpecAddtl<1,8> PRSLayerRec = SpecAddtl<1,5> CASE I = 2 ; Layer = 'L2' CASE I = 3 ; Layer = '2' CASE 1 ; Layer = I-1 END CASE PRSLayerRec<1> = EpiLayer<10> PRSLayerRec<2> = EpiLayer<11> PRSLayerRec<3> = EpiLayer<12> PRSLayerRec<4> = EpiLayer<1> PRSLayerRec<5> = EpiLayer<2> PRSLayerRec<6> = EpiLayer<3> PRSLayerRec<7> = EpiLayer<15> PRSLayerRec<8> = ICONV(OCONV(EpiLayer<4>,'MD3'),'MD5') PRSLayerRec<9> = ICONV(OCONV(EpiLayer<5>,'MD3'),'MD5') PRSLayerRec<10> = EpiLayer<6> PRSLayerRec<11> = EpiLayer<14> PRSLayerRec<12> = ICONV(OCONV(EpiLayer<7>,'MD2'),'MD3') PRSLayerRec<13> = ICONV(OCONV(EpiLayer<8>,'MD2'),'MD3') PRSLayerRec<14> = EpiLayer<9> PRSLayerRec<15> = EpiLayer<13> PRSLayerKey = PS_No:'*':Layer WRITE PRSLayerRec ON PRSLayer,PRSLayerKey THEN Send_Info(RecCnt:' - ':PRSLayerKey) END NEXT I * PreEpi surface Stage = 'PE' ;* Pre EPI SurfRec = '' SurfRec = ProdSpecRec<50> SurfRec = ProdSpecRec<51> SurfRec = ProdSpecRec<52> SurfRec = ProdSpecRec<53> SurfRec = ProdSpecRec<54> SurfRec = ProdSpecRec<55> SurfRec = ProdSpecRec<56> SurfRec = ProdSpecRec<57> *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< SurfRec = ProdSpecRec<69> SurfRec = ProdSpecRec<70> SurfRec = ProdSpecRec<71> SurfRec = ProdSpecRec<77> SurfRec = ProdSpecRec<100> SurfRec = ProdSpecRec<101> StageKey = PS_No:'*':Stage WRITE SurfRec ON PRSSurface,StageKey THEN NULL END ELSE debug END Stage = 'PSE' ;* Post EPI SurfRec = '' SurfRec = ProdSpecRec<58> SurfRec = ProdSpecRec<59> SurfRec = ProdSpecRec<60> SurfRec = ProdSpecRec<62> SurfRec = ProdSpecRec<63> SurfRec = ProdSpecRec<65> SurfRec = ProdSpecRec<66> SurfRec = ProdSpecRec<67> SurfRec = ProdSpecRec<61> *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< SurfRec = ProdSpecRec<102> SurfRec = ProdSpecRec<103> StageKey = PS_No:'*':Stage WRITE SurfRec ON PRSSurface,StageKey THEN NULL END ELSE debug END Stage = 'FW' ;* First Wafer SurfRec = '' *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< SurfRec = ProdSpecRec<72> SurfRec = ProdSpecRec<73> SurfRec = ProdSpecRec<74> SurfRec = ProdSpecRec<78> *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< StageKey = PS_No:'*':Stage WRITE SurfRec ON PRSSurface,StageKey THEN NULL END ELSE debug END Stage = 'PC' ;* Post Clean SurfRec = '' *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< *SurfRec = ProdSpecRec< SurfRec = ProdSpecRec<75> SurfRec = ProdSpecRec<76> *SurfRec = ProdSpecRec< SurfRec = ProdSpecRec<79> SurfRec = ProdSpecRec<104> SurfRec = ProdSpecRec<105> StageKey = PS_No:'*':Stage WRITE SurfRec ON PRSSurface,StageKey THEN NULL END ELSE debug END SubStrate = ProdSpecRec<14> SubRec = '' SubRec = SubStrate<1,2> SubRec = SubStrate<1,3> SubRec = SubStrate<1,17> SubRec = SubStrate<1,1> SubRec = ICONV(OCONV(SubStrate<1,4>,'MD2'),'MD5') SubRec = SubStrate<1,5> SubRec = SubStrate<1,6> SubRec = SubStrate<1,7> SubRec = SubStrate<1,11> SubRec = SubStrate<1,10> SubRec = SubStrate<1,22> SubRec = SubStrate<1,14> SubRec = SubStrate<1,12> SubRec = SubStrate<1,8>:@VM:Substrate<1,9>:@VM:Substrate<1,21> *SubRec = SubStrate<1,15> ;**** This is the missing processing instructions SubRec = SubStrate<1,18> SubRec = SubStrate<1,19> SubRec = SubStrate<1,20> SubRec = SubStrate<1,23> SubRec = SubStrate<1,24> WRITE SubRec ON PRSSubstrate,PS_No THEN NULL END ELSE debug END END REPEAT *UNLOCK All * * * * * * * Bail: * * * * * * * END