From 3211eb55936000536c206c1e4cd9802314c28ebc Mon Sep 17 00:00:00 2001 From: "Infineon\\StieberD" Date: Wed, 3 Sep 2025 14:12:14 -0700 Subject: [PATCH] modified react item calculated description to output even if susceptor size is null --- LSL2/STPROC/OBJ_REACT_ITEM.txt | 934 ++++++++++++++++----------------- 1 file changed, 453 insertions(+), 481 deletions(-) diff --git a/LSL2/STPROC/OBJ_REACT_ITEM.txt b/LSL2/STPROC/OBJ_REACT_ITEM.txt index ce648e7..e8a948b 100644 --- a/LSL2/STPROC/OBJ_REACT_ITEM.txt +++ b/LSL2/STPROC/OBJ_REACT_ITEM.txt @@ -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 + InstDTM = FIELD(HistKey,'*',3) + RemDTM = LastInstallRec -RetireDt = ReactItemRec -Notes = ReactItemRec + RetireDt = ReactItemRec + Notes = ReactItemRec -CONVERT @LOWER_CASE TO @UPPER_CASE IN NOtes + CONVERT @LOWER_CASE TO @UPPER_CASE IN NOtes -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 + 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 Otherwise$ ; Result = '?' + END CASE RETURN @@ -118,49 +115,49 @@ 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 + LastRemDtm = ReactItemRec -IF LastRemDTM = '' THEN - ReactNo = ReactItemRec - LastReadDTM = XLATE('REACTOR',ReactNo,REACTOR_LAST_READ_HRS_DTM$,'X') - LastReadHrs = XLATE('REACT_READS',ReactNo:'*':LastReadDTM,REACT_READS_HOURS$,'X') -END ELSE - LastReadHrs = '' -END - -Ans = '' - -IRCnt = COUNT(ReactItemRec,@VM) + (ReactItemRec NE '') - -FOR I = 1 TO IRCnt - - RemReactHrs = ReactItemRec - InstReactHrs = ReactItemRec - - IF I = 1 AND LastReadHrs NE '' THEN - ReactNo = ReactItemRec - - LastReadDTM = XLATE('REACTOR',ReactNo,25,'X') - LastReadHrs = XLATE('REACT_READS',ReactNo:'*':LastReadDTM,1,'X') - - RemReactHrs = LastReadHrs - END - - IF RemReactHrs > InstReactHrs AND NUM(InstReactHrs) AND NUM(RemReactHrs) THEN - Ans<1,I> = RemReactHrs - InstReactHrs + IF LastRemDTM = '' THEN + ReactNo = ReactItemRec + LastReadDTM = XLATE('REACTOR',ReactNo,REACTOR_LAST_READ_HRS_DTM$,'X') + LastReadHrs = XLATE('REACT_READS',ReactNo:'*':LastReadDTM,REACT_READS_HOURS$,'X') END ELSE - Ans<1,I> = '' + LastReadHrs = '' END -NEXT I -Result = Ans + Ans = '' + + IRCnt = COUNT(ReactItemRec,@VM) + (ReactItemRec NE '') + + FOR I = 1 TO IRCnt + + RemReactHrs = ReactItemRec + InstReactHrs = ReactItemRec + + IF I = 1 AND LastReadHrs NE '' THEN + ReactNo = ReactItemRec + + LastReadDTM = XLATE('REACTOR',ReactNo,25,'X') + LastReadHrs = XLATE('REACT_READS',ReactNo:'*':LastReadDTM,1,'X') + + RemReactHrs = LastReadHrs + END + + IF RemReactHrs > InstReactHrs AND NUM(InstReactHrs) AND NUM(RemReactHrs) THEN + Ans<1,I> = RemReactHrs - InstReactHrs + END ELSE + Ans<1,I> = '' + END + NEXT I + + Result = Ans RETURN @@ -169,51 +166,51 @@ 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 + LastRemDtm = ReactItemRec -IF LastRemDTM = '' THEN - ReactNo = ReactItemRec - LastReadDTM = XLATE('REACTOR',ReactNo,REACTOR_LAST_READ_WFRS_DTM$,'X') - LastReadWfrs = XLATE('REACT_READS',ReactNo:'*':LastReadDTM,REACT_READS_WAFER_CNT$,'X') -END ELSE - LastReadWfrs = '' -END + IF LastRemDTM = '' THEN + ReactNo = ReactItemRec + LastReadDTM = XLATE('REACTOR',ReactNo,REACTOR_LAST_READ_WFRS_DTM$,'X') + LastReadWfrs = XLATE('REACT_READS',ReactNo:'*':LastReadDTM,REACT_READS_WAFER_CNT$,'X') + END ELSE + LastReadWfrs = '' + END -Ans = '' + Ans = '' -IRCnt = COUNT(ReactItemRec,@VM) + (ReactItemRec NE '') + IRCnt = COUNT(ReactItemRec,@VM) + (ReactItemRec NE '') -IF IRCnt = 0 THEN - Ans = LastReadWfrs -END ELSE + IF IRCnt = 0 THEN + Ans = LastReadWfrs + END ELSE - FOR I = 1 TO IRCnt + FOR I = 1 TO IRCnt - RemReactWfrs = ReactItemRec - InstReactWfrs = ReactItemRec - - IF I = 1 AND LastReadWfrs NE '' THEN - RemReactWfrs = LastReadWfrs - END - - IF RemReactWfrs > InstReactWfrs AND NUM(InstReactWfrs) AND NUM(RemReactWfrs) THEN - Ans<1,I> = RemReactWfrs - InstReactWfrs - END ELSE - Ans<1,I> = '' - END - - NEXT I -END + RemReactWfrs = ReactItemRec + InstReactWfrs = ReactItemRec + + IF I = 1 AND LastReadWfrs NE '' THEN + RemReactWfrs = LastReadWfrs + END + + IF RemReactWfrs > InstReactWfrs AND NUM(InstReactWfrs) AND NUM(RemReactWfrs) THEN + Ans<1,I> = RemReactWfrs - InstReactWfrs + END ELSE + Ans<1,I> = '' + END + + NEXT I + END -Result = Ans + Result = Ans RETURN Result @@ -222,39 +219,39 @@ 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 - - RETURN -END - -snCnt = COUNT(SerialNos,@VM) + (SerialNos NE '') - -FOR I = 1 TO snCnt - SerialNo = SerialNos<1,I> - IF SerialNo NE '' THEN - - IF RowExists('REACT_ITEM',SerialNo) THEN - RINo = SerialNo - END ELSE - SearchString = 'SERIAL':@VM:SerialNo:@FM - - Option = '' - Flag = '' - - Btree.Extract(SearchString,'REACT_ITEM',DictReactItem,RINo,Option,Flag) - - IF INDEX(RINo,@VM,1) THEN RINo = FIELD(RINo,@VM,1,3) - END + OPEN 'DICT.REACT_ITEM' TO DictReactItem ELSE - Result<1,I> = RINo - END ;* End of check for null SerialNo -NEXT I + RETURN + END + + snCnt = COUNT(SerialNos,@VM) + (SerialNos NE '') + + FOR I = 1 TO snCnt + SerialNo = SerialNos<1,I> + IF SerialNo NE '' THEN + + IF RowExists('REACT_ITEM',SerialNo) THEN + RINo = SerialNo + END ELSE + SearchString = 'SERIAL':@VM:SerialNo:@FM + + Option = '' + Flag = '' + + Btree.Extract(SearchString,'REACT_ITEM',DictReactItem,RINo,Option,Flag) + + IF INDEX(RINo,@VM,1) THEN RINo = FIELD(RINo,@VM,1,3) + END + + Result<1,I> = RINo + END ;* End of check for null SerialNo + NEXT I RETURN @@ -263,49 +260,49 @@ 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 + LastRemDtm = ReactItemRec -IF LastRemDTM = '' THEN - ReactNo = ReactItemRec - LastReadDTM = XLATE('REACTOR',ReactNo,REACTOR_LAST_READ_WFRS_DTM$,'X') - LastReadWfrs = XLATE('REACT_READS',ReactNo:'*':LastReadDTM,REACT_READS_WAFER_CNT$,'X') -END ELSE - LastReadWfrs = '' -END + IF LastRemDTM = '' THEN + ReactNo = ReactItemRec + LastReadDTM = XLATE('REACTOR',ReactNo,REACTOR_LAST_READ_WFRS_DTM$,'X') + LastReadWfrs = XLATE('REACT_READS',ReactNo:'*':LastReadDTM,REACT_READS_WAFER_CNT$,'X') + END ELSE + LastReadWfrs = '' + END -Ans = '' + Ans = '' -IRCnt = COUNT(ReactItemRec,@VM) + (ReactItemRec NE '') + IRCnt = COUNT(ReactItemRec,@VM) + (ReactItemRec NE '') -IF IRCnt = 0 THEN - Ans = LastReadWfrs -END ELSE - FOR I = 1 TO IRCnt + IF IRCnt = 0 THEN + Ans = LastReadWfrs + END ELSE + FOR I = 1 TO IRCnt - RemReactWfrs = ReactItemRec - InstReactWfrs = ReactItemRec ;* This should always be set to zero - - IF I = 1 AND LastReadWfrs NE ''THEN - RemReactWfrs = LastReadWfrs - END - - IF RemReactWfrs > InstReactWfrs AND NUM(InstReactWfrs) AND NUM(RemReactWfrs) THEN - Ans<1,I> = RemReactWfrs - InstReactWfrs - ReactItemRec - END ELSE - Ans<1,I> = '' - END - - NEXT I -END + RemReactWfrs = ReactItemRec + InstReactWfrs = ReactItemRec ;* This should always be set to zero + + IF I = 1 AND LastReadWfrs NE ''THEN + RemReactWfrs = LastReadWfrs + END + + IF RemReactWfrs > InstReactWfrs AND NUM(InstReactWfrs) AND NUM(RemReactWfrs) THEN + Ans<1,I> = RemReactWfrs - InstReactWfrs - ReactItemRec + END ELSE + Ans<1,I> = '' + END + + NEXT I + END -Result = Ans + Result = Ans RETURN @@ -314,45 +311,45 @@ 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 + ReactNos = ReactItemRec -ReactCnt = COUNT(ReactNos,@VM) + (ReactNos NE '') + ReactCnt = COUNT(ReactNos,@VM) + (ReactNos NE '') -Ans = '' + Ans = '' -FOR I = 1 TO ReactCnt - ReactNo = ReactNos<1,I> - InstWfrCnt = ReactItemRec - RemWfrCnt = ReactItemRec - + FOR I = 1 TO ReactCnt + ReactNo = ReactNos<1,I> + InstWfrCnt = ReactItemRec + RemWfrCnt = ReactItemRec + - IF I = 1 AND RemWfrCnt = '' THEN - LastReadDTM = XLATE( 'REACTOR', ReactNo, REACTOR_LAST_READ_WFRS_DTM$, 'X' ) - RemWfrCnt = XLATE( 'REACT_READS' ,ReactNo:'*':LastReadDTM, REACT_READS_WAFER_CNT$, 'X' ) - END - - Delta = '' - IF InstWfrCnt NE '' THEN - IF RemWfrCnt NE '' THEN - IF RemWfrCnt >= InstWfrCnt THEN - Delta = RemWfrCnt - InstWfrCnt - END - END ;* End of check for RemWfrCnt - END ;* End of check for InstWfrCnt - - Ans<1,I> = Delta - -NEXT I + IF I = 1 AND RemWfrCnt = '' THEN + LastReadDTM = XLATE( 'REACTOR', ReactNo, REACTOR_LAST_READ_WFRS_DTM$, 'X' ) + RemWfrCnt = XLATE( 'REACT_READS' ,ReactNo:'*':LastReadDTM, REACT_READS_WAFER_CNT$, 'X' ) + END + + Delta = '' + IF InstWfrCnt NE '' THEN + IF RemWfrCnt NE '' THEN + IF RemWfrCnt >= InstWfrCnt THEN + Delta = RemWfrCnt - InstWfrCnt + END + END ;* End of check for RemWfrCnt + END ;* End of check for InstWfrCnt + + Ans<1,I> = Delta + + NEXT I -Result = Ans + Result = Ans RETURN @@ -361,82 +358,79 @@ 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 + ReactNos = ReactItemRec -ReactCnt = COUNT(ReactNos,@VM) + (ReactNos NE '') + ReactCnt = COUNT(ReactNos,@VM) + (ReactNos NE '') -Ans = '' + Ans = '' -FOR I = 1 TO ReactCnt - ReactNo = ReactNos<1,I> - InstHrs = ReactItemRec - RemHrs = ReactItemRec + FOR I = 1 TO ReactCnt + ReactNo = ReactNos<1,I> + InstHrs = ReactItemRec + RemHrs = ReactItemRec - IF I = 1 AND RemHrs = '' THEN - LastReadDTM = XLATE( 'REACTOR', ReactNo, REACTOR_LAST_READ_HRS_DTM$, 'X' ) - RemHrs = XLATE( 'REACT_READS' ,ReactNo:'*':LastReadDTM, REACT_READS_HOURS$, 'X' ) - END - - Delta = '' - IF InstHrs NE '' THEN - IF RemHrs NE '' THEN - IF RemHrs >= InstHrs THEN - Delta = RemHrs - InstHrs - END - END ;* End of check for RemHrs - END ;* End of check for InstHrs - - Ans<1,I> = Delta - -NEXT I + IF I = 1 AND RemHrs = '' THEN + LastReadDTM = XLATE( 'REACTOR', ReactNo, REACTOR_LAST_READ_HRS_DTM$, 'X' ) + RemHrs = XLATE( 'REACT_READS' ,ReactNo:'*':LastReadDTM, REACT_READS_HOURS$, 'X' ) + END + + Delta = '' + IF InstHrs NE '' THEN + IF RemHrs NE '' THEN + IF RemHrs >= InstHrs THEN + Delta = RemHrs - InstHrs + END + END ;* End of check for RemHrs + END ;* End of check for InstHrs + + Ans<1,I> = Delta + + 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 - - RETURN -END - -snCnt = COUNT(SerialNos,@VM) + (SerialNos NE '') - -FOR I = 1 TO snCnt - SerialNo = SerialNos<1,I> - IF SerialNo NE '' THEN - SearchString = 'SERIAL':@VM:SerialNo:@FM - - Option = '' - Flag = '' - - Btree.Extract(SearchString,'REACT_ITEM',DictReactItem,RINo,Option,Flag) - - IF INDEX(RINo,@VM,1) THEN RINo = FIELD(RINo,@VM,1,3) + OPEN 'DICT.REACT_ITEM' TO DictReactItem ELSE - Result<1,I> = RINo - END ;* End of check for null SerialNo -NEXT I + RETURN + END + snCnt = COUNT(SerialNos,@VM) + (SerialNos NE '') + FOR I = 1 TO snCnt + SerialNo = SerialNos<1,I> + IF SerialNo NE '' THEN + SearchString = 'SERIAL':@VM:SerialNo:@FM + + Option = '' + Flag = '' + + Btree.Extract(SearchString,'REACT_ITEM',DictReactItem,RINo,Option,Flag) + + IF INDEX(RINo,@VM,1) THEN RINo = FIELD(RINo,@VM,1,3) + + Result<1,I> = RINo + END ;* End of check for null SerialNo + NEXT I RETURN @@ -445,56 +439,56 @@ 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 - DEBUG - RETURN -END + OPEN 'DICT.REACT_ITEM' TO DictReactItem ELSE + DEBUG + RETURN + 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 - ErrMsg(errCode) - RETURN -END + IF Get_Status(errCode) THEN + ErrMsg(errCode) + RETURN + END -grCnt = COUNT(RINos,@VM) + (RINos NE '') + grCnt = COUNT(RINos,@VM) + (RINos NE '') -FOR I = 1 TO grCnt - RINo = RINos<1,I> - - otParms = 'REACT_ITEM':@RM:RINo - - ReactItemRec = obj_Tables('ReadRec',otParms) - - Serial = ReactItemRec - - SWAP PartNo WITH '' IN Serial - - *Serial[1,LEN(PartNo)] = '' - - IF Serial[1,1] = '-' THEN Serial[1,1] = '' - - ReactItemRec = Serial - ReactItemRec = PartNo + FOR I = 1 TO grCnt + RINo = RINos<1,I> - otParms = FIELDSTORE(OtParms,@RM,4,0,ReactItemRec) + otParms = 'REACT_ITEM':@RM:RINo - obj_Tables('WriteRec',otParms) + ReactItemRec = obj_Tables('ReadRec',otParms) -NEXT I + Serial = ReactItemRec + + SWAP PartNo WITH '' IN Serial + + *Serial[1,LEN(PartNo)] = '' + + IF Serial[1,1] = '-' THEN Serial[1,1] = '' + + ReactItemRec = Serial + ReactItemRec = PartNo + + otParms = FIELDSTORE(OtParms,@RM,4,0,ReactItemRec) -Result = RINos + obj_Tables('WriteRec',otParms) + + NEXT I + + Result = RINos RETURN @@ -503,286 +497,264 @@ 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 + RIType = ReactItemRec -BEGIN CASE - CASE RITYpe = 'W' - CalcDesc = ReactItemRec - - CASE RIType = 'A' - CalcDesc = ReactItemRec - - CASE RIType = 'T' - Desc = ReactItemRec - Style = ReactItemRec - Pressure = ReactItemRec - - RITypeDesc = obj_Popup('CodeDesc','REACT_ITEM_TYPE':@RM:RIType) - - IF INDEX(Desc,'2000',1) THEN - - CalcDesc = 'Kit 2000, ':RITypeDesc + BEGIN CASE + CASE RITYpe = 'W' + CalcDesc = ReactItemRec - IF Style NE '' THEN CalcDesc := ' - ':Style - IF Pressure NE '' THEN CalcDesc := ' - ':Pressure + CASE RIType = 'A' + CalcDesc = ReactItemRec - END ELSE - - CalcDesc = RITypeDesc + CASE RIType = 'T' + Desc = ReactItemRec + Style = ReactItemRec + Pressure = ReactItemRec - IF Style NE '' THEN CalcDesc := ' - ':Style - IF Pressure NE '' THEN CalcDesc := ' - ':Pressure - END - - - CASE 1 - - - * Graphite types - - Desc = ReactItemRec - RIType = ReactItemRec - RITypeDesc = obj_Popup('CodeDesc','REACT_ITEM_TYPE':@RM:RIType) - SuscSize = ReactItemRec - PktQty = ReactItemRec - PktSize = ReactItemRec - - IF INDEX(Desc,'2000',1) THEN - CalcDesc = 'Kit 2000, ' - END ELSE - CalcDesc = '' - END - - IF PktQty = '' THEN PktQty = 1 - - BEGIN CASE - CASE PktQty = 1 ; PktLabel = 'pkt' - CASE PktQty > 1 ; PktLabel = 'pkts' - CASE 1 ; PktLabel = '' - END CASE - - IF RIType[1,1] = 'R' THEN - RingDesc = RITypeDesc:', ':PktSize:'in' - END ELSE - RingDesc = '' - END - - 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 + RITypeDesc = obj_Popup('CodeDesc','REACT_ITEM_TYPE':@RM:RIType) - END CASE + IF INDEX(Desc,'2000',1) THEN + + CalcDesc = 'Kit 2000, ':RITypeDesc + + IF Style NE '' THEN CalcDesc := ' - ':Style + IF Pressure NE '' THEN CalcDesc := ' - ':Pressure + + END ELSE + + CalcDesc = RITypeDesc + + IF Style NE '' THEN CalcDesc := ' - ':Style + IF Pressure NE '' THEN CalcDesc := ' - ':Pressure + END + + + CASE Otherwise$ + * Graphite types + + Desc = ReactItemRec + RIType = ReactItemRec + RITypeDesc = obj_Popup('CodeDesc','REACT_ITEM_TYPE':@RM:RIType) + SuscSize = ReactItemRec + PktQty = ReactItemRec + PktSize = ReactItemRec - + IF INDEX(Desc,'2000',1) THEN + CalcDesc = 'Kit 2000, ' + END ELSE + CalcDesc = '' + END + + IF PktQty = '' THEN PktQty = 1 + + BEGIN CASE + CASE PktQty = 1 ; PktLabel = 'pkt' + CASE PktQty > 1 ; PktLabel = 'pkts' + CASE 1 ; PktLabel = '' + END CASE + + IF RIType[1,1] = 'R' THEN + RingDesc = RITypeDesc:', ':PktSize:'in' + END ELSE + RingDesc = '' + END + + 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 ':PktQty: ' ':PktLabel:' @ ':PktSize:'in' ;* Replaced PktQty with PktSize -dkk 9/11/14 + 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 - RETURN -END - - -IF RIRec = '' THEN - RIRec = XLATE('REACT_ITEM',RINo,'','X') - IF RIRec = '' THEN + IF RINo = '' THEN RETURN END -END - -EnterDTM = OCONV(RIRec,'DT4/^HS') -Desc = RIRec -MfrCd = RIRec -MfrName = XLATE('REACT_ITEM',RINo,'MFR_NAME','X') -MfrPartNo = RIRec -MfrPartNoRev = RIRec -SerialNo = RIRec -CurrStatus = OCONV(XLATE('REACT_ITEM',RINo,'CURR_STATUS','X'),'[CONV_ITEM_CURR_STATUS]') -RITypeDesc = XLATE('REACT_ITEM',RINo,'RI_TYPE_DESC','X') -SuscSize = RIRec -SuscSizeDesc = XLATE('REACT_ITEM',RINo,'SUSC_SIZE_DESC','X') -PktSize = RIRec -PktSizeDesc = XLATE('REACT_ITEM',RINo,'PKT_SIZE_DESC','X') -PktQty = RIRec -PPlusRDSNo = RIRec - -* Build calculated description from field data - -CalcDesc = obj_React_Item('CalcDesc',RINo:@RM:'') - -IF PPLusRDSNo NE '' THEN - CalcDesc := ' ( P++ )' -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 + IF RIRec = '' THEN + RIRec = XLATE('REACT_ITEM',RINo,'','X') + IF RIRec = '' THEN + RETURN + END + END -LastInstallRec = XLATE('REACT_ITEM_HIST',HistKeys<1,1>,'','X') + EnterDTM = OCONV(RIRec,'DT4/^HS') + Desc = RIRec + MfrCd = RIRec + MfrName = XLATE('REACT_ITEM',RINo,'MFR_NAME','X') + MfrPartNo = RIRec + MfrPartNoRev = RIRec + SerialNo = RIRec + CurrStatus = OCONV(XLATE('REACT_ITEM',RINo,'CURR_STATUS','X'),'[CONV_ITEM_CURR_STATUS]') + RITypeDesc = XLATE('REACT_ITEM',RINo,'RI_TYPE_DESC','X') + SuscSize = RIRec + SuscSizeDesc = XLATE('REACT_ITEM',RINo,'SUSC_SIZE_DESC','X') + PktSize = RIRec + PktSizeDesc = XLATE('REACT_ITEM',RINo,'PKT_SIZE_DESC','X') + PktQty = RIRec + PPlusRDSNo = RIRec -ReactNo = HistKey[1,'*'] -InstallDTM = OCONV(FIELD(HistKey,'*',3),'DT4/^S') -RemoveDTM = OCONV(LastInstallRec,'DT4/^S') + * Build calculated description from field data -FileName = "Printing Label" -Title = "Printing Label" + CalcDesc = obj_React_Item('CalcDesc',RINo:@RM:'') -PageInfo = '' -PageInfo = 0.1 -PageInfo = 0.1 -PageInfo = 0.1 -PageInfo = 0.1 + IF PPLusRDSNo NE '' THEN + CalcDesc := ' ( P++ )' + END -PageSetup = '1' ;* Landscape -PrintSetup = '' ;* Preview + 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 -PrinterID = '\\mesirwfp001\MESZBRPRT002' ;* This is the Zebra 105se + LastInstallRec = XLATE('REACT_ITEM_HIST',HistKeys<1,1>,'','X') -PrintPath = Printer_Select(PrinterID) ;* Popup is skipped IF Printer ID is passed + ReactNo = HistKey[1,'*'] + InstallDTM = OCONV(FIELD(HistKey,'*',3),'DT4/^S') + RemoveDTM = OCONV(LastInstallRec,'DT4/^S') -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 + FileName = "Printing Label" + Title = "Printing Label" -IF stat < 0 THEN GOTO OIPrint_Error - -EQU DosPath$ TO 'C:\WINDOWS\OIZPL.TXT' ;* remove jch + PageInfo = '' + PageInfo = 0.1 + PageInfo = 0.1 + PageInfo = 0.1 + PageInfo = 0.1 + PageSetup = '1' ;* Landscape + PrintSetup = '' ;* Preview -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 + PrinterID = '\\mesirwfp001\MESZBRPRT002' ;* This is the Zebra 105se -Str := '^FS' ;* end command + PrintPath = Printer_Select(PrinterID) ;* Popup is skipped IF Printer ID is passed -****** First Line + 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 -Str := '^FO30,25^A0,,36^FD':obj_Install('Get_Prop','Company'):'^FS' + IF stat < 0 THEN GOTO OIPrint_Error -Str := '^FO310,25^AC,18^FDRI No:^FS':CRLF$ ;* Label -Str := '^FO390,25^A045,36^FD':RINo:'^FS':CRLF$ ;* Data + EQU DosPath$ TO 'C:\WINDOWS\OIZPL.TXT' ;* remove jch -Str := '^FO560,25^AC,18^FDStatus:^FS':CRLF$ ;* Label -Str := '^FO650,25^A045,36^FD':CurrStatus:'^FS':CRLF$ ;* Data + 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 + ****** Second Line -Str:= '^FO30,70^AC,18^FDDesc:^FS':CRLF$ -Str:= '^FO95,70^A050,30^FD':CalcDesc:'^FS':CRLF$ + 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 := '^BY2,2.0':CRLF$ + Str := '^FO600,70^B3,,23,N^FD':RINo:'^FS':CRLF$ + Str := '^BY2,3.0':CRLF$ -****** Third Line + ****** Third Line -Str:= '^FO30,115^AC,18^FDMfr:^FS' ;* Label -MfrData = MfrCd:' - ':MfrName -Str:= '^FO90,115^A0,,25^FD':MfrData:'^FS':CRLF$ ;* Data + Str:= '^FO30,115^AC,18^FDMfr:^FS' ;* Label + MfrData = MfrCd:' - ':MfrName + Str:= '^FO90,115^A0,,25^FD':MfrData:'^FS':CRLF$ ;* Data -****** Fourth Line + ****** Fourth Line -Str:= '^FO30,160^AC,18^FDPN:^FS':CRLF$ ;* Label -Str:= '^FO70,160^A045,25^FD':MfrPartNo:'^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:= '^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:= '^FO500,160^AC,18^FDSN:^FS':CRLF$ ;* Label + Str:= '^FO540,160^A045,25^FD':SerialNo:'^FS':CRLF$ ;* Data + ****** Fifth Line -****** Separator bar - -*Str:= '^FO15,128^GB795,1^FS' + Str := '^FO30,205^AC,18^FDEntered:^FS':CRLF$ + Str := '^FO150,205^A0,20^FD':EnterDTM:'^FS':CRLF$ -****** Fifth Line + ****** Sixth Line -Str := '^FO30,205^AC,18^FDEntered:^FS':CRLF$ -Str := '^FO150,205^A0,20^FD':EnterDTM:'^FS':CRLF$ + Str := '^FO30,250^AC,18^FDInstalled:^FS':CRLF$ + Str := '^FO150,250^A0,20^FD':InstallDTM:'^FS':CRLF$ -****** Sixth Line + Str := '^FO500,250^AC,18^FDReact No:^FS':CRLF$ + Str := '^FO610,250^A0,20^FD':ReactNo:'^FS':CRLF$ -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 - stat = Set_Printer('TEXT',Str) -end else - stat = Direct_Print('PRINT', Str) -end + If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then + stat = Set_Printer('TEXT',Str) + end else + stat = Direct_Print('PRINT', Str) + end * * * * * * OIPrint_Error: * * * * * * -If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then - stat = Set_Printer("TERM") -end else - stat = Direct_Print('STOP') -end + If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then + stat = Set_Printer("TERM") + end else + stat = Direct_Print('STOP') + end RETURN - - -