F.1 Machine_Radix Attribute Definition Clause
may be specified for a decimal first subtype (see 3.5.9
via an attribute_definition_clause
the expression of such a clause shall be static, and its value shall
be 2 or 10. A value of 2 implies a binary base range; a value of 10 implies
a decimal base range.
Ramification: In the absence of a Machine_Radix
clause, the choice of 2 versus 10 for S'Machine_Radix is not specified.
for Machine_Radix: Radix
(2 or 10) that is used to represent a decimal fixed point type.
Packed decimal should be used as the internal representation
for objects of subtype S when S'Machine_Radix = 10.
Packed decimal should be used as the
internal representation for objects of subtype S when S'Machine_Radix
The intent of a decimal Machine_Radix attribute definition clause is
to allow the programmer to declare an Ada decimal data object whose representation
matches a particular COBOL implementation's representation of packed
decimal items. The Ada object may then be passed to an interfaced COBOL
program that takes a packed decimal data item as a parameter, assuming
that convention COBOL has been specified for the Ada object's type with
an aspect in a pragma
Additionally, the Ada compiler may choose to
generate arithmetic instructions that exploit the packed decimal representation.
Example of Machine_Radix
attribute definition clause:
type Money is delta 0.01 digits 15;
for Money'Machine_Radix use 10;
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe