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 c
+011 (909) 912-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/emec7edf54-93b6-427b-a9da-e1d871aef302%40pathfinder.

Reply via email to