Actually Buddy's way WILL do everything you want.
just add CTXT because even if it is already textual, it won't matter and
If the number is greater than zero, it has a decimal.
SET VAR vText TEXT = '3.14159'
SET VAR vrestxt = NULL
SET VAR vloc INTEGER = NULL
SET VAR vloc = (SLOC((CTXT(.vText)), '.'))
SET VAR vrestxt = ('decimal is at pos' & (CTXT(.vloc)))
PAUSE 2 USING .vrestxt
RETURN
--And if it is a number already it will test the same:
set var vNum Numeric (10,5) = 3.14159
SET VAR vrestxt = NULL
SET VAR vloc INTEGER = NULL
SET VAR vloc = (SLOC((CTXT(.vText)), '.'))
SET VAR vrestxt = ('decimal is at pos' & (CTXT(.vloc)))
PAUSE 2 USING .vrestxt
RETURN
On Tuesday, March 17, 2020 at 11:22:55 AM UTC-4, Karen Tellef wrote:
>
> Jim: That's a nice combination of my and Doug's code! There's two
> things that I use the MOD function for. One is for this, to see if there's
> decimals.
>
> The other time I use it is during declare cursors when I want to show a
> Pause of the process including information but don't want to show the pause
> for every row or use the Meter function. If I want to display a pause
> every 20 records, I would do this:
>
>
> SELECT COUNT(DISTINCT wk_wip) INTO vTotCount FROM tmpJobs
>
> -- within the cursor:
> SET VAR vLoop = (.vLoop + 1)
> SET VAR vMod = (MOD(.vLoop,20))
> IF vLoop = 1 OR vMod = 0 THEN
> SET VAR vText = ('Calculating mid 50%:' & CTXT(.vLoop) & 'of' & CTXT(.
> vTotCount))
> PAUSE 4 USING .vText
> ENDIF
>
>
> Karen
>
>
>
>
> -----Original Message-----
> From: Jim Belisle <[email protected] <javascript:>>
> To: [email protected] <javascript:> <[email protected]
> <javascript:>>
> Sent: Tue, Mar 17, 2020 10:07 am
> Subject: RE: [RBASE-L] - capture just the decimal
>
> Thanks for the guidance. I believe this will work. I tested it using a
> variety of numbers and came up with the information I need.
> This cares for whole numbers, numbers greater than one with a decimal and
> those with just a decimal. That is exactly what I needed.
> I knew it was something that needed a combination of functions.
>
> NOTE: The vtcpc is the text number received from a DIALOG
>
> SET VAR vcpc NUMERIC(9,2) = .vtcpc
> IF vcpc > 1 THEN
> SET VAR vmcpc DOUBLE = (MOD(.vcpc,1))
> IF vmcpc = 0 THEN
> SET VAR vrcpc REAL = .vcpc
> ELSE
> SET VAR vrcpc REAL = (.vcpc - (AINT(.vcpc)))
> ENDIF
> ELSE
> SET VAR vrcpc REAL = .vcpc
> ENDIF
> RETURN
>
> Karen. I had never seen the MOD function. Thanks.
>
> James Belisle
>
> *Making Information Systems People Friendly Since 1990*
> [image: cid:[email protected]]
>
> *From:* [email protected] <javascript:> [mailto:
> [email protected] <javascript:>] *On Behalf Of *Doug Hamilton
> *Sent:* Tuesday, March 17, 2020 9:41 AM
> *To:* R:Base List
> *Subject:* Re: [RBASE-L] - capture just the decimal
>
> SET VAR vNumReal REAL = 3.14159
>
> SET VAR vNumDecimal REAL = (.vNumReal - (AINT(.vNumReal)))
>
> SHOW VAR vNum%
>
> RETURN
>
> Doug
> On 3/17/2020 9:03 AM, Jim Belisle wrote:
>
> What is the function or combination of functions that will give me just to
> decimal portion of a numeric number?
> I want to use the decimal portion to determine my next action.
>
> James Belisle
>
> *Making Information Systems People Friendly Since 1990*
> [image: cid:[email protected]]
>
> --
> 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] <javascript:>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rbase-l/CH2PR02MB7047ED5091A4C04CE8BE2AF4A0F60%40CH2PR02MB7047.namprd02.prod.outlook.com
>
> <https://groups.google.com/d/msgid/rbase-l/CH2PR02MB7047ED5091A4C04CE8BE2AF4A0F60%40CH2PR02MB7047.namprd02.prod.outlook.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] <javascript:>.
> To view this discussion on the web visit
>
> https://groups.google.com/d/msgid/rbase-l/CH2PR02MB70472D1CA4EBF3FC05684EC3A0F60%40CH2PR02MB7047.namprd02.prod.outlook.com
>
> <https://groups.google.com/d/msgid/rbase-l/CH2PR02MB70472D1CA4EBF3FC05684EC3A0F60%40CH2PR02MB7047.namprd02.prod.outlook.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/882bb0f2-895d-4716-be80-c227e434eb05%40googlegroups.com.