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

165 lines
4.7 KiB
Plaintext

function rds_calculator_comm(Branch)
declare function set_property, fieldcount, get_property, msg, dialog_box, entid, findwindow
declare function memberof, send_event, post_event, repository, start_window, utility, popup
declare function security_check, send_message
declare subroutine make.list, yield, security_err_msg
begin condition
pre:
post:
end condition
ReturnVar = 0
Branches = 'CALC_STAT_INFO'
convert ',' to @fm in Branches
locate Branch in Branches using @fm setting Bpos then
on Bpos gosub CALC_STAT_INFO
end else
Void = msg( '', 'Invalid Branch ':Bpos:' passed to rds_calculator_comm' )
end
return ReturnVar
*==============================================================================================*
CALC_STAT_INFO:
ReturnVar = str( @vm, 9 )
* thickness average
ThickReadings = iconv( get_property( @window:'.THICKNESS_READINGS', 'ARRAY' ), 'MD2' )
ThickAvg = ''
ThickStdev = ''
ResRHOStDev = ''
ThickCp = ''
ResRHOAvg = ''
ResRHOCp = ''
Counter = 0
Ans = ''
LowThickRead = 9999
HighThickRead = 0
for i = 1 to 17
ThisThickRead = ThickReadings<1,i>
if ThisThickRead <> "" then
Counter += 1
Ans += ThisThickRead
if ThisThickRead < LowThickRead then
LowThickRead = ThisThickRead
end
if ThisThickRead > HighThickRead then
HighThickRead = ThisThickRead
end
end
next i
if Counter then
ThickAvg = Ans/Counter
ReturnVar<1,1> = oconv( ThickAvg, 'MD2' )
end
NumDp = Counter
SumDp = Ans
* resistivity average
LowResRHORead = 99999999999
HighResRHORead = 0
Counter = ''
Ans = ''
if get_property( @window:'.CALC_TYPE', 'VALUE' ) = 'S' then
* ohm squared use Sheet RHO
ResRHOReadings = iconv( get_property( @window:'.SHEETRHO_READINGS', 'ARRAY' ), 'MD2' )
for i = 1 to 17
TVar = ResRHOReadings<1,i>
if Tvar <> "" then
Tvar = Tvar * 10
ResRHOReadings<1,i> = Tvar
end
next i
end else
ResRHOReadings = iconv( get_property( @window:'.RES_READINGS', 'ARRAY' ), 'MD3' )
end
for i=1 to 17
ThisResRHORead = ResRHOReadings<1,i>
if ThisResRHORead <> "" and ThisResRHORead <> 0 then
Counter += 1
Ans += ThisResRHORead
if ThisResRHORead < LowResRHORead then
LowResRHORead = ThisResRHORead
end
if ThisResRHORead > HighResRHORead then
HighResRHORead = ThisResRHORead
end
end
next i
if Counter then
ResRHOAvg = Ans/Counter
ReturnVar<1,2> = oconv( ResRHOAvg, 'MD3' )
end
RNumDp = Counter
RSumDp = Ans
* thickness stdev
SumDiffSq = 0
Mean = ''
if SumDp and NumDp then
Mean = SumDp/NumDp
end
for i = 1 to 17
ThisThickRead = ThickReadings<1,i>
if ThisThickRead <> "" then
*SumDiffSq += ( ThisThickRead - Mean )**2
SumDiffSq += ( ThisThickRead - Mean ) * ( ThisThickRead - Mean )
end
next i
if SumDiffSq and NumDp then
Ans = sqrt( SumDiffSq/NumDp )
Ans = Ans * 10
ThickStDev = Ans
ReturnVar<1,3> = oconv( Ans, 'MD3' )
end
* resistivity stdev
SumDiffSq = 0
Mean = ''
if RSumDp and RNumDp then
Mean = RSumDp/RNumDp
end
for i = 1 to 17
ThisResRHORead = ResRHOReadings<1,i>
if ThisResRHORead <> "" and ThisResRHORead <> 0 then
*SumDiffSq += ( ThisResRHORead - Mean )**2
SumDiffSq += ( ThisResRHORead - Mean ) * ( ThisResRHORead - Mean )
end
next i
if SumDiffSq and RNumDp then
Ans = sqrt( SumDiffSq/RNumDp )
*Ans = Ans * 10
ResRHOStDev = Ans
ReturnVar<1,4> = oconv( Ans, 'MD3' )
end
* thickness and resistivity minimum and maximum
if HighThickRead <> 0 then
ReturnVar<1,5> = oconv( HighThickRead, 'MD2' )
end else
ReturnVar<1,5> = ''
end
if HighResRHORead <> 0 then
ReturnVar<1,6> = oconv( HighResRHORead, 'MD3' )
end else
ReturnVar<1,6> = ''
end
if LowThickRead = 9999 then
* they did not enter any so blank out cause it was set in code above to 9999
LowThickRead = ''
end
ReturnVar<1,7> = oconv( LowThickRead, 'MD2' )
if LowResRHORead = 99999999999 then
* they did not enter any so blank out cause it was set in code above to 99999999999
LowResRHORead = ''
end
ReturnVar<1,8> = oconv( LowResRHORead, 'MD3' )
* thickness and resistivity uniformity
if HighThickRead and LowThickRead then
ReturnVar<1,9> = oconv(((HighThickRead - LowThickRead)/(HighThickRead + LowThickRead))*10000, 'MD2' )
end
if ( HighResRHORead - LowResRHORead ) and ( HighResRHORead + LowResRHORead ) then
ReturnVar<1,10>= oconv(((HighResRHORead - LowResRHORead)/(HighResRHORead + LowResRHORead))*10000, 'MD2' )
end
return
*==============================================================================================*