added LSL2 stored procedures

This commit is contained in:
Infineon\StieberD
2024-03-25 14:46:21 -07:00
parent 09f1a66046
commit c667dd56eb
1655 changed files with 527967 additions and 0 deletions

View File

@ -0,0 +1,922 @@
COMPILE SUBROUTINE PRINT_WM_IN_LABELS(WO_No , MultiStep )
***** This appears to be dead JCH
$INSERT LOGICAL
$INSERT MSG_EQUATES
$INSERT OIPRINT_EQUATES
$INSERT PROD_SPEC_EQUATES
$INSERT QUOTE_SPEC_EQU
$INSERT WO_LOG_EQU
$INSERT ORDER_DET_EQU
$INSERT WM_IN_EQUATES
DECLARE FUNCTION Msg, Get_Printer, Set_Printer, Utility, obj_Install, Printer_Select, FieldCount
Declare function Direct_Print, Environment_Services
DECLARE SUBROUTINE Btree.Extract, ErrMsg
* 5/18/2006 - Cloned from Print_Cass_Labels
EQU PI$LEFT TO 1
EQU PI$TOP TO 2
EQU PI$RIGHT TO 3
EQU PI$BOTTOM TO 4
EQU PI$WIDTH TO 5
EQU PI$HEIGHT TO 6
EQU PI$SIZE TO 7
IF NOT(ASSIGNED(WONo)) THEN WONo = '' ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade
IF NOT(ASSIGNED(MultiStep)) THEN MultiStep = '' ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade
IF WONo = '' THEN RETURN ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade
IF MultiStep = '' THEN MultiStep = 0 ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade
FileName = "Printing Label"
Title = "Printing Label"
PageInfo = ''
PageInfo<PI$LEFT> = 0.1
PageInfo<PI$TOP> = 0.1
PageInfo<PI$RIGHT> = 0.1
PageInfo<PI$BOTTOM> = 0.1
PageSetup = '1' ;* Landscape
PrintSetup = '' ;* Preview
*PrinterID = '\\FMSA001\PMSAZ_BR3' ;* Print Server change
PrinterID = '\\mesirwfp001\MESZBRPRT002' ;* This is the Zebra 105sl with the test labels loaded
PrintPath = Printer_Select(PrinterID) ;* Popup is skipped IF Printer ID is passed
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
stat = Set_Printer("INIT",FileName,Title,PageInfo,PageSetup,PrintSetup,PrintPath)
end else
stat = Direct_Print('START', PrintPath<1>, '', '')
end
IF stat < 0 THEN GOTO OIPrint_Error
CLOrientation = '' ;* used for printing on cleanroom labels
OPEN 'DICT.WM_IN' TO DictVar ELSE
ErrMsg('Unable to open DICT.WM_IN in PRINT_WM_IN_LABELS for Btree.Extract.')
RETURN
END
SearchString = 'WO_NO':@VM:WONo:@FM
Btree.Extract(SearchString,'WM_IN',DictVar,WMInKeys,'',Flag)
IF Get_Status(errCode) THEN
ErrMsg(errCode)
RETURN
END
IF WMInKeys = '' THEN RETURN
debug
return
Void = utility( 'CURSOR', 'H' )
IdCnt = COUNT( RdsIds, @FM ) + (RdsIds NE '')
IF IdCnt > 1 THEN
* RdsIds = key_sort( RdsIds, 'RDS', 'WO':@FM:'RUN_ORDER_NUM', 1, '', '' )
END
RETURN
GOSUB PrintCleanRoomLabels
UniqueWOs = ''
IF MultiStep > 0 THEN
WOStepKeys = XLATE('RDS',RdsIds,RDS_WO_STEP_KEY$,'X') ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade
FOR I = 1 TO IdCnt
ThisWO = WOStepKeys<I>
CONVERT '*' TO '.' IN ThisWO
LOCATE ThisWO IN UniqueWOs USING @VM SETTING FPos ELSE
UniqueWOs<1,-1> = ThisWO
END
NEXT I
END ELSE
AllWOs = XLATE( 'RDS', RdsIds, rds_wo$, 'X' )
FOR I = 1 TO IdCnt
ThisWO = AllWOs<I>
LOCATE ThisWO IN UniqueWOs USING @VM SETTING Fpos ELSE
UniqueWOs<1,-1> = ThisWO
END
NEXT I
END
GOSUB PrintWOLabels
* Check to see if they get the monitor wafers based on the psn using the first of RdsIDs
IF XLATE( 'PROD_SPEC', XLATE( 'RDS', RdsIds<1>, rds_prod_spec_id$, 'X' ), prod_spec_monitor_wafer_label$, 'X' ) THEN
GOSUB PrintMonitorLabels
END
* Check to see if they get a surfscan label
CustNo = XLATE('RDS',RdsIds<1>,rds_cust_no$,'X')
IF (CustNo = '6874') OR (CustNo = '6593') ELSE
IF ( PreSurfscan ) or ( FirstSurfscan ) or ( PostCleanSurfscan ) THEN
GOSUB PrintSurfscanLabels
END
END
Void = UTILITY( 'CURSOR', 'A' )
* * * * * *
OIPrint_Error:
* * * * * *
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
stat = Set_Printer("TERM")
end else
stat = Direct_Print('STOP')
end
RETURN
* * * * * * * * * * * *` L o c a l S u b r o u t i n e s * * * * * * * * * * * *
* * * * * * *
PrintCleanRoomLabels:
* * * * * * *
CustName = XLATE( 'RDS', RdsIds, 'ABBREV_OR_CO_NAME', 'X' )
WO = XLATE( 'RDS', RdsIds, rds_wo$, 'X' )
ShipBagReq = XLATE( 'RDS', RdsIds, 'SHIP_BAG_REQ', 'X' )
ReqShipDate = OCONV( XLATE( 'WO_LOG', WO, WO_LOG_PROMISE_SHIP_DT$, 'X' ), 'D2/' )
PO = XLATE( 'RDS', RdsIds, rds_po$, 'X' )
PartNum = XLATE( 'RDS', RdsIds, rds_part_num$, 'X' )
ThickTarget = OCONV( XLATE( 'RDS', RdsIds, 'THICK_TARGET_ALL', 'X' ), 'MD2' )
ThickUnit = XLATE( 'RDS', RdsIds, 'THICK_UNITS_ALL', 'X' )
Dopant = XLATE( 'RDS', RdsIds, 'DOPANT_L1', 'X' )
ResTarget = OCONV( XLATE( 'RDS', RdsIds, 'RES_TARGET_ALL', 'X' ), 'MD3' )
ResUnit = XLATE( 'RDS', RdsIds, 'RES_UNITS_ALL', 'X' )
RecipeIDS = XLATE( 'RDS', RdsIds, 'RECIPE_NO', 'X' ) ;* Changed to calculated field 4/14/2006 JCH
LotNum = XLATE( 'RDS', RdsIds, rds_lot_num$, 'X' )
RecipeInfo = XLATE( 'RECIPE', RecipeIDS, 'RECIPE_NAME_NO', 'X' )
RONum = XLATE( 'RDS', RdsIds, 'RUN_ORDER_NUM', 'X' )
PSNIds = XLATE( 'RDS', RdsIds, rds_prod_spec_id$, 'X' )
ThickVar = XLATE( 'PROD_SPEC', PSNIds, 'THICK_MEASURE_L1', 'X' )
ResVar = XLATE( 'PROD_SPEC', PSNIds, 'RES_MEASURE_L1', 'X' )
ConVar = XLATE( 'PROD_SPEC', PSNIds, 'CON_MEASURE_L1', 'X' )
StressVar = XLATE( 'PROD_SPEC', PSNIds, 'STRESS_MEASURE', 'X' )
TransVar = XLATE( 'PROD_SPEC', PSNIds, 'TRANS_MEASURE', 'X' )
SpecType = OCONV( XLATE( 'RDS', RdsIds, 'SPEC_TYPE', 'X' ), '[SPEC_TYPE_CONV]' )
SubOxide = OCONV( XLATE( 'PROD_SPEC', PSNIds, 'SUB_OXIDE_STRIP', 'X' ), 'B' )
SubPreClean = XLATE( 'PROD_SPEC', PSNIds, 'SUB_PRE_CLEAN', 'X' )
SubPostClean = XLATE( 'PROD_SPEC', PSNIds, 'SUB_POST_CLEAN', 'X' )
PreAkrionRecipe = XLATE( 'PROD_SPEC', PSNIds, 'PRE_AKRION_RECIPE', 'X' )
PostAkrionRecipe = XLATE( 'PROD_SPEC', PSNIds, 'POST_AKRION_RECIPE', 'X' )
SubPartNum = XLATE( 'RDS', RdsIds, 'SUB_PART_NUM', 'X' )
WOStepKeys = XLATE( 'RDS',RdsIds,RDS_WO_STEP_KEY$,'X' ) ;* 05/21/2005 - JCH - Added for Order Entry/Vision upgrade
OrderNos = XLATE( 'RDS',RdsIds,RDS_ORDER_NO$,'X' ) ;* 10/04/2005 - JCH - Added for Order Entry/Vision upgrade
OrderItems = XLATE( 'RDS',RdsIds,RDS_ORDER_ITEM$,'X' ) ;* 10/04/2005 - JCH - Added for Order Entry/Vision upgrade
OrderDetKeys = ''
FOR I = 1 TO COUNT(OrderNos,@FM) + (OrderNos NE '')
OrderDetKeys<I> = OrderNos<I>:'*':OrderItems<I>
NEXT I
CustPNDescs = XLATE( 'ORDER_DET',OrderDetKeys,ORDER_DET_CUST_PN_DESC$,'X') ;* 10/04/2005 - JCH - Added for Order Entry/Vision upgrade
PreSurfscan = XLATE( 'PROD_SPEC', PSNIds<1>, prod_spec_pre_surfscan$, 'X' )
FirstSurfscan = XLATE( 'PROD_SPEC', PSNIds<1>, prod_spec_first_surfscan$, 'X' )
PostCleanSurfscan = XLATE( 'PROD_SPEC', PSNIds<1>, prod_spec_post_clean_surfscan$, 'X' )
CleaningReqs = ''
SRPFlag = XLATE( 'PROD_SPEC', PSNIds, 'SRP_REQ', 'X' )
Qtys = XLATE( 'RDS', RdsIds, 'WAFERS_SCHEDULED', 'X' )
MultilayVar = XLATE( 'RDS', RdsIds, 'MULTI_LAYER', 'X' )
* Lets break out thick and res and see if it gets measured based on frequency
* Thickness
ThickPrintVar = ''
ResPrintVar = ''
SRPPrintVar = ''
SRPTypePrintVar = ''
FOR I = 1 TO IdCnt
ThisThickVar = ThickVar<I>
ThisResVar = ResVar<I>
ThisConVar = ConVar<I>
ThisStressVar = StressVar<I>
ThisTransVar = TransVar<I>
ThisRunOrdNum = RONum<I>
ThisWO = WO<I>
ThisWOStepKey = WOStepKeys<I> ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade
IF MultiStep > 0 THEN ThisWO = ThisWOStepKey[1,'*'] ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade
*
ThickTool = field( ThisThickVar, '~', 1 )
ThickType = field( ThisThickVar, '~', 2 )
ThickRecipe = field( ThisThickVar, '~', 3 )
ThickFreq = field( ThisThickVar, '~', 4 )
ThickFirst = field( ThisThickVar, '~', 6 )
ThickLast = field( ThisThickVar, '~', 7 )
*
ResTool = field( ThisResVar, '~', 1 )
ResType = field( ThisResVar, '~', 2 )
ResRecipe = field( ThisResVar, '~', 3 )
ResFreq = field( ThisResVar, '~', 4 )
ResFirst = field( ThisResVar, '~', 6 )
ResLast = field( ThisResVar, '~', 7 )
*
ConTool = field( ThisConVar, '~', 1 )
ConType = field( ThisConVar, '~', 2 )
ConRecipe = field( ThisConVar, '~', 3 )
ConFreq = field( ThisConVar, '~', 4 )
ConFirst = field( ThisConVar, '~', 6 )
ConLast = field( ThisConVar, '~', 7 )
*
StressTool = field( ThisStressVar, '~', 1 )
StressType = field( ThisStressVar, '~', 2 )
StressRecipe = field( ThisStressVar, '~', 3 )
StressFreq = field( ThisStressVar, '~', 4 )
StressFirst = field( ThisStressVar, '~', 6 )
StressLast = field( ThisStressVar, '~', 7 )
*
TransTool = field( ThisTransVar, '~', 1 )
TransType = field( ThisTransVar, '~', 2 )
TransRecipe = field( ThisTransVar, '~', 3 )
TransFreq = field( ThisTransVar, '~', 4 )
TransFirst = field( ThisTransVar, '~', 6 )
TransLast = field( ThisTransVar, '~', 7 )
*
IF MultiStep > 0 THEN
WOBoxCnt = COUNT(XLATE('WO_STEP',ThisWOStepKey,6,'X'),@VM) ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade
END ELSE
*EXTRACT_SI_KEYS( 'RDS', 'WO', ThisWO, RDSsInWO ) ;* Original Code
WOBoxCnt = FIELDCOUNT( RDSsInWO, @VM ) ;* Original Code
END
* First check thickness
PrintThickness = false$
IF ( ThisRunOrdNum = 1 ) AND ( ThickFirst ) THEN PrintThickness = true$
IF ( ThisRunOrdNum = WOBoxCnt ) AND ( ThickLast ) THEN PrintThickness = true$
IF ThickFreq THEN
* Need to check run order and see if it needs to be printed
IF ThickFreq = 1 THEN
PrintThickness = true$
END ELSE
* Generate @FM delim of runs that should print
RoPrintFlag = str( @FM, WOBoxCnt-1 )
FOR J = 1 TO WOBoxCnt step ThickFreq
RoPrintFlag<J> = 1
NEXT J
IF ( RoPrintFlag<ThisRunOrdNum> = 1 ) THEN PrintThickness = true$
END
END
IF PrintThickness THEN
PSNRec = XLATE( 'PROD_SPEC', PSNIds<I>, '', 'X' )
SpecSub = PSNRec<prod_spec_spec_substrate$>
TOrient = SpecSub<1,QSSubOrientation$>
convert '<' TO '' in TOrient
convert '>' TO '' in TOrient
Orient = TOrient
ThickPrintVar<I> = ThickTool:'~':ThickType:'~':Orient:'~':ThickRecipe
END ELSE
ThickPrintVar<I> = ''
END
* Now check resistivity
PrintResistivity = false$
IF ( ThisRunOrdNum = 1 ) and ( ResFirst ) THEN PrintResistivity = true$
IF ( ThisRunOrdNum = WOBoxCnt ) and ( ResLast ) THEN PrintResistivity = true$
IF ResFreq THEN
* NEED TO CHECK RUN ORDER AND SEE IF IT NEEDS TO BE PRINTED
IF ResFreq = 1 THEN
PrintResistivity = true$
END ELSE
* Generate @FM delim of runs that should print
RoPrintFlag = str( @FM, WOBoxCnt-1 )
FOR J = 1 TO WOBoxCnt step ResFreq
RoPrintFlag<J> = 1
NEXT J
IF ( RoPrintFlag<ThisRunOrdNum> = 1 ) THEN PrintResistivity = true$
END
END
IF PrintResistivity THEN
PSNRec = XLATE( 'PROD_SPEC', PSNIds<I>, '', 'X' )
SpecSub = PSNRec<prod_spec_spec_substrate$>
TOrient = SpecSub<1,QSSubOrientation$>
convert '<' TO '' in TOrient
convert '>' TO '' in TOrient
Orient = TOrient
ResPrintVar<I> = ResTool:'~':ResType:'~':Orient:'~':ResRecipe
END ELSE
ResPrintVar<I> = ''
END
PrintSRP = false$
SRPType = ''
IF SRPFlag<I> THEN
* We know that SRP is one of the tools
IF PrintThickness THEN
IF ThickTool = 'SRP' THEN
PrintSRP = true$
SRPType = ThickType
END
END
IF PrintResistivity THEN
IF ResTool = 'SRP' THEN
PrintSRP = true$
SRPType = ResType
END
END
IF NOT(PrintSRP) THEN
* Now need to check concentration
IF ConTool = 'SRP' THEN
IF ( ThisRunOrdNum = 1 ) and ( ConFirst ) THEN PrintSRP = true$
IF ( ThisRunOrdNum = WOBoxCnt ) and ( ConLast ) THEN PrintSRP = true$
IF ConFreq THEN
* Need to check run order and see if it needs to be printed
IF ConFreq = 1 THEN
PrintSRP = true$
END ELSE
* Generate fm delim of runs that should print
RoPrintFlag = str( @FM, WOBoxCnt-1 )
FOR J = 1 TO WOBoxCnt step ConFreq
RoPrintFlag<J> = 1
NEXT J
IF ( RoPrintFlag<ThisRunOrdNum> = 1 ) THEN PrintSRP = true$
END
END
END
IF PrintSRP THEN SRPType = ConType
END
IF NOT(PrintSRP) THEN
* Now need to check stress
IF StressTool = 'SRP' THEN
IF ( ThisRunOrdNum = 1 ) AND ( StressFirst ) THEN PrintSRP = true$
IF ( ThisRunOrdNum = WOBoxCnt ) AND ( StressLast ) THEN PrintSRP = true$
IF StressFreq THEN
* Need to check run order and see if it needs to be printed
IF StressFreq = 1 THEN
PrintSRP = true$
END ELSE
* Generate @FM delim of runs that should print
RoPrintFlag = str( @FM, WOBoxCnt-1 )
FOR J = 1 TO WOBoxCnt step StressFreq
RoPrintFlag<J> = 1
NEXT J
IF ( RoPrintFlag<ThisRunOrdNum> = 1 ) THEN PrintSRP = true$
END
END
END
IF PrintSRP THEN SRPType = StressType
END
IF NOT(PrintSRP) THEN
* Now need to check transition
IF TransTool = 'SRP' THEN
IF ( ThisRunOrdNum = 1 ) AND ( TransFirst ) THEN PrintSRP = true$
IF ( ThisRunOrdNum = WOBoxCnt ) AND ( TransLast ) THEN PrintSRP = true$
IF TransFreq THEN
* Need to check run order and see if it needs to be printed
IF TransFreq = 1 THEN
PrintSRP = true$
END ELSE
* Generate fm delim of runs that should print
RoPrintFlag = str( @FM, WOBoxCnt-1 )
FOR J = 1 TO WOBoxCnt step TransFreq
RoPrintFlag<J> = 1
NEXT J
IF ( ROPrintFlag<ThisRunOrdNum> = 1 ) THEN PrintSRP = true$
END
IF PrintSRP THEN SRPType = TransType
END
END
END
IF PrintSRP THEN
SRPPrintVar<I> = true$
SRPTypePrintVar<I> = SRPType
END ELSE
SRPPrintVar<I> = false$
SRPTypePrintVar<I> = ''
END
END ELSE
SRPPrintVar<I> = false$
SRPTypePrintVar<I> = ''
END
NEXT I
* Got all data now we can print
FOR I = 1 TO IdCnt
PrintCustName = CustName<I>
IF MultiStep > 0 THEN
WONo = WO<I>:'.':MultiStep ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade
WONo = WOStepKeys<I>
CONVERT '*' TO '.' IN WONo
END ELSE
WoNo = WO<I>
END
PrintWO = WoNo ;* 5/21/2005 - JCH - Changed for Order Entry/Vision upgrade
PrintPSNNo = PSNIds<I> ;* 6/10/2005 - JCH - Added per manufacturing manager request
PrintLotNum = LotNum<I>
PrintRecipeInfo = RecipeInfo<I>
PrintSpecType = SpecType<I>
PrintRONum = RONum<I>
PrintRdsId = RdsIds<I>
PrintThickPrintVar = ThickPrintVar<I>
PrintResPrintVar = ResPrintVar<I>
PrintMultiLayVar = MultiLayVar<I>
PrintSRPPrintVar = SRPPrintVar<I>
PrintSRPTypePrintVar = SRPTypePrintVar<I>
PrintQty = Qtys<I>
ThickCnt = FIELDCOUNT( ThickTarget<I>, @VM )
PrintThickTargets = ''
FOR J = 1 TO ThickCnt
PrintThickTargets<1,J> = ThickTarget<i,j>:ThickUnit<i,j>
NEXT J
ResCnt = FIELDCOUNT( ResTarget<I>, @VM )
PrintResTargets = ''
FOR J = 1 TO ResCnt
IF ResTarget<I,J>[1,1] = '.' THEN
TargetVal = '0':ResTarget<I,J>
END ELSE
TargetVal = ResTarget<I,J>
END
PrintResTargets<1,J> = TargetVal:ResUnit<I,J>
NEXT J
PrintPO = PO<I>
PrintPartNum = PartNum<I>:' ':CustPNDescs<I>
PrintSubPartNum = SubPartNum<I>
SuppCd = SubPartNum<I>[-1,'B-']
IF LEN(SuppCd) NE '2' THEN SuppCd =''
PrintSuppCd = SuppCd
PrintDopant = Dopant<I>
PrintShipBagReq = ShipBagReq<I>
PrintReqShipDate = ReqShipDate<I>
PrintSubOxide = SubOxide<I>
PrintSubPreClean = SubPreClean<I>
PrintSubPostClean = SubPostClean<I>
PrintPreAkrionRecipe = PreAkrionRecipe<I>
PrintPostAkrionRecipe = PostAkrionRecipe<I>
APreRec = ''
APostRec = ''
IF ( PreAkrionRecipe<I> <> '' ) THEN
APreRec = ' ':PreAkrionRecipe<I>:' '
SubOxide<I> = 'No' ;* IF AKRION THEN NO OXIDE STRIP
END
IF ( PostAkrionRecipe<I> <> '' ) THEN
APostRec = ' ':PostAkrionRecipe<I>
END
*PrintCleaningReqs = TRIM( 'Strip:':SubOxide<I>:' Pre:':SubPreClean<I>:APreRec:' Post:':SubPostClean<I>:APostRec )
PrintCleaningReqs = TRIM( 'Strip:':SubOxide<I>:' Pre:':SubPreClean<I>:APreRec:' Post:':SubPostClean<I>:APostRec )
swap '~' with fmt( ' ', 'L#2' ) in PrintThickPrintVar
swap 'æm' with 'um' in PrintThickTargets
swap 'ê-cm' with 'ohm.cm' in PrintThickTargets
swap 'ê/Ü' with 'ohm/sq' in PrintThickTargets
swap '' with 'A' in PrintThickTargets
swap '~' with fmt( ' ', 'L#2' ) in PrintResPrintVar
swap 'æm' with 'um' in PrintResTargets
swap 'ê-cm' with 'ohm.cm' in PrintResTargets
swap 'ê/Ü' with 'ohm/sq' in PrintResTargets
swap '' with 'A' in PrintResTargets
GOSUB PrintLabel
NEXT I
RETURN
* * * * * * *
PrintLabel:
* * * * * * *
MakeupBox = XLATE('RDS',PrintRdsId,RDS_MAKEUP_BOX$,'X')
Str = '^XA'
Str := '^LH0,0'
Str := '^PR2' ;* Print speed 2 inches per second
Str := '^LL406' ;* Label length @203 dpi
Str := '^PW900'
Str := '^MD15' ;* Media darkness
Str := '^MMT' ;* Media mode t=tear off mode
Str := '^PQ2' ;* Print 2 labels for each pass through here
Str := '^FO15,15^GB795,398,3,B^FS'
* SRP Box and info in Upper Right Corner of label
IF PrintSRPPrintVar THEN
Str:= '^FO738,15^GB72,60,3,B^FS'
Str:= '^FO755,25^A0,25^FDSRP^FS'
IF LEN( PrintSRPTypePrintVar ) > 2 THEN
Str:= '^FO750,50^A0,,25^FD':PrintSRPTypePrintVar:'^FS':CRLF$
END ELSE
Str:= '^FO740,50^A0,,25^FD':PrintSRPTypePrintVar:'^FS':CRLF$
END
END
****** First Line
Company = 'IFX Epi Services'
Str := '^FO30,25^A0,,36^FD':Company:'^FS'
Str := '^FO310,25^AC,18^FDWO No:^FS':CRLF$ ;* Label
Str := '^FO390,25^A045,36^FD':PrintWO:'^FS':CRLF$ ;* Data
IF PrintRONum = 1 THEN
Str := '^FO550,20^GB90,40,40,,3^FS':CRLF$
Str := '^FO560,25^AC,18^FR^FDRun:^FS':CRLF$ ;* Label
Str := '^FO615,25^A045,36^FR^FD':PrintRONum:'^FS':CRLF$ ;* Data
END ELSE
Str := '^FO560,25^AC,18^FDRun:^FS':CRLF$ ;* Label
Str := '^FO615,25^A045,36^FD':PrintRONum:'^FS':CRLF$ ;* Data
END
****** Second Line
Str:= '^FO30,70^AC,18^FDRDS:^FS':CRLF$
Str:= '^FO90,70^A050,30^FD':PrintRDSId:'^FS':CRLF$
Str := '^BY2,2.0':CRLF$
Str := '^FO200,70^B3,,23,N^FD':PrintRDSId:'^FS':CRLF$
Str := '^BY2,3.0':CRLF$
Str:= '^FO450,70^AC,18^FDQty:^FS':CRLF$ ;* Label
Str:= '^FO510,70^A045,25^FD':PrintQty:'^FS':CRLF$ ;* Data
IF MakeupBox THEN
Str := '^FO575,65^GB140,35,35,,3^FS':CRLF$
Str := '^FO585,70^A0,,35^FR^FDM/U Box^FS'
END
****** Third Line
Str:= '^FO30,105^AC,18^FDShip Dt:^FS' ;* Label
Str:= '^FO140,105^A0,,25^FD':PrintReqShipDate:'^FS':CRLF$ ;* Data
Str:= '^FO250,105^AC,18^FDCust:^FS':CRLF$ ;* Label
Str:= '^FO320,105^A045,25^FD':PrintCustName:'^FS':CRLF$ ;* Data
Str:= '^FO560,105^AC,18^FDPO:^FS':CRLF$
Str:= '^FO600,105^A045,25^FD':PrintPO:'^FS':CRLF$
****** Separator bar
Str:= '^FO15,128^GB795,1^FS'
****** Fourth Line
Str := '^FO30,135^AC,18^FDLot No:^FS':CRLF$
Str := '^FO120,135^A0,20^FD':PrintLotNum:'^FS':CRLF$
Str := '^FO410,135^AC,18^FDPart No:^FS':CRLF$
Str := '^FO510,135^A0,20^FD':PrintPartNum:'^FS':CRLF$
****** Fifth Line
Str := '^FO30,160^AC,18^FDSub PN:^FS':CRLF$
Str := '^FO120,160^A0,20^FD':PrintSubPartNum:'^FS':CRLF$
IF PrintSuppCd NE '' THEN
Str := '^FO410,160^AC,18^FDSupp Cd:^FS':CRLF$ ;* Label ;* Added 8/17/2005 JCH - J.C.Henry & Co.
Str := '^FO510,160^A0,20^FD':PrintSuppCd:'^FS':CRLF$ ;* Data
Str := '^BY2,2.0':CRLF$
Str := '^FO610,160^A040,20^B3,,23,N^FD':PrintSuppCd:'^FS':CRLF$
Str := '^BY2,3.0':CRLF$
END
****** Separator bar
Str := '^FO15,183^GB795,1^FS'
****** Sixth Line
Str := '^FO30,190^AC,18^FDStrip Oxide:^FS':CRLF$
Str := '^FO180,190^A0,20^FD':PrintSubOxide:'^FS':CRLF$
****** Seventh Line
Str := '^FO30,210^AC,18^FDPre:^FS':CRLF$
Str := '^FO90,210^A0,20^FD':PrintSubPreClean:'^FS':CRLF$
IF PrintPreAkrionRecipe NE '' THEN
Str := '^FO210,210^AC,18^FDAkrion:^FS':CRLF$
Str := '^FO300,210^A0,20^FD':PrintPreAkrionRecipe:'^FS':CRLF$
Str := '^BY2,2.0':CRLF$
Str := '^FO450,210^A040,20^B3,,23,N^FD':PrintPreAkrionRecipe:'^FS':CRLF$
Str := '^BY2,3.0':CRLF$
END
****** Eighth Line
Str := '^FO30,235^AC,18^FDRecipe:^FS':CRLF$
Str := '^FO120,235^A0,20^FD':PrintRecipeInfo:'^FS':CRLF$
Str := '^FO410,235^AC,18^FDEpi Dopant:^FS':CRLF$
Str := '^FO560,235^A040,20^FD':PrintDopant:'^FS':CRLF$
****** Ninth Line
Str := '^FO30,260^A040,20^FD':PrintThickPrintVar:'^FS':CRLF$
Str := '^FO410,260^A040,20^FD':PrintResPrintVar:'^FS':CRLF$
****** Tenth, Eleventh and Twelfth Lines
Str := '^FO30,285^AC,18^FDThk Spec:^FS':CRLF$
FOR M = 1 TO COUNT(PrintThickTargets,@VM) + (PrintThickTargets NE '')
BaseLine = 285 + (M-1)*20
Str := '^FO140,':BaseLine:'^A040,20^FD':PrintThickTargets<1,M>:'^FS':CRLF$
NEXT M
Str := '^FO410,285^AC,18^FDRes Spec:^FS':CRLF$
FOR M = 1 TO COUNT(PrintResTargets,@VM) + (PrintResTargets NE '')
BaseLine = 285 + (M-1)*20
Str := '^FO520,':BaseLine:'^A040,20^FD':PrintResTargets<1,M>:'^FS':CRLF$
NEXT M
****** The Line with No Name
IF PrintPostAkrionRecipe NE '' THEN
Str := '^FO30,350^AC,18^FDPost:^FS':CRLF$
Str := '^FO90,350^A0,20^FD':PrintSubPostClean:'^FS':CRLF$
Str := '^FO210,350^AC,18^FDAkrion:^FS':CRLF$
Str := '^FO300,350^A0,20^FD':PrintPostAkrionRecipe:'^FS':CRLF$
Str := '^BY2,2.0':CRLF$
Str := '^FO450,350^A040,20^B3,,23,N^FD':PrintPostAkrionRecipe:'^FS':CRLF$
Str := '^BY2,3.0':CRLF$
END ELSE
Str := '^FO30,350^AC,18^FDPost:^FS':CRLF$
Str := '^FO120,350^A0,20^FD':PrintSubPostClean:'^FS':CRLF$
END
****** Separator bar
Str := '^FO15,373^GB795,1^FS'
****** Fourteenth Line
Str := '^FO30,385^AC,18^FDProd Spec No:^FS':CRLF$ ;* Label
Str := '^FO190,385^A0,25^FD':PrintPSNNo:'^FS':CRLF$ ;* Data
IF PrintSpecType = 'Production' THEN PrintSpecType = 'Prod'
IF PrintSpecType = 'Pre-Production' THEN PrintSpecType = 'Pre'
Str := '^FO275,385^AC,18^FDSpec Type:^FS':CRLF$ ;* Label
Str := '^FO400,385^A0,25^FD':PrintSpecType:'^FS':CRLF$ ;* Data
Str:= '^FO480,385^AC,18^FDBag:^FS':CRLF$
Str:= '^FO530,385^A0,20^FD':PrintShipBagReq:'^FS':CRLF$
Str:= '^XZ'
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
stat = Set_Printer('TEXT',Str)
end else
stat = Direct_Print('PRINT', Str)
end
RETURN
* * * * * * *
PrintWOLabels:
* * * * * * *
* Got all data now we can print
RDSCnt = COUNT(RdsIds,@VM) + (RdsIds NE '')
ShelfCnt = INT(RDSCnt/28) + (MOD(RDSCnt,28) NE 0) ;* Come back TO this later JCH 7/27/2005
NewUniqueWOs = ''
UWOCnt = fieldcount( UniqueWOs, @VM )
FOR I = 1 TO UWOCnt
NewUniqueWOs<1,-1> = UniqueWOs<1,I>:@VM:UniqueWOs<1,I>
NEXT I
TRANSFER NewUniqueWOs TO UniqueWOs
UWOCnt += UWOCnt
* So we print two sets of labels
FOR I = 1 TO UWOCnt step 2
PrintUniqueWO = UniqueWOs<1,i>
GOSUB PrintWO
PrintUniqueWO = UniqueWOs<1,i+1>
GOSUB PrintWO
NEXT I
RETURN
* * * * * * *
PrintWO:
* * * * * * *
Str = '^XA^CFD'
Str:= '^LH0,0'
Str:= '^PR2' ;* PRINT SPEED 2 INCHES PER SECOND
Str:= '^LL325' ;* LABEL LENGTH IN DOTS
Str:= '^MD15' ;* MEDIA DARKNESS
Str:= '^MMT':CRLF$ ;* MEDIA MODE T=TEAR OFF MODE
IF MultiStep > 0 THEN
Str:= '^FO10,05^A0220,210^FD':PrintUniqueWO:'^FS':CRLF$ ;* 5/21/2005 - JCH - Changed for Order Entry/Vision upgrade
END ELSE
Str:= '^FO70,05^A0220,210^FD':PrintUniqueWO:'^FS':CRLF$
END
* GET CUST ABBREV
CustNo = XLATE( 'WO_LOG', PrintUniqueWO[1,'.'], wo_log_cust_no$, 'X' )
CustAbbrevOrName = XLATE( 'COMPANY', CustNo, 'ABBREV_OR_CO_NAME', 'X' )
Str:= '^FO30,185^A110,70^FD':CustAbbrevOrName:'^FS':CRLF$
Str:= '^FO150,255^A080,50^FD':'Commit Date: ':OCONV( XLATE( 'WO_LOG', PrintUniqueWO[1,'.'], wo_log_commit_date$, 'X' ), 'D2/' ):'^FS':CRLF$
Str:= '^XZ'
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
stat = Set_Printer('TEXT',Str)
end else
stat = Direct_Print('PRINT', Str)
end
RETURN
* * * * * * *
PrintMonitorLabels:
* * * * * * *
FOR I = 1 TO IdCnt
Str = '^XA^CFD'
Str:= '^LH0,0'
Str:= '^PR2' ;* PRINT SPEED 2 INCHES PER SECOND
Str:= '^LL325' ;* LABEL LENGTH IN DOTS
Str:= '^MD15' ;* MEDIA DARKNESS
Str:= '^MMT':CRLF$ ;* MEDIA MODE T=TEAR OFF MODE
Str:= '^FO30,30^A060,40^FDMonitor Wafer^FS':CRLF$
Str:= '^FO550,30^A060,40^FDReactor#_____^FS':CRLF$
Str:= '^FO30,70^A060,40^FDDate_____________^FS':CRLF$
Str:= '^FO30,130^A060,40^FDCustomer Name: ':CustName<I>:'^FS':CRLF$
Str:= '^FO30,190^A060,40^FDRDS#: ':RDSIds<I>:'^FS':CRLF$
Str:= '^FO400,190^A060,40^FDLot#: ':LotNum<I>:'^FS':CRLF$
Str:= '^FO30,250^A060,40^FDThick Avg__________^FS':CRLF$
Str:= '^FO400,250^A060,40^FDWafer Type__________^FS':CRLF$
Str:= '^FO30,280^A060,40^FDRes Avg____________^FS':CRLF$
Str:= '^FO400,280^A060,40^FDWafer Type__________^FS':CRLF$
Str:= '^XZ'
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
stat = Set_Printer('TEXT',Str)
end else
stat = Direct_Print('PRINT', Str)
end
NEXT I
RETURN
* * * * * * *
PrintSurfscanLabels:
* * * * * * *
FOR I = 1 TO IdCnt
Str = '^XA^CFD'
Str:= '^LH0,0'
Str:= '^PR2' ;* PRINT SPEED 2 INCHES PER SECOND
Str:= '^LL325' ;* LABEL LENGTH IN DOTS
Str:= '^MD15' ;* MEDIA DARKNESS
Str:= '^MMT' ;* MEDIA MODE T=TEAR OFF MODE
Str:= '^FO30,30^A060,40^FDSurfscan Required^FS'
*Str:= '^FO550,30^A060,40^FDRDS#':RDSIds<I>:'^FS'
IF PreSurfscan THEN
Str:= '^FO30,130^A060,40^FDPre Epi:^FS'
Str:= '^FO250,130^A060,40^FDDefects________^FS'
Str:= '^FO500,130^A060,40^FDHaze________^FS'
END
IF FirstSurfscan THEN
Str:= '^FO30,190^A060,40^FDFirst Wafer^FS'
Str:= '^FO250,190^A060,40^FDDefects________^FS'
Str:= '^FO500,190^A060,40^FDHaze________^FS'
END
IF PostCleanSurfscan THEN
Str:= '^FO30,250^A060,40^FDPost Epi:^FS'
Str:= '^FO250,250^A060,40^FDDefects________^FS'
Str:= '^FO500,250^A060,40^FDHaze________^FS'
END
Str:= '^XZ'
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
stat = Set_Printer('TEXT',Str)
end else
stat = Direct_Print('PRINT', Str)
end
NEXT I
RETURN