package Interfaces.COBOL is
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;
function To_COBOL (Item : String) return Alphanumeric;
function To_Ada (Item : Alphanumeric) return String;
procedure To_COBOL
(Item : String;
Target : out Alphanumeric;
Last : out Natural);
procedure To_Ada
(Item : Alphanumeric;
Target : out String;
Last : out Natural);
type Numeric is array (Positive range <>) of COBOL_Character;
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;
High_Order_First_Unsigned : constant Binary_Format;
Low_Order_First_Unsigned : constant Binary_Format;
Native_Binary_Unsigned : constant Binary_Format;
type Packed_Format is private;
Packed_Unsigned : constant Packed_Format;
Packed_Signed : constant Packed_Format;
type Byte is mod 2 ** COBOL_Character'Size;
type Byte_Array is array (Positive range <>) of Byte;
Conversion_Error : exception;
generic
type Num is delta <> digits <>;
package Decimal_Conversions is
function Valid
(Item : Numeric;
Format : Display_Format) return Boolean;
function Length
(Format : Display_Format) return Natural;
function To_Decimal
(Item : Numeric;
Format : Display_Format)
return Num;
function To_Display
(Item : Num;
Format : Display_Format) return Numeric;
function Valid
(Item : Packed_Decimal;
Format : Packed_Format) return Boolean;
function Length
(Format : Packed_Format) return Natural;
function To_Decimal
(Item : Packed_Decimal;
Format : Packed_Format) return Num;
function To_Packed
(Item : Num;
Format : Packed_Format) return Packed_Decimal;
function Valid
(Item : Byte_Array;
Format : Binary_Format) return Boolean;
function Length
(Format : Binary_Format)
return Natural;
function To_Decimal
(Item : Byte_Array;
Format : Binary_Format) return Num;
function To_Binary
(Item : Num;
Format : Binary_Format) return Byte_Array;
function To_Decimal (Item : Binary) return Num;
function To_Decimal (Item : Long_Binary) return Num;
function To_Binary (Item : Num) return Binary;
function To_Long_Binary (Item : Num) return Long_Binary;
private
pragma Inline (Length);
pragma Inline (To_Binary);
pragma Inline (To_Decimal);
pragma Inline (To_Display);
pragma Inline (To_Long_Binary);
pragma Inline (Valid);
end Decimal_Conversions;
private
type Binary_Format is (H, L, N, HU, LU, NU);
subtype Binary_Unsigned_Format is Binary_Format range HU .. NU;
High_Order_First : constant Binary_Format := H;
Low_Order_First : constant Binary_Format := L;
Native_Binary : constant Binary_Format := N;
High_Order_First_Unsigned : constant Binary_Format := HU;
Low_Order_First_Unsigned : constant Binary_Format := LU;
Native_Binary_Unsigned : constant Binary_Format := NU;
type Packed_Format is (U, S);
Packed_Unsigned : constant Packed_Format := U;
Packed_Signed : constant Packed_Format := S;
type Packed_Representation_Type is (IBM);
Packed_Representation : constant Packed_Representation_Type := IBM;
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;
subtype COBOL_Digits is COBOL_Character range '0' .. '9';
COBOL_Space : constant COBOL_Character := ' ';
COBOL_Plus : constant COBOL_Character := '+';
COBOL_Minus : constant COBOL_Character := '-';
subtype COBOL_Plus_Digits is COBOL_Character
range COBOL_Character'Val (16#30#) .. COBOL_Character'Val (16#39#);
subtype COBOL_Minus_Digits is COBOL_Character
range COBOL_Character'Val (16#20#) .. COBOL_Character'Val (16#29#);
end Interfaces.COBOL;