The processor architecture only comes in to play with values that
referred to as "numbers used directly by Rexx".  This is generally the
internal digits setting used internally by bifs/methods, and for
things like "do nnnn" loops.  These are the places where a Rexx number
need to be converted into native values.  This is distinct from the
current numeric digits setting, which is what governs Rexx arithmetic.

So, for the last 30 years, both of these values have always been "9",
so everything remained in sync.  You could still set numeric digits
higher for calculations, but if you tried to use "1000000000" for a
substr position (for example), you would get an error for an "invalid
whole number", since the substr() bif uses numeric digits 9
internally.  All calculations that would evaluate as a whole number
under the  default digits setting would also produce good values for
the bifs, and non-whole number results would generally be rejected.
The internal digits setting is unaffected by changes in NUMERIC
DIGITS.  It always operates with the internal digits setting.

In the current 4.0 codebase, when compiled for 64-bit, the internal
digits setting is 18, which allows you to manipulate values larger
than 9999999999.  The default digits setting is also the same, which
means the symmetry from the 32-bit implementation is maintained.  The
danger with decoulping these occurs when a bif such as pos() returns a
value that would not be considered a whole number under the current
digits setting (which btw, is a situation you can encounter if you are
running at a setting smaller than 9).  If you use that value to
perform a calculation, you're likely to lose digits off the end,
creating a result with a high "astonishment factor".

Anyway, the numeric NATIVE/INTERNAL or whatever spelling ends up
getting applied to the option would say you explicitly want the
default digits to match the internal.  Specifying a value higher than
that would be no different than setting the value higher than the
internal version is in a 32-bit system.

Rick


On Thu, Feb 26, 2009 at 4:50 PM, Sahananda (Jon) Wolfers
<sahana...@windhorse.biz> wrote:
> Looking at David's example makes me think that it is important to get this
> right before releasing 4.0.0 & thus worth a bit of a delay.
>
> I like Ricks idea of an ::option directive - the default being the current
> setting, with NATIVE being as many as you can squeeze out of the
> architecture at run time.
>
> What would happen if you specified more Digits on the ::option directive
> than the processor architecture allowed for?
>
> thanks,
>
> Jon
>
>
>
> 2009/2/26 Moritz Hoffmann <antig...@gmail.com>
>>
>> Rick McGuire schrieb:
>>
>> > One approach would be to add an ::options directive that allows a
>> > package to set how the default should be handled for code within a
>> > package file.  You could chose it directly, or have an option that
>> > says essentially "use native".  Given something like this, I'm less
>> > opposed to pinning the default at the lower value.  This would also
>> > fix an issue that a lot of people complain about, that it's necessary
>> > to up numeric digits for every method of a class, sort of killing two
>> > birds with one stone.  An equivalent keyword for NUMERIC digits would
>> > probably be nice too.
>>
>>
>> I like this option, it is similar to Java's strictfp keyword, which
>> overcomes similar issues we're struggling with here. Generally, I prefer
>> to avoid breaking existing programs, but in the case of enhanced numeric
>> digits I don't see too many scenarios where it cause problems. I hit the
>> border of nine digits seldomly, and if it was hit, strange things
>> happened, like a number not getting incremented when adding 1 or so.
>> Such problems could be avoided (or say - delayed) when increasing the
>> default numeric digits to 18.
>>
>> Maybe we should have a discussion what pieces of code could break
>> because of the changed settings, and what will work now out of the box
>> due to longer numbers.
>>
>> Moritz
>>
>>
>> PS: Sorry for my low activity - but my life leaves hardly any time for
>> ooRexx at the moment. Hope this will change again at some time!
>>
>>
>> ------------------------------------------------------------------------------
>> Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco,
>> CA
>> -OSBC tackles the biggest issue in open source: Open Sourcing the
>> Enterprise
>> -Strategies to boost innovation and cut costs with open source
>> participation
>> -Receive a $600 discount off the registration fee with the source code:
>> SFAD
>> http://p.sf.net/sfu/XcvMzF8H
>> _______________________________________________
>> Oorexx-devel mailing list
>> Oorexx-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>
>
> ------------------------------------------------------------------------------
> Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
> -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
> -Strategies to boost innovation and cut costs with open source participation
> -Receive a $600 discount off the registration fee with the source code: SFAD
> http://p.sf.net/sfu/XcvMzF8H
> _______________________________________________
> Oorexx-devel mailing list
> Oorexx-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>
>

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to