open-insight/LSL2/STPROC/COMM_DIALOG_EPI_PRO_MET.txt
Infineon\StieberD 7762b129af pre cutover push
2024-09-04 20:33:41 -07:00

394 lines
11 KiB
Plaintext

COMPILE FUNCTION Comm_Dialog_Epi_Pro_Met(Method, Parm1, Parm2)
/*
Commuter module for Dialog_Epi_Pro_Met window.
05/17/2006 - John C. Henry, J.C. Henry & Co., Inc.
*/
DECLARE SUBROUTINE Set_Property, End_Dialog, Set_Status, ErrMsg, Send_Event, obj_RDS_Test
DECLARE SUBROUTINE obj_Appwindow, Start_Window, Msg, End_Dialog, Send_Message, ErrMsg
DECLARE FUNCTION Get_Property, Get_Status, Dialog_Box, Popup, Send_Message, obj_Test_Point_Map, obj_RDS_Test
Declare function Error_Services, MemberOf, Get_EventStatus
EQU CRLF$ TO \0D0A\
$INSERT POPUP_EQUATES
$INSERT LOGICAL
$INSERT MSG_EQUATES
$INSERT RDS_EQU
$INSERT RDS_TEST_EQUATES
$INSERT RDS_LAYER_EQUATES
$INSERT REACT_RUN_EQUATES
$INSERT REACTOR_EQUATES
$INSERT RDS_EPILOAD
$INSERT NCR_EQU
$INSERT APPCOLORS
EQU ORP$THICK_READS TO 1
EQU ORP$SHEET_RHO_READS TO 2
EQU ORP$HGCV1_READS TO 3
EQU EPI_READS$READ_NO TO 1
EQU EPI_READS$THICKNESS TO 2
EQU EPI_READS$SHEET_RHO TO 3
EQU EPI_READS$HGCV1 TO 4
EQU EPI_READS$HGCV2 TO 5
ErrTitle = 'Error in Comm_Dialog_Epi_Pro_Met'
ErrorMsg = ''
Result = ''
BEGIN CASE
CASE Method = 'Create' ; GOSUB Create
CASE Method = 'Done' ; GOSUB Done
CASE Method = 'Refresh' ; GOSUB Refresh
CASE Method = 'ReadingsDel' ; GOSUB ReadingsDel
CASE 1
ErrMsg(ErrTitle:@SVM:'Unknown method ':QUOTE(Method):' passed to routine.')
END CASE
RETURN Result
* * * * * * *
Create:
* * * * * * *
obj_AppWindow('Create')
MetNo = FIELD(Parm1,@FM,1)
IF MetNo = '' THEN
ErrMsg('Null MetNo passed to Dialog Box...')
End_Dialog(@WINDOW,'')
END
MetRec = XLATE('RDS_TEST',MetNo,'','X')
RDSNo = MetRec<RDS_TEST_RDS_NO$>
LSId = MetRec<RDS_TEST_LS_ID$>
Zone = MetRec<RDS_TEST_ZONE$>
TestPointMap = MetRec<RDS_TEST_TEST_POINT_MAP$>
IF Zone = '' THEN MetKeys = XLATE('REACT_RUN',RDSNo,'MET_KEYS','X')
IF Zone = 1 THEN MetKeys = XLATE('REACT_RUN',RDSNo,'MET_KEYS_Z1','X')
IF Zone = 2 THEN MetKeys = XLATE('REACT_RUN',RDSNo,'MET_KEYS_Z2','X')
RdsLSKeys = XLATE('RDS',RDSNo,RDS_RDS_LAYER_KEYS$,'X')
ReactorNo = XLATE('REACT_RUN',RDSNo,REACT_RUN_REACTOR$,'X')
ReactType = XLATE('REACTOR',ReactorNo,REACTOR_REACT_TYPE$,'X')
IF INDEX(RdsLSKeys,@VM,1) THEN
* Multiple layers
DepTimeTargets = ''
LSCnt = COUNT(RdsLSKeys,@VM) + (RdsLSKeys NE '')
DepTimeTargets = XLATE('RDS_LAYER',RdsLSKeys,RDS_LAYER_EPI_TIME$,'X')
DepTimeTargets = OCONV(DepTimeTargets,'MD1')
LS1DepTime = ''
LS2DepTime = ''
FOR I = 1 TO LSCnt
RdsLSKey = RdsLSKeys<1,I>
IF INDEX(RdsLSKey,'L1',1) THEN LS1DepTime = DepTimeTargets<1,I>
IF INDEX(RdsLSKey,'L2',1) THEN LS2DepTime = DepTimeTargets<1,I>
NEXT I
ErrorMsg = ''
IF LS1DepTime = '' THEN ErrorMsg = 'Deposit Time for LS1 has not been enterered yet.'
IF LS2DepTime = '' THEN ErrorMsg = 'Deposit Time for LS2 has not been enterered yet.'
IF ErrorMsg NE '' THEN
ErrMsg(ErrorMsg)
End_Dialog(@WINDOW,'')
Set_Property('RDS_TEST.MET_NO','DEFPROP',MeTNo)
Send_Event('RDS_TEST','READ')
END ELSE
TotDepTime = LS1DepTime + LS2DepTime
LS1Ratio = LS1DepTime/TotDepTime
END
MetReadings = ''
FOR I = 1 TO COUNT(MetKeys,@VM) + (MetKeys NE '')
MetKey = MetKeys<1,I>
LMetReadings = obj_RDS_Test('GetReadSet',MetKey)
IF I = 1 THEN
MetReadings<1> = LMetReadings<1> ;* Line Numbers
MetReadings<3> = LMetReadings<3> ;* SheetRho
MetReadings<4> = LMetReadings<4> ;* Hgcv
END
IF I = 2 THEN
MetReadings<5> = LMetReadings<4> ;* Hgcv
END
IF I = 3 THEN
MetReadings<2> = LMetReadings<2> ;* Thickness readings
END
NEXT I
END ELSE
LS1Ratio = 1
MetReadings = obj_RDS_Test('GetReadSet',MetNo)
END
Ctrls = @WINDOW:'.MET_NO':@RM ; Props = 'TEXT':@RM ; Vals = MetNo:@RM
Ctrls := @WINDOW:'.RDS_NO':@RM ; Props := 'TEXT':@RM ; Vals := RDSNo:@RM
Ctrls := @WINDOW:'.LS_ID':@RM ; Props := 'TEXT':@RM ; Vals := LSId:@RM
Ctrls := @WINDOW:'.ZONE':@RM ; Props := 'TEXT':@RM ; Vals := Zone:@RM
Ctrls := @WINDOW:'.TEST_POINT_MAP':@RM ; Props := 'TEXT':@RM ; Vals := TestPointMap:@RM
Ctrls := @WINDOW:'.L1_RATIO' ; Props := 'TEXT' ; Vals := LS1Ratio
IF MetReadings<1> NE '' THEN
CONVERT @FM TO @RM IN MetReadings
oTPM_Parms = TestPointMap:@RM:MetReadings
Results = obj_Test_Point_Map('PointToResult',oTPM_Parms)
ThicknessArray = FIELD(Results,@FM,2,4)
Ctrls := @RM:@WINDOW:'.THICKNESS' ; Props := @RM:'DEFPROP' ; Vals := @RM:ThicknessArray<1>
Ctrls := @RM:@WINDOW:'.SHEETRHO' ; Props := @RM:'DEFPROP' ; Vals := @RM:ThickNessArray<2>
Ctrls := @RM:@WINDOW:'.HGCV1' ; Props := @RM:'DEFPROP' ; Vals := @RM:ThicknessArray<3>
Ctrls := @RM:@WINDOW:'.HGCV2' ; Props := @RM:'DEFPROP' ; Vals := @RM:ThickNessArray<4>
END
Set_Property(Ctrls,Props,Vals)
BEGIN CASE
CASE LSId = 'L1'
Set_Property(@WINDOW:'.LS_ID','BACKCOLOR',RCV_BLUE$)
CASE LSId = 'L2'
Set_Property(@WINDOW:'.LS_ID','BACKCOLOR',PRE_BLUE$)
CASE LSId = '2'
Set_Property(@WINDOW:'.LS_ID','BACKCOLOR',INP_BLUE$)
CASE 1
Set_Property(@WINDOW:'.LS_ID','BACKCOLOR',GREEN$)
END CASE
RETURN
* * * * * * *
Done:
* * * * * * *
Ctrls = @WINDOW:'.TEST_POINT_MAP':@RM ; Props = 'DEFPROP':@RM
Ctrls := @WINDOW:'.MET_NO':@RM ; Props := 'DEFPROP':@RM
Ctrls := @WINDOW:'.THICKNESS':@RM ; Props := 'ARRAY':@RM
Ctrls := @WINDOW:'.SHEETRHO':@RM ; Props := 'ARRAY':@RM
Ctrls := @WINDOW:'.HGCV1':@RM ; Props := 'ARRAY':@RM
Ctrls := @WINDOW:'.HGCV2':@RM ; Props := 'ARRAY':@RM
Ctrls := @WINDOW:'.L1_RATIO' ; Props := 'DEFPROP'
Vals = Get_Property(Ctrls,Props)
TestPointMap = Vals[1,@RM]
MetNo = Vals[COL2()+1,@RM]
ThickReads = Vals[COL2()+1,@RM]
SheetRhoReads = Vals[COL2()+1,@RM]
HgCV1ResReads = Vals[COL2()+1,@RM]
HgCV2ResReads = Vals[COL2()+1,@RM]
L1Ratio = Vals[COL2()+1,@RM]
ReadingNos = ''
FOR I = 1 TO 9
ReadingNos<1,I> = I
NEXT I
oTPM_Parms = TestPointMap:@RM:ReadingNos:@RM:ThickReads:@RM:SheetRhoReads:@RM:HgCV1ResReads:@RM:HgCV2ResReads
EpiReads = obj_Test_Point_Map('ResultToPoint',oTPM_Parms)
MetRec = XLATE('RDS_TEST',MetNo,'','X')
Zone = MetRec<RDS_TEST_ZONE$>
RDSNo = MetRec<RDS_TEST_RDS_NO$>
BEGIN CASE
CASE Zone = '1' ; MetKeys = XLATE('REACT_RUN',RDSNo,'MET_KEYS_Z1','X')
CASE Zone = '2' ; MetKeys = XLATE('REACT_RUN',RDSNo,'MET_KEYS_Z2','X')
CASE 1 ; MetKeys = XLATE('REACT_RUN',RDSNo,'MET_KEYS','X')
END CASE
UpdatesAllowed = True$ ; // Flag to determine if cassette has not been signed for FQA. Assumed not signed yet.
Override = False$ ; // Assume no override for now.
IF INDEX(MetKeys,@VM,1) THEN
LOCATE MetNo IN MetKeys USING @VM SETTING Pos THEN
MetKeys = DELETE(MetKeys,1,Pos,0)
END
oRTParms_L1 = ''
oRTParms_L2 = ''
FOR J = 1 TO COUNT(EpiReads<1>,@VM) + (EpiReads<1> NE '')
oRTParms_L1<ORP$THICK_READS,J> = OCONV(ICONV(EpiReads<EPI_READS$THICKNESS,J> * L1Ratio, 'MD2'),'MD2')
oRTParms_L2<ORP$THICK_READS,J> = EpiReads<EPI_READS$THICKNESS,J> - oRTParms_L1<ORP$THICK_READS,J>
IF EpiReads<EPI_READS$SHEET_RHO,J> NE '' THEN
oRTParms_L1<ORP$SHEET_RHO_READS,J> = EpiReads<EPI_READS$SHEET_RHO,J>
oRTParms_L2<ORP$SHEET_RHO_READS,J> = ''
EpiReads<EPI_READS$SHEET_RHO,J> = ''
END ELSE
oRTParms_L1<ORP$SHEET_RHO_READS,J> = ''
oRTParms_L2<ORP$SHEET_RHO_READS,J> = ''
END
IF EpiReads<EPI_READS$HGCV1,J> NE '' THEN
oRTParms_L1<ORP$HGCV1_READS,J> = EpiReads<EPI_READS$HGCV1,J>
END
IF EpiReads<EPI_READS$HGCV2,J> NE '' THEN
oRTParms_L2<ORP$HGCV1_READS,J> = EpiReads<EPI_READS$HGCV2,J>
END
NEXT J
CONVERT @FM TO @RM IN oRTParms_L1
CONVERT @FM TO @RM IN oRTParms_L2
obj_RDS_Test('SetReadSet',MetKeys<1,1>:@RM:oRTParms_L1,Override)
If Error_Services('HasError') then
* IF Get_Status(errCode) THEN
FileError = @File.Error
ErrorNumber = FileError<1>
ErrorMessage = FileError<2>
* Message = Error_Services('GetMessage')
* ErrorNumber = Message[1, ':']
* ErrorMessage = Message[Col2() + 1, ':']
If ErrorNumber EQ '104' then
MsgStruct = ''
MsgStruct<MCOL$> = -1
MsgStruct<MROW$> = -1
// Users belonging to the SPEC_CHANGE security group will be allowed to override the block. However, these
// users must confirm that this is what they want.
If MemberOf(@User4, 'SPEC_CHANGE') then
Override = Msg(@Window, MsgStruct, 'YESNO', '', 'RDS Test' : @FM : ErrorMessage : @TM : @TM : 'Please confirm that you want to override.')
If Override EQ True$ then
obj_RDS_Test('SetReadSet',MetKeys<1,1>:@RM:oRTParms_L1,Override)
end else
UpdatesAllowed = False$
end
end else
UpdatesAllowed = False$
Msg(@Window, MsgStruct, 'OK', '', 'RDS Test' : @FM : ErrorMessage)
end
end else
ErrMsg(errCode)
end
end
If UpdatesAllowed EQ True$ then
obj_RDS_Test('SetReadSet',MetKeys<1,2>:@RM:oRTParms_L2,Override)
IF Get_Status(errCode) THEN
ErrMsg(errCode)
END
end
END
If UpdatesAllowed EQ True$ then
oRTParms = ''
oRTParms<ORP$THICK_READS> = EpiReads<EPI_READS$THICKNESS>
oRTParms<ORP$SHEET_RHO_READS> = EpiReads<EPI_READS$SHEET_RHO>
oRTParms<ORP$HGCV1_READS> = EpiReads<EPI_READS$HGCV1>
CONVERT @FM TO @RM IN oRTParms
obj_RDS_Test('SetReadSet',MetNo:@RM:oRTParms,Override)
IF Get_Status(errCode) THEN
Message = Error_Services('GetMessage')
ErrorNumber = Message[1, ':']
ErrorMessage = Message[Col2() + 1, ':']
If ErrorNumber EQ 'FS104' then
MsgStruct = ''
MsgStruct<MCOL$> = -1
MsgStruct<MROW$> = -1
// Users belonging to the SPEC_CHANGE security group will be allowed to override the block. However, these
// users must confirm that this is what they want.
If MemberOf(@User4, 'SPEC_CHANGE') then
Override = Msg(@Window, MsgStruct, 'YESNO', '', 'RDS Test' : @FM : ErrorMessage : @TM : @TM : 'Please confirm that you want to override.')
If Override EQ True$ then
obj_RDS_Test('SetReadSet',MetKeys<1,1>:@RM:oRTParms,Override)
end else
UpdatesAllowed = False$
end
end else
UpdatesAllowed = False$
Msg(@Window, MsgStruct, 'OK', '', 'RDS Test' : @FM : ErrorMessage)
end
end else
ErrMsg(errCode)
end
end
end
End_Dialog(@WINDOW,'')
Set_Property('RDS_TEST.MET_NO','DEFPROP',MetNo)
Send_Event('RDS_TEST','READ')
RETURN
* * * * * * *
Refresh:
* * * * * * *
RETURN
* * * * * * *
ReadingsDel:
* * * * * * *
DeletedRowIndex = Parm1
DeletedRowText = Parm2
CurrCtrl = Get_Property(@WINDOW,'FOCUS')
Dummy = Send_Message(CurrCtrl, "INSERT",DeletedRowIndex, DeletedRowText)
ErrMsg('Rows may not be inserted or deleted.')
RETURN