modified react item calculated description to output even if susceptor size is null

This commit is contained in:
Infineon\StieberD
2025-09-03 14:12:14 -07:00
parent 981840fd95
commit 3211eb5593

View File

@ -20,13 +20,13 @@ DECLARE FUNCTION Printer_Select, Set_Printer, obj_Install, Direct_Print, Environ
DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn, Direct_Print
DECLARE SUBROUTINE ErrMsg, Btree.Extract
$INSERT LOGICAL
$INSERT MSG_EQUATES
$INSERT REACT_ITEM_EQUATES
$INSERT REACT_ITEM_HIST_EQUATES
$INSERT REACTOR_EQUATES
$INSERT REACT_READS_EQUATES
EQU PI$LEFT TO 1
EQU PI$TOP TO 2
EQU PI$RIGHT TO 3
@ -35,12 +35,9 @@ EQU PI$WIDTH TO 5
EQU PI$HEIGHT TO 6
EQU PI$SIZE TO 7
EQU CRLF$ TO \0D0A\
EQU TAB$ TO CHAR(9)
ErrTitle = 'Error in Stored Procedure "obj_ReactItem"'
ErrorMsg = ''
@ -81,35 +78,35 @@ RETURN Result
CurrStatus:
* * * * * * *
IF NOT(ASSIGNED(RINo)) THEN RINo = Parms[1,@RM]
IF NOT(ASSIGNED(ReactItemRec)) THEN ReactItemRec = Parms[COL2()+1,@RM]
IF NOT(ASSIGNED(RINo)) THEN RINo = Parms[1,@RM]
IF NOT(ASSIGNED(ReactItemRec)) THEN ReactItemRec = Parms[COL2()+1,@RM]
IF RINo = '' THEN RETURN ;* This is used in the dictionary -> don't throw an error for a null parmeter
IF RINo = '' THEN RETURN ;* This is used in the dictionary -> don't throw an error for a null parmeter
IF ReactItemRec = '' THEN ReactItemRec = XLATE('REACT_ITEM',RINo,'','X')
IF ReactItemRec = '' THEN ReactItemRec = XLATE('REACT_ITEM',RINo,'','X')
Parms = '':@RM:RINo:@RM:''
HistKeys = obj_React_Item_Hist('GetHistory',Parms) ;* 3 parameters RINo is the middle one
HistKey = HistKeys<1,1> ;* This is the most recent
Parms = '':@RM:RINo:@RM:''
HistKeys = obj_React_Item_Hist('GetHistory',Parms) ;* 3 parameters RINo is the middle one
HistKey = HistKeys<1,1> ;* This is the most recent
LastInstallRec = XLATE('REACT_ITEM_HIST',HistKeys<1,1>,'','X')
LastInstallRec = XLATE('REACT_ITEM_HIST',HistKeys<1,1>,'','X')
InstDTM = FIELD(HistKey,'*',3)
RemDTM = LastInstallRec<REACT_ITEM_HIST_REM_DTM$>
InstDTM = FIELD(HistKey,'*',3)
RemDTM = LastInstallRec<REACT_ITEM_HIST_REM_DTM$>
RetireDt = ReactItemRec<REACT_ITEM_RETIRE_DT$>
Notes = ReactItemRec<REACT_ITEM_NOTES$>
RetireDt = ReactItemRec<REACT_ITEM_RETIRE_DT$>
Notes = ReactItemRec<REACT_ITEM_NOTES$>
CONVERT @LOWER_CASE TO @UPPER_CASE IN NOtes
CONVERT @LOWER_CASE TO @UPPER_CASE IN NOtes
BEGIN CASE
BEGIN CASE
CASE RetireDt NE '' ; Result = 'R'
CASE InstDTM NE '' AND RemDTM = '' ; Result = 'I'
CASE InstDTM NE '' AND RemDTM NE '' OR INDEX(Notes,'USED',1) ; Result = 'U'
CASE InstDTM = '' AND RemDTM = '' ; Result = 'N'
CASE 1 ; Result = '?'
END CASE
CASE Otherwise$ ; Result = '?'
END CASE
RETURN
@ -118,28 +115,28 @@ RETURN
ServiceHrs:
* * * * * * *
IF NOT(ASSIGNED(RINo)) THEN RINo = Parms[1,@RM]
IF NOT(ASSIGNED(ReactItemRec)) THEN ReactItemRec = Parms[COL2()+1,@RM]
IF NOT(ASSIGNED(RINo)) THEN RINo = Parms[1,@RM]
IF NOT(ASSIGNED(ReactItemRec)) THEN ReactItemRec = Parms[COL2()+1,@RM]
IF RINo = '' THEN RETURN ;* This is used in the dictionary -> don't throw an error for a null parmeter
IF RINo = '' THEN RETURN ;* This is used in the dictionary -> don't throw an error for a null parmeter
IF ReactItemRec = '' THEN ReactItemRec = XLATE('REACT_ITEM',RINo,'','X')
IF ReactItemRec = '' THEN ReactItemRec = XLATE('REACT_ITEM',RINo,'','X')
LastRemDtm = ReactItemRec<REACT_ITEM_REM_DTM$,1>
LastRemDtm = ReactItemRec<REACT_ITEM_REM_DTM$,1>
IF LastRemDTM = '' THEN
IF LastRemDTM = '' THEN
ReactNo = ReactItemRec<REACT_ITEM_REACT_NO$,1>
LastReadDTM = XLATE('REACTOR',ReactNo,REACTOR_LAST_READ_HRS_DTM$,'X')
LastReadHrs = XLATE('REACT_READS',ReactNo:'*':LastReadDTM,REACT_READS_HOURS$,'X')
END ELSE
END ELSE
LastReadHrs = ''
END
END
Ans = ''
Ans = ''
IRCnt = COUNT(ReactItemRec<REACT_ITEM_INST_REACT_HRS$>,@VM) + (ReactItemRec<REACT_ITEM_INST_REACT_HRS$> NE '')
IRCnt = COUNT(ReactItemRec<REACT_ITEM_INST_REACT_HRS$>,@VM) + (ReactItemRec<REACT_ITEM_INST_REACT_HRS$> NE '')
FOR I = 1 TO IRCnt
FOR I = 1 TO IRCnt
RemReactHrs = ReactItemRec<REACT_ITEM_REM_REACT_HRS$,I>
InstReactHrs = ReactItemRec<REACT_ITEM_INST_REACT_HRS$,I>
@ -158,9 +155,9 @@ FOR I = 1 TO IRCnt
END ELSE
Ans<1,I> = ''
END
NEXT I
NEXT I
Result = Ans
Result = Ans
RETURN
@ -169,31 +166,31 @@ RETURN
ServiceWfrs:
* * * * * * *
IF NOT(ASSIGNED(RINo)) THEN RINo = Parms[1,@RM]
IF NOT(ASSIGNED(ReactItemRec)) THEN ReactItemRec = Parms[COL2()+1,@RM]
IF NOT(ASSIGNED(RINo)) THEN RINo = Parms[1,@RM]
IF NOT(ASSIGNED(ReactItemRec)) THEN ReactItemRec = Parms[COL2()+1,@RM]
IF RINo = '' THEN RETURN ;* This is used in the dictionary -> don't throw an error for a null parmeter
IF RINo = '' THEN RETURN ;* This is used in the dictionary -> don't throw an error for a null parmeter
IF ReactItemRec = '' THEN ReactItemRec = XLATE('REACT_ITEM',RINo,'','X')
IF ReactItemRec = '' THEN ReactItemRec = XLATE('REACT_ITEM',RINo,'','X')
LastRemDtm = ReactItemRec<REACT_ITEM_REM_DTM$,1>
LastRemDtm = ReactItemRec<REACT_ITEM_REM_DTM$,1>
IF LastRemDTM = '' THEN
IF LastRemDTM = '' THEN
ReactNo = ReactItemRec<REACT_ITEM_REACT_NO$,1>
LastReadDTM = XLATE('REACTOR',ReactNo,REACTOR_LAST_READ_WFRS_DTM$,'X')
LastReadWfrs = XLATE('REACT_READS',ReactNo:'*':LastReadDTM,REACT_READS_WAFER_CNT$,'X')
END ELSE
END ELSE
LastReadWfrs = ''
END
END
Ans = ''
Ans = ''
IRCnt = COUNT(ReactItemRec<REACT_ITEM_INST_REACT_WFRS$>,@VM) + (ReactItemRec<REACT_ITEM_INST_REACT_WFRS$> NE '')
IRCnt = COUNT(ReactItemRec<REACT_ITEM_INST_REACT_WFRS$>,@VM) + (ReactItemRec<REACT_ITEM_INST_REACT_WFRS$> NE '')
IF IRCnt = 0 THEN
IF IRCnt = 0 THEN
Ans = LastReadWfrs
END ELSE
END ELSE
FOR I = 1 TO IRCnt
@ -211,9 +208,9 @@ END ELSE
END
NEXT I
END
END
Result = Ans
Result = Ans
RETURN Result
@ -222,20 +219,20 @@ RETURN Result
Serial_RINo:
* * * * * * *
* Temporary for conversion
* Temporary for conversion
SerialNos = Parms[1,@RM]
SerialNos = Parms[1,@RM]
IF SerialNos = '' THEN RETURN
IF SerialNos = '' THEN RETURN
OPEN 'DICT.REACT_ITEM' TO DictReactItem ELSE
OPEN 'DICT.REACT_ITEM' TO DictReactItem ELSE
RETURN
END
END
snCnt = COUNT(SerialNos,@VM) + (SerialNos NE '')
snCnt = COUNT(SerialNos,@VM) + (SerialNos NE '')
FOR I = 1 TO snCnt
FOR I = 1 TO snCnt
SerialNo = SerialNos<1,I>
IF SerialNo NE '' THEN
@ -254,7 +251,7 @@ FOR I = 1 TO snCnt
Result<1,I> = RINo
END ;* End of check for null SerialNo
NEXT I
NEXT I
RETURN
@ -263,30 +260,30 @@ RETURN
ServicePCRC:
* * * * * * *
IF NOT(ASSIGNED(RINo)) THEN RINo = Parms[1,@RM]
IF NOT(ASSIGNED(ReactItemRec)) THEN ReactItemRec = Parms[COL2()+1,@RM]
IF NOT(ASSIGNED(RINo)) THEN RINo = Parms[1,@RM]
IF NOT(ASSIGNED(ReactItemRec)) THEN ReactItemRec = Parms[COL2()+1,@RM]
IF RINo = '' THEN RETURN ;* This is used in the dictionary -> don't throw an error for a null parmeter
IF RINo = '' THEN RETURN ;* This is used in the dictionary -> don't throw an error for a null parmeter
IF ReactItemRec = '' THEN ReactItemRec = XLATE('REACT_ITEM',RINo,'','X')
IF ReactItemRec = '' THEN ReactItemRec = XLATE('REACT_ITEM',RINo,'','X')
LastRemDtm = ReactItemRec<REACT_ITEM_REM_DTM$,1>
LastRemDtm = ReactItemRec<REACT_ITEM_REM_DTM$,1>
IF LastRemDTM = '' THEN
IF LastRemDTM = '' THEN
ReactNo = ReactItemRec<REACT_ITEM_REACT_NO$,1>
LastReadDTM = XLATE('REACTOR',ReactNo,REACTOR_LAST_READ_WFRS_DTM$,'X')
LastReadWfrs = XLATE('REACT_READS',ReactNo:'*':LastReadDTM,REACT_READS_WAFER_CNT$,'X')
END ELSE
END ELSE
LastReadWfrs = ''
END
END
Ans = ''
Ans = ''
IRCnt = COUNT(ReactItemRec<REACT_ITEM_INST_REACT_WFRS$>,@VM) + (ReactItemRec<REACT_ITEM_INST_REACT_WFRS$> NE '')
IRCnt = COUNT(ReactItemRec<REACT_ITEM_INST_REACT_WFRS$>,@VM) + (ReactItemRec<REACT_ITEM_INST_REACT_WFRS$> NE '')
IF IRCnt = 0 THEN
IF IRCnt = 0 THEN
Ans = LastReadWfrs
END ELSE
END ELSE
FOR I = 1 TO IRCnt
RemReactWfrs = ReactItemRec<REACT_ITEM_REM_REACT_WFRS$,I>
@ -303,9 +300,9 @@ END ELSE
END
NEXT I
END
END
Result = Ans
Result = Ans
RETURN
@ -314,21 +311,21 @@ RETURN
ReactWfrCnt:
* * * * * * *
IF NOT(ASSIGNED(RINo)) THEN RINo = Parms[1,@RM]
IF NOT(ASSIGNED(ReactItemRec)) THEN ReactItemRec = Parms[COL2()+1,@RM]
IF NOT(ASSIGNED(RINo)) THEN RINo = Parms[1,@RM]
IF NOT(ASSIGNED(ReactItemRec)) THEN ReactItemRec = Parms[COL2()+1,@RM]
IF RINo = '' THEN RETURN ;* This is used in the dictionary -> don't throw an error for a null parmeter
IF RINo = '' THEN RETURN ;* This is used in the dictionary -> don't throw an error for a null parmeter
IF ReactItemRec = '' THEN ReactItemRec = XLATE('REACT_ITEM',RINo,'','X')
IF ReactItemRec = '' THEN ReactItemRec = XLATE('REACT_ITEM',RINo,'','X')
ReactNos = ReactItemRec<REACT_ITEM_REACT_NO$>
ReactNos = ReactItemRec<REACT_ITEM_REACT_NO$>
ReactCnt = COUNT(ReactNos,@VM) + (ReactNos NE '')
ReactCnt = COUNT(ReactNos,@VM) + (ReactNos NE '')
Ans = ''
Ans = ''
FOR I = 1 TO ReactCnt
FOR I = 1 TO ReactCnt
ReactNo = ReactNos<1,I>
InstWfrCnt = ReactItemRec<REACT_ITEM_INST_REACT_WFRS$,I>
RemWfrCnt = ReactItemRec<REACT_ITEM_REM_REACT_WFRS$,I>
@ -350,9 +347,9 @@ FOR I = 1 TO ReactCnt
Ans<1,I> = Delta
NEXT I
NEXT I
Result = Ans
Result = Ans
RETURN
@ -361,20 +358,20 @@ RETURN
ReactHrs:
* * * * * * *
IF NOT(ASSIGNED(RINo)) THEN RINo = Parms[1,@RM]
IF NOT(ASSIGNED(ReactItemRec)) THEN ReactItemRec = Parms[COL2()+1,@RM]
IF NOT(ASSIGNED(RINo)) THEN RINo = Parms[1,@RM]
IF NOT(ASSIGNED(ReactItemRec)) THEN ReactItemRec = Parms[COL2()+1,@RM]
IF RINo = '' THEN RETURN ;* This is used in the dictionary -> don't throw an error for a null parmeter
IF RINo = '' THEN RETURN ;* This is used in the dictionary -> don't throw an error for a null parmeter
IF ReactItemRec = '' THEN ReactItemRec = XLATE('REACT_ITEM',RINo,'','X')
IF ReactItemRec = '' THEN ReactItemRec = XLATE('REACT_ITEM',RINo,'','X')
ReactNos = ReactItemRec<REACT_ITEM_REACT_NO$>
ReactNos = ReactItemRec<REACT_ITEM_REACT_NO$>
ReactCnt = COUNT(ReactNos,@VM) + (ReactNos NE '')
ReactCnt = COUNT(ReactNos,@VM) + (ReactNos NE '')
Ans = ''
Ans = ''
FOR I = 1 TO ReactCnt
FOR I = 1 TO ReactCnt
ReactNo = ReactNos<1,I>
InstHrs = ReactItemRec<REACT_ITEM_INST_REACT_HRS$,I>
RemHrs = ReactItemRec<REACT_ITEM_REM_REACT_HRS$,I>
@ -395,32 +392,31 @@ FOR I = 1 TO ReactCnt
Ans<1,I> = Delta
NEXT I
NEXT I
Result = Ans
Result = Ans
return
* * * * * * *
Serial_GRNo:
* * * * * * *
* Temporary for conversion
* Temporary for conversion
SerialNos = Parms[1,@RM]
SerialNos = Parms[1,@RM]
IF SerialNos = '' THEN RETURN
IF SerialNos = '' THEN RETURN
OPEN 'DICT.REACT_ITEM' TO DictReactItem ELSE
OPEN 'DICT.REACT_ITEM' TO DictReactItem ELSE
RETURN
END
END
snCnt = COUNT(SerialNos,@VM) + (SerialNos NE '')
snCnt = COUNT(SerialNos,@VM) + (SerialNos NE '')
FOR I = 1 TO snCnt
FOR I = 1 TO snCnt
SerialNo = SerialNos<1,I>
IF SerialNo NE '' THEN
SearchString = 'SERIAL':@VM:SerialNo:@FM
@ -434,9 +430,7 @@ FOR I = 1 TO snCnt
Result<1,I> = RINo
END ;* End of check for null SerialNo
NEXT I
NEXT I
RETURN
@ -445,32 +439,32 @@ RETURN
SplitSerial:
* * * * * * *
PartNo = Parms[1,@RM]
PartNo = Parms[1,@RM]
IF PartNo = '' THEN ErrorMsg = 'Null Parameter "PartNo" passed to routine. (':Method:')'
IF PartNo = '' THEN ErrorMsg = 'Null Parameter "PartNo" passed to routine. (':Method:')'
IF ErrorMsg NE '' THEN RETURN
IF ErrorMsg NE '' THEN RETURN
OPEN 'DICT.REACT_ITEM' TO DictReactItem ELSE
OPEN 'DICT.REACT_ITEM' TO DictReactItem ELSE
DEBUG
RETURN
END
END
SelectSent = 'SERIAL':@VM:'[':PartNo:']':@FM
Option = ''
Flag = ''
SelectSent = 'SERIAL':@VM:'[':PartNo:']':@FM
Option = ''
Flag = ''
Btree.Extract(SelectSent,'REACT_ITEM',DictReactItem,RINos,Option,Flag)
Btree.Extract(SelectSent,'REACT_ITEM',DictReactItem,RINos,Option,Flag)
IF Get_Status(errCode) THEN
IF Get_Status(errCode) THEN
ErrMsg(errCode)
RETURN
END
END
grCnt = COUNT(RINos,@VM) + (RINos NE '')
grCnt = COUNT(RINos,@VM) + (RINos NE '')
FOR I = 1 TO grCnt
FOR I = 1 TO grCnt
RINo = RINos<1,I>
otParms = 'REACT_ITEM':@RM:RINo
@ -492,9 +486,9 @@ FOR I = 1 TO grCnt
obj_Tables('WriteRec',otParms)
NEXT I
NEXT I
Result = RINos
Result = RINos
RETURN
@ -503,16 +497,16 @@ RETURN
CalcDesc:
* * * * * * *
IF NOT(ASSIGNED(RINo)) THEN RINo = Parms[1,@RM]
IF NOT(ASSIGNED(ReactItemRec)) THEN ReactItemRec = Parms[COL2()+1,@RM]
IF NOT(ASSIGNED(RINo)) THEN RINo = Parms[1,@RM]
IF NOT(ASSIGNED(ReactItemRec)) THEN ReactItemRec = Parms[COL2()+1,@RM]
IF RINo = '' THEN RETURN ;* This is used in the dictionary -> don't throw an error for a null parmeter
IF RINo = '' THEN RETURN ;* This is used in the dictionary -> don't throw an error for a null parmeter
IF ReactItemRec = '' THEN ReactItemRec = XLATE('REACT_ITEM',RINo,'','X')
IF ReactItemRec = '' THEN ReactItemRec = XLATE('REACT_ITEM',RINo,'','X')
RIType = ReactItemRec<REACT_ITEM_RI_TYPE$>
RIType = ReactItemRec<REACT_ITEM_RI_TYPE$>
BEGIN CASE
BEGIN CASE
CASE RITYpe = 'W'
CalcDesc = ReactItemRec<REACT_ITEM_DESC$>
@ -542,8 +536,7 @@ BEGIN CASE
END
CASE 1
CASE Otherwise$
* Graphite types
@ -577,212 +570,191 @@ BEGIN CASE
BEGIN CASE
CASE RingDesc NE '' AND SuscSize EQ '' AND PktSize NE '' ; CalcDesc := RingDesc
CASE RingDesc NE '' AND SuscSize NE '' ; CalcDesc := RingDesc:' for ':SuscSize:'in Susceptor with ':PktQty:' ':PktLabel
*CASE RingDesc EQ '' AND SuscSize NE '' ; CalcDesc := RITypeDesc:', ':SuscSize:'in with ':PktSize:'in':PktQty:' ':PktLabel ;* Replaced PktQty with PktSize -dkk 9/11/14
CASE RingDesc EQ '' AND SuscSize NE '' ; CalcDesc := RITypeDesc:' ':SuscSize:'in, with ':PktQty: ' ':PktLabel:' @ ':PktSize:'in' ;* Replaced PktQty with PktSize -dkk 9/11/14
CASE 1
CASE RITypeDesc NE '' AND PktQty NE '' AND PktSize NE '' ; CalcDesc := RITypeDesc:' with ':PktQty: ' ':PktLabel:' @ ':PktSize:'in'
CASE Otherwise$
END CASE
END CASE
END CASE
Result = CalcDesc
Result = CalcDesc
RETURN
* * * * * * *
PrintLabel:
* * * * * * *
RINo = Parms[1,@RM]
RIRec = Parms[COL2()+1,@RM]
RINo = Parms[1,@RM]
RIRec = Parms[COL2()+1,@RM]
IF RINo = '' THEN
IF RINo = '' THEN
RETURN
END
END
IF RIRec = '' THEN
IF RIRec = '' THEN
RIRec = XLATE('REACT_ITEM',RINo,'','X')
IF RIRec = '' THEN
RETURN
END
END
END
EnterDTM = OCONV(RIRec<REACT_ITEM_ENTER_DTM$>,'DT4/^HS')
Desc = RIRec<REACT_ITEM_DESC$>
MfrCd = RIRec<REACT_ITEM_MFR_CD$>
MfrName = XLATE('REACT_ITEM',RINo,'MFR_NAME','X')
MfrPartNo = RIRec<REACT_ITEM_MFR_PART_NO$>
MfrPartNoRev = RIRec<REACT_ITEM_MFR_PART_NO_REV$>
SerialNo = RIRec<REACT_ITEM_SERIAL_NO$>
CurrStatus = OCONV(XLATE('REACT_ITEM',RINo,'CURR_STATUS','X'),'[CONV_ITEM_CURR_STATUS]')
RITypeDesc = XLATE('REACT_ITEM',RINo,'RI_TYPE_DESC','X')
SuscSize = RIRec<REACT_ITEM_SUSC_SIZE$>
SuscSizeDesc = XLATE('REACT_ITEM',RINo,'SUSC_SIZE_DESC','X')
PktSize = RIRec<REACT_ITEM_PKT_SIZE$>
PktSizeDesc = XLATE('REACT_ITEM',RINo,'PKT_SIZE_DESC','X')
PktQty = RIRec<REACT_ITEM_PKT_QTY$>
PPlusRDSNo = RIRec<REACT_ITEM_PPLUS_RDS_NO$>
EnterDTM = OCONV(RIRec<REACT_ITEM_ENTER_DTM$>,'DT4/^HS')
Desc = RIRec<REACT_ITEM_DESC$>
MfrCd = RIRec<REACT_ITEM_MFR_CD$>
MfrName = XLATE('REACT_ITEM',RINo,'MFR_NAME','X')
MfrPartNo = RIRec<REACT_ITEM_MFR_PART_NO$>
MfrPartNoRev = RIRec<REACT_ITEM_MFR_PART_NO_REV$>
SerialNo = RIRec<REACT_ITEM_SERIAL_NO$>
CurrStatus = OCONV(XLATE('REACT_ITEM',RINo,'CURR_STATUS','X'),'[CONV_ITEM_CURR_STATUS]')
RITypeDesc = XLATE('REACT_ITEM',RINo,'RI_TYPE_DESC','X')
SuscSize = RIRec<REACT_ITEM_SUSC_SIZE$>
SuscSizeDesc = XLATE('REACT_ITEM',RINo,'SUSC_SIZE_DESC','X')
PktSize = RIRec<REACT_ITEM_PKT_SIZE$>
PktSizeDesc = XLATE('REACT_ITEM',RINo,'PKT_SIZE_DESC','X')
PktQty = RIRec<REACT_ITEM_PKT_QTY$>
PPlusRDSNo = RIRec<REACT_ITEM_PPLUS_RDS_NO$>
* Build calculated description from field data
* Build calculated description from field data
CalcDesc = obj_React_Item('CalcDesc',RINo:@RM:'')
CalcDesc = obj_React_Item('CalcDesc',RINo:@RM:'')
IF PPLusRDSNo NE '' THEN
IF PPLusRDSNo NE '' THEN
CalcDesc := ' ( P++ )'
END
END
Parms = '':@RM:RINo:@RM:''
HistKeys = obj_React_Item_Hist('GetHistory',Parms) ;* 3 parameters RINo is the middle one
HistKey = HistKeys<1,1> ;* This is the most recent
Parms = '':@RM:RINo:@RM:''
HistKeys = obj_React_Item_Hist('GetHistory',Parms) ;* 3 parameters RINo is the middle one
HistKey = HistKeys<1,1> ;* This is the most recent
LastInstallRec = XLATE('REACT_ITEM_HIST',HistKeys<1,1>,'','X')
LastInstallRec = XLATE('REACT_ITEM_HIST',HistKeys<1,1>,'','X')
ReactNo = HistKey[1,'*']
InstallDTM = OCONV(FIELD(HistKey,'*',3),'DT4/^S')
RemoveDTM = OCONV(LastInstallRec<REACT_ITEM_HIST_REM_DTM$>,'DT4/^S')
ReactNo = HistKey[1,'*']
InstallDTM = OCONV(FIELD(HistKey,'*',3),'DT4/^S')
RemoveDTM = OCONV(LastInstallRec<REACT_ITEM_HIST_REM_DTM$>,'DT4/^S')
FileName = "Printing Label"
Title = "Printing Label"
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
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
PageSetup = '1' ;* Landscape
PrintSetup = '' ;* Preview
PrinterID = '\\mesirwfp001\MESZBRPRT002' ;* This is the Zebra 105se
PrinterID = '\\mesirwfp001\MESZBRPRT002' ;* This is the Zebra 105se
PrintPath = Printer_Select(PrinterID) ;* Popup is skipped IF Printer ID is passed
PrintPath = Printer_Select(PrinterID) ;* Popup is skipped IF Printer ID is passed
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
stat = Set_Printer("INIT",FileName,Title,PageInfo,PageSetup,PrintSetup,PrintPath)
end else
end else
stat = Direct_Print('START', PrintPath<1>, '', '')
end
end
IF stat < 0 THEN GOTO OIPrint_Error
IF stat < 0 THEN GOTO OIPrint_Error
EQU DosPath$ TO 'C:\WINDOWS\OIZPL.TXT' ;* remove jch
EQU DosPath$ TO 'C:\WINDOWS\OIZPL.TXT' ;* remove jch
Str = '^XA'
Str := '^LH0,0'
Str := '^PR2' ;* Print speed 2 inches per second
Str := '^LL406' ;* Label length = 203.2dpi x 2in
Str := '^PW812' ;* Print width = 203.2dpi x 4in ;* This was 900 jch 12/30/2013
Str := '^MD15' ;* Media darkness
Str := '^MMT' ;* Media mode t=tear off mode
Str := '^FS' ;* end command
****** First Line
Str := '^FO30,25^A0,,36^FD':obj_Install('Get_Prop','Company'):'^FS'
Str := '^FO310,25^AC,18^FDRI No:^FS':CRLF$ ;* Label
Str := '^FO390,25^A045,36^FD':RINo:'^FS':CRLF$ ;* Data
Str := '^FO560,25^AC,18^FDStatus:^FS':CRLF$ ;* Label
Str := '^FO650,25^A045,36^FD':CurrStatus:'^FS':CRLF$ ;* Data
****** Second Line
Str = '^XA'
Str := '^LH0,0'
Str := '^PR2' ;* Print speed 2 inches per second
Str := '^LL406' ;* Label length = 203.2dpi x 2in
Str := '^PW812' ;* Print width = 203.2dpi x 4in ;* This was 900 jch 12/30/2013
Str := '^MD15' ;* Media darkness
Str := '^MMT' ;* Media mode t=tear off mode
*Str := '^PQ2' ;* Print 2 labels for each pass through here
Str:= '^FO30,70^AC,18^FDDesc:^FS':CRLF$
Str:= '^FO95,70^A050,30^FD':CalcDesc:'^FS':CRLF$
Str := '^FS' ;* end command
****** First Line
Str := '^FO30,25^A0,,36^FD':obj_Install('Get_Prop','Company'):'^FS'
Str := '^FO310,25^AC,18^FDRI No:^FS':CRLF$ ;* Label
Str := '^FO390,25^A045,36^FD':RINo:'^FS':CRLF$ ;* Data
Str := '^FO560,25^AC,18^FDStatus:^FS':CRLF$ ;* Label
Str := '^FO650,25^A045,36^FD':CurrStatus:'^FS':CRLF$ ;* Data
Str := '^BY2,2.0':CRLF$
Str := '^FO600,70^B3,,23,N^FD':RINo:'^FS':CRLF$
Str := '^BY2,3.0':CRLF$
****** Second Line
****** Third Line
Str:= '^FO30,70^AC,18^FDDesc:^FS':CRLF$
Str:= '^FO95,70^A050,30^FD':CalcDesc:'^FS':CRLF$
Str := '^BY2,2.0':CRLF$
Str := '^FO600,70^B3,,23,N^FD':RINo:'^FS':CRLF$
Str := '^BY2,3.0':CRLF$
Str:= '^FO30,115^AC,18^FDMfr:^FS' ;* Label
MfrData = MfrCd:' - ':MfrName
Str:= '^FO90,115^A0,,25^FD':MfrData:'^FS':CRLF$ ;* Data
****** Third Line
****** Fourth Line
Str:= '^FO30,115^AC,18^FDMfr:^FS' ;* Label
MfrData = MfrCd:' - ':MfrName
Str:= '^FO90,115^A0,,25^FD':MfrData:'^FS':CRLF$ ;* Data
Str:= '^FO30,160^AC,18^FDPN:^FS':CRLF$ ;* Label
Str:= '^FO70,160^A045,25^FD':MfrPartNo:'^FS':CRLF$ ;* Data
Str:= '^FO300,160^AC,18^FDRev:^FS':CRLF$ ;* Label
Str:= '^FO350,160^A045,25^FD':MfrPartNoRev:'^FS':CRLF$ ;* Data
Str:= '^FO500,160^AC,18^FDSN:^FS':CRLF$ ;* Label
Str:= '^FO540,160^A045,25^FD':SerialNo:'^FS':CRLF$ ;* Data
****** Fourth Line
****** Fifth Line
Str:= '^FO30,160^AC,18^FDPN:^FS':CRLF$ ;* Label
Str:= '^FO70,160^A045,25^FD':MfrPartNo:'^FS':CRLF$ ;* Data
Str:= '^FO300,160^AC,18^FDRev:^FS':CRLF$ ;* Label
Str:= '^FO350,160^A045,25^FD':MfrPartNoRev:'^FS':CRLF$ ;* Data
Str:= '^FO500,160^AC,18^FDSN:^FS':CRLF$ ;* Label
Str:= '^FO540,160^A045,25^FD':SerialNo:'^FS':CRLF$ ;* Data
Str := '^FO30,205^AC,18^FDEntered:^FS':CRLF$
Str := '^FO150,205^A0,20^FD':EnterDTM:'^FS':CRLF$
****** Sixth Line
****** Separator bar
*Str:= '^FO15,128^GB795,1^FS'
Str := '^FO30,250^AC,18^FDInstalled:^FS':CRLF$
Str := '^FO150,250^A0,20^FD':InstallDTM:'^FS':CRLF$
****** Fifth Line
Str := '^FO500,250^AC,18^FDReact No:^FS':CRLF$
Str := '^FO610,250^A0,20^FD':ReactNo:'^FS':CRLF$
Str := '^FO30,205^AC,18^FDEntered:^FS':CRLF$
Str := '^FO150,205^A0,20^FD':EnterDTM:'^FS':CRLF$
****** Sixth Line
Str := '^FO30,250^AC,18^FDInstalled:^FS':CRLF$
Str := '^FO150,250^A0,20^FD':InstallDTM:'^FS':CRLF$
Str := '^FO500,250^AC,18^FDReact No:^FS':CRLF$
Str := '^FO610,250^A0,20^FD':ReactNo:'^FS':CRLF$
****** Seventh Line
Str := '^FO30,295^AC,18^FDRemoved:^FS':CRLF$
Str := '^FO150,295^A0,20^FD':RemoveDTM:'^FS':CRLF$
*Str := '^FO410,295^AC,18^FDReact Type:^FS':CRLF$
*Str := '^FO560,295^A0,20^FD':PrintReactType:'^FS':CRLF$
****** Seventh Line
Str := '^FO30,295^AC,18^FDRemoved:^FS':CRLF$
Str := '^FO150,295^A0,20^FD':RemoveDTM:'^FS':CRLF$
* * * * * *
Jump:
* * * * * *
Str:= '^XZ'
Str := '^XZ'
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
stat = Set_Printer('TEXT',Str)
end else
end else
stat = Direct_Print('PRINT', Str)
end
end
* * * * * *
OIPrint_Error:
* * * * * *
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
stat = Set_Printer("TERM")
end else
end else
stat = Direct_Print('STOP')
end
end
RETURN