File: AA-13-7.html

package info (click to toggle)
ada-reference-manual 20021112web-3
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, lenny, sarge
  • size: 18,652 kB
  • ctags: 8,921
  • sloc: makefile: 52; sh: 20
file content (323 lines) | stat: -rw-r--r-- 25,832 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
    <TITLE>AARM95 - The Package System</TITLE>
    <META NAME="Author" CONTENT="JTC1/SC22/WG9/ARG, by Randall Brukardt, ARG Editor">
    <META NAME="GENERATOR" CONTENT="Arm_Form.Exe, Ada Reference Manual generator">
    <STYLE type="text/css">
    DIV.paranum {position: absolute; font-family: Arial, Helvetica, sans-serif; left: 0.5 em; top: auto}
    TT {font-family: "Courier New", monospace}
    DT {display: compact}
    DIV.Normal {font-family: "Times New Roman", Times, serif; margin-bottom: 0.6em}
    DIV.Wide {font-family: "Times New Roman", Times, serif; margin-top: 0.6em; margin-bottom: 0.6em}
    DIV.Annotations {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-bottom: 0.6em}
    DIV.WideAnnotations {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-top: 0.6em; margin-bottom: 0.6em}
    DIV.Index {font-family: "Times New Roman", Times, serif}
    DIV.SyntaxSummary {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-bottom: 0.4em}
    DIV.Notes {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-bottom: 0.6em}
    DIV.NotesHeader {font-family: "Times New Roman", Times, serif; margin-left: 2.0em}
    DIV.SyntaxIndented {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-bottom: 0.4em}
    DIV.Indented {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-bottom: 0.6em}
    DIV.CodeIndented {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-bottom: 0.6em}
    DIV.SmallIndented {font-family: "Times New Roman", Times, serif; margin-left:  10.0em; margin-bottom: 0.6em}
    DIV.SmallCodeIndented {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-bottom: 0.6em}
    DIV.Examples {font-family: "Courier New", monospace; margin-left: 2.0em; margin-bottom: 0.6em}
    DIV.SmallExamples {font-family: "Courier New", monospace; font-size: 80%; margin-left: 7.5em; margin-bottom: 0.6em}
    DIV.IndentedExamples {font-family: "Courier New", monospace; margin-left: 8.0em; margin-bottom: 0.6em}
    DIV.SmallIndentedExamples {font-family: "Courier New", monospace; font-size: 80%; margin-left:  15.0em; margin-bottom: 0.6em}
    UL.Bulleted {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-right: 2.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.SmallBulleted {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.NestedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.SmallNestedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-right: 8.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.IndentedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-right: 8.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.CodeIndentedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.CodeIndentedNestedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-right: 8.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.SyntaxIndentedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.NotesBulleted {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.NotesNestedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
    DL.Hanging {font-family: "Times New Roman", Times, serif; margin-top: 0em; margin-bottom: 0.6em}
    DD.Hanging {margin-left: 6.0em}
    DL.IndentedHanging {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-top: 0em; margin-bottom: 0.6em}
    DD.IndentedHanging {margin-left: 2.0em}
    DL.HangingInBulleted {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-right: 2.0em; margin-top: 0em; margin-bottom: 0.5em}
    DD.HangingInBulleted {margin-left: 4.0em}
    DL.SmallHanging {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-top: 0em; margin-bottom: 0.6em}
    DD.SmallHanging {margin-left: 7.5em}
    DL.SmallIndentedHanging {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-top: 0em; margin-bottom: 0.6em}
    DD.SmallIndentedHanging {margin-left: 2.0em}
    DL.SmallHangingInBulleted {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
    DD.SmallHangingInBulleted {margin-left: 5.0em}
    DL.Enumerated {font-family: "Times New Roman", Times, serif; margin-right: 0.0em; margin-top: 0em; margin-bottom: 0.5em}
    DD.Enumerated {margin-left: 2.0em}
    DL.SmallEnumerated {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; margin-top: 0em; margin-bottom: 0.5em}
    DD.SmallEnumerated {margin-left: 2.5em}
    DL.NestedEnumerated {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-right: 2.0em; margin-top: 0em; margin-bottom: 0.5em}
    DL.SmallNestedEnumerated {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
    </STYLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFF0" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<P><A HREF="AA-TOC.html">Contents</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-0-29.html">Index</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-13-6.html">Previous</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-13-7-1.html">Next</A></P>
<HR>
<H1> 13.7 The Package System</H1>
<DIV Class="Paranum"><FONT SIZE=-2>1</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;[For each implementation there is a library package
called System which includes the definitions of certain configuration-dependent
characteristics.] </DIV>

<H4 ALIGN=CENTER>Static Semantics</H4>
<DIV Class="Paranum"><FONT SIZE=-2>2</FONT></DIV>
<DIV Class="Normal" Style="margin-bottom: 0.4em">&nbsp;&nbsp;&nbsp;The following language-defined
library package exists: </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>2.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Implementation defined: </B>The
contents of the visible part of package System and its language-defined
children.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>3</FONT></DIV>
<DIV Class="Examples"><TT><A NAME="I4524"></A><A NAME="I4525"></A><BR>
<B>package</B>&nbsp;System&nbsp;<B>is</B><BR>
&nbsp;&nbsp;&nbsp;<B>pragma</B>&nbsp;Preelaborate(System);</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>4</FONT></DIV>
<DIV Class="Examples"><TT>&nbsp;&nbsp;&nbsp;<B>type</B>&nbsp;<A NAME="I4526"></A><A NAME="I4527"></A>Name&nbsp;<B>is</B>&nbsp;<I>implementation-defined-enumeration-type</I>;<BR>
&nbsp;&nbsp;&nbsp;<A NAME="I4528"></A>System_Name&nbsp;:&nbsp;<B>constant</B>&nbsp;Name&nbsp;:=&nbsp;<I>implementation-defined</I>;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>5</FONT></DIV>
<DIV Class="Examples"><TT>&nbsp;&nbsp;&nbsp;--<I>&nbsp;System-Dependent&nbsp;Named&nbsp;Numbers:</I></TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>6</FONT></DIV>
<DIV Class="Examples"><TT>&nbsp;&nbsp;&nbsp;<A NAME="I4529"></A>Min_Int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;<B>constant</B>&nbsp;:=&nbsp;<I>root_integer</I>'First;<BR>
&nbsp;&nbsp;&nbsp;<A NAME="I4530"></A>Max_Int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;<B>constant</B>&nbsp;:=&nbsp;<I>root_integer</I>'Last;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>7</FONT></DIV>
<DIV Class="Examples"><TT>&nbsp;&nbsp;&nbsp;<A NAME="I4531"></A>Max_Binary_Modulus&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;<B>constant</B>&nbsp;:=&nbsp;<I>implementation-defined</I>;<BR>
&nbsp;&nbsp;&nbsp;<A NAME="I4532"></A>Max_Nonbinary_Modulus&nbsp;:&nbsp;<B>constant</B>&nbsp;:=&nbsp;<I>implementation-defined</I>;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>8</FONT></DIV>
<DIV Class="Examples"><TT>&nbsp;&nbsp;&nbsp;<A NAME="I4533"></A>Max_Base_Digits&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;<B>constant</B>&nbsp;:=&nbsp;<I>root_real</I>'Digits;<BR>
&nbsp;&nbsp;&nbsp;<A NAME="I4534"></A>Max_Digits&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;<B>constant</B>&nbsp;:=&nbsp;<I>implementation-defined</I>;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>9</FONT></DIV>
<DIV Class="Examples"><TT>&nbsp;&nbsp;&nbsp;<A NAME="I4535"></A>Max_Mantissa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;<B>constant</B>&nbsp;:=&nbsp;<I>implementation-defined</I>;<BR>
&nbsp;&nbsp;&nbsp;<A NAME="I4536"></A>Fine_Delta&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;<B>constant</B>&nbsp;:=&nbsp;<I>implementation-defined</I>;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>10</FONT></DIV>
<DIV Class="Examples"><TT>&nbsp;&nbsp;&nbsp;<A NAME="I4537"></A>Tick&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;<B>constant</B>&nbsp;:=&nbsp;<I>implementation-defined</I>;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>11</FONT></DIV>
<DIV Class="Examples"><TT>&nbsp;&nbsp;&nbsp;--<I>&nbsp;Storage-related&nbsp;Declarations:</I></TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>12</FONT></DIV>
<DIV Class="Examples"><TT>&nbsp;&nbsp;&nbsp;<B>type</B>&nbsp;<A NAME="I4538"></A><A NAME="I4539"></A>Address&nbsp;<B>is</B>&nbsp;<I>implementation-defined</I>;<BR>
&nbsp;&nbsp;&nbsp;<A NAME="I4540"></A>Null_Address&nbsp;:&nbsp;<B>constant</B>&nbsp;Address;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>13</FONT></DIV>
<DIV Class="Examples"><TT>&nbsp;&nbsp;&nbsp;<A NAME="I4541"></A>Storage_Unit&nbsp;:&nbsp;<B>constant</B>&nbsp;:=&nbsp;<I>implementation-defined</I>;<BR>
&nbsp;&nbsp;&nbsp;<A NAME="I4542"></A>Word_Size&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;<B>constant</B>&nbsp;:=&nbsp;<I>implementation-defined</I>&nbsp;*&nbsp;Storage_Unit;<BR>
&nbsp;&nbsp;&nbsp;<A NAME="I4543"></A>Memory_Size&nbsp;&nbsp;:&nbsp;<B>constant</B>&nbsp;:=&nbsp;<I>implementation-defined</I>;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>14</FONT></DIV>
<DIV Class="Examples"><TT>&nbsp;&nbsp;&nbsp;--<I>&nbsp;<A NAME="I4544"></A>Address&nbsp;Comparison:</I><BR>
&nbsp;&nbsp;&nbsp;<B>function</B>&nbsp;&quot;&lt;&quot;&nbsp;(Left,&nbsp;Right&nbsp;:&nbsp;Address)&nbsp;<B>return</B>&nbsp;Boolean;<BR>
&nbsp;&nbsp;&nbsp;<B>function</B>&nbsp;&quot;&lt;=&quot;(Left,&nbsp;Right&nbsp;:&nbsp;Address)&nbsp;<B>return</B>&nbsp;Boolean;<BR>
&nbsp;&nbsp;&nbsp;<B>function</B>&nbsp;&quot;&gt;&quot;&nbsp;(Left,&nbsp;Right&nbsp;:&nbsp;Address)&nbsp;<B>return</B>&nbsp;Boolean;<BR>
&nbsp;&nbsp;&nbsp;<B>function</B>&nbsp;&quot;&gt;=&quot;(Left,&nbsp;Right&nbsp;:&nbsp;Address)&nbsp;<B>return</B>&nbsp;Boolean;<BR>
&nbsp;&nbsp;&nbsp;<B>function</B>&nbsp;&quot;=&quot;&nbsp;(Left,&nbsp;Right&nbsp;:&nbsp;Address)&nbsp;<B>return</B>&nbsp;Boolean;<BR>
--&nbsp;<B>function</B>&nbsp;&quot;/=&quot;&nbsp;(Left,&nbsp;Right&nbsp;:&nbsp;Address)&nbsp;<B>return</B>&nbsp;Boolean;<BR>
&nbsp;&nbsp;&nbsp;--<I>&nbsp;&quot;/=&quot;&nbsp;is&nbsp;implicitly&nbsp;defined</I><BR>
&nbsp;&nbsp;&nbsp;<B>pragma</B>&nbsp;Convention(Intrinsic,&nbsp;&quot;&lt;&quot;);<BR>
&nbsp;&nbsp;&nbsp;...&nbsp;--<I>&nbsp;and&nbsp;so&nbsp;on&nbsp;for&nbsp;all&nbsp;language-defined&nbsp;subprograms&nbsp;in&nbsp;this&nbsp;package</I></TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>15</FONT></DIV>
<DIV Class="Examples"><TT>&nbsp;&nbsp;&nbsp;--<I>&nbsp;Other&nbsp;System-Dependent&nbsp;Declarations:</I><BR>
&nbsp;&nbsp;&nbsp;<B>type</B>&nbsp;<A NAME="I4545"></A><A NAME="I4546"></A>Bit_Order&nbsp;<B>is</B>&nbsp;(High_Order_First,&nbsp;Low_Order_First);<BR>
&nbsp;&nbsp;&nbsp;<A NAME="I4547"></A>Default_Bit_Order&nbsp;:&nbsp;<B>constant</B>&nbsp;Bit_Order;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16</FONT></DIV>
<DIV Class="Examples"><TT>&nbsp;&nbsp;&nbsp;--<I>&nbsp;Priority-related&nbsp;declarations&nbsp;(see&nbsp;<A HREF="AA-D-1.html">D.1</A>):</I><BR>
&nbsp;&nbsp;&nbsp;<B>subtype</B>&nbsp;<A NAME="I4548"></A>Any_Priority&nbsp;<B>is</B>&nbsp;Integer&nbsp;<B>range</B>&nbsp;<I>implementation-defined</I>;<BR>
&nbsp;&nbsp;&nbsp;<B>subtype</B>&nbsp;<A NAME="I4549"></A>Priority&nbsp;<B>is</B>&nbsp;Any_Priority&nbsp;<B>range</B>&nbsp;Any_Priority'First&nbsp;..<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>implementation-defined</I>;<BR>
&nbsp;&nbsp;&nbsp;<B>subtype</B>&nbsp;<A NAME="I4550"></A>Interrupt_Priority&nbsp;<B>is</B>&nbsp;Any_Priority&nbsp;<B>range</B>&nbsp;Priority'Last+1&nbsp;..<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Any_Priority'Last;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>17</FONT></DIV>
<DIV Class="Examples"><TT>&nbsp;&nbsp;&nbsp;<A NAME="I4551"></A>Default_Priority&nbsp;:&nbsp;<B>constant</B>&nbsp;Priority&nbsp;:=<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Priority'First&nbsp;+&nbsp;Priority'Last)/2;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>18</FONT></DIV>
<DIV Class="Examples"><TT><B>private</B><BR>
&nbsp;&nbsp;&nbsp;...&nbsp;--&nbsp;<I>not&nbsp;specified&nbsp;by&nbsp;the&nbsp;language</I><BR>
<B>end</B>&nbsp;System;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>19</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;Name is an enumeration subtype. Values of type
Name are the names of alternative machine configurations handled by the
implementation. System_Name represents the current machine configuration.</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>20</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;The named numbers Fine_Delta and Tick are of
the type <I>universal_real</I>; the others are of the type <I>universal_integer</I>.</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>21</FONT></DIV>
<DIV Class="Normal" Style="margin-bottom: 0.4em">&nbsp;&nbsp;&nbsp;&nbsp;The meanings of
the named numbers are: </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>22</FONT></DIV>
<DL Class="Hanging"><DT>&nbsp;&nbsp;&nbsp;&nbsp;[ Min_Int <DD Class="Hanging">
The smallest (most negative) value allowed for the expressions of a <FONT FACE="Arial, Helvetica">signed_integer_type_definition</FONT>.</DL>
<DIV Class="Paranum"><FONT SIZE=-2>23</FONT></DIV>
<DL Class="Hanging"><DT>&nbsp;&nbsp;&nbsp;&nbsp;Max_Int <DD Class="Hanging">
The largest (most positive) value allowed for the expressions of a <FONT FACE="Arial, Helvetica">signed_integer_type_definition</FONT>.</DL>
<DIV Class="Paranum"><FONT SIZE=-2>24</FONT></DIV>
<DL Class="Hanging"><DT>&nbsp;&nbsp;&nbsp;&nbsp;Max_Binary_Modulus <DD Class="Hanging">
A power of two such that it, and all lesser positive powers of two, are
allowed as the modulus of a <FONT FACE="Arial, Helvetica">modular_type_definition</FONT>.</DL>
<DIV Class="Paranum"><FONT SIZE=-2>25</FONT></DIV>
<DL Class="Hanging"><DT>&nbsp;&nbsp;&nbsp;&nbsp;Max_Nonbinary_Modulus <DD Class="Hanging">
A value such that it, and all lesser positive integers, are allowed as
the modulus of a <FONT FACE="Arial, Helvetica">modular_type_definition</FONT>.
</DL>
<DIV Class="Paranum"><FONT SIZE=-2>25.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Ramification: </B>There is
no requirement that Max_Nonbinary_Modulus be less than or equal to Max_Binary_Modulus,
although that's what makes most sense. On a typical 32-bit machine, for
example, Max_Binary_Modulus will be 2**32 and Max_Nonbinary_Modulus will
be 2**31, because supporting nonbinary moduli in above 2**31 causes implementation
difficulties. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>26</FONT></DIV>
<DL Class="Hanging"><DT>&nbsp;&nbsp;&nbsp;&nbsp;Max_Base_Digits <DD Class="Hanging">
The largest value allowed for the requested decimal precision in a <FONT FACE="Arial, Helvetica">floating_point_definition</FONT>.</DL>
<DIV Class="Paranum"><FONT SIZE=-2>27</FONT></DIV>
<DL Class="Hanging"><DT>&nbsp;&nbsp;&nbsp;&nbsp;Max_Digits <DD Class="Hanging">
The largest value allowed for the requested decimal precision in a <FONT FACE="Arial, Helvetica">floating_point_definition</FONT>
that has no <FONT FACE="Arial, Helvetica">real_range_specification</FONT>.
Max_Digits is less than or equal to Max_Base_Digits.</DL>
<DIV Class="Paranum"><FONT SIZE=-2>28</FONT></DIV>
<DL Class="Hanging"><DT>&nbsp;&nbsp;&nbsp;&nbsp;Max_Mantissa <DD Class="Hanging">
The largest possible number of binary digits in the mantissa of machine
numbers of a user-defined ordinary fixed point type. (The mantissa is
defined in <A HREF="AA-G.html">Annex G</A>.)</DL>
<DIV Class="Paranum"><FONT SIZE=-2>29</FONT></DIV>
<DL Class="Hanging"><DT>&nbsp;&nbsp;&nbsp;&nbsp;Fine_Delta <DD Class="Hanging">
The smallest delta allowed in an <FONT FACE="Arial, Helvetica">ordinary_fixed_point_definition</FONT>
that has the <FONT FACE="Arial, Helvetica">real_range_specification</FONT>
<B>range</B> -1.0 .. 1.0. ]</DL>
<DIV Class="Paranum"><FONT SIZE=-2>30</FONT></DIV>
<DL Class="Hanging"><DT>&nbsp;&nbsp;&nbsp;&nbsp;Tick <DD Class="Hanging">
A period in seconds approximating the real time interval during which
the value of Calendar.Clock remains constant. </DL>
<DIV Class="Paranum"><FONT SIZE=-2>30.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Ramification: </B>There is
no required relationship between System.Tick and Duration'Small, other
than the one described here.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>30.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The inaccuracy of the <FONT FACE="Arial, Helvetica">delay_statement</FONT>
has no relation to Tick. In particular, it is possible that the clock
used for the <FONT FACE="Arial, Helvetica">delay_statement</FONT> is
less accurate than Calendar.Clock.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>30.c</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>We considered making Tick a run-time-determined
quantity, to allow for easier configurability. However, this would not
be upward compatible, and the desired configurability can be achieved
using functionality defined in <A HREF="AA-D.html">Annex D</A>, ``<A HREF="AA-D.html">Real-Time
Systems</A>''. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>31</FONT></DIV>
<DL Class="Hanging"><DT>&nbsp;&nbsp;&nbsp;&nbsp;Storage_Unit <DD Class="Hanging">
The number of bits per storage element.</DL>
<DIV Class="Paranum"><FONT SIZE=-2>32</FONT></DIV>
<DL Class="Hanging"><DT>&nbsp;&nbsp;&nbsp;&nbsp;Word_Size <DD Class="Hanging">
The number of bits per word.</DL>
<DIV Class="Paranum"><FONT SIZE=-2>33</FONT></DIV>
<DL Class="Hanging"><DT>&nbsp;&nbsp;&nbsp;&nbsp;Memory_Size <DD Class="Hanging">
An implementation-defined value [that is intended to reflect the memory
size of the configuration in storage elements.] </DL>
<DIV Class="Paranum"><FONT SIZE=-2>33.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Discussion: </B>It is unspecified
whether this refers to the size of the address space, the amount of physical
memory on the machine, or perhaps some other interpretation of ``memory
size.'' In any case, the value has to be given by a static expression,
even though the amount of memory on many modern machines is a dynamic
quantity in several ways. Thus, Memory_Size is not very useful. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>34</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;Address is of a definite, nonlimited type. Address
represents machine addresses capable of addressing individual storage
elements. Null_Address is an address that is distinct from the address
of any object or program unit. <A NAME="I4552"></A></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>34.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Ramification: </B>The implementation
has to ensure that there is at least one address that nothing will be
allocated to; Null_Address will be one such address. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>34.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Ramification: </B>Address is
the type of the result of the attribute Address. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>34.c</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Reason: </B>Address is required
to be nonlimited and definite because it is important to be able to assign
addresses, and to declare uninitialized address variables. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>35</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;See <A HREF="AA-13-5-3.html">13.5.3</A> for an
explanation of Bit_Order and Default_Bit_Order. </DIV>

<H4 ALIGN=CENTER>Implementation Permissions</H4>
<DIV Class="Paranum"><FONT SIZE=-2>36</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;An implementation may add additional implementation-defined
declarations to package System and its children. [However, it is usually
better for the implementation to provide additional functionality via
implementation-defined children of System.] Package System may be declared
pure. </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>36.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Ramification: </B>The declarations
in package System and its children can be implicit. For example, since
Address is not limited, the predefined &quot;=&quot; and &quot;/=&quot;
operations are probably sufficient. However, the implementation is not
<I>required</I> to use the predefined &quot;=&quot;. </FONT></DIV>

<H4 ALIGN=CENTER>Implementation Advice</H4>
<DIV Class="Paranum"><FONT SIZE=-2>37</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;Address should be <S>of </S>a private type. </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>37.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Reason: </B>This promotes uniformity
by avoiding having implementation-defined predefined operations for the
type. We don't require it, because implementations may want to stick
with what they have. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>37.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Implementation Note: </B>It
is not necessary for Address to be able to point at individual bits within
a storage element. Nor is it necessary for it to be able to point at
machine registers. It is intended as a memory address that matches the
hardware's notion of an address.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>37.c</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The representation of the <B>null</B>
value of a general access type should be the same as that of Null_Address;
instantiations of Unchecked_Conversion should work accordingly. If the
implementation supports interfaces to other languages, the representation
of the <B>null</B> value of a general access type should be the same
as in those other languages, if appropriate.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>37.d</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>Note that the children of the
Interfaces package will generally provide foreign-language-specific null
values where appropriate. See UI-0065 regarding Null_Address. </FONT></DIV>
<DIV Class="NotesHeader"><FONT SIZE=-1>NOTES</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>38</FONT></DIV>
<DIV Class="Notes"><FONT SIZE=-1>14&nbsp;&nbsp;There are also some language-defined
child packages of System defined elsewhere. </FONT></DIV>

<H4 ALIGN=CENTER>Extensions to Ada 83</H4>
<DIV Class="Paranum"><FONT SIZE=-2>38.a.1/1</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><U><A NAME="I4553"></A>The declarations
Max_Binary_Modulus, Max_Nonbinary_Modulus, Max_Base_Digits, Null_Address,
Word_Size, Bit_Order, Default_Bit_Order, Any_Priority, Interrupt_Priority,
and Default_Priority are added to System in Ada 95. The presence of ordering
operators for type Address is also guaranteed (the existence of these
depends on the definition of Address in an Ada 83 implementation). We
do not list these as incompatibilities, as the contents of System can
vary between implementations anyway; thus a program that depends on the
contents of System (by using <TT><B>use</B> System;</TT> for example)
is already at risk of being incompatible when moved between Ada implementations.
</U></FONT></DIV>

<H4 ALIGN=CENTER>Wording Changes from Ada 83</H4>
<DIV Class="Paranum"><FONT SIZE=-2>38.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>Much of the content of System
is standardized, to provide more uniformity across implementations. Implementations
can still add their own declarations to System, but are encouraged to
do so via children of System.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>38.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>Some of the named numbers are
defined more explicitly in terms of the standard numeric types.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>38.c</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The pragmas System_Name, Storage_Unit,
and Memory_Size are no longer defined by the language. However, the corresponding
declarations in package System still exist. Existing implementations
may continue to support the three pragmas as implementation-defined pragmas,
if they so desire.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>38.d</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>Priority semantics, including
subtype Priority, have been moved to the Real Time Annex. </FONT></DIV>

<HR>
<P><A HREF="AA-TOC.html">Contents</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-0-29.html">Index</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-13-6.html">Previous</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-13-7-1.html">Next</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-TTL.html">Legal</A></P>
</BODY>
</HTML>