diff --git a/LSL2/STPROC/COMM_RDS_LAYER.txt b/LSL2/STPROC/COMM_RDS_LAYER.txt index ffea1e6..59e2b4e 100644 --- a/LSL2/STPROC/COMM_RDS_LAYER.txt +++ b/LSL2/STPROC/COMM_RDS_LAYER.txt @@ -49,656 +49,499 @@ ErrorMsg = '' Result = '' BEGIN CASE - CASE Instruction = 'Create' ; GOSUB Create - CASE Instruction = 'Read' ; GOSUB Read - CASE Instruction = 'Clear' ; GOSUB Clear - CASE Instruction = 'Refresh' ; GOSUB Refresh - CASE Instruction = 'Write' ; GOSUB Write - CASE Instruction = 'Delete' ; GOSUB Delete - CASE Instruction = 'Close' ; GOSUB Close - CASE Instruction = 'Page' ; GOSUB Page - CASE Instruction = 'RParmsDeleteRow' ; GOSUB RParmsDeleteRow - CASE Instruction = 'RParmsInsertRow' ; GOSUB RParmsInsertRow - CASE Instruction = 'RParmsPC' ; GOSUB RParmsPC - CASE Instruction = 'NewTest' ; GOSUB NewTest - CASE Instruction = 'TestKeyDC' ; GOSUB TestKeyDC - CASE Instruction = 'OverRideRecipeLimits' ; GOSUB OverRideRecipeLimits - CASE Instruction = 'OverRideDC' ; GOSUB OverRideDC - CASE Instruction = 'OverRidePC' ; GOSUB OverRidePC - CASE Instruction = 'UpdateLimits' ; GOSUB UpdateLimits - - CASE 1 - ErrorMsg = 'Unknown Instruction passed to routine.' - ErrMsg(ErrorMsg) + CASE Instruction = 'Create' ; GOSUB Create + CASE Instruction = 'Read' ; GOSUB Read + CASE Instruction = 'Clear' ; GOSUB Clear + CASE Instruction = 'Refresh' ; GOSUB Refresh + CASE Instruction = 'Write' ; GOSUB Write + CASE Instruction = 'Delete' ; GOSUB Delete + CASE Instruction = 'Close' ; GOSUB Close + CASE Instruction = 'Page' ; GOSUB Page + CASE Instruction = 'RParmsDeleteRow' ; GOSUB RParmsDeleteRow + CASE Instruction = 'RParmsInsertRow' ; GOSUB RParmsInsertRow + CASE Instruction = 'RParmsPC' ; GOSUB RParmsPC + CASE Instruction = 'NewTest' ; GOSUB NewTest + CASE Instruction = 'TestKeyDC' ; GOSUB TestKeyDC + CASE Instruction = 'OverRideRecipeLimits' ; GOSUB OverRideRecipeLimits + CASE Instruction = 'OverRideDC' ; GOSUB OverRideDC + CASE Instruction = 'OverRidePC' ; GOSUB OverRidePC + CASE Instruction = 'UpdateLimits' ; GOSUB UpdateLimits + + CASE 1 + ErrorMsg = 'Unknown Instruction passed to routine.' + ErrMsg(ErrorMsg) END CASE RETURN Result - * * * * * * * Create: * * * * * * * - - -obj_Appwindow('Create',@WINDOW) - -IF Parm1 NE '' THEN - obj_AppWindow('LoadFormKeys',@WINDOW:@RM:Parm1) -END - -GOSUB Refresh - - + + obj_Appwindow('Create',@WINDOW) + + IF Parm1 NE '' THEN + obj_AppWindow('LoadFormKeys',@WINDOW:@RM:Parm1) + END + + GOSUB Refresh + RETURN + * * * * * * * Clear: * * * * * * * - -Send_Event(@WINDOW,'PAGE',1) - -GOSUB Refresh - + + Send_Event(@WINDOW,'PAGE',1) + + GOSUB Refresh + RETURN * * * * * * * Page: * * * * * * * - - Page = Parm1 - - IF Page = '' THEN - Page = Get_Property(@WINDOW:'.TAB_MAIN','VALUE') - END ELSE - Set_Property(@WINDOW:'.TAB_MAIN','VALUE',Page) - END - - Set_Property(@WINDOW,'VPOSITION', Page) - + + Page = Parm1 + + IF Page = '' THEN + Page = Get_Property(@WINDOW:'.TAB_MAIN','VALUE') + END ELSE + Set_Property(@WINDOW:'.TAB_MAIN','VALUE',Page) + END + + Set_Property(@WINDOW,'VPOSITION', Page) + RETURN * * * * * * * Read: * * * * * * * - -CurrRecord = Get_Property(@WINDOW,'RECORD') -Set_Property(@WINDOW,'@ORG_RECORD',CurrRecord) - -* * * * * * * + + CurrRecord = Get_Property(@WINDOW,'RECORD') + Set_Property(@WINDOW,'@ORG_RECORD',CurrRecord) + + * * * * * * * Refresh: * * * * * * * - -LSId = Get_Property(@WINDOW:'.LS_ID','TEXT') - -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',KEY_YELLOW$) - -END CASE - -Set_Property(@WINDOW:'.OVERRIDE_LIMITS_GROUP','ENABLED',0) - -RDSNo = Get_Property( @WINDOW:'.RDS_NO', 'DEFPROP' ) -RDSRec = XLATE('RDS',RDSNo,'','X') - -LayerSetID = Get_Property(@WINDOW:'.LS_ID','DEFPROP') - -PSNId = RDSRec< RDS_PROD_SPEC_ID$ > -RecipeNo = Get_Property(@WINDOW:'.RECIPE_NO','DEFPROP') - -RecipeParms = Get_Property(@WINDOW:'.RECIPE_PARMS','ARRAY') ;* Entered by user -RecipeLimits = Get_Property(@WINDOW:'.RECIPE_LIMITS','LIST')<1> - -CONVERT @VM TO @FM IN RecipeLimits - -ColCnt = COUNT(RecipeLimits,@FM) + (RecipeLimits NE '') ;* This is 16 columns as of the development of this window - -RecipeParms = Get_Property(@WINDOW:'.RECIPE_PARMS','ARRAY') - -ParameterStyles = Send_Message( @WINDOW:'.RECIPE_PARMS', "COLSTYLE", 0, '' ) -LimitStyles = Send_Message( @WINDOW:'.RECIPE_LIMITS', "COLSTYLE", 0, '' ) - -CONVERT @VM TO '' IN RecipeParms - -ColNames = Get_Property( @WINDOW:'.RECIPE_PARMS', 'COLUMN' ) - -OutOfSpecCols = '' -FOR Col = 1 TO ColCnt - IF RecipeLimits = '' AND RecipeParms = '' THEN - ParameterStyles = BitOr( ParameterStyles, HIDDEN$ ) ;* Column not used -> Hide - LimitStyles = BitOr( LimitStyles, HIDDEN$ ) - END ELSE - ParameterStyles = BitAnd( ParameterStyles, BitNot(HIDDEN$) ) ;* Column used -> Show - LimitStyles = BitAnd( LimitStyles, BitNot(HIDDEN$) ) - - LimitData = RecipeLimits - ParamData = RecipeParms - - ColName = ColNames<1,1,Col> - Conversion = XLATE('DICT.RDS_LAYER',ColName,DICT_CONV$,'X') - - SWAP ' ~ ' WITH @VM IN LimitData - - IF Conversion NE '' THEN - ParamData = ICONV(ParamData,Conversion) - LimitData = ICONV(LimitData,Conversion) - END - - Minimum = LimitData<1,1> - Maximum = LimitData<1,2> - - IF ParamData NE '' THEN - IF ParamData < Minimum OR ParamData > Maximum THEN - Send_Message(@WINDOW:'.RECIPE_PARMS','COLOR_BY_POS',Col,1,RED$) - OutOfSpecCols = INSERT(OutOfSpecCols,Col,0,0,1) - END ELSE - Send_Message(@WINDOW:'.RECIPE_PARMS','COLOR_BY_POS',Col,1,WHITE$) - END - END ELSE - Send_Message(@WINDOW:'.RECIPE_PARMS','COLOR_BY_POS',Col,1,WHITE$) - END - - END - -NEXT Col - -LOCATE '1' IN OutOfSpecCols USING @FM SETTING Pos THEN - Set_Property(@WINDOW:'.OUT_OF_SPEC','CHECK',1) -END ELSE - Set_Property(@WINDOW:'.OUT_OF_SPEC','CHECK',0) -END - -Parameter_Styles = Send_Message( @WINDOW:'.RECIPE_PARMS', "COLSTYLE", 0, ParameterStyles ) -LimitStyles = Send_Message( @WINDOW:'.RECIPE_LIMITS', "COLSTYLE", 0, LimitStyles ) - -Set_Property( @WINDOW:'.RECIPE_INFO', "AUTOSIZECOL", 16 ) -Set_Property( @WINDOW:'.RECIPE_LIMITS', "AUTOSIZECOL", 16 ) - - - -* QBF buttons - -Ctrls = @WINDOW:'.QBF_FIRST_FIX':@RM ; Props = 'ENABLED':@RM -Ctrls := @WINDOW:'.QBF_PREV_FIX':@RM ; Props := 'ENABLED':@RM -Ctrls := @WINDOW:'.QBF_ABS_FIX':@RM ; Props := 'ENABLED':@RM -Ctrls := @WINDOW:'.QBF_NEXT_FIX':@RM ; Props := 'ENABLED':@RM -Ctrls := @WINDOW:'.QBF_LAST_FIX':@RM ; Props := 'ENABLED':@RM -Ctrls := @WINDOW:'.QBF_STOP_FIX' ; Props := 'ENABLED' - -IF Get_Property(@WINDOW,'QBFLIST') = '' THEN - Vals = 0:@RM:0:@RM:0:@RM:0:@RM:0:@RM:0 -END ELSE - Vals = 1:@RM:1:@RM:1:@RM:1:@RM:1:@RM:1 -END - -Set_Property(Ctrls,Props,Vals) - -* Turn edit table symbolic column backgrounds to green - -ETSymbolics = Get_Property(@WINDOW,'@ET_SYMBOLICS') ;* Loaded during 'Create' in obj_Appwindow - -ETCtrls = ETSymbolics<1> -ETCols = ETSymbolics<2> - -FOR I = 1 TO COUNT(ETCtrls,@VM) + (ETCtrls NE '') - ETCtrl = ETCtrls<1,I> - ETList = Get_Property(ETCtrl,'LIST') - FOR Line = 1 TO COUNT(ETList,@FM) + (ETList NE '') - IF ETList NE '' THEN - FOR N = 1 TO COUNT(ETCols<1,I>,@SVM) + (ETCols<1,I> NE '') - stat = Send_Message(ETCtrl,'COLOR_BY_POS',ETCols<1,I,N>,Line,GREEN$) - NEXT N - END - NEXT I -NEXT I - - -TestList = Get_Property(@WINDOW:'.RDS_TEST_KEYS','LIST') - -FOR I = 1 TO COUNT(TestList,@FM) + (TestList NE '') - IF ICONV(TestList,'B') = 1 THEN - Send_Message(@WINDOW:'.RDS_TEST_KEYS','COLOR_BY_POS',0,I,RED$) - END ELSE - Send_Message(@WINDOW:'.RDS_TEST_KEYS','COLOR_BY_POS',0,I,WHITE$) - END -NEXT I - -RPCopy = RecipeParms -Convert @FM to '' in RPCopy -If RPCopy EQ '' then - Set_Property(@Window : '.BTN_SET_CURR_RUN_PARMS', 'ENABLED', False$) -end else - Set_Property(@Window : '.BTN_SET_CURR_RUN_PARMS', 'ENABLED', True$) -end - + + LSId = Get_Property(@WINDOW:'.LS_ID','TEXT') + + 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',KEY_YELLOW$) + + END CASE + + Set_Property(@WINDOW:'.OVERRIDE_LIMITS_GROUP','ENABLED',0) + + RDSNo = Get_Property( @WINDOW:'.RDS_NO', 'DEFPROP' ) + RDSRec = XLATE('RDS',RDSNo,'','X') + + LayerSetID = Get_Property(@WINDOW:'.LS_ID','DEFPROP') + + PSNId = RDSRec< RDS_PROD_SPEC_ID$ > + RecipeNo = Get_Property(@WINDOW:'.RECIPE_NO','DEFPROP') + + RecipeParms = Get_Property(@WINDOW:'.RECIPE_PARMS','ARRAY') ;* Entered by user + RecipeLimits = Get_Property(@WINDOW:'.RECIPE_LIMITS','LIST')<1> + + CONVERT @VM TO @FM IN RecipeLimits + + ColCnt = COUNT(RecipeLimits,@FM) + (RecipeLimits NE '') ;* This is 16 columns as of the development of this window + + RecipeParms = Get_Property(@WINDOW:'.RECIPE_PARMS','ARRAY') + + ParameterStyles = Send_Message( @WINDOW:'.RECIPE_PARMS', "COLSTYLE", 0, '' ) + LimitStyles = Send_Message( @WINDOW:'.RECIPE_LIMITS', "COLSTYLE", 0, '' ) + + CONVERT @VM TO '' IN RecipeParms + + ColNames = Get_Property( @WINDOW:'.RECIPE_PARMS', 'COLUMN' ) + + OutOfSpecCols = '' + FOR Col = 1 TO ColCnt + IF RecipeLimits = '' AND RecipeParms = '' THEN + ParameterStyles = BitOr( ParameterStyles, HIDDEN$ ) ;* Column not used -> Hide + LimitStyles = BitOr( LimitStyles, HIDDEN$ ) + END ELSE + ParameterStyles = BitAnd( ParameterStyles, BitNot(HIDDEN$) ) ;* Column used -> Show + LimitStyles = BitAnd( LimitStyles, BitNot(HIDDEN$) ) + + LimitData = RecipeLimits + ParamData = RecipeParms + + ColName = ColNames<1,1,Col> + Conversion = XLATE('DICT.RDS_LAYER',ColName,DICT_CONV$,'X') + + SWAP ' ~ ' WITH @VM IN LimitData + + IF Conversion NE '' THEN + ParamData = ICONV(ParamData,Conversion) + LimitData = ICONV(LimitData,Conversion) + END + + Minimum = LimitData<1,1> + Maximum = LimitData<1,2> + + IF ParamData NE '' THEN + IF ParamData < Minimum OR ParamData > Maximum THEN + Send_Message(@WINDOW:'.RECIPE_PARMS','COLOR_BY_POS',Col,1,RED$) + OutOfSpecCols = INSERT(OutOfSpecCols,Col,0,0,1) + END ELSE + Send_Message(@WINDOW:'.RECIPE_PARMS','COLOR_BY_POS',Col,1,WHITE$) + END + END ELSE + Send_Message(@WINDOW:'.RECIPE_PARMS','COLOR_BY_POS',Col,1,WHITE$) + END + + END + + NEXT Col + + LOCATE '1' IN OutOfSpecCols USING @FM SETTING Pos THEN + Set_Property(@WINDOW:'.OUT_OF_SPEC','CHECK',1) + END ELSE + Set_Property(@WINDOW:'.OUT_OF_SPEC','CHECK',0) + END + + Parameter_Styles = Send_Message( @WINDOW:'.RECIPE_PARMS', "COLSTYLE", 0, ParameterStyles ) + LimitStyles = Send_Message( @WINDOW:'.RECIPE_LIMITS', "COLSTYLE", 0, LimitStyles ) + + Set_Property( @WINDOW:'.RECIPE_INFO', "AUTOSIZECOL", 16 ) + Set_Property( @WINDOW:'.RECIPE_LIMITS', "AUTOSIZECOL", 16 ) + + * QBF buttons + + Ctrls = @WINDOW:'.QBF_FIRST_FIX':@RM ; Props = 'ENABLED':@RM + Ctrls := @WINDOW:'.QBF_PREV_FIX':@RM ; Props := 'ENABLED':@RM + Ctrls := @WINDOW:'.QBF_ABS_FIX':@RM ; Props := 'ENABLED':@RM + Ctrls := @WINDOW:'.QBF_NEXT_FIX':@RM ; Props := 'ENABLED':@RM + Ctrls := @WINDOW:'.QBF_LAST_FIX':@RM ; Props := 'ENABLED':@RM + Ctrls := @WINDOW:'.QBF_STOP_FIX' ; Props := 'ENABLED' + + IF Get_Property(@WINDOW,'QBFLIST') = '' THEN + Vals = 0:@RM:0:@RM:0:@RM:0:@RM:0:@RM:0 + END ELSE + Vals = 1:@RM:1:@RM:1:@RM:1:@RM:1:@RM:1 + END + + Set_Property(Ctrls,Props,Vals) + + * Turn edit table symbolic column backgrounds to green + + ETSymbolics = Get_Property(@WINDOW,'@ET_SYMBOLICS') ;* Loaded during 'Create' in obj_Appwindow + + ETCtrls = ETSymbolics<1> + ETCols = ETSymbolics<2> + + FOR I = 1 TO COUNT(ETCtrls,@VM) + (ETCtrls NE '') + ETCtrl = ETCtrls<1,I> + ETList = Get_Property(ETCtrl,'LIST') + FOR Line = 1 TO COUNT(ETList,@FM) + (ETList NE '') + IF ETList NE '' THEN + FOR N = 1 TO COUNT(ETCols<1,I>,@SVM) + (ETCols<1,I> NE '') + stat = Send_Message(ETCtrl,'COLOR_BY_POS',ETCols<1,I,N>,Line,GREEN$) + NEXT N + END + NEXT I + NEXT I + + + TestList = Get_Property(@WINDOW:'.RDS_TEST_KEYS','LIST') + + FOR I = 1 TO COUNT(TestList,@FM) + (TestList NE '') + IF ICONV(TestList,'B') = 1 THEN + Send_Message(@WINDOW:'.RDS_TEST_KEYS','COLOR_BY_POS',0,I,RED$) + END ELSE + Send_Message(@WINDOW:'.RDS_TEST_KEYS','COLOR_BY_POS',0,I,WHITE$) + END + NEXT I + + RPCopy = RecipeParms + Convert @FM to '' in RPCopy + If RPCopy EQ '' then + Set_Property(@Window : '.BTN_SET_CURR_RUN_PARMS', 'ENABLED', False$) + end else + Set_Property(@Window : '.BTN_SET_CURR_RUN_PARMS', 'ENABLED', True$) + end + RETURN * * * * * * * Write: * * * * * * * - -SkipScriptEvent = Get_Property(@Window, '@SKIPSCRIPT') -If (SkipScriptEvent EQ False$) or (SkipScriptEvent EQ '') then - RDSLayerKey = Get_Property(@WINDOW,'ID') - - CurrRecord = Get_Property(@WINDOW,'RECORD') - OrgRecord = Get_Property(@WINDOW,'@ORG_RECORD') - - IF CurrRecord NE OrgRecord THEN - CurrDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS') - NewLine = @USER4:@VM:CurrDTM - Send_Message(@WINDOW:'.MODIFY_USER','INSERT',1,NewLine) - END - - Post_Event(@WINDOW,'CLOSE') -end -Result = 1 - + + SkipScriptEvent = Get_Property(@Window, '@SKIPSCRIPT') + If (SkipScriptEvent EQ False$) or (SkipScriptEvent EQ '') then + RDSLayerKey = Get_Property(@WINDOW,'ID') + + CurrRecord = Get_Property(@WINDOW,'RECORD') + OrgRecord = Get_Property(@WINDOW,'@ORG_RECORD') + + IF CurrRecord NE OrgRecord THEN + CurrDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS') + NewLine = @USER4:@VM:CurrDTM + Send_Message(@WINDOW:'.MODIFY_USER','INSERT',1,NewLine) + END + + Post_Event(@WINDOW,'CLOSE') + end + Result = 1 + RETURN - * * * * * * * Delete: * * * * * * * - -ErrMsg('Records may not be modified or deleted.') - -Result = 0 ;* No Deletes - + + ErrMsg('Records may not be modified or deleted.') + + Result = 0 ;* No Deletes + RETURN * * * * * * * Close: * * * * * * * - -obj_Appwindow('DetailReturn') - + + obj_Appwindow('DetailReturn') + RETURN * * * * * * * RParmsDeleteRow: * * * * * * * - -DeletedRowIndex = Parm1 -DeletedRowText = Parm2 - -CurrCtrl = @WINDOW:'.RECIPE_PARMS' - -Dummy = Send_Message(CurrCtrl, "INSERT",DeletedRowIndex, DeletedRowText) - -Set_Property(CurrCtrl,'SELPOS',1:@FM:1) - -ErrMsg('Rows may not be inserted or deleted.') - + + DeletedRowIndex = Parm1 + DeletedRowText = Parm2 + + CurrCtrl = @WINDOW:'.RECIPE_PARMS' + + Dummy = Send_Message(CurrCtrl, "INSERT",DeletedRowIndex, DeletedRowText) + + Set_Property(CurrCtrl,'SELPOS',1:@FM:1) + + ErrMsg('Rows may not be inserted or deleted.') + RETURN * * * * * * * RParmsInsertRow: * * * * * * * - -RowIndex = Parm1 - -CurrCtrl = @WINDOW:'.RECIPE_PARMS' - -ErrMsg('Rows may not be inserted or deleted.') - + + RowIndex = Parm1 + + CurrCtrl = @WINDOW:'.RECIPE_PARMS' + + ErrMsg('Rows may not be inserted or deleted.') + RETURN * * * * * * * RParmsPC: * * * * * * * - -CurrCtrl = @WINDOW:'.RECIPE_PARMS' - -PrevSelPos = Get_Property(CurrCtrl,"PREVSELPOS") -PrevCol = PrevSelPos<1> -PrevRow = PrevSelPos<2> - -CurrSelPos = Get_Property(CurrCtrl,"SELPOS") -CurrCol = CurrSelPos<1> -CurrRow = CurrSelPos<2> - -ColStyles = Send_Message( @WINDOW:'.RECIPE_PARMS', 'COLSTYLE', 0, '' ) -ColNames = Get_Property( @WINDOW:'.RECIPE_PARMS', 'COLUMN' ) - -IF CurrRow > 1 THEN - Set_Property(CurrCtrl,'SELPOS',CurrCol:@FM:1) ;* Can't move off of the first row -END - -ListData = Get_Property(CurrCtrl,'LIST') - -IF ListData<1,PrevCol> NE '' THEN - VisibleColumn = NOT(BitAnd( ColStyles, HIDDEN$ )) ;* Gives @VM list of flags for visible columns in the edit table - IF VisibleColumn THEN - LimitData = Get_Property(@WINDOW:'.RECIPE_LIMITS','LIST')<1,PrevCol> - ParamData = ListData<1,PrevCol> - - ColName = ColNames<1,1,PrevCol> - Conversion = XLATE('DICT.RDS_LAYER',ColName,DICT_CONV$,'X') - - CONVERT '~' TO @VM IN LimitData - - IF Conversion NE '' THEN - ParamData = ICONV(ParamData,Conversion) - LimitData = ICONV(LimitData,Conversion) - END - - Minimum = LimitData<1,1> - Maximum = LimitData<1,2> - - IF ParamData < Minimum OR ParamData > Maximum THEN - *ErrMsg('Data Entered for ':QUOTE(ColName):' is out of specified limits!') - END - - - IF ColName = 'EPI_TIME' THEN - LSId = Get_Property(@WINDOW:'.LS_ID','DEFPROP') - RDSNo = Get_Property(@WINDOW:'.RDS_NO','DEFPROP') - - ReactRunRec = XLATE('REACT_RUN',RDSNo,'','X') - - WONo = ReactRunRec - WOStep = ReactRunRec - - PSNo = XLATE('WO_STEP',WONo:'*':WOStep,WO_STEP_PROD_SPEC_ID$,'X') - - DepTimeRatio = XLATE('PROD_SPEC',PSNo,PROD_SPEC_DEP_TIME_RATIO$,'X') - - - IF DepTimeRatio = 1 THEN - IF LSId = 'L1' THEN - LS1DepTime = ParamData - LS2DepTime = XLATE('RDS_LAYER',RDSNo:'*L2',RDS_LAYER_EPI_TIME$,'X') - END - IF LSId = 'L2' THEN - LS1DepTime = XLATE('RDS_LAYER',RDSNo:'*L1',RDS_LAYER_EPI_TIME$,'X') - LS2DepTime = ParamData - END - - IF LS1DepTime NE '' AND LS2DepTime NE '' THEN - - LS1DepTime = OCONV(LS1DepTime,'MD1') - LS2DepTime = OCONV(LS2DepTime,'MD1') - TotDepTime = LS1DepTime + LS2DepTime - LS1Ratio = OCONV(ICONV(LS1DepTime/TotDepTime,'MD6'),'MD6') - - IF LS1Ratio <= 0.112 OR LS1Ratio >= 0.114 THEN - Msg(@WINDOW,'','DEP_TIME_RATIO','',LS1DepTime:@FM:LS2DepTime:@FM:LS1Ratio) - END - END - - END ;* End of check for DepTimeRatio flag - END ;* End of check for column = 'EPI_TIME" - - END ;* End of Check for Visible Column - -END - -GOSUB Refresh - + + CurrCtrl = @WINDOW:'.RECIPE_PARMS' + + PrevSelPos = Get_Property(CurrCtrl,"PREVSELPOS") + PrevCol = PrevSelPos<1> + PrevRow = PrevSelPos<2> + + CurrSelPos = Get_Property(CurrCtrl,"SELPOS") + CurrCol = CurrSelPos<1> + CurrRow = CurrSelPos<2> + + ColStyles = Send_Message( @WINDOW:'.RECIPE_PARMS', 'COLSTYLE', 0, '' ) + ColNames = Get_Property( @WINDOW:'.RECIPE_PARMS', 'COLUMN' ) + + IF CurrRow > 1 THEN + Set_Property(CurrCtrl,'SELPOS',CurrCol:@FM:1) ;* Can't move off of the first row + END + + ListData = Get_Property(CurrCtrl,'LIST') + + IF ListData<1,PrevCol> NE '' THEN + VisibleColumn = NOT(BitAnd( ColStyles, HIDDEN$ )) ;* Gives @VM list of flags for visible columns in the edit table + IF VisibleColumn THEN + LimitData = Get_Property(@WINDOW:'.RECIPE_LIMITS','LIST')<1,PrevCol> + ParamData = ListData<1,PrevCol> + + ColName = ColNames<1,1,PrevCol> + Conversion = XLATE('DICT.RDS_LAYER',ColName,DICT_CONV$,'X') + + CONVERT '~' TO @VM IN LimitData + + IF Conversion NE '' THEN + ParamData = ICONV(ParamData,Conversion) + LimitData = ICONV(LimitData,Conversion) + END + + Minimum = LimitData<1,1> + Maximum = LimitData<1,2> + + IF ParamData < Minimum OR ParamData > Maximum THEN + *ErrMsg('Data Entered for ':QUOTE(ColName):' is out of specified limits!') + END + + + IF ColName = 'EPI_TIME' THEN + LSId = Get_Property(@WINDOW:'.LS_ID','DEFPROP') + RDSNo = Get_Property(@WINDOW:'.RDS_NO','DEFPROP') + + ReactRunRec = XLATE('REACT_RUN',RDSNo,'','X') + + WONo = ReactRunRec + WOStep = ReactRunRec + + PSNo = XLATE('WO_STEP',WONo:'*':WOStep,WO_STEP_PROD_SPEC_ID$,'X') + + DepTimeRatio = XLATE('PROD_SPEC',PSNo,PROD_SPEC_DEP_TIME_RATIO$,'X') + + + IF DepTimeRatio = 1 THEN + IF LSId = 'L1' THEN + LS1DepTime = ParamData + LS2DepTime = XLATE('RDS_LAYER',RDSNo:'*L2',RDS_LAYER_EPI_TIME$,'X') + END + IF LSId = 'L2' THEN + LS1DepTime = XLATE('RDS_LAYER',RDSNo:'*L1',RDS_LAYER_EPI_TIME$,'X') + LS2DepTime = ParamData + END + + IF LS1DepTime NE '' AND LS2DepTime NE '' THEN + + LS1DepTime = OCONV(LS1DepTime,'MD1') + LS2DepTime = OCONV(LS2DepTime,'MD1') + TotDepTime = LS1DepTime + LS2DepTime + LS1Ratio = OCONV(ICONV(LS1DepTime/TotDepTime,'MD6'),'MD6') + + IF LS1Ratio <= 0.112 OR LS1Ratio >= 0.114 THEN + Msg(@WINDOW,'','DEP_TIME_RATIO','',LS1DepTime:@FM:LS2DepTime:@FM:LS1Ratio) + END + END + + END ;* End of check for DepTimeRatio flag + END ;* End of check for column = 'EPI_TIME" + + END ;* End of Check for Visible Column + + END + + GOSUB Refresh + RETURN - * * * * * * * NewTest: * * * * * * * - + RETURN - * * * * * * * TestKeyDC: * * * * * * * - -CurrCtrl = @WINDOW:'.RDS_TEST_KEYS' - -CurrPos = Get_Property(CurrCtrl,"SELPOS") -CurrCol = CurrPos<1> -CurrRow = CurrPos<2> - -RDSTestNo = Get_Property(CurrCtrl,'CELLPOS',COL$TEST_NO:@FM:CurrRow) -RDSLsID = Get_Property(@WINDOW,'ID') - -IF RDSTestNo NE '' AND RDSLsID NE '' THEN - - CardWindow = 'RDS_TEST' - CardKey = RDSTestNo ;* Null values for CardKey creates new card - NewCardCtrl = '' ;* Name of button control to create new Card on Card window - RecalcCtrl = CurrCtrl ;* Symbolic Control to recalculate upon return - RecalcPos = '' ;* Position in edit list or edit table for recalc - RetCtrl = CurrCtrl ;* This can be called from both a window and a process - RetPos = CurrPos ;* Position in edit list or edit table to return to - - oAParms = CardWindow:@RM:CardKey:@RM:NewCardCtrl:@RM:RecalcCtrl:@RM:RecalcPos:@RM:RetCtrl:@RM:RetPos - - obj_AppWindow('ViewNewCard',oAParms) - - IF Get_Status(errCode) THEN - ErrMsg(errCode) - END - -END - + + CurrCtrl = @WINDOW:'.RDS_TEST_KEYS' + + CurrPos = Get_Property(CurrCtrl,"SELPOS") + CurrCol = CurrPos<1> + CurrRow = CurrPos<2> + + RDSTestNo = Get_Property(CurrCtrl,'CELLPOS',COL$TEST_NO:@FM:CurrRow) + RDSLsID = Get_Property(@WINDOW,'ID') + + IF RDSTestNo NE '' AND RDSLsID NE '' THEN + + CardWindow = 'RDS_TEST' + CardKey = RDSTestNo ;* Null values for CardKey creates new card + NewCardCtrl = '' ;* Name of button control to create new Card on Card window + RecalcCtrl = CurrCtrl ;* Symbolic Control to recalculate upon return + RecalcPos = '' ;* Position in edit list or edit table for recalc + RetCtrl = CurrCtrl ;* This can be called from both a window and a process + RetPos = CurrPos ;* Position in edit list or edit table to return to + + oAParms = CardWindow:@RM:CardKey:@RM:NewCardCtrl:@RM:RecalcCtrl:@RM:RecalcPos:@RM:RetCtrl:@RM:RetPos + + obj_AppWindow('ViewNewCard',oAParms) + + IF Get_Status(errCode) THEN + ErrMsg(errCode) + END + + END + RETURN * * * * * * * OverRideRecipeLimits: * * * * * * * - - -IF Security_Check( 'Recipe', Write$ ) THEN - Set_Property(@WINDOW:'.OVERRIDE_LIMITS_GROUP','ENABLED',1) -END ELSE - Security_Err_Msg( 'Recipe', Write$ ) -END - + + IF Security_Check( 'Recipe', Write$ ) THEN + Set_Property(@WINDOW:'.OVERRIDE_LIMITS_GROUP','ENABLED',1) + END ELSE + Security_Err_Msg( 'Recipe', Write$ ) + END + RETURN + * * * * * * * UpdateLimits: * * * * * * * - -IF Security_Check( 'Recipe', Write$ ) THEN - RDSNo = Get_Property(@WINDOW:'.RDS_NO','DEFPROP') - LSId = Get_Property(@WINDOW:'.LS_ID','DEFPROP') - - IF RDSNo = '' OR LSId = '' THEN RETURN - - Send_Event(@WINDOW,'WRITE') - - obj_RDS_Layer('UpdateLimits',RDSNo:@RM:LSId) - - IF Get_Status(errCode) THEN ErrMsg(errCode) - - obj_AppWindow('LoadFormKeys',@WINDOW:@RM:RDSNo:'*':LSId) - -END ELSE - Security_Err_Msg( 'Recipe', Write$ ) -END - - + + IF Security_Check( 'Recipe', Write$ ) THEN + RDSNo = Get_Property(@WINDOW:'.RDS_NO','DEFPROP') + LSId = Get_Property(@WINDOW:'.LS_ID','DEFPROP') + + IF RDSNo = '' OR LSId = '' THEN RETURN + + Send_Event(@WINDOW,'WRITE') + + obj_RDS_Layer('UpdateLimits',RDSNo:@RM:LSId) + + IF Get_Status(errCode) THEN ErrMsg(errCode) + + obj_AppWindow('LoadFormKeys',@WINDOW:@RM:RDSNo:'*':LSId) + + END ELSE + Security_Err_Msg( 'Recipe', Write$ ) + END + + RETURN + * * * * * * * OverRideDC: * * * * * * * - - - RETURN - * * * * * * * OverRidePC: * * * * * * * -/* - -CtrlEntID = @WINDOW:'.CUST_LOT_NO' - -OrderNo = Get_Property(@WINDOW:'.ORDER_NO','TEXT') -ItemNo = Get_Property(@WINDOW:'.ITEM_NO','TEXT') - -OrderDetKey = OrderNo:'*':ItemNo - -PrevSelPos = Get_Property(CtrlEntId,"PREVSELPOS") -PrevCol = PrevSelPos<1> -PrevRow = PrevSelPos<2> - -CurrPos = Get_Property(CtrlEntId,'SELPOS') -CurrCol = CurrPos<1> -CurrRow = CurrPos<2> - -ListData = Get_Property(CtrlEntId,'LIST') - -ColCnt = 2 ;* Number of columns in the edit table - -IF ListData = '' THEN - - ColPointer = CurrCol - LinePointer = CurrRow - - * Find the first non-empty cell - - LOOP - Test = ListData - UNTIL Test NE '' OR (LinePointer = 0 AND ColPointer = 1) - ColPointer -= 1 - IF ColPointer = 0 THEN - ColPointer = ColCnt - LinePointer -= 1 - END - REPEAT - - * Move one past the non empty cell - - BEGIN CASE - CASE LinePointer = 0 - * Empty Table - LinePointer = 1 - CoilPointer = 1 - - CASE ColPointer = ColCnt - LinePointer += 1 - ColPointer = 1 - - CASE 1 - ColPointer += 1 - - END CASE - Set_Property(CtrlEntId,"SELPOS",ColPointer:@FM:LinePointer) -END - -IF ListData NE '' THEN - - IF PrevCol = COL$CUST_LOT_NO THEN - - LotNo = ListData - - IF INDEX(LotNo,' ',1) THEN - ListData = TRIM(LotNo) - Set_Property(CtrlEntId,'LIST',ListData) - LotNo = TRIM(LotNo) - END - Extract_SI_Keys('ORDER_DET','CUST_LOT_NO',LotNo,OrderDetKeys) ;* Check for previous use of customer lot number in new data structure - - IF OrderDetKeys NE '' THEN - - LOCATE OrderDetKey IN OrderDetKeys USING @VM SETTING FPos THEN - OrderDetKeys = DELETE(OrderDetKeys,1,FPos,0) ;* Exclude the current Order Item from this check - END - - IF OrderDetKeys NE '' THEN - SWAP @VM WITH ', ' IN OrderDetKeys - - Message = 'Lot No ':QUOTE(LotNo):' has been used in Order Item(s) |':OrderDetKeys:'||' - Message := 'Do you wish to use this duplicate Lot Number?|' - - MsgInfo = '' - MsgInfo = Message - - Resp = Msg( @WINDOW, MsgInfo,'CUST_LOT_USED' ) - IF Resp = CHAR(27) THEN - Set_Property(CtrlEntId,'CELLPOS','',PrevSelPos) - Set_Property(CtrlEntId,"SELPOS",PrevSelPos) - END - - END - END ELSE - - * Try looking in the old format Orders - - Extract_SI_Keys('ORDER','LOT_NUM',LotNo,OrderNos) ;* Check for previous use of customer lot number in old data structure - IF OrderNos NE '' THEN - - LOCATE OrderNo IN OrderNos USING @VM SETTING FPos THEN - OrderNos = DELETE(OrderNos,1,FPos,0) ;* Exclude the current Order No from this check - END - - IF OrderNos NE '' THEN - SWAP @VM WITH ', ' IN OrderNos - - Message = 'Lot No ':QUOTE(LotNo):' has been used in Order Number |':OrderNos:'||' - Message := 'Do you wish to use this duplicate Lot Number?|' - - MsgInfo = '' - MsgInfo = Message - - Resp = Msg( @WINDOW, MsgInfo,'CUST_LOT_USED' ) - IF Resp = CHAR(27) THEN - Set_Property(CtrlEntId,'CELLPOS','',PrevSelPos) - Set_Property(CtrlEntId,"SELPOS",PrevSelPos) - END - - END - END - END ;* End of checks for Lot Nos used elswhere - - END - -END ;* End of check for Previous Cell NE Null - -GOSUB Refresh - -RETURN -*/ - - RETURN - - - - - - - - - - - - - - - diff --git a/LSL2/STPROC/DEBUGGER_LOGGER.txt b/LSL2/STPROC/DEBUGGER_LOGGER.txt index 14d8f4e..8f59787 100644 --- a/LSL2/STPROC/DEBUGGER_LOGGER.txt +++ b/LSL2/STPROC/DEBUGGER_LOGGER.txt @@ -27,30 +27,47 @@ Common /ErrorServices/ ErrorMessages@, ErrorSources@, ErrorCodes@, RetStacks@, E Equ CRLF$ to \0D0A\ Declare function Environment_Services, Logging_Services, GetSessionCallStack, Error_Services, RetStack -Declare subroutine Logging_Services, Get_Status, Set_Env +Declare subroutine Logging_Services, Get_Status, Set_Env, GetTempPath Main: - ErrorMessages = Error_Services('GetMessages') - LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\StackTrace' - LogDate = Oconv(Date(), 'D4/') - LogTime = Oconv(Time(), 'MTS') - LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' Error Log.csv' - objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ',', '', '', False$, False$) - LogData = '' - LogData<1> = CRLF$:'Timestamp: ':LogDate:' ':LogTime - LogData<2> = 'Machine: ':Environment_Services('GetServer') - LogData<3> = 'Set_Status Code:':EsSpStatCode@ - LogData<4> = 'Set_Status Message:':EsSpStatMessage@ + ErrorMessages = Error_Services('GetMessages') + LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\StackTrace' + LogDate = Oconv(Date(), 'D4/') + LogTime = Oconv(Time(), 'MTS') + LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' Error Log.csv' + objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ',', '', '', False$, False$) + TempLogFileName = 'OIStackLog.csv' + TempDirectory = Str(\00\, 1024) + GetTempPath(Len(TempDirectory), TempDirectory) + Convert \00\ to '' in TempDirectory + TempLogPath = TempDirectory + objTempLog = Logging_Services('NewLog', TempLogPath, TempLogFileName, CRLF$, ',', '', '', False$, True$) + LogData = '' + LogData<1> = CRLF$:'Timestamp: ':LogDate:' ':LogTime + LogData<2> = 'Machine: ':Environment_Services('GetServer') + LogData<3> = 'Set_Status Code:':EsSpStatCode@ + LogData<4> = 'Set_Status Message:':EsSpStatMessage@ Swap @FM with @VM in ErrorMessages - LogData<5> = 'Error_Services Messages:':ErrorMessages - LogData<6> = 'Call Depth: ':CallDepth@ - LogData<7> = 'Curr Program and line no: ':CallStack@<2,1>:@VM:CallStack@<2,2> - LogData<8> = 'Call Stack / Line Nos: ' - Stack = CallStack@ - Stack = Delete(Stack, 1, 0, 0) - LogData<9> = Stack:CRLF$ + LogData<5> = 'Error_Services Messages:':ErrorMessages + LogData<6> = 'Call Depth: ':CallDepth@ + Stack = CallStack@ + Begin Case + Case ( (CallStack@<1,1> EQ 'ERROR_SERVICES') and (CallStack@<2,1> EQ 'ERROR_SERVICES') ) + LogData<7> = 'Curr Program and line no: ':CallStack@<3,1>:@VM:CallStack@<3,2> + Stack = Delete(Stack, 1, 0, 0) + Stack = Delete(Stack, 1, 0, 0) + Case (CallStack@<1,1> EQ 'ERROR_SERVICES') + LogData<7> = 'Curr Program and line no: ':CallStack@<2,1>:@VM:CallStack@<2,2> + Stack = Delete(Stack, 1, 0, 0) + Case Otherwise$ + LogData<7> = 'Curr Program and line no: ':CallStack@<1,1>:@VM:CallStack@<1,2> + End Case + LogData<8> = 'Call Stack / Line Nos: ' + Convert \00\ to '' in Stack + LogData<9> = Stack:CRLF$ Logging_Services('AppendLog', objLog, LogData, @FM, @VM, '', '', '') + Logging_Services('AppendLog', objTempLog, LogData, @FM, @VM, '', '', '') Return diff --git a/LSL2/STPROC/ERROR_SERVICES.txt b/LSL2/STPROC/ERROR_SERVICES.txt index 462339d..a52452c 100644 --- a/LSL2/STPROC/ERROR_SERVICES.txt +++ b/LSL2/STPROC/ERROR_SERVICES.txt @@ -102,7 +102,7 @@ If Assigned(Response) else Response = '' AutoDisplayErrors = False$ ; // Set this to True$ when debugging so all errors will automatically display. Declare function RetStack, Error_Services, SRPSendMail, Get_Env -Declare subroutine Error_Services, Set_Env, Set_Status +Declare subroutine Error_Services, Set_Env, Set_Status, GetTempPath GoToService else Error_Services('Set', Service : ' is not a valid service request within the Error services module.') @@ -311,16 +311,39 @@ Service GetCodes() End Service +//---------------------------------------------------------------------------------------------------------------------- +// GetStackTrace +// +// Uses a debugger intercept to log the stack including line numbers to a temporary file and returns the contents +// in the Response variable. +// +// Warning: +// Stepping into this while debugging will interrupt the debugging session and may cause an error message to +// be displayed. It is advised to set a breakpoint after the call and let the debugger run through this. +//---------------------------------------------------------------------------------------------------------------------- Service GetStackTrace() - // Business logic goes here. Data that needs to be returned should be assigned to the Response parameter. - Response = '' + + Error_Services('LogStack') + TempLogFileName = 'OIStackLog.csv' + TempDirectory = Str(\00\, 1024) + GetTempPath(Len(TempDirectory), TempDirectory) + Convert \00\ to '' in TempDirectory + TempLogPath = TempDirectory:TempLogFileName + OSRead Response from TempLogpath else + Error_Services('Add', 'Error in ':Service:' service. Error retrieving OIStackLog.csv') + end + End Service //---------------------------------------------------------------------------------------------------------------------- // LogStack // -// Uses a custom debugger intercept to log the stack including line numbers to .../LogFiles/StackTrace. +// Uses a debugger intercept, DEBUGGER_LOGGER, to log the stack including line numbers to .../LogFiles/StackTrace. +// +// Warning: +// Stepping into this while debugging will interrupt the debugging session and may cause an error message to +// be displayed. It is advised to set a breakpoint after the call and let the debugger run through this. //---------------------------------------------------------------------------------------------------------------------- Service LogStack() @@ -402,3 +425,4 @@ SendRuntimeAlert: MsgSent = SRPSendMail(Message, ConfigFile) return + diff --git a/LSL2/STPROC/RDS_ACTIONS.txt b/LSL2/STPROC/RDS_ACTIONS.txt index 2e8df68..9f05912 100644 --- a/LSL2/STPROC/RDS_ACTIONS.txt +++ b/LSL2/STPROC/RDS_ACTIONS.txt @@ -81,12 +81,6 @@ LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' RDS Headers = 'Logging DTM' : @FM : 'RDSNo' : @FM : 'WONo' : @FM : 'CassNo' : @FM : 'Reactor Type' objLog3 = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$) -LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\RDS_LAYER' -LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' RDS_LAYER Log.csv' -Headers = 'Logging DTM' : @FM : 'Results' -ColumnWidths = 20 : @FM : 100 -objLog2 = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ' ', Headers, ColumnWidths, False$, False$) - If KeyID then GoSub Initialize_System_Variables Begin Case @@ -1045,3 +1039,4 @@ Restore_System_Variables: return + diff --git a/LSL2/STPROC/RDS_LAYER_ACTIONS.txt b/LSL2/STPROC/RDS_LAYER_ACTIONS.txt index e8d5909..36b2048 100644 --- a/LSL2/STPROC/RDS_LAYER_ACTIONS.txt +++ b/LSL2/STPROC/RDS_LAYER_ACTIONS.txt @@ -49,21 +49,13 @@ $insert FILE.SYSTEM.EQUATES $insert ACTION_SETUP $insert RDS_LAYER_EQUATES -Declare function Tool_Parms_Services, Environment_Services, Logging_Services, Memberof +Declare function Tool_Parms_Services, Environment_Services, Logging_Services, Memberof, Error_Services Declare subroutine Logging_Services, Error_Services -LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\RDS_LAYER_WriteIssue' -LogDate = Oconv(Date(), 'D4/') -LogTime = Oconv(Time(), 'MTS') -LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' RDS_LAYER WriteIssue Log.csv' -Headers = 'Logging DTM' : @FM : 'User' : @FM : 'RDS_LAYER Key ID' : @FM : 'Notes' -objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$) -LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM - If KeyID then GoSub Initialize_System_Variables Begin Case - + Case Action _EQC 'CalcField' ; GoSub Calc_Field Case Action _EQC 'READ_RECORD_PRE' ; GoSub READ_RECORD_PRE Case Action _EQC 'READ_RECORD' ; GoSub READ_RECORD @@ -74,7 +66,7 @@ Begin Case Case Action _EQC 'DELETE_RECORD_PRE' ; GoSub DELETE_RECORD_PRE Case Action _EQC 'DELETE_RECORD' ; GoSub DELETE_RECORD Case Otherwise$ ; Status = 'Invalid Action' - + End Case If KeyID then GoSub Restore_System_Variables @@ -99,7 +91,7 @@ Return ActionFlow Calc_Field: // Make sure the ActionFlow return variable is cleared in case nothing is calculated. ActionFlow = '' - + Begin Case Case CalcColName EQ 'EXPORT_CONTROL' ; GoSub EXPORT_CONTROL End Case @@ -151,382 +143,68 @@ return WRITE_RECORD_PRE: - EngineeringCheck = Memberof(@User4, 'ENGINEERING') - If (EngineeringCheck EQ True$) then - ActionFlow = ACTION_CONTINUE$ - end else - WriteIssue = False$ - If (OrigRecord NE '') AND (Record EQ '') then + If Not(Memberof(@User4, 'ENGINEERING')) then + If ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) | + or ( (OrigRecord NE '') AND (Record EQ '') ) then + + ErrorMsg = 'RDS_LAYER specifications can only be cleared by a member of Engineering.' + LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\RDS_LAYER' + LogDate = Oconv(Date(), 'D4/') + LogTime = Oconv(Time(), 'MTS') + LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' RDS_LAYER_Spec_Clear_Attempt_Log.csv' + Headers = 'Logging DTM' : @FM : 'User' : @FM : 'RDS_LAYER Key ID' : @FM : 'Notes' + objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$) + LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM + LogData = '' LogData<1> = LoggingDTM LogData<2> = @USER4 LogData<3> = Name - LogData<4> = 'RDS_LAYER Epi Time Min can only be cleared by a member of Engineering.' + LogData<4> = ErrorMsg + LogData<5> = Error_Services('GetStackTrace') Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Epi Time Min can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER Epi Time Max can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Epi Time Max can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER Epi H2 Flow Min can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Epi H2 Flow Min can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER Epi H2 Flow Max can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Epi H2 Flow Max can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER TCS Flow Min can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER TCS Flow Min can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER TCS Flow Max can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER TCS Flow Max can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER Aux1 Min can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Aux1 Min can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER Aux1 Max can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Aux1 Max can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER F Offset Min can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER F Offset Min can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER F Offset Max can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER F Offset Max can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER Susc Etch Min can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Susc Etch Min can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER Susc Etch Max can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Susc Etch Max can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER Dilutent Min can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Dilutent Min can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER Dilutent Max can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Dilutent Max can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER Dopant Flow Min can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Dopant Flow Min can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER Dopant Flow Max can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Dopant Flow Max can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER HCL Flow Min can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER HCL Flow Min can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER HCL Flow Max can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER HCL Flow Max can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER Bake Time Min can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Bake Time Min can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER Bake Time Max can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Bake Time Max can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER DCS Flow Min can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER DCS Flow Min can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER DCS Flow Max can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER DCS Flow Max can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER Aux2 Min can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Aux2 Min can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER Aux2 Max can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Aux2 Max can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER S Offset Min can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER S Offset Min can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER S Offset Max can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER S Offset Max can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER R Offset Min can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER R Offset Min can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER R Offset Max can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER R Offset Max can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER Etch 1 Min can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Etch 1 Min can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER Etch 1 Max can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Etch 1 Max can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER Etch 2 Min can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Etch 2 Min can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER Etch 2 Max can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Etch 2 Max can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER Etch 3 Min can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Etch 3 Min can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER Etch 3 Max can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER Etch 3 Max can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER UL Temp Min can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER UL Temp Min can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - If (OrigRecord NE '') AND (Record EQ '') then - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = @USER4 - LogData<3> = Name - LogData<4> = 'RDS_LAYER UL Temp Max can only be cleared by a member of Engineering.' - Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$) - Error_Services('Add', 'RDS_LAYER UL Temp Max can only be cleared by a member of Engineering.') - WriteIssue = True$ - end - - // User is attempting to erase data that is prohibited from being erased Set the FS104 error and block the write. - If WriteIssue EQ True$ then - OrigFileError = 104:': RDS_LAYER params can only be cleared by a member of Engineering.' + Error_Services('LogStack') + Error_Services('Add', ErrorMsg) + + OrigFileError = 104:': ':ErrorMsg Status = 0 Record = '' - ActionFlow = ACTION_STOP$ - Error_Services('LogStack') - end else - ActionFlow = ACTION_CONTINUE$ + ActionFlow = ACTION_STOP$ + end end @@ -545,12 +223,13 @@ return // ----- Internal Methods ---------------------------------------------------------------------------------------------- Initialize_System_Variables: + // Save these for restoration later SaveDict = @DICT SaveID = @ID SaveRecord = @RECORD OrigFileError = @FILE.ERROR - + // Now make sure @DICT, ID, and @RECORD are populated CurrentDictName = '' If @DICT then @@ -559,11 +238,11 @@ Initialize_System_Variables: CurrentDictName = Field(@TABLES(0), @FM, fPos, 1) end end - + If CurrentDictName NE DictName then - Open DictName to @DICT else Status = 'Unable to initialize @DICT' + Open DictName to @DICT else Status = 'Unable to initialize @DICT' end - + @ID = KeyID If Record else // Record might not have been passed in. Read the record from the database table just to make sure. @@ -573,16 +252,21 @@ Initialize_System_Variables: BFS = FullFSList[-1, 'B' : @SVM] LastHandle = hTable[-1, 'B' : \0D\] FileHandle = \0D\ : LastHandle[1, @VM] - + Call @BFS(READO.RECORD, BFS, FileHandle, KeyID, FMC, Record, ReadOStatus) end end @RECORD = Record + return + Restore_System_Variables: + Transfer SaveDict to @DICT Transfer SaveID to @ID Transfer SaveRecord to @RECORD @FILE.ERROR = OrigFileError + return + diff --git a/LSL2/STPROC/RDS_LAYER_EVENTS.txt b/LSL2/STPROC/RDS_LAYER_EVENTS.txt index 427388f..21b7fb9 100644 --- a/LSL2/STPROC/RDS_LAYER_EVENTS.txt +++ b/LSL2/STPROC/RDS_LAYER_EVENTS.txt @@ -35,6 +35,7 @@ Compile function RDS_LAYER_EVENTS(CtrlEntId, Event, @PARAMS) #pragma precomp SRP_PreCompiler #window RDS_LAYER +$Insert EVENT_SETUP $Insert RDS_EQUATES $Insert APP_INSERTS $Insert RLIST_EQUATES @@ -54,7 +55,7 @@ EQU HIDDEN$ TO 32 Declare subroutine Comm_RDS_Layer, Tool_Parms_Services, Set_Status, RList, Errmsg, Database_Services, Msg Declare subroutine PlaceDialog, obj_RDS_Layer, Security_Err_Msg -Declare function Tool_Parms_Services, Get_Property, Database_Services, Security_Check, MemberOf +Declare function Tool_Parms_Services, Get_Property, Database_Services, Security_Check, MemberOf, Get_EventStatus GoToEvent Event for CtrlEntId else // Event not implemented @@ -98,7 +99,7 @@ Event WINDOW.WRITE() IF CurrRecord NE OrgRecord THEN CurrDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS') NewLine = @USER4:@VM:CurrDTM - Send_Message(@WINDOW:'.MODIFY_USER','INSERT',1,NewLine) + Send_Message(@WINDOW:'.MODIFY_USER', 'INSERT', 1, NewLine) END IOOptions = Get_Property(@Window, 'IOOPTIONS') @@ -107,104 +108,16 @@ Event WINDOW.WRITE() Set_Status(0) Forward_Event() errCode = '' - If Get_Status(errCode) then ErrMsg('Save failed. Error code: ':errCode) - Post_Event(@WINDOW,'CLOSE') - -* end else -* -* MsgHead = 'Default Run Parameters' -* MsgText = 'Would you like to use these parameters as the default for future lots?' -* -* Response = Msg(@WINDOW,'','YESNO','',MsgHead:@FM:MsgText) -* -* IF Response EQ True$ THEN -* -* RDSNo = Get_Property(@Window : '.RDS_NO', 'TEXT') -* Database_Services('ActivateRecord', 'RDS', RDSNo) -* WorkOrder = {WO} -* ReactorNo = {REACTOR} -* PSN = {PROD_SPEC_ID} -* If PSN NE '' then -* If ReactorNo EQ '' then -* ReactorNo = {SCHED_REACTOR} -* If ReactorNo EQ '' then -* ErrorMsg = 'No scheduled reactor found for work order: ':WorkOrder:'. Could not apply current ':@SVM | -* : 'run parameters. Please assign a reactor to this RDS first.' -* ErrMsg(ErrorMsg) -* return -* end -* end -* // Create a new TOOL_PARMS record, which is the "master" parameter record. -* Tool_Parms_Services('CreateToolParmsRec', PSN, ReactorNo, RDSNo) -* If Error_Services('NoError') then -* Msg(@Window, '', 'SUCCESS', '', 'Run parameters have been set for reactor ':ReactorNo) -* end else -* Errmsg('Error setting run parameters. Error message: ':Error_Services('GetMessage')) -* end -* end else -* ErrorMsg = 'No PSN assigned to this RDS. Could not apply current ':@SVM | -* : 'run parameters. Please assign a PSN to this RDS first.' -* ErrMsg(ErrorMsg) -* return -* end -* end -* end - + If Get_EventStatus(errCode) then + EventFlow = EVENT_STOP$ + end else + Post_Event(@WINDOW,'CLOSE') + end + end event -* Event BTN_SET_CURR_RUN_PARMS.CLICK() -* -* // Use new RDS_LAYER parameters to create a new TOOL_PARMS record. -* // Then apply the new TOOL_PARMS to all RDS records in this work order on this reactor. -* // Note: If a reactor has not yet been assigned to an RDS in this work order, then -* // the TOOL_PARMS will be applied anyways as a convenience. Should the RDS be -* // reassigned to another reactor later, the appropriate TOOL_PARMS will be applied -* // by the RDS_ACTIONS MFS. -* -* Savewarn = Get_Property(@Window, 'SAVEWARN') -* Set_Property(@Window, '@SKIPSCRIPT', True$) -* If Savewarn EQ True$ then -* IOOptions = Get_Property(@Window, 'IOOPTIONS') -* IOOptions<6> = 1 -* Set_Property(@Window, 'IOOPTIONS', IOOptions) -* Send_Event(@Window, 'WRITE') -* end -* RDSNo = Get_Property(@Window : '.RDS_NO', 'TEXT') -* Database_Services('ActivateRecord', 'RDS', RDSNo) -* WorkOrder = {WO} -* ReactorNo = {REACTOR} -* PSN = {PROD_SPEC_ID} -* If PSN NE '' then -* If ReactorNo EQ '' then -* ReactorNo = {SCHED_REACTOR} -* If ReactorNo EQ '' then -* ErrorMsg = 'No scheduled reactor found for work order: ':WorkOrder:'. Could not apply current ':@SVM | -* : 'run parameters. Please assign a reactor to this RDS first.' -* ErrMsg(ErrorMsg) -* return -* end -* end -* // Create a new TOOL_PARMS record, which is the "master" parameter record. -* Tool_Parms_Services('CreateToolParmsRec', PSN, ReactorNo, RDSNo) -* // Apply new TOOL_PARMS record to all RDS_LAYERS in this run without an unload signature. -* Tool_Parms_Services('ApplyCurrentRunParms', PSN, ReactorNo) -* If Error_Services('NoError') then -* Msg(@Window, '', 'SUCCESS', '', 'Run parameters have been set for reactor ':ReactorNo) -* end else -* Errmsg('Error setting run parameters. Error message: ':Error_Services('GetMessage')) -* end -* end else -* ErrorMsg = 'No PSN assigned to this RDS. Could not apply current ':@SVM | -* : 'run parameters. Please assign a PSN to this RDS first.' -* ErrMsg(ErrorMsg) -* return -* end -* -* end event - - Event PUB_CONFIRM_PARMS.CLICK() RDSNo = Get_Property(@Window:'.RDS_NO', 'TEXT') @@ -248,9 +161,11 @@ end event ClearCursors: + For counter = 0 to 8 ClearSelect counter Next counter + return @@ -348,11 +263,6 @@ Refresh: Parameter_Styles = Send_Message( @WINDOW:'.RECIPE_PARMS', "COLSTYLE", 0, ParameterStyles ) LimitStyles = Send_Message( @WINDOW:'.RECIPE_LIMITS', "COLSTYLE", 0, LimitStyles ) -* Set_Property( @WINDOW:'.RECIPE_INFO', "AUTOSIZECOL", 16 ) -* Set_Property( @WINDOW:'.RECIPE_LIMITS', "AUTOSIZECOL", 16 ) - - - * QBF buttons Ctrls = @WINDOW:'.QBF_FIRST_FIX':@RM ; Props = 'ENABLED':@RM @@ -389,7 +299,6 @@ Refresh: NEXT I NEXT I - TestList = Get_Property(@WINDOW:'.RDS_TEST_KEYS','LIST') FOR I = 1 TO COUNT(TestList,@FM) + (TestList NE '') @@ -400,14 +309,6 @@ Refresh: END NEXT I - * RPCopy = RecipeParms - * Convert @FM to '' in RPCopy - * If RPCopy EQ '' then - * Set_Property(@Window : '.BTN_SET_CURR_RUN_PARMS', 'ENABLED', False$) - * end else - * Set_Property(@Window : '.BTN_SET_CURR_RUN_PARMS', 'ENABLED', True$) - * end - IsTestWafer = Xlate('RDS', RDSNo, 'ON_TW_FREQ', 'X') RDSLayerAck = RDSRec If ( (IsTestWafer EQ True$) and ( (RDSLayerAck EQ False$) or (RDSLayerAck EQ '') ) ) then