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

291 lines
6.1 KiB
Plaintext

COMPILE FUNCTION Comm_RDS_Calculator(CtrlEntID,Event,Parm1,Parm2,Parm3,Parm4,Parm5,Parm6)
/*
Commuter module for RDS_Calculator
/11/2004 - John C. Henry, J.C. Henry & Co., Inc.
*/
DECLARE SUBROUTINE Set_Property, obj_AppWindow
DECLARE FUNCTION Get_Property, Get_Current_Event
$INSERT APPCOLORS
EQU CRLF$ TO \0D0A\
EQU Yes$ TO 1
EQU No$ TO 0
ErrTitle = 'Error in Comm_RDS_Calculator'
ErrorMsg = ''
Result = ''
IF NOT(Assigned(CtrlEntID)) THEN CtrlEntID = ''
IF NOT(Assigned(Event)) THEN Event = ''
IF NOT(Assigned(Parm1)) THEN Parm1 = ''
IF NOT(Assigned(Parm2)) THEN Parm2 = ''
IF NOT(Assigned(Parm3)) THEN Parm3 = ''
IF NOT(Assigned(Parm4)) THEN Parm4 = ''
IF NOT(Assigned(Parm5)) THEN Parm5 = ''
IF NOT(Assigned(Parm6)) THEN Parm6 = ''
Window = CtrlEntID[1,'F*']
Control = FIELD(CtrlEntID,'.',2,3)
IF Control = '' THEN Control = Window
CtrlClass = Get_Property(CtrlEntID,'TYPE')
IF CtrlClass = 'OLECONTROL' THEN ProgID = Get_Property(CtrlEntID, "ORIG_TEXT")
EventType = Get_Current_Event()
IF EventType EQ "OLE" THEN
Transfer Parm1 TO Event
Transfer Parm2 TO Parm1
Transfer Parm3 TO Parm2
Transfer Parm4 TO Parm3
Transfer Parm5 TO Parm4
Transfer Parm6 TO Parm5
END
BEGIN CASE
CASE Control = Window
BEGIN CASE
CASE Event = 'CREATE' ; GOSUB Create
END CASE
CASE Control = 'THICKNESS_READINGS'
BEGIN CASE
CASE Event = 'POSCHANGED' ; GOSUB Recalc
CASE Event = 'LOSTFOCUS' ; GOSUB ClearSelPos
END CASE
CASE Control = 'SHEETRHO_READINGS'
BEGIN CASE
CASE Event = 'POSCHANGED' ; GOSUB Recalc
CASE Event = 'LOSTFOCUS' ; GOSUB ClearSelPos
END CASE
CASE Control = 'OLE_EDT_RDS'
BEGIN CASE
CASE Event = 'AfterUpdate' ; *GOSUB AfterUpdate.OLE_EDT_RDS
END CASE
CASE Event = 'CLICK'
BEGIN CASE
CASE Control = 'CALC_BUTTON' ; GOSUB Calc
CASE Control = 'OK' ; GOSUB OK
END CASE
END CASE
RETURN Result
* * * * * * *
Create:
* * * * * * *
obj_AppWindow('Create',@WINDOW)
PosList = ''
FOR I = 80 TO 10 STEP -10
PosList<-1> = I:'mm'
NEXT I
PosList<-1> = 'Center'
FOR I = 10 TO 80 STEP 10
PosList<-1> = I:'mm'
NEXT I
Set_Property(@WINDOW:'.POSITION','LIST',PosList)
RETURN
* * * * * * *
ClearSelPos:
* * * * * * *
Set_Property(CtrlEntID,'SELPOS',0:@FM:0)
Result = 1
RETURN
* * * * * * *
Recalc:
* * * * * * *
SheetRhoReads = Get_Property(@WINDOW:'.SHEETRHO_READINGS','LIST')
ThicknessReads = Get_Property(@WINDOW:'.THICKNESS_READINGS','LIST')
ReadCnt = COUNT(SheetRhoReads,@FM) + (SheetRhoReads NE '')
IF ReadCnt = '' THEN
ReadCnt = COUNT(ThicknessReads,@FM) + (ThicknessReads NE '')
END
FOR I = 1 TO ReadCnt
SheetRhoRead = SheetRhoReads<I>
ThicknessRead = ThicknessReads<I>
IF SheetRhoRead = '' OR ThicknessRead = '' THEN
Result<I> = ''
END ELSE
IF SheetRhoRead NE 0 AND ThicknessRead NE 0 THEN
Result<I> = OCONV(ICONV((SheetRhoRead * ThicknessRead/10000),'MD4'),'MD4')
END ELSE
Result<1,I> = ''
END
END
NEXT I
Set_Property(@WINDOW:'.RES_READINGS','LIST',Result)
RETURN
* * * * * * *
Calc:
* * * * * * *
Ctrls = @WINDOW:'.TTHICK_AVG':@RM ; Props = 'DEFPROP':@RM
Ctrls := @WINDOW:'.TTHICK_STDEV':@RM ; Props := 'DEFPROP':@RM
Ctrls := @WINDOW:'.TTHICK_MAX':@RM ; Props := 'DEFPROP':@RM
Ctrls := @WINDOW:'.TTHICK_MIN':@RM ; Props := 'DEFPROP':@RM
Ctrls := @WINDOW:'.TTHICK_UNIF' ; Props := 'DEFPROP'
StatReadings = Get_Property(@WINDOW:'.THICKNESS_READINGS','LIST')
StatConversion = 'MD3'
GOSUB CalcStats
Set_Property(Ctrls,Props,Stats)
Ctrls = @WINDOW:'.SHEETRHO_AVG':@RM ; Props = 'DEFPROP':@RM
Ctrls := @WINDOW:'.SHEETRHO_STDEV':@RM ; Props := 'DEFPROP':@RM
Ctrls := @WINDOW:'.SHEETRHO_MAX':@RM ; Props := 'DEFPROP':@RM
Ctrls := @WINDOW:'.SHEETRHO_MIN':@RM ; Props := 'DEFPROP':@RM
Ctrls := @WINDOW:'.SHEETRHO_UNIF' ; Props := 'DEFPROP'
StatReadings = Get_Property(@WINDOW:'.SHEETRHO_READINGS','LIST')
StatConversion = 'MD3'
GOSUB CalcStats
Set_Property(Ctrls,Props,Stats)
Ctrls = @WINDOW:'.TRES_AVG':@RM ; Props = 'DEFPROP':@RM
Ctrls := @WINDOW:'.TRES_STDEV':@RM ; Props := 'DEFPROP':@RM
Ctrls := @WINDOW:'.TRES_MAX':@RM ; Props := 'DEFPROP':@RM
Ctrls := @WINDOW:'.TRES_MIN':@RM ; Props := 'DEFPROP':@RM
Ctrls := @WINDOW:'.TRES_UNIF' ; Props := 'DEFPROP'
StatReadings = Get_Property(@WINDOW:'.RES_READINGS','LIST')
StatConversion = 'MD4'
GOSUB CalcStats
Set_Property(Ctrls,Props,Stats)
RETURN
* * * * * * *
CalcStats:
* * * * * * *
thisReadings = StatReadings
Conversion = StatConversion
StatAvg = ''
StatStdv = ''
StatUnif = ''
StatMin = ''
StatMax = ''
AvgCount = 0
AvgTotal = 0
ReadCount = COUNT(thisReadings,@FM) + (thisReadings NE '')
FOR I = 1 TO ReadCount
thisReading = ThisReadings<I>
IF thisReading NE '' AND thisReading NE 0.00 THEN
AvgCount += 1
AvgTotal += thisReading
IF thisReading _LEX StatMin OR StatMin = '' THEN StatMin = thisReading
IF thisReading _GEX StatMax OR StatMax = '' THEN StatMax = thisReading
END
NEXT I
IF AvgCount > 0 THEN
StatAvg = AvgTotal/AvgCount
Mean = AvgTotal/AvgCount
SumDiffSq = 0
FOR I = 1 TO ReadCount
thisReading = thisReadings<I>
IF thisReading NE '' THEN
* SumDiffSq += ( thisReading - Mean )**2
SumDiffSq += ( thisReading - Mean ) * ( thisReading - Mean )
END
NEXT I
IF SumDiffSq _GEX 0.00 AND AvgCount > 1 THEN
StatStdv = Sqrt( SumDiffSq/(AvgCount - 1) )
END
IF SumDiffSq _EQX 0 AND AvgCount > 1 THEN StatStdv = 0
END
IF StatMin NE '' AND StatMax NE '' AND StatMin _GEX 0 AND StatMin _GEX 0 THEN
StatUnif = OCONV(((StatMax - StatMin)/(StatMax + StatMin))*10000, 'MD2' )
END
StatAvg = ICONV(StatAvg,Conversion)
StatStdv = ICONV(StatStdv,'MD4')
StatMin = ICONV(StatMin,Conversion)
StatMax = ICONV(StatMax,Conversion)
Stats = OCONV(StatAvg,Conversion):@RM:OCONV(StatStdv,'MD4'):@RM:OCONV(StatMax,Conversion):@RM:OCONV(StatMin,Conversion):@RM:StatUnif
RETURN
* * * * * * *
OK:
* * * * * * *
RETURN