thanks Michael, hadn't thought of that. learning.
code below, amended to handle simple fractions (e.g. '11/16') without
whole number segment:
IF vdim_input CONTAINS '.' THEN
SET VAR vdim_input DOUBLE
SET VAR vdim_output = .vdim_Input
ELSE
IF (TRIM(vdim_input)) NOT CONTAINS '-' AND +
(TRIM(vdim_input)) NOT CONTAINS ' ' THEN
SET VAR vdim_output = +
(FLOAT((NINT(SSUBCD(.vdim_input,1,'/')))/ +
(NINT(SSUBCD(.vdim_input,2,'/')))))
ELSE
IF (TRIM(vdim_input)) CONTAINS ' ' THEN
SET VAR vdim_delimiter = ' '
ELSE
SET VAR vdim_delimiter = '-'
ENDIF
SET VAR vdim_seg_wholeNum = +
(FLOAT(NINT(SSUBCD(.vdim_input,1,.vdim_delimiter))))
SET VAR vdim_seg_fraction = +
(SSUBCD(.vdim_input,2,.vdim_delimiter))
SET VAR vdim_seg_decimals = +
(FLOAT((NINT(SSUBCD(.vdim_seg_fraction,1,'/')))/ +
(NINT(SSUBCD(.vdim_seg_fraction,2,'/')))))
SET VAR vdim_output = +
(.vdim_seg_wholeNum + .vdim_seg_Decimals)
ENDIF
ENDIF
Best to all, Bruce
Bruce A. Chitiea
SafeSectors, Inc.
-----------------------------------
112 Harvard Ave #272
Claremont CA 91711-4716
-----------------------------------
[email protected]
-----------------------------------
+011 (909) 238-9012 c
+011 (909) 912-8678 f
------ Original Message ------
From: "[email protected]" <[email protected]>
To: "RBASE-L" <[email protected]>
Sent: 12/19/2020 5:04:18 AM
Subject: [RBASE-L] - Re: Code Share: Convert TEXT Numeric Input to
DOUBLE Numeric Output
Stored Procedure or as an Internal Command used with a Run Select would
make it global.
On Friday, December 18, 2020 at 8:09:08 PM UTC-5 rbytes wrote:
All:
Love the seminar idea. Short of that, code sharing might be a step up.
So, my humble offering, FWIW:
Shop environment
Many hands hitting same terminal
Excellent production skills
Highly variable math skills.
Dimensions arrive in a variety of formats.
So, make input easy for all. Type exactly what you see.
Best viewed in Courier New font:
Dimensional inputs entered as TEXT within a single VARIABLE EDIT
control:
decimal : 18.6875
fraction: 18-11/16
fraction: 18 11/16
DOUBLE output produced for all inputs: 18.6875
--file: snip_accept_decimal_or_text_number.rmd
--rbse: rbmetal
--auth: bachitiea
--crea: 2020-12-17
CLS
CLEAR VAR v%
--initialize variables ------------------
SET VAR vdim_input TEXT = NULL
SET VAR vdim_input_keep TEXT = NULL
SET VAR vdim_seg_wholeNum DOUBLE = NULL
SET VAR vdim_delimiter TEXT = NULL
SET VAR vdim_seg_fraction TEXT = NULL
SET VAR vdim_seg_decimals DOUBLE = NULL
SET VAR vdim_output DOUBLE = NULL
--test values ---------------------------
SET VAR vdim_input = 18.6875
--SET VAR vdim_input = '18-11/16'
--SET VAR vdim_input = '18 11/16'
SET VAR vdim_input_keep = .vdim_input
--convert -------------------------------
IF vdim_input CONTAINS '.' THEN
SET VAR vdim_input DOUBLE
SET VAR vdim_output = .vdim_Input
ELSE
IF (TRIM(vdim_input)) CONTAINS ' ' THEN
SET VAR vdim_delimiter = ' '
ELSE
SET VAR vdim_delimiter = '-'
ENDIF
SET VAR vdim_seg_wholeNum = +
(FLOAT(NINT(SSUBCD(.vdim_input,1,.vdim_delimiter))))
SET VAR vdim_seg_fraction = +
(SSUBCD(.vdim_input,2,.vdim_delimiter))
SET VAR vdim_seg_decimals = +
(FLOAT((NINT(SSUBCD(.vdim_seg_fraction,1,'/')))/ +
(NINT(SSUBCD(.vdim_seg_fraction,2,'/')))))
SET VAR vdim_output = +
(.vdim_seg_wholeNum + .vdim_seg_Decimals)
ENDIF
--test output ---------------------------
CLS
WRITE 'kept input (txt) : ',.vdim_input_keep
WRITE 'seg:wholeNum : ',.vdim_seg_wholeNum
WRITE 'dim delimiter : ',.vdim_delimiter
WRITE 'seg:fraction : ',.vdim_seg_fraction
WRITE 'seg:decimals : ',.vdim_seg_decimals
WRITE 'dim output (dec) : ',.vdim_output
RETURN
Granted, there are a few exception handling niceties to add, and this
could be "generified" to run as a Custom Form Action serving all such
controls on a form. But it's Friday night.
Best, Bruce
Bruce A. Chitiea
SafeSectors, Inc.
-----------------------------------
112 Harvard Ave #272
Claremont CA 91711-4716
-----------------------------------
[email protected]
-----------------------------------
+011 (909) 238-9012 <tel:(909)%20238-9012> c
+011 (909) 912-8678 <tel:(909)%20912-8678> f
--
For group guidelines, visit
http://www.rbase.com/support/usersgroup_guidelines.php
---
You received this message because you are subscribed to the Google
Groups "RBASE-L" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/rbase-l/ce43c43e-34ee-4655-adf6-c169c18e6e72n%40googlegroups.com
<https://groups.google.com/d/msgid/rbase-l/ce43c43e-34ee-4655-adf6-c169c18e6e72n%40googlegroups.com?utm_medium=email&utm_source=footer>.
--
For group guidelines, visit
http://www.rbase.com/support/usersgroup_guidelines.php
---
You received this message because you are subscribed to the Google Groups "RBASE-L" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/rbase-l/embc9aefdc-dc39-414d-8b42-1f3ae79fc6cd%40pathfinder.