OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [ada/] [i-cobol.ads] - Blame information for rev 756

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 706 jeremybenn
------------------------------------------------------------------------------
2
--                                                                          --
3
--                         GNAT COMPILER COMPONENTS                         --
4
--                                                                          --
5
--                      I N T E R F A C E S . C O B O L                     --
6
--                                                                          --
7
--                                 S p e c                                  --
8
--                             (ASCII Version)                              --
9
--                                                                          --
10
--          Copyright (C) 1993-2009, Free Software Foundation, Inc.         --
11
--                                                                          --
12
-- This specification is derived from the Ada Reference Manual for use with --
13
-- GNAT. The copyright notice above, and the license provisions that follow --
14
-- apply solely to the  contents of the part following the private keyword. --
15
--                                                                          --
16
-- GNAT is free software;  you can  redistribute it  and/or modify it under --
17
-- terms of the  GNU General Public License as published  by the Free Soft- --
18
-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
19
-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
20
-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
21
-- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
22
--                                                                          --
23
-- As a special exception under Section 7 of GPL version 3, you are granted --
24
-- additional permissions described in the GCC Runtime Library Exception,   --
25
-- version 3.1, as published by the Free Software Foundation.               --
26
--                                                                          --
27
-- You should have received a copy of the GNU General Public License and    --
28
-- a copy of the GCC Runtime Library Exception along with this program;     --
29
-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
30
-- <http://www.gnu.org/licenses/>.                                          --
31
--                                                                          --
32
-- GNAT was originally developed  by the GNAT team at  New York University. --
33
-- Extensive contributions were provided by Ada Core Technologies Inc.      --
34
--                                                                          --
35
------------------------------------------------------------------------------
36
 
37
--  This version of the COBOL interfaces package assumes that the COBOL
38
--  compiler uses ASCII as its internal representation of characters, i.e.
39
--  that the type COBOL_Character has the same representation as the Ada
40
--  type Standard.Character.
41
 
42
package Interfaces.COBOL is
43
   pragma Preelaborate (COBOL);
44
 
45
   ------------------------------------------------------------
46
   -- Types And Operations For Internal Data Representations --
47
   ------------------------------------------------------------
48
 
49
   type Floating      is new Float;
50
   type Long_Floating is new Long_Float;
51
 
52
   type Binary        is new Integer;
53
   type Long_Binary   is new Long_Long_Integer;
54
 
55
   Max_Digits_Binary      : constant := 9;
56
   Max_Digits_Long_Binary : constant := 18;
57
 
58
   type Decimal_Element is mod 2**4;
59
   type Packed_Decimal is array (Positive range <>) of Decimal_Element;
60
   pragma Pack (Packed_Decimal);
61
 
62
   type COBOL_Character is new Character;
63
 
64
   Ada_To_COBOL : array (Standard.Character) of COBOL_Character := (
65
     COBOL_Character'Val (000), COBOL_Character'Val (001),
66
     COBOL_Character'Val (002), COBOL_Character'Val (003),
67
     COBOL_Character'Val (004), COBOL_Character'Val (005),
68
     COBOL_Character'Val (006), COBOL_Character'Val (007),
69
     COBOL_Character'Val (008), COBOL_Character'Val (009),
70
     COBOL_Character'Val (010), COBOL_Character'Val (011),
71
     COBOL_Character'Val (012), COBOL_Character'Val (013),
72
     COBOL_Character'Val (014), COBOL_Character'Val (015),
73
     COBOL_Character'Val (016), COBOL_Character'Val (017),
74
     COBOL_Character'Val (018), COBOL_Character'Val (019),
75
     COBOL_Character'Val (020), COBOL_Character'Val (021),
76
     COBOL_Character'Val (022), COBOL_Character'Val (023),
77
     COBOL_Character'Val (024), COBOL_Character'Val (025),
78
     COBOL_Character'Val (026), COBOL_Character'Val (027),
79
     COBOL_Character'Val (028), COBOL_Character'Val (029),
80
     COBOL_Character'Val (030), COBOL_Character'Val (031),
81
     COBOL_Character'Val (032), COBOL_Character'Val (033),
82
     COBOL_Character'Val (034), COBOL_Character'Val (035),
83
     COBOL_Character'Val (036), COBOL_Character'Val (037),
84
     COBOL_Character'Val (038), COBOL_Character'Val (039),
85
     COBOL_Character'Val (040), COBOL_Character'Val (041),
86
     COBOL_Character'Val (042), COBOL_Character'Val (043),
87
     COBOL_Character'Val (044), COBOL_Character'Val (045),
88
     COBOL_Character'Val (046), COBOL_Character'Val (047),
89
     COBOL_Character'Val (048), COBOL_Character'Val (049),
90
     COBOL_Character'Val (050), COBOL_Character'Val (051),
91
     COBOL_Character'Val (052), COBOL_Character'Val (053),
92
     COBOL_Character'Val (054), COBOL_Character'Val (055),
93
     COBOL_Character'Val (056), COBOL_Character'Val (057),
94
     COBOL_Character'Val (058), COBOL_Character'Val (059),
95
     COBOL_Character'Val (060), COBOL_Character'Val (061),
96
     COBOL_Character'Val (062), COBOL_Character'Val (063),
97
     COBOL_Character'Val (064), COBOL_Character'Val (065),
98
     COBOL_Character'Val (066), COBOL_Character'Val (067),
99
     COBOL_Character'Val (068), COBOL_Character'Val (069),
100
     COBOL_Character'Val (070), COBOL_Character'Val (071),
101
     COBOL_Character'Val (072), COBOL_Character'Val (073),
102
     COBOL_Character'Val (074), COBOL_Character'Val (075),
103
     COBOL_Character'Val (076), COBOL_Character'Val (077),
104
     COBOL_Character'Val (078), COBOL_Character'Val (079),
105
     COBOL_Character'Val (080), COBOL_Character'Val (081),
106
     COBOL_Character'Val (082), COBOL_Character'Val (083),
107
     COBOL_Character'Val (084), COBOL_Character'Val (085),
108
     COBOL_Character'Val (086), COBOL_Character'Val (087),
109
     COBOL_Character'Val (088), COBOL_Character'Val (089),
110
     COBOL_Character'Val (090), COBOL_Character'Val (091),
111
     COBOL_Character'Val (092), COBOL_Character'Val (093),
112
     COBOL_Character'Val (094), COBOL_Character'Val (095),
113
     COBOL_Character'Val (096), COBOL_Character'Val (097),
114
     COBOL_Character'Val (098), COBOL_Character'Val (099),
115
     COBOL_Character'Val (100), COBOL_Character'Val (101),
116
     COBOL_Character'Val (102), COBOL_Character'Val (103),
117
     COBOL_Character'Val (104), COBOL_Character'Val (105),
118
     COBOL_Character'Val (106), COBOL_Character'Val (107),
119
     COBOL_Character'Val (108), COBOL_Character'Val (109),
120
     COBOL_Character'Val (110), COBOL_Character'Val (111),
121
     COBOL_Character'Val (112), COBOL_Character'Val (113),
122
     COBOL_Character'Val (114), COBOL_Character'Val (115),
123
     COBOL_Character'Val (116), COBOL_Character'Val (117),
124
     COBOL_Character'Val (118), COBOL_Character'Val (119),
125
     COBOL_Character'Val (120), COBOL_Character'Val (121),
126
     COBOL_Character'Val (122), COBOL_Character'Val (123),
127
     COBOL_Character'Val (124), COBOL_Character'Val (125),
128
     COBOL_Character'Val (126), COBOL_Character'Val (127),
129
     COBOL_Character'Val (128), COBOL_Character'Val (129),
130
     COBOL_Character'Val (130), COBOL_Character'Val (131),
131
     COBOL_Character'Val (132), COBOL_Character'Val (133),
132
     COBOL_Character'Val (134), COBOL_Character'Val (135),
133
     COBOL_Character'Val (136), COBOL_Character'Val (137),
134
     COBOL_Character'Val (138), COBOL_Character'Val (139),
135
     COBOL_Character'Val (140), COBOL_Character'Val (141),
136
     COBOL_Character'Val (142), COBOL_Character'Val (143),
137
     COBOL_Character'Val (144), COBOL_Character'Val (145),
138
     COBOL_Character'Val (146), COBOL_Character'Val (147),
139
     COBOL_Character'Val (148), COBOL_Character'Val (149),
140
     COBOL_Character'Val (150), COBOL_Character'Val (151),
141
     COBOL_Character'Val (152), COBOL_Character'Val (153),
142
     COBOL_Character'Val (154), COBOL_Character'Val (155),
143
     COBOL_Character'Val (156), COBOL_Character'Val (157),
144
     COBOL_Character'Val (158), COBOL_Character'Val (159),
145
     COBOL_Character'Val (160), COBOL_Character'Val (161),
146
     COBOL_Character'Val (162), COBOL_Character'Val (163),
147
     COBOL_Character'Val (164), COBOL_Character'Val (165),
148
     COBOL_Character'Val (166), COBOL_Character'Val (167),
149
     COBOL_Character'Val (168), COBOL_Character'Val (169),
150
     COBOL_Character'Val (170), COBOL_Character'Val (171),
151
     COBOL_Character'Val (172), COBOL_Character'Val (173),
152
     COBOL_Character'Val (174), COBOL_Character'Val (175),
153
     COBOL_Character'Val (176), COBOL_Character'Val (177),
154
     COBOL_Character'Val (178), COBOL_Character'Val (179),
155
     COBOL_Character'Val (180), COBOL_Character'Val (181),
156
     COBOL_Character'Val (182), COBOL_Character'Val (183),
157
     COBOL_Character'Val (184), COBOL_Character'Val (185),
158
     COBOL_Character'Val (186), COBOL_Character'Val (187),
159
     COBOL_Character'Val (188), COBOL_Character'Val (189),
160
     COBOL_Character'Val (190), COBOL_Character'Val (191),
161
     COBOL_Character'Val (192), COBOL_Character'Val (193),
162
     COBOL_Character'Val (194), COBOL_Character'Val (195),
163
     COBOL_Character'Val (196), COBOL_Character'Val (197),
164
     COBOL_Character'Val (198), COBOL_Character'Val (199),
165
     COBOL_Character'Val (200), COBOL_Character'Val (201),
166
     COBOL_Character'Val (202), COBOL_Character'Val (203),
167
     COBOL_Character'Val (204), COBOL_Character'Val (205),
168
     COBOL_Character'Val (206), COBOL_Character'Val (207),
169
     COBOL_Character'Val (208), COBOL_Character'Val (209),
170
     COBOL_Character'Val (210), COBOL_Character'Val (211),
171
     COBOL_Character'Val (212), COBOL_Character'Val (213),
172
     COBOL_Character'Val (214), COBOL_Character'Val (215),
173
     COBOL_Character'Val (216), COBOL_Character'Val (217),
174
     COBOL_Character'Val (218), COBOL_Character'Val (219),
175
     COBOL_Character'Val (220), COBOL_Character'Val (221),
176
     COBOL_Character'Val (222), COBOL_Character'Val (223),
177
     COBOL_Character'Val (224), COBOL_Character'Val (225),
178
     COBOL_Character'Val (226), COBOL_Character'Val (227),
179
     COBOL_Character'Val (228), COBOL_Character'Val (229),
180
     COBOL_Character'Val (230), COBOL_Character'Val (231),
181
     COBOL_Character'Val (232), COBOL_Character'Val (233),
182
     COBOL_Character'Val (234), COBOL_Character'Val (235),
183
     COBOL_Character'Val (236), COBOL_Character'Val (237),
184
     COBOL_Character'Val (238), COBOL_Character'Val (239),
185
     COBOL_Character'Val (240), COBOL_Character'Val (241),
186
     COBOL_Character'Val (242), COBOL_Character'Val (243),
187
     COBOL_Character'Val (244), COBOL_Character'Val (245),
188
     COBOL_Character'Val (246), COBOL_Character'Val (247),
189
     COBOL_Character'Val (248), COBOL_Character'Val (249),
190
     COBOL_Character'Val (250), COBOL_Character'Val (251),
191
     COBOL_Character'Val (252), COBOL_Character'Val (253),
192
     COBOL_Character'Val (254), COBOL_Character'Val (255));
193
 
194
   COBOL_To_Ada : array (COBOL_Character) of Standard.Character := (
195
     Standard.Character'Val (000), Standard.Character'Val (001),
196
     Standard.Character'Val (002), Standard.Character'Val (003),
197
     Standard.Character'Val (004), Standard.Character'Val (005),
198
     Standard.Character'Val (006), Standard.Character'Val (007),
199
     Standard.Character'Val (008), Standard.Character'Val (009),
200
     Standard.Character'Val (010), Standard.Character'Val (011),
201
     Standard.Character'Val (012), Standard.Character'Val (013),
202
     Standard.Character'Val (014), Standard.Character'Val (015),
203
     Standard.Character'Val (016), Standard.Character'Val (017),
204
     Standard.Character'Val (018), Standard.Character'Val (019),
205
     Standard.Character'Val (020), Standard.Character'Val (021),
206
     Standard.Character'Val (022), Standard.Character'Val (023),
207
     Standard.Character'Val (024), Standard.Character'Val (025),
208
     Standard.Character'Val (026), Standard.Character'Val (027),
209
     Standard.Character'Val (028), Standard.Character'Val (029),
210
     Standard.Character'Val (030), Standard.Character'Val (031),
211
     Standard.Character'Val (032), Standard.Character'Val (033),
212
     Standard.Character'Val (034), Standard.Character'Val (035),
213
     Standard.Character'Val (036), Standard.Character'Val (037),
214
     Standard.Character'Val (038), Standard.Character'Val (039),
215
     Standard.Character'Val (040), Standard.Character'Val (041),
216
     Standard.Character'Val (042), Standard.Character'Val (043),
217
     Standard.Character'Val (044), Standard.Character'Val (045),
218
     Standard.Character'Val (046), Standard.Character'Val (047),
219
     Standard.Character'Val (048), Standard.Character'Val (049),
220
     Standard.Character'Val (050), Standard.Character'Val (051),
221
     Standard.Character'Val (052), Standard.Character'Val (053),
222
     Standard.Character'Val (054), Standard.Character'Val (055),
223
     Standard.Character'Val (056), Standard.Character'Val (057),
224
     Standard.Character'Val (058), Standard.Character'Val (059),
225
     Standard.Character'Val (060), Standard.Character'Val (061),
226
     Standard.Character'Val (062), Standard.Character'Val (063),
227
     Standard.Character'Val (064), Standard.Character'Val (065),
228
     Standard.Character'Val (066), Standard.Character'Val (067),
229
     Standard.Character'Val (068), Standard.Character'Val (069),
230
     Standard.Character'Val (070), Standard.Character'Val (071),
231
     Standard.Character'Val (072), Standard.Character'Val (073),
232
     Standard.Character'Val (074), Standard.Character'Val (075),
233
     Standard.Character'Val (076), Standard.Character'Val (077),
234
     Standard.Character'Val (078), Standard.Character'Val (079),
235
     Standard.Character'Val (080), Standard.Character'Val (081),
236
     Standard.Character'Val (082), Standard.Character'Val (083),
237
     Standard.Character'Val (084), Standard.Character'Val (085),
238
     Standard.Character'Val (086), Standard.Character'Val (087),
239
     Standard.Character'Val (088), Standard.Character'Val (089),
240
     Standard.Character'Val (090), Standard.Character'Val (091),
241
     Standard.Character'Val (092), Standard.Character'Val (093),
242
     Standard.Character'Val (094), Standard.Character'Val (095),
243
     Standard.Character'Val (096), Standard.Character'Val (097),
244
     Standard.Character'Val (098), Standard.Character'Val (099),
245
     Standard.Character'Val (100), Standard.Character'Val (101),
246
     Standard.Character'Val (102), Standard.Character'Val (103),
247
     Standard.Character'Val (104), Standard.Character'Val (105),
248
     Standard.Character'Val (106), Standard.Character'Val (107),
249
     Standard.Character'Val (108), Standard.Character'Val (109),
250
     Standard.Character'Val (110), Standard.Character'Val (111),
251
     Standard.Character'Val (112), Standard.Character'Val (113),
252
     Standard.Character'Val (114), Standard.Character'Val (115),
253
     Standard.Character'Val (116), Standard.Character'Val (117),
254
     Standard.Character'Val (118), Standard.Character'Val (119),
255
     Standard.Character'Val (120), Standard.Character'Val (121),
256
     Standard.Character'Val (122), Standard.Character'Val (123),
257
     Standard.Character'Val (124), Standard.Character'Val (125),
258
     Standard.Character'Val (126), Standard.Character'Val (127),
259
     Standard.Character'Val (128), Standard.Character'Val (129),
260
     Standard.Character'Val (130), Standard.Character'Val (131),
261
     Standard.Character'Val (132), Standard.Character'Val (133),
262
     Standard.Character'Val (134), Standard.Character'Val (135),
263
     Standard.Character'Val (136), Standard.Character'Val (137),
264
     Standard.Character'Val (138), Standard.Character'Val (139),
265
     Standard.Character'Val (140), Standard.Character'Val (141),
266
     Standard.Character'Val (142), Standard.Character'Val (143),
267
     Standard.Character'Val (144), Standard.Character'Val (145),
268
     Standard.Character'Val (146), Standard.Character'Val (147),
269
     Standard.Character'Val (148), Standard.Character'Val (149),
270
     Standard.Character'Val (150), Standard.Character'Val (151),
271
     Standard.Character'Val (152), Standard.Character'Val (153),
272
     Standard.Character'Val (154), Standard.Character'Val (155),
273
     Standard.Character'Val (156), Standard.Character'Val (157),
274
     Standard.Character'Val (158), Standard.Character'Val (159),
275
     Standard.Character'Val (160), Standard.Character'Val (161),
276
     Standard.Character'Val (162), Standard.Character'Val (163),
277
     Standard.Character'Val (164), Standard.Character'Val (165),
278
     Standard.Character'Val (166), Standard.Character'Val (167),
279
     Standard.Character'Val (168), Standard.Character'Val (169),
280
     Standard.Character'Val (170), Standard.Character'Val (171),
281
     Standard.Character'Val (172), Standard.Character'Val (173),
282
     Standard.Character'Val (174), Standard.Character'Val (175),
283
     Standard.Character'Val (176), Standard.Character'Val (177),
284
     Standard.Character'Val (178), Standard.Character'Val (179),
285
     Standard.Character'Val (180), Standard.Character'Val (181),
286
     Standard.Character'Val (182), Standard.Character'Val (183),
287
     Standard.Character'Val (184), Standard.Character'Val (185),
288
     Standard.Character'Val (186), Standard.Character'Val (187),
289
     Standard.Character'Val (188), Standard.Character'Val (189),
290
     Standard.Character'Val (190), Standard.Character'Val (191),
291
     Standard.Character'Val (192), Standard.Character'Val (193),
292
     Standard.Character'Val (194), Standard.Character'Val (195),
293
     Standard.Character'Val (196), Standard.Character'Val (197),
294
     Standard.Character'Val (198), Standard.Character'Val (199),
295
     Standard.Character'Val (200), Standard.Character'Val (201),
296
     Standard.Character'Val (202), Standard.Character'Val (203),
297
     Standard.Character'Val (204), Standard.Character'Val (205),
298
     Standard.Character'Val (206), Standard.Character'Val (207),
299
     Standard.Character'Val (208), Standard.Character'Val (209),
300
     Standard.Character'Val (210), Standard.Character'Val (211),
301
     Standard.Character'Val (212), Standard.Character'Val (213),
302
     Standard.Character'Val (214), Standard.Character'Val (215),
303
     Standard.Character'Val (216), Standard.Character'Val (217),
304
     Standard.Character'Val (218), Standard.Character'Val (219),
305
     Standard.Character'Val (220), Standard.Character'Val (221),
306
     Standard.Character'Val (222), Standard.Character'Val (223),
307
     Standard.Character'Val (224), Standard.Character'Val (225),
308
     Standard.Character'Val (226), Standard.Character'Val (227),
309
     Standard.Character'Val (228), Standard.Character'Val (229),
310
     Standard.Character'Val (230), Standard.Character'Val (231),
311
     Standard.Character'Val (232), Standard.Character'Val (233),
312
     Standard.Character'Val (234), Standard.Character'Val (235),
313
     Standard.Character'Val (236), Standard.Character'Val (237),
314
     Standard.Character'Val (238), Standard.Character'Val (239),
315
     Standard.Character'Val (240), Standard.Character'Val (241),
316
     Standard.Character'Val (242), Standard.Character'Val (243),
317
     Standard.Character'Val (244), Standard.Character'Val (245),
318
     Standard.Character'Val (246), Standard.Character'Val (247),
319
     Standard.Character'Val (248), Standard.Character'Val (249),
320
     Standard.Character'Val (250), Standard.Character'Val (251),
321
     Standard.Character'Val (252), Standard.Character'Val (253),
322
     Standard.Character'Val (254), Standard.Character'Val (255));
323
 
324
   type Alphanumeric is array (Positive range <>) of COBOL_Character;
325
   --  pragma Pack (Alphanumeric);
326
 
327
   function To_COBOL (Item : String) return Alphanumeric;
328
   function To_Ada   (Item : Alphanumeric) return String;
329
 
330
   procedure To_COBOL
331
     (Item   : String;
332
      Target : out Alphanumeric;
333
      Last   : out Natural);
334
 
335
   procedure To_Ada
336
     (Item   : Alphanumeric;
337
      Target : out String;
338
      Last   : out Natural);
339
 
340
   type Numeric is array (Positive range <>) of COBOL_Character;
341
   --  pragma Pack (Numeric);
342
 
343
   --------------------------------------------
344
   -- Formats For COBOL Data Representations --
345
   --------------------------------------------
346
 
347
   type Display_Format is private;
348
 
349
   Unsigned             : constant Display_Format;
350
   Leading_Separate     : constant Display_Format;
351
   Trailing_Separate    : constant Display_Format;
352
   Leading_Nonseparate  : constant Display_Format;
353
   Trailing_Nonseparate : constant Display_Format;
354
 
355
   type Binary_Format is private;
356
 
357
   High_Order_First          : constant Binary_Format;
358
   Low_Order_First           : constant Binary_Format;
359
   Native_Binary             : constant Binary_Format;
360
   High_Order_First_Unsigned : constant Binary_Format;
361
   Low_Order_First_Unsigned  : constant Binary_Format;
362
   Native_Binary_Unsigned    : constant Binary_Format;
363
 
364
   type Packed_Format is private;
365
 
366
   Packed_Unsigned   : constant Packed_Format;
367
   Packed_Signed     : constant Packed_Format;
368
 
369
   ------------------------------------------------------------
370
   -- Types For External Representation Of COBOL Binary Data --
371
   ------------------------------------------------------------
372
 
373
   type Byte is mod 2 ** COBOL_Character'Size;
374
   type Byte_Array is array (Positive range <>) of Byte;
375
   --  pragma Pack (Byte_Array);
376
 
377
   Conversion_Error : exception;
378
 
379
   generic
380
      type Num is delta <> digits <>;
381
 
382
   package Decimal_Conversions is
383
 
384
      --  Display Formats: data values are represented as Numeric
385
 
386
      function Valid
387
        (Item   : Numeric;
388
         Format : Display_Format) return Boolean;
389
 
390
      function Length
391
        (Format : Display_Format) return Natural;
392
 
393
      function To_Decimal
394
        (Item   : Numeric;
395
         Format : Display_Format)
396
         return   Num;
397
 
398
      function To_Display
399
        (Item   : Num;
400
         Format : Display_Format) return Numeric;
401
 
402
      --  Packed Formats: data values are represented as Packed_Decimal
403
 
404
      function Valid
405
        (Item   : Packed_Decimal;
406
         Format : Packed_Format) return Boolean;
407
 
408
      function Length
409
        (Format : Packed_Format) return Natural;
410
 
411
      function To_Decimal
412
        (Item   : Packed_Decimal;
413
         Format : Packed_Format) return Num;
414
 
415
      function To_Packed
416
        (Item   : Num;
417
         Format : Packed_Format) return Packed_Decimal;
418
 
419
      --  Binary Formats: external data values are represented as Byte_Array
420
 
421
      function Valid
422
        (Item   : Byte_Array;
423
         Format : Binary_Format) return Boolean;
424
 
425
      function Length
426
        (Format : Binary_Format)
427
         return   Natural;
428
 
429
      function To_Decimal
430
        (Item   : Byte_Array;
431
         Format : Binary_Format) return Num;
432
 
433
      function To_Binary
434
        (Item   : Num;
435
         Format : Binary_Format) return Byte_Array;
436
 
437
      --  Internal Binary formats: data values are of type Binary/Long_Binary
438
 
439
      function To_Decimal (Item : Binary)      return Num;
440
      function To_Decimal (Item : Long_Binary) return Num;
441
 
442
      function To_Binary      (Item : Num)  return Binary;
443
      function To_Long_Binary (Item : Num)  return Long_Binary;
444
 
445
   private
446
      pragma Inline (Length);
447
      pragma Inline (To_Binary);
448
      pragma Inline (To_Decimal);
449
      pragma Inline (To_Display);
450
      pragma Inline (To_Long_Binary);
451
      pragma Inline (Valid);
452
 
453
   end Decimal_Conversions;
454
 
455
   ------------------------------------------
456
   -- Implementation Dependent Definitions --
457
   ------------------------------------------
458
 
459
   --  The implementation dependent definitions are wholly contained in the
460
   --  private part of this spec (the body is implementation independent)
461
 
462
private
463
   -------------------
464
   -- Binary Format --
465
   -------------------
466
 
467
   type Binary_Format is (H, L, N, HU, LU, NU);
468
 
469
   subtype Binary_Unsigned_Format is Binary_Format range HU .. NU;
470
 
471
   High_Order_First          : constant Binary_Format := H;
472
   Low_Order_First           : constant Binary_Format := L;
473
   Native_Binary             : constant Binary_Format := N;
474
   High_Order_First_Unsigned : constant Binary_Format := HU;
475
   Low_Order_First_Unsigned  : constant Binary_Format := LU;
476
   Native_Binary_Unsigned    : constant Binary_Format := NU;
477
 
478
   ---------------------------
479
   -- Packed Decimal Format --
480
   ---------------------------
481
 
482
   --  Packed decimal numbers use the IBM mainframe format:
483
 
484
   --     dd dd ... dd dd ds
485
 
486
   --  where d are the Digits, in natural left to right order, and s is
487
   --  the sign digit. If the number of Digits os even, then the high
488
   --  order (leftmost) Digits is always a 0. For example, a six digit
489
   --  number has the format:
490
 
491
   --     0d dd dd ds
492
 
493
   --  The sign digit has the possible values
494
 
495
   --     16#0A#     non-standard plus sign
496
   --     16#0B#     non-standard minus sign
497
   --     16#0C#     standard plus sign
498
   --     16#0D#     standard minus sign
499
   --     16#0E#     non-standard plus sign
500
   --     16#0F#     standard unsigned sign
501
 
502
   --  The non-standard signs are recognized on input, but never generated
503
   --  for output numbers. The 16#0F# distinguishes unsigned numbers from
504
   --  signed positive numbers, but is treated as positive for computational
505
   --  purposes. This format provides distinguished positive and negative
506
   --  zero values, which behave the same in all operations.
507
 
508
   type Packed_Format is (U, S);
509
 
510
   Packed_Unsigned : constant Packed_Format := U;
511
   Packed_Signed   : constant Packed_Format := S;
512
 
513
   type Packed_Representation_Type is (IBM);
514
   --  Indicator for format used for packed decimal
515
 
516
   Packed_Representation : constant Packed_Representation_Type := IBM;
517
   --  This version of the spec uses IBM internal format, as described above
518
 
519
   -----------------------------
520
   -- Display Decimal Formats --
521
   -----------------------------
522
 
523
   --  Display numbers are stored in standard ASCII format, as ASCII strings.
524
   --  For the embedded signs, the following codes are used:
525
 
526
   --     0-9 positive:  16#30# .. 16#39# (i.e. natural ASCII digit code)
527
   --     0-9 negative:  16#20# .. 16#29# (ASCII digit code - 16#10#)
528
 
529
   type Display_Format is (U, LS, TS, LN, TN);
530
 
531
   Unsigned             : constant Display_Format := U;
532
   Leading_Separate     : constant Display_Format := LS;
533
   Trailing_Separate    : constant Display_Format := TS;
534
   Leading_Nonseparate  : constant Display_Format := LN;
535
   Trailing_Nonseparate : constant Display_Format := TN;
536
 
537
   subtype COBOL_Digits is COBOL_Character range '0' .. '9';
538
   --  Digit values in display decimal
539
 
540
   COBOL_Space : constant COBOL_Character := ' ';
541
   COBOL_Plus  : constant COBOL_Character := '+';
542
   COBOL_Minus : constant COBOL_Character := '-';
543
   --  Sign values for Leading_Separate and Trailing_Separate formats
544
 
545
   subtype COBOL_Plus_Digits is COBOL_Character
546
     range COBOL_Character'Val (16#30#) .. COBOL_Character'Val (16#39#);
547
   --  Values used for embedded plus signs in nonseparate formats
548
 
549
   subtype COBOL_Minus_Digits is COBOL_Character
550
     range COBOL_Character'Val (16#20#) .. COBOL_Character'Val (16#29#);
551
   --  Values used for embedded minus signs in nonseparate formats
552
 
553
end Interfaces.COBOL;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.