home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Geek Gadgets 1
/
ADE-1.bin
/
ade-dist
/
gnat-2.06-src.tgz
/
tar.out
/
fsf
/
gnat
/
ada
/
i-cobol.ads
< prev
next >
Wrap
Text File
|
1996-09-28
|
22KB
|
449 lines
------------------------------------------------------------------------------
-- --
-- GNAT COMPILER COMPONENTS --
-- --
-- I N T E R F A C E S . C O B O L --
-- --
-- S p e c --
-- --
-- $Revision: 1.6 $ --
-- --
-- This specification is adapted from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. --
-- --
------------------------------------------------------------------------------
package Interfaces.COBOL is
------------------------------------------------------------
-- Types And Operations For Internal Data Representations --
------------------------------------------------------------
type Floating is new Float;
type Long_Floating is new Long_Float;
type Binary is new Integer;
type Long_Binary is new Long_Long_Integer;
Max_Digits_Binary : constant := 9;
Max_Digits_Long_Binary : constant := 18;
type Decimal_Element is mod 16;
type Packed_Decimal is array (Positive range <>) of Decimal_Element;
pragma Pack (Packed_Decimal);
type COBOL_Character is new Character;
Ada_To_COBOL : array (Standard.Character) of COBOL_Character := (
COBOL_Character'Val (000), COBOL_Character'Val (001),
COBOL_Character'Val (002), COBOL_Character'Val (003),
COBOL_Character'Val (004), COBOL_Character'Val (005),
COBOL_Character'Val (006), COBOL_Character'Val (007),
COBOL_Character'Val (008), COBOL_Character'Val (009),
COBOL_Character'Val (010), COBOL_Character'Val (011),
COBOL_Character'Val (012), COBOL_Character'Val (013),
COBOL_Character'Val (014), COBOL_Character'Val (015),
COBOL_Character'Val (016), COBOL_Character'Val (017),
COBOL_Character'Val (018), COBOL_Character'Val (019),
COBOL_Character'Val (020), COBOL_Character'Val (021),
COBOL_Character'Val (022), COBOL_Character'Val (023),
COBOL_Character'Val (024), COBOL_Character'Val (025),
COBOL_Character'Val (026), COBOL_Character'Val (027),
COBOL_Character'Val (028), COBOL_Character'Val (029),
COBOL_Character'Val (030), COBOL_Character'Val (031),
COBOL_Character'Val (032), COBOL_Character'Val (033),
COBOL_Character'Val (034), COBOL_Character'Val (035),
COBOL_Character'Val (036), COBOL_Character'Val (037),
COBOL_Character'Val (038), COBOL_Character'Val (039),
COBOL_Character'Val (040), COBOL_Character'Val (041),
COBOL_Character'Val (042), COBOL_Character'Val (043),
COBOL_Character'Val (044), COBOL_Character'Val (045),
COBOL_Character'Val (046), COBOL_Character'Val (047),
COBOL_Character'Val (048), COBOL_Character'Val (049),
COBOL_Character'Val (050), COBOL_Character'Val (051),
COBOL_Character'Val (052), COBOL_Character'Val (053),
COBOL_Character'Val (054), COBOL_Character'Val (055),
COBOL_Character'Val (056), COBOL_Character'Val (057),
COBOL_Character'Val (058), COBOL_Character'Val (059),
COBOL_Character'Val (060), COBOL_Character'Val (061),
COBOL_Character'Val (062), COBOL_Character'Val (063),
COBOL_Character'Val (064), COBOL_Character'Val (065),
COBOL_Character'Val (066), COBOL_Character'Val (067),
COBOL_Character'Val (068), COBOL_Character'Val (069),
COBOL_Character'Val (070), COBOL_Character'Val (071),
COBOL_Character'Val (072), COBOL_Character'Val (073),
COBOL_Character'Val (074), COBOL_Character'Val (075),
COBOL_Character'Val (076), COBOL_Character'Val (077),
COBOL_Character'Val (078), COBOL_Character'Val (079),
COBOL_Character'Val (080), COBOL_Character'Val (081),
COBOL_Character'Val (082), COBOL_Character'Val (083),
COBOL_Character'Val (084), COBOL_Character'Val (085),
COBOL_Character'Val (086), COBOL_Character'Val (087),
COBOL_Character'Val (088), COBOL_Character'Val (089),
COBOL_Character'Val (090), COBOL_Character'Val (091),
COBOL_Character'Val (092), COBOL_Character'Val (093),
COBOL_Character'Val (094), COBOL_Character'Val (095),
COBOL_Character'Val (096), COBOL_Character'Val (097),
COBOL_Character'Val (098), COBOL_Character'Val (099),
COBOL_Character'Val (100), COBOL_Character'Val (101),
COBOL_Character'Val (102), COBOL_Character'Val (103),
COBOL_Character'Val (104), COBOL_Character'Val (105),
COBOL_Character'Val (106), COBOL_Character'Val (107),
COBOL_Character'Val (108), COBOL_Character'Val (109),
COBOL_Character'Val (110), COBOL_Character'Val (111),
COBOL_Character'Val (112), COBOL_Character'Val (113),
COBOL_Character'Val (114), COBOL_Character'Val (115),
COBOL_Character'Val (116), COBOL_Character'Val (117),
COBOL_Character'Val (118), COBOL_Character'Val (119),
COBOL_Character'Val (120), COBOL_Character'Val (121),
COBOL_Character'Val (122), COBOL_Character'Val (123),
COBOL_Character'Val (124), COBOL_Character'Val (125),
COBOL_Character'Val (126), COBOL_Character'Val (127),
COBOL_Character'Val (128), COBOL_Character'Val (129),
COBOL_Character'Val (130), COBOL_Character'Val (131),
COBOL_Character'Val (132), COBOL_Character'Val (133),
COBOL_Character'Val (134), COBOL_Character'Val (135),
COBOL_Character'Val (136), COBOL_Character'Val (137),
COBOL_Character'Val (138), COBOL_Character'Val (139),
COBOL_Character'Val (140), COBOL_Character'Val (141),
COBOL_Character'Val (142), COBOL_Character'Val (143),
COBOL_Character'Val (144), COBOL_Character'Val (145),
COBOL_Character'Val (146), COBOL_Character'Val (147),
COBOL_Character'Val (148), COBOL_Character'Val (149),
COBOL_Character'Val (150), COBOL_Character'Val (151),
COBOL_Character'Val (152), COBOL_Character'Val (153),
COBOL_Character'Val (154), COBOL_Character'Val (155),
COBOL_Character'Val (156), COBOL_Character'Val (157),
COBOL_Character'Val (158), COBOL_Character'Val (159),
COBOL_Character'Val (160), COBOL_Character'Val (161),
COBOL_Character'Val (162), COBOL_Character'Val (163),
COBOL_Character'Val (164), COBOL_Character'Val (165),
COBOL_Character'Val (166), COBOL_Character'Val (167),
COBOL_Character'Val (168), COBOL_Character'Val (169),
COBOL_Character'Val (170), COBOL_Character'Val (171),
COBOL_Character'Val (172), COBOL_Character'Val (173),
COBOL_Character'Val (174), COBOL_Character'Val (175),
COBOL_Character'Val (176), COBOL_Character'Val (177),
COBOL_Character'Val (178), COBOL_Character'Val (179),
COBOL_Character'Val (180), COBOL_Character'Val (181),
COBOL_Character'Val (182), COBOL_Character'Val (183),
COBOL_Character'Val (184), COBOL_Character'Val (185),
COBOL_Character'Val (186), COBOL_Character'Val (187),
COBOL_Character'Val (188), COBOL_Character'Val (189),
COBOL_Character'Val (190), COBOL_Character'Val (191),
COBOL_Character'Val (192), COBOL_Character'Val (193),
COBOL_Character'Val (194), COBOL_Character'Val (195),
COBOL_Character'Val (196), COBOL_Character'Val (197),
COBOL_Character'Val (198), COBOL_Character'Val (199),
COBOL_Character'Val (200), COBOL_Character'Val (201),
COBOL_Character'Val (202), COBOL_Character'Val (203),
COBOL_Character'Val (204), COBOL_Character'Val (205),
COBOL_Character'Val (206), COBOL_Character'Val (207),
COBOL_Character'Val (208), COBOL_Character'Val (209),
COBOL_Character'Val (210), COBOL_Character'Val (211),
COBOL_Character'Val (212), COBOL_Character'Val (213),
COBOL_Character'Val (214), COBOL_Character'Val (215),
COBOL_Character'Val (216), COBOL_Character'Val (217),
COBOL_Character'Val (218), COBOL_Character'Val (219),
COBOL_Character'Val (220), COBOL_Character'Val (221),
COBOL_Character'Val (222), COBOL_Character'Val (223),
COBOL_Character'Val (224), COBOL_Character'Val (225),
COBOL_Character'Val (226), COBOL_Character'Val (227),
COBOL_Character'Val (228), COBOL_Character'Val (229),
COBOL_Character'Val (230), COBOL_Character'Val (231),
COBOL_Character'Val (232), COBOL_Character'Val (233),
COBOL_Character'Val (234), COBOL_Character'Val (235),
COBOL_Character'Val (236), COBOL_Character'Val (237),
COBOL_Character'Val (238), COBOL_Character'Val (239),
COBOL_Character'Val (240), COBOL_Character'Val (241),
COBOL_Character'Val (242), COBOL_Character'Val (243),
COBOL_Character'Val (244), COBOL_Character'Val (245),
COBOL_Character'Val (246), COBOL_Character'Val (247),
COBOL_Character'Val (248), COBOL_Character'Val (249),
COBOL_Character'Val (250), COBOL_Character'Val (251),
COBOL_Character'Val (252), COBOL_Character'Val (253),
COBOL_Character'Val (254), COBOL_Character'Val (255));
COBOL_To_Ada : array (COBOL_Character) of Standard.Character := (
Standard.Character'Val (000), Standard.Character'Val (001),
Standard.Character'Val (002), Standard.Character'Val (003),
Standard.Character'Val (004), Standard.Character'Val (005),
Standard.Character'Val (006), Standard.Character'Val (007),
Standard.Character'Val (008), Standard.Character'Val (009),
Standard.Character'Val (010), Standard.Character'Val (011),
Standard.Character'Val (012), Standard.Character'Val (013),
Standard.Character'Val (014), Standard.Character'Val (015),
Standard.Character'Val (016), Standard.Character'Val (017),
Standard.Character'Val (018), Standard.Character'Val (019),
Standard.Character'Val (020), Standard.Character'Val (021),
Standard.Character'Val (022), Standard.Character'Val (023),
Standard.Character'Val (024), Standard.Character'Val (025),
Standard.Character'Val (026), Standard.Character'Val (027),
Standard.Character'Val (028), Standard.Character'Val (029),
Standard.Character'Val (030), Standard.Character'Val (031),
Standard.Character'Val (032), Standard.Character'Val (033),
Standard.Character'Val (034), Standard.Character'Val (035),
Standard.Character'Val (036), Standard.Character'Val (037),
Standard.Character'Val (038), Standard.Character'Val (039),
Standard.Character'Val (040), Standard.Character'Val (041),
Standard.Character'Val (042), Standard.Character'Val (043),
Standard.Character'Val (044), Standard.Character'Val (045),
Standard.Character'Val (046), Standard.Character'Val (047),
Standard.Character'Val (048), Standard.Character'Val (049),
Standard.Character'Val (050), Standard.Character'Val (051),
Standard.Character'Val (052), Standard.Character'Val (053),
Standard.Character'Val (054), Standard.Character'Val (055),
Standard.Character'Val (056), Standard.Character'Val (057),
Standard.Character'Val (058), Standard.Character'Val (059),
Standard.Character'Val (060), Standard.Character'Val (061),
Standard.Character'Val (062), Standard.Character'Val (063),
Standard.Character'Val (064), Standard.Character'Val (065),
Standard.Character'Val (066), Standard.Character'Val (067),
Standard.Character'Val (068), Standard.Character'Val (069),
Standard.Character'Val (070), Standard.Character'Val (071),
Standard.Character'Val (072), Standard.Character'Val (073),
Standard.Character'Val (074), Standard.Character'Val (075),
Standard.Character'Val (076), Standard.Character'Val (077),
Standard.Character'Val (078), Standard.Character'Val (079),
Standard.Character'Val (080), Standard.Character'Val (081),
Standard.Character'Val (082), Standard.Character'Val (083),
Standard.Character'Val (084), Standard.Character'Val (085),
Standard.Character'Val (086), Standard.Character'Val (087),
Standard.Character'Val (088), Standard.Character'Val (089),
Standard.Character'Val (090), Standard.Character'Val (091),
Standard.Character'Val (092), Standard.Character'Val (093),
Standard.Character'Val (094), Standard.Character'Val (095),
Standard.Character'Val (096), Standard.Character'Val (097),
Standard.Character'Val (098), Standard.Character'Val (099),
Standard.Character'Val (100), Standard.Character'Val (101),
Standard.Character'Val (102), Standard.Character'Val (103),
Standard.Character'Val (104), Standard.Character'Val (105),
Standard.Character'Val (106), Standard.Character'Val (107),
Standard.Character'Val (108), Standard.Character'Val (109),
Standard.Character'Val (110), Standard.Character'Val (111),
Standard.Character'Val (112), Standard.Character'Val (113),
Standard.Character'Val (114), Standard.Character'Val (115),
Standard.Character'Val (116), Standard.Character'Val (117),
Standard.Character'Val (118), Standard.Character'Val (119),
Standard.Character'Val (120), Standard.Character'Val (121),
Standard.Character'Val (122), Standard.Character'Val (123),
Standard.Character'Val (124), Standard.Character'Val (125),
Standard.Character'Val (126), Standard.Character'Val (127),
Standard.Character'Val (128), Standard.Character'Val (129),
Standard.Character'Val (130), Standard.Character'Val (131),
Standard.Character'Val (132), Standard.Character'Val (133),
Standard.Character'Val (134), Standard.Character'Val (135),
Standard.Character'Val (136), Standard.Character'Val (137),
Standard.Character'Val (138), Standard.Character'Val (139),
Standard.Character'Val (140), Standard.Character'Val (141),
Standard.Character'Val (142), Standard.Character'Val (143),
Standard.Character'Val (144), Standard.Character'Val (145),
Standard.Character'Val (146), Standard.Character'Val (147),
Standard.Character'Val (148), Standard.Character'Val (149),
Standard.Character'Val (150), Standard.Character'Val (151),
Standard.Character'Val (152), Standard.Character'Val (153),
Standard.Character'Val (154), Standard.Character'Val (155),
Standard.Character'Val (156), Standard.Character'Val (157),
Standard.Character'Val (158), Standard.Character'Val (159),
Standard.Character'Val (160), Standard.Character'Val (161),
Standard.Character'Val (162), Standard.Character'Val (163),
Standard.Character'Val (164), Standard.Character'Val (165),
Standard.Character'Val (166), Standard.Character'Val (167),
Standard.Character'Val (168), Standard.Character'Val (169),
Standard.Character'Val (170), Standard.Character'Val (171),
Standard.Character'Val (172), Standard.Character'Val (173),
Standard.Character'Val (174), Standard.Character'Val (175),
Standard.Character'Val (176), Standard.Character'Val (177),
Standard.Character'Val (178), Standard.Character'Val (179),
Standard.Character'Val (180), Standard.Character'Val (181),
Standard.Character'Val (182), Standard.Character'Val (183),
Standard.Character'Val (184), Standard.Character'Val (185),
Standard.Character'Val (186), Standard.Character'Val (187),
Standard.Character'Val (188), Standard.Character'Val (189),
Standard.Character'Val (190), Standard.Character'Val (191),
Standard.Character'Val (192), Standard.Character'Val (193),
Standard.Character'Val (194), Standard.Character'Val (195),
Standard.Character'Val (196), Standard.Character'Val (197),
Standard.Character'Val (198), Standard.Character'Val (199),
Standard.Character'Val (200), Standard.Character'Val (201),
Standard.Character'Val (202), Standard.Character'Val (203),
Standard.Character'Val (204), Standard.Character'Val (205),
Standard.Character'Val (206), Standard.Character'Val (207),
Standard.Character'Val (208), Standard.Character'Val (209),
Standard.Character'Val (210), Standard.Character'Val (211),
Standard.Character'Val (212), Standard.Character'Val (213),
Standard.Character'Val (214), Standard.Character'Val (215),
Standard.Character'Val (216), Standard.Character'Val (217),
Standard.Character'Val (218), Standard.Character'Val (219),
Standard.Character'Val (220), Standard.Character'Val (221),
Standard.Character'Val (222), Standard.Character'Val (223),
Standard.Character'Val (224), Standard.Character'Val (225),
Standard.Character'Val (226), Standard.Character'Val (227),
Standard.Character'Val (228), Standard.Character'Val (229),
Standard.Character'Val (230), Standard.Character'Val (231),
Standard.Character'Val (232), Standard.Character'Val (233),
Standard.Character'Val (234), Standard.Character'Val (235),
Standard.Character'Val (236), Standard.Character'Val (237),
Standard.Character'Val (238), Standard.Character'Val (239),
Standard.Character'Val (240), Standard.Character'Val (241),
Standard.Character'Val (242), Standard.Character'Val (243),
Standard.Character'Val (244), Standard.Character'Val (245),
Standard.Character'Val (246), Standard.Character'Val (247),
Standard.Character'Val (248), Standard.Character'Val (249),
Standard.Character'Val (250), Standard.Character'Val (251),
Standard.Character'Val (252), Standard.Character'Val (253),
Standard.Character'Val (254), Standard.Character'Val (255));
type Alphanumeric is array (Positive range <>) of COBOL_Character;
pragma Pack (Alphanumeric);
function To_COBOL (Item : in String) return Alphanumeric;
function To_Ada (Item : in Alphanumeric) return String;
procedure To_COBOL
(Item : in String;
Target : out Alphanumeric;
Last : out Natural);
procedure To_Ada
(Item : in Alphanumeric;
Target : out String;
Last : out Natural);
type Numeric is array (Positive range <>) of COBOL_Character;
pragma Pack (Numeric);
--------------------------------------------
-- Formats For COBOL Data Representations --
--------------------------------------------
type Display_Format is private;
Unsigned : constant Display_Format;
Leading_Separate : constant Display_Format;
Trailing_Separate : constant Display_Format;
Leading_Nonseparate : constant Display_Format;
Trailing_Nonseparate : constant Display_Format;
type Binary_Format is private;
High_Order_First : constant Binary_Format;
Low_Order_First : constant Binary_Format;
Native_Binary : constant Binary_Format;
type Packed_Format is private;
Packed_Unsigned : constant Packed_Format;
Packed_Signed : constant Packed_Format;
------------------------------------------------------------
-- Types For External Representation Of COBOL Binary Data --
------------------------------------------------------------
type Byte is mod 2 ** COBOL_Character'Size;
type Byte_Array is array (Positive range <>) of Byte;
pragma Pack (Byte_Array);
Conversion_Error : exception;
generic
type Num is delta <> digits <>;
package Decimal_Conversions is
-- Display Formats: data values are represented as Numeric
function Valid
(Item : in Numeric;
Format : in Display_Format)
return Boolean;
function Length
(Format : in Display_Format)
return Natural;
function To_Decimal
(Item : in Numeric;
Format : in Display_Format)
return Num;
function To_Display
(Item : in Num;
Format : in Display_Format)
return Numeric;
-- Packed Formats: data values are represented as Packed_Decimal
function Valid
(Item : in Packed_Decimal;
Format : in Display_Format)
return Boolean;
function Length
(Format : in Packed_Format)
return Natural;
function To_Decimal
(Item : in Packed_Decimal;
Format : in Packed_Format)
return Num;
function To_Packed
(Item : in Num;
Format : in Packed_Format)
return Packed_Decimal;
-- Binary Formats: external data values are represented as Byte_Array
function Valid
(Item : in Byte_Array;
Format : in Binary_Format)
return Boolean;
function Length
(Format : in Binary_Format)
return Natural;
function To_Decimal
(Item : in Byte_Array;
Format : in Binary_Format) return Num;
function To_Comp
(Item : in Num;
Format : in Binary_Format)
return Byte_Array;
-- Internal Binary formats: data values are of type Binary/Long_Binary
function To_Decimal (Item : in Binary) return Num;
function To_Decimal (Item : in Long_Binary) return Num;
function To_Binary (Item : in Num) return Binary;
function To_Long_Binary (Item : in Num) return Long_Binary;
end Decimal_Conversions;
private
type Display_Format is (U, LS, TS, LN, TN);
Unsigned : constant Display_Format := U;
Leading_Separate : constant Display_Format := LS;
Trailing_Separate : constant Display_Format := TS;
Leading_Nonseparate : constant Display_Format := LN;
Trailing_Nonseparate : constant Display_Format := TN;
type Binary_Format is (H, L, N);
High_Order_First : constant Binary_Format := H;
Low_Order_First : constant Binary_Format := L;
Native_Binary : constant Binary_Format := N;
type Packed_Format is (U, S);
Packed_Unsigned : constant Packed_Format := U;
Packed_Signed : constant Packed_Format := S;
end Interfaces.COBOL;