311 lines
8.9 KiB
Plaintext
311 lines
8.9 KiB
Plaintext
COMPILE SUBROUTINE Print_GaN_Scribe_Labels(WONo, CassNos, Recipient, Sender)
|
|
|
|
|
|
$INSERT LOGICAL
|
|
$INSERT MSG_EQUATES
|
|
$INSERT OIPRINT_EQUATES
|
|
$INSERT POPUP_EQUATES
|
|
$INSERT PROD_SPEC_EQUATES
|
|
$INSERT QUOTE_SPEC_EQU
|
|
$INSERT WO_LOG_EQUATES
|
|
$INSERT WO_STEP_EQU
|
|
$INSERT WO_MAT_EQUATES
|
|
$INSERT ORDER_EQU
|
|
$INSERT ORDER_DET_EQU
|
|
$INSERT EPI_PART_EQUATES
|
|
$INSERT CUST_EPI_PART_EQUATES
|
|
$INSERT PRS_STAGE_EQUATES
|
|
|
|
DECLARE FUNCTION Msg, Get_Printer, Set_Printer, Utility, obj_Install, Printer_Select, FieldCount, Popup
|
|
DECLARE FUNCTION MemberOf, Direct_Print, Environment_Services, Database_Services
|
|
DECLARE SUBROUTINE Btree.Extract, ErrMsg
|
|
|
|
|
|
* 8/23/2006 - Cloned from Print_WMO_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 RETURN
|
|
IF NOT(ASSIGNED(CassNos)) THEN CassNos = ''
|
|
IF WONo = '' THEN RETURN
|
|
|
|
|
|
CassCnt = COUNT(CassNos,@VM) + (CassNos NE '')
|
|
|
|
BEGIN CASE
|
|
CASE CassCnt = 0
|
|
WOMatKeys = XLATE('WO_LOG',WONo,WO_LOG_WO_MAT_KEY$,'X')
|
|
|
|
CASE CassCnt = 1
|
|
WOMatKeys = WONo:'*':CassNos
|
|
|
|
CASE 1
|
|
|
|
SWAP @VM WITH @VM:WONo:'*' IN CassNos
|
|
WOMatKeys = WONo:'*':CassNos
|
|
|
|
|
|
TypeOver = ''
|
|
TypeOver<PDISPLAY$> = WOMatKeys
|
|
TypeOver<PTITLE$> = 'GaN - Outbound Cassettes'
|
|
|
|
WOMatKeys = Popup(@WINDOW,TypeOver,'PRINT_GAN_LABELS')
|
|
CONVERT '.' TO '*' IN WOMatKeys
|
|
|
|
|
|
|
|
END CASE
|
|
|
|
|
|
IF WOMatKeys = '' THEN RETURN
|
|
|
|
|
|
IF NOT(ASSIGNED(WOStep)) THEN WOStep = 1
|
|
|
|
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 = ''
|
|
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
|
|
|
|
Void = Utility( 'CURSOR', 'H' )
|
|
|
|
WOStepKeys = XLATE('WO_LOG',WONo,WO_LOG_WO_STEP_KEY$,'X')
|
|
|
|
IF INDEX(WOStepKeys,@VM,1) THEN
|
|
PrintWONo = WONo:'.':WOStep
|
|
END ELSE
|
|
PrintWONo = WONo
|
|
END
|
|
|
|
WORec = Database_Services('ReadDataRow', 'WO_LOG', WONo)
|
|
|
|
WMOBoxCnt = COUNT( WOMatKeys, @VM ) + (WOMatKeys NE '')
|
|
|
|
GOSUB PrintCleanRoomLabels
|
|
|
|
|
|
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:
|
|
* * * * * * *
|
|
|
|
|
|
FOR I = 1 TO WMOBoxCnt
|
|
|
|
WOMatKey = WOMatKeys<1,I>
|
|
MakeupBox = ''
|
|
PrintWOMatKey = WOMatKey
|
|
CONVERT '*' TO '.' IN PrintWOMatKey
|
|
CassNo = FIELD(WOMatKey,'*',2)
|
|
LotNo = 'Multiple'
|
|
WfrQty = XLATE('WO_MAT_WFR',WOMatKey,'OUT_WFR_QTY','X')
|
|
WOMatKey = WONo:'*':CassNo
|
|
WOMatRec = XLATE('WO_MAT',WOMatKey,'','X')
|
|
SubPartNo = WORec<WO_LOG_ORD_SUB_PART_NO$>
|
|
CustPartNo = WORec<WO_LOG_CUST_PART_NO$>
|
|
EpiPartNo = WORec<WO_LOG_EPI_PART_NO$>
|
|
WOStepKey = WONo:'*1'
|
|
PSNo = Xlate('WO_STEP', WOStepKey, 'PROD_SPEC_ID', 'X')
|
|
TechType = Xlate('PROD_SPEC', PSNo, 'TECH_TYPE', 'X')
|
|
PartNo = Xlate('WO_LOG', WONo, 'EPI_STRUCTURE', 'X')
|
|
EpiPo = XLATE('WO_LOG', WONo, 'EPI_PART_NO', 'X')
|
|
WaferSize = XLATE('EPI_PART', EpiPo, 'SUB_THICK' ,'X')
|
|
WaferSize := 'um'
|
|
SubSuppCd = WORec<WO_LOG_EXP_VEND_CD$>
|
|
SubSuppCd = XLATE('SEMI_VEND_CODE',SubSuppCd,SEMI_VEND_CODE_EPI_VEND_CD$,'X')
|
|
Begin Case
|
|
Case TechType EQ 'P'
|
|
TechType = 'Prod'
|
|
Case TechType EQ 'E'
|
|
TechType = 'Eng'
|
|
End Case
|
|
CustPartDesc = XLATE('EPI_PART',EpiPartNo,EPI_PART_EPI_PART_DESC$,'X')
|
|
PartNo = CustPartNo ;* Temporary for 4x2 to 4x4 conversion
|
|
PartDesc = CustPartDesc ;* Temporary for 4x2 to 4x4 conversion
|
|
SuppCd = TRIM(SubPartNo[-1,'B-'])
|
|
IF LEN(SuppCd) NE '2' THEN SuppCd =''
|
|
|
|
GOSUB PrintLabel
|
|
|
|
NEXT I
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
PrintLabel:
|
|
* * * * * * *
|
|
|
|
****** First Label ******
|
|
Str = '^XA'
|
|
Str := '^LH0,0'
|
|
Str := '^PR2' ;* Print speed 2 inches per second
|
|
Str := '^LL406' ;* Label length @203 dpi
|
|
Str := '^PW812'
|
|
Str := '^MD15' ;* Media darkness
|
|
Str := '^MMT' ;* Media mode t=tear off mode
|
|
* Str := '^PQ2' ;* Print 2 labels for each pass through here
|
|
Str := '^FWN':CRLF$ ;* Normal orientation
|
|
|
|
Str := CRLF$
|
|
Str := '^FO60,50^A0, 250^FDFragile^FS':CRLF$
|
|
Str := '^FO140,310^A0, 70^FDHandle With Care!^FS':CRLF$
|
|
Str := '^XZ':CRLF$:CRLF$
|
|
|
|
****** Second Label ******
|
|
Str := '^XA'
|
|
Str := '^LH0,0'
|
|
Str := '^PR2' ;* Print speed 2 inches per second
|
|
Str := '^LL406' ;* Label length @203 dpi
|
|
Str := '^PW812'
|
|
Str := '^MD15' ;* Media darkness
|
|
Str := '^MMT' ;* Media mode t=tear off mode
|
|
* Str := '^PQ2' ;* Print 2 labels for each pass through here
|
|
Str := '^FWN':CRLF$ ;* Normal orientation
|
|
|
|
Str := CRLF$
|
|
Str := '^FO90,100^A0, 150^FD':PrintWOMatKey:'^FS':CRLF$
|
|
Str := '^FO220,280^B3,,80,N^FD':'O':PrintWOMatKey:'^FS':CRLF$ ;* Code 39 barcode
|
|
Str := '^XZ':CRLF$:CRLF$
|
|
|
|
****** Third Label ******
|
|
Str := '^XA'
|
|
Str := '^LH0,0'
|
|
Str := '^PR2' ;* Print speed 2 inches per second
|
|
Str := '^LL406' ;* Label length @203 dpi
|
|
Str := '^PW812'
|
|
Str := '^MD15' ;* Media darkness
|
|
Str := '^MMT' ;* Media mode t=tear off mode
|
|
* Str := '^PQ2' ;* Print 2 labels for each pass through here
|
|
Str := '^FWN':CRLF$ ;* Normal orientation
|
|
|
|
Str := CRLF$
|
|
Str := '^FO40,30^A0, 80^FDRecipient: ^FS':CRLF$
|
|
Str := '^FO40,120^A0, 80^FD':Recipient:'^FS':CRLF$
|
|
Str := '^FO40,220^A0, 80^FDSender: ^FS':CRLF$
|
|
Str := '^FO40,310^A0, 80^FD':Sender:'^FS':CRLF$
|
|
Str := '^XZ':CRLF$:CRLF$
|
|
|
|
****** Fourth Label ******
|
|
Str := '^XA'
|
|
Str := '^LH0,0'
|
|
Str := '^PR2' ;* Print speed 2 inches per second
|
|
Str := '^LL406' ;* Label length @203 dpi
|
|
Str := '^PW812'
|
|
Str := '^MD15' ;* Media darkness
|
|
Str := '^MMT' ;* Media mode t=tear off mode
|
|
* Str := '^PQ2' ;* Print 2 labels for each pass through here
|
|
Str := '^FWB':CRLF$ ;* Print bottum-up 270 degrees, read from bottom up
|
|
|
|
Str := '^FX Cell A1^FS':CRLF$
|
|
Str := '^FO2,17':CRLF$
|
|
Str := '^GB28,170,2^FS':CRLF$
|
|
Str := '^FO8,220^A0,25^FD':PrintWOMatKey:'^FS':CRLF$
|
|
|
|
Str := '^FX Cell B1^FS':CRLF$
|
|
Str := '^FO2,185':CRLF$
|
|
Str := '^GB28,180,2^FS':CRLF$
|
|
Str := '^FO8,70^A0,25^FDBox 1^FS':CRLF$
|
|
|
|
Str := '^FX Cell A2^FS':CRLF$
|
|
Str := '^FO28,17':CRLF$
|
|
Str := '^GB28,170,2^FS':CRLF$
|
|
Str := '^FO34,250^A0,25^FD':TechType:'^FS':CRLF$
|
|
|
|
Str := '^FX Cell B2^FS':CRLF$
|
|
Str := '^FO28,185':CRLF$
|
|
Str := '^GB28,180,2^FS':CRLF$
|
|
Str := '^FO34,55^A0,25^FD':WfrQty:' Wafers^FS':CRLF$
|
|
|
|
Str := '^FX Cell A3^FS':CRLF$
|
|
Str := '^FO54,17':CRLF$
|
|
Str := '^GB28,170,2^FS':CRLF$
|
|
Str := '^FO60,250^A0,25^FD':PartNo:'^FS':CRLF$
|
|
|
|
Str := '^FX Cell B3^FS':CRLF$
|
|
Str := '^FO54,185':CRLF$
|
|
Str := '^GB28,180,2^FS':CRLF$
|
|
Str := '^FO60,70^A0,25^FD':WaferSize:'^FS':CRLF$
|
|
|
|
Str := '^FX Cell A4^FS':CRLF$
|
|
Str := '^FO88,367^A0,25^FDSlot^FS':CRLF$
|
|
Str := '^FO80,17':CRLF$
|
|
Str := '^GB28,170,2^FS':CRLF$
|
|
Str := '^FO88,225^A0,25^FDWafer ID^FS':CRLF$
|
|
|
|
Str := '^FX Cell B4^FS':CRLF$
|
|
Str := '^FO80,185':CRLF$
|
|
Str := '^GB28,180,2^FS':CRLF$
|
|
Str := '^FO88,50^A0,25^FDLaser Mark^FS':CRLF$
|
|
|
|
GaNWfrIDs = Xlate('WO_MAT', WOMatKey, 'OUT_GAN_WFR_ID', 'X')
|
|
Scribes = Xlate('WO_MAT', WOMatKey, 'OUT_SCRIBE', 'X')
|
|
// Begin Wafer List
|
|
For WaferIndex = 1 to 25
|
|
GaNWfrID = GaNWfrIDs<0, WaferIndex>
|
|
Scribe = Scribes<0, WaferIndex>
|
|
Str := '^FO':(88 + (26 * WaferIndex) ):',367^A0,25^FD':WaferIndex:'^FS':CRLF$
|
|
Str := '^FO':(80 + (26 * WaferIndex) ):',17':CRLF$
|
|
Str := '^GB28,170,2^FS':CRLF$
|
|
Str := '^FO':(88 + (26 * WaferIndex) ):',190^AJ,22^FD':GaNWfrID:'^FS':CRLF$
|
|
Str := '^FO':(80 + (26 * WaferIndex) ):',185':CRLF$
|
|
Str := '^GB28,180,2^FS':CRLF$
|
|
Str := '^FO':(88 + (26 * WaferIndex) ):',50^AJ,22^FD':Scribe:'^FS':CRLF$
|
|
Next WaferIndex
|
|
|
|
Str := '^XZ':CRLF$
|
|
|
|
Str := '^FWN' ; // Reset orientation to "Normal"
|
|
|
|
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
|
|
stat = Set_Printer('TEXT',Str)
|
|
end else
|
|
stat = Direct_Print('PRINT', Str)
|
|
end
|
|
|
|
|
|
RETURN
|