OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/tags/gnu-src/gcc-4.5.1/gcc-4.5.1-or32-1.0rc1/gcc/testsuite/ada/acats/tests/ca
    from Rev 294 to Rev 338
    Reverse comparison

Rev 294 → Rev 338

/ca140282.a
0,0 → 1,64
-- CA140282.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- OBJECTIVE:
-- See CA140283.AM.
--
-- TEST DESCRIPTION
-- See CA140283.AM.
--
-- TEST FILES:
-- This test consists of the following files:
-- CA140280.A
-- CA140281.A
-- -> CA140282.A
-- CA140283.AM
--
-- CHANGE HISTORY:
-- JBG 05/28/85 CREATED ORIGINAL TEST.
-- RDH 04/18/90 ADDED CASES WHERE SUBPROGRAM PARAMETER TYPES ARE
-- NOT THE SAME.
-- RLB 07/08/99 Reinstated withdrawn test; revised to Ada 95 format.
 
WITH GENPROC_CA14028;
PRAGMA ELABORATE (GENPROC_CA14028);
PROCEDURE CA14028_PROC5 IS NEW GENPROC_CA14028 (5);
 
WITH GENFUNC_CA14028;
PRAGMA ELABORATE (GENFUNC_CA14028);
FUNCTION CA14028_FUNC22 IS NEW GENFUNC_CA14028;
 
WITH REPORT; USE REPORT;
PRAGMA ELABORATE (REPORT);
PROCEDURE CA14028_PROC3 (X : OUT INTEGER) IS
BEGIN
X := IDENT_INT(4);
END CA14028_PROC3;
 
WITH REPORT; USE REPORT;
PRAGMA ELABORATE (REPORT);
FUNCTION CA14028_FUNC3 RETURN INTEGER IS
BEGIN
RETURN IDENT_INT(7);
END CA14028_FUNC3;
/ca1108b.ada
0,0 → 1,168
-- CA1108B.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT IF WITH_CLAUSES ARE GIVEN FOR BOTH A SPEC AND A BODY, AND
-- THE CLAUSES NAME DIFFERENT LIBRARY UNITS, THE UNITS NAMED IN ALL THE
-- CLAUSES ARE VISIBLE IN THE BODY AND IN SUBUNITS OF THE BODY.
 
-- BHS 7/31/84
-- JBG 5/1/85
 
PACKAGE FIRST_PKG IS
 
FUNCTION F (X : INTEGER := 1) RETURN INTEGER;
 
END FIRST_PKG;
 
PACKAGE BODY FIRST_PKG IS
 
FUNCTION F (X : INTEGER := 1) RETURN INTEGER IS
BEGIN
RETURN X;
END F;
 
END FIRST_PKG;
 
PACKAGE LATER_PKG IS
 
FUNCTION F (Y : INTEGER := 2) RETURN INTEGER;
 
END LATER_PKG;
 
PACKAGE BODY LATER_PKG IS
 
FUNCTION F (Y : INTEGER := 2) RETURN INTEGER IS
BEGIN
RETURN Y + 1;
END F;
 
END LATER_PKG;
 
WITH REPORT, FIRST_PKG;
USE REPORT;
PRAGMA ELABORATE (FIRST_PKG);
PACKAGE CA1108B_PKG IS
 
I, J : INTEGER;
PROCEDURE PROC;
PROCEDURE CALL_SUBS (X, Y : IN OUT INTEGER);
 
END CA1108B_PKG;
 
WITH LATER_PKG;
PRAGMA ELABORATE (LATER_PKG);
PACKAGE BODY CA1108B_PKG IS
 
PROCEDURE SUB (X, Y : IN OUT INTEGER) IS SEPARATE;
 
PROCEDURE PROC IS
I, J : INTEGER;
BEGIN
I := FIRST_PKG.F;
IF I /= 1 THEN
FAILED ("FIRST_PKG FUNCTION NOT VISIBLE IN " &
"PACKAGE BODY PROCEDURE");
END IF;
J := LATER_PKG.F;
IF J /= 3 THEN
FAILED ("LATER_PKG FUNCITON NOT VISIBLE IN " &
"PACKAGE BODY PROCEDURE");
END IF;
END PROC;
 
PROCEDURE CALL_SUBS (X, Y : IN OUT INTEGER) IS
BEGIN
SUB (X, Y);
END CALL_SUBS;
 
BEGIN
 
I := FIRST_PKG.F;
IF I /= 1 THEN
FAILED ("FIRST_PKG FUNCTION NOT VISIBLE IN PACKAGE BODY");
END IF;
J := LATER_PKG.F;
IF J /= 3 THEN
FAILED ("LATER_PKG FUNCTION NOT VISIBLE IN PACKAGE BODY");
END IF;
 
END CA1108B_PKG;
 
WITH REPORT, CA1108B_PKG;
USE REPORT, CA1108B_PKG;
PROCEDURE CA1108B IS
 
VAR1, VAR2 : INTEGER;
 
BEGIN
 
TEST ("CA1108B", "IF DIFFERENT WITH_CLAUSES GIVEN FOR PACKAGE " &
"SPEC AND BODY, ALL NAMED UNITS ARE VISIBLE " &
"IN THE BODY AND ITS SUBUNITS");
 
PROC;
 
VAR1 := 0;
VAR2 := 1;
CALL_SUBS (VAR1, VAR2);
IF VAR1 /= 1 THEN
FAILED ("FIRST_PKG FUNCTION NOT VISIBLE IN SUBUNIT");
END IF;
 
IF VAR2 /= 3 THEN
FAILED ("LATER_PKG FUNCTION NOT VISIBLE IN SUBUNIT");
END IF;
 
RESULT;
 
END CA1108B;
 
 
SEPARATE (CA1108B_PKG)
PROCEDURE SUB (X, Y : IN OUT INTEGER) IS
PROCEDURE SUB2 (A, B : IN OUT INTEGER) IS SEPARATE;
BEGIN
 
SUB2 (Y, X);
IF Y /= 1 THEN
FAILED ("FIRST_PKG FUNCTION NOT VISIBLE IN SUBUNIT " &
"OF SUBUNIT");
END IF;
IF X /= 3 THEN
FAILED ("LATER_PKG FUNCTION NOT VISIBLE IN SUBUNIT " &
"OF SUBUNIT");
END IF;
X := FIRST_PKG.F;
Y := LATER_PKG.F;
 
END SUB;
 
SEPARATE (CA1108B_PKG.SUB)
PROCEDURE SUB2 (A, B : IN OUT INTEGER) IS
BEGIN
 
A := FIRST_PKG.F;
B := LATER_PKG.F;
 
END SUB2;
/ca11020.a
0,0 → 1,238
-- CA11020.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that body of the generic parent package can depend on one of
-- its own public generic children.
--
-- TEST DESCRIPTION:
-- A scenario is created that demonstrates the potential of adding a
-- public generic child during code maintenance without distubing a large
-- subsystem. After child is added to the subsystem, a maintainer
-- decides to take advantage of the new functionality and rewrites
-- the parent's body.
--
-- Declare a bag abstraction in a generic package. Declare a public
-- generic child of this package which adds a generic procedure to the
-- original subsystem. In the parent body, instantiate the public
-- child. Then instantiate the procedure as a child instance of the
-- public child instance.
--
-- In the main program, declare an instance of parent. Check that the
-- operations in both parent and child packages perform as expected.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
 
-- Simulates bag application.
 
generic
type Element is private;
with function Image (E : Element) return String;
 
package CA11020_0 is
 
type Bag is limited private;
 
procedure Add (E : in Element; To_The_Bag : in out Bag);
 
function Bag_Image (B : Bag) return string;
 
private
type Node_Type;
type Bag is access Node_Type;
 
type Node_Type is
record
The_Element : Element;
 
-- Other components in real application, i.e.,
-- The_Count : positive;
 
Next : Bag;
end record;
 
end CA11020_0;
 
--==================================================================--
 
-- More operations on Bag.
 
generic
 
-- Parameters go here.
 
package CA11020_0.CA11020_1 is
 
-- ... Other declarations.
 
generic -- Generic iterator procedure.
with procedure Use_Element (E : in Element);
 
procedure Iterate (B : in Bag); -- Called once per element in the bag.
 
-- ... Various other operations.
 
end CA11020_0.CA11020_1;
 
--==================================================================--
 
package body CA11020_0.CA11020_1 is
 
procedure Iterate (B : in Bag) is
 
-- Traverse each element in the bag.
 
Elem : Bag := B;
 
begin
while Elem /= null loop
Use_Element (Elem.The_Element);
Elem := Elem.Next;
end loop;
 
end Iterate;
 
end CA11020_0.CA11020_1;
 
--==================================================================--
 
with CA11020_0.CA11020_1; -- Public generic child package.
 
package body CA11020_0 is
 
----------------------------------------------------
-- Parent's body depends on public generic child. --
----------------------------------------------------
 
-- Instantiate the public child.
 
package MS is new CA11020_1;
 
function Bag_Image (B : Bag) return string is
 
Buffer : String (1 .. 10_000);
Last : Integer := 0;
 
-----------------------------------------------------
 
-- Will be called by the iterator.
 
procedure Append_Image (E : in Element) is
Im : constant String := Image (E);
 
begin -- Append_Image
if Last /= 0 then -- Insert a comma.
Last := Last + 1;
Buffer (Last) := ',';
end if;
 
Buffer (Last + 1 .. Last + Im'Length) := Im;
Last := Last + Im'Length;
 
end Append_Image;
 
-----------------------------------------------------
 
-- Instantiate procedure Iterate as a child of instance MS.
 
procedure Append_All is new MS.Iterate (Use_Element => Append_Image);
 
begin -- Bag_Image
 
Append_All (B);
 
return Buffer (1 .. Last);
 
end Bag_Image;
 
-----------------------------------------------------
 
procedure Add (E : in Element; To_The_Bag : in out Bag) is
 
-- Not a real bag addition.
 
Index : Bag := To_The_Bag;
 
begin
-- ... Error-checking code omitted for brevity.
if Index = null then
To_The_Bag := new Node_Type' (The_Element => E,
Next => null);
else
-- Goto the end of the list.
 
while Index.Next /= null loop
Index := Index.Next;
end loop;
 
-- Add element to the end of the list.
 
Index.Next := new Node_Type' (The_Element => E,
Next => null);
end if;
 
end Add;
 
end CA11020_0;
 
--==================================================================--
 
with CA11020_0; -- Bag application.
 
with Report;
 
procedure CA11020 is
 
-- Instantiate the bag application for integer type and attribute
-- Image.
 
package Bag_Of_Integers is new CA11020_0 (Integer, Integer'Image);
 
My_Bag : Bag_Of_Integers.Bag;
 
begin
 
Report.Test ("CA11020", "Check that body of the generic parent package " &
"can depend on one of its own public generic children");
 
-- Add 10 consecutive integers to the bag.
 
for I in 1 .. 10 loop
Bag_Of_Integers.Add (I, My_Bag);
end loop;
 
if Bag_Of_Integers.Bag_Image (My_Bag)
/= " 1, 2, 3, 4, 5, 6, 7, 8, 9, 10" then
Report.Failed ("Incorrect results");
end if;
 
Report.Result;
 
end CA11020;
/ca11003.a
0,0 → 1,290
-- CA11003.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that a public grandchild can utilize its ancestor unit's visible
-- definitions.
--
-- TEST DESCRIPTION:
-- Declare a public package, public child package, and public
-- grandchild package and library unit function. Within the
-- grandchild package and function, make use of components that are
-- declared in the ancestor packages, both parent and grandparent.
--
-- Use the following ancestral components in the grandchildren library
-- units:
-- Grandparent Parent
-- Type X X
-- Constant X X
-- Object X X
-- Subprogram X X
-- Exception X X
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
-- 21 Dec 94 SAIC Modified procedure Create_File
-- 15 Nov 95 SAIC Update and repair for ACVC 2.0.1
--
--!
package CA11003_0 is -- Package OS
 
type File_Descriptor is new Integer;
type File_Mode is (Read_Only, Write_Only, Read_Write);
 
Null_File : constant File_Descriptor := 0;
Default_Mode : constant File_Mode := Read_Only;
File_Data_Error : exception;
 
type File_Type is tagged
record
Descriptor : File_Descriptor := Null_File;
Mode : File_Mode := Read_Write;
end record;
 
System_File : File_Type;
 
function Next_Available_File return File_Descriptor;
 
procedure Reclaim_File_Descriptor;
 
end CA11003_0; -- Package OS
 
--=================================================================--
 
package body CA11003_0 is -- Package body OS
File_Count : Integer := 0;
 
function Next_Available_File return File_Descriptor is
begin
File_Count := File_Count + 1;
return (File_Descriptor(File_Count));
end Next_Available_File;
--------------------------------------------------
procedure Reclaim_File_Descriptor is
begin
null; -- Dummy processing unit.
end Reclaim_File_Descriptor;
 
end CA11003_0; -- Package body OS
 
--=================================================================--
 
package CA11003_0.CA11003_1 is -- Child package OS.Operations
 
subtype File_Length_Type is Integer range 0 .. 1000;
Min_File_Size : File_Length_Type := File_Length_Type'First;
Max_File_Size : File_Length_Type := File_Length_Type'Last;
 
File_Duplication_Error : exception;
 
type Extended_File_Type is new File_Type with private;
 
procedure Create_File (Mode : in File_Mode;
File : out Extended_File_Type);
 
procedure Duplicate_File (Original : in Extended_File_Type;
Duplicate : out Extended_File_Type);
 
private
type Extended_File_Type is new File_Type with
record
Blocks : File_Length_Type := Min_File_Size;
end record;
 
System_Extended_File : Extended_File_Type;
 
end CA11003_0.CA11003_1; -- Child Package OS.Operations
 
--=================================================================--
 
package body CA11003_0.CA11003_1 is -- Child package body OS.Operations
 
procedure Create_File
(Mode : in File_Mode;
File : out Extended_File_Type) is
begin
File.Descriptor := Next_Available_File; -- Parent subprogram.
File.Mode := Default_Mode; -- Parent constant.
File.Blocks := Min_File_Size;
end Create_File;
--------------------------------------------------
procedure Duplicate_File (Original : in Extended_File_Type;
Duplicate : out Extended_File_Type) is
begin
Duplicate.Descriptor := Next_Available_File; -- Parent subprogram.
Duplicate.Mode := Original.Mode;
Duplicate.Blocks := Original.Blocks;
end Duplicate_File;
 
end CA11003_0.CA11003_1; -- Child package body OS.Operations
 
--=================================================================--
 
-- This package contains menu selectable operations for manipulating files.
-- This abstraction builds on the capabilities available from ancestor
-- packages.
 
package CA11003_0.CA11003_1.CA11003_2 is
 
procedure News (Mode : in File_Mode;
File : out Extended_File_Type);
 
procedure Copy (Original : in Extended_File_Type;
Duplicate : out Extended_File_Type);
 
procedure Delete (File : in Extended_File_Type);
 
end CA11003_0.CA11003_1.CA11003_2; -- Grandchild package OS.Operations.Menu
--=================================================================--
 
-- Grandchild subprogram Validate
function CA11003_0.CA11003_1.CA11003_3 (File : in Extended_File_Type)
return Boolean;
 
--=================================================================--
 
-- Grandchild subprogram Validate
function CA11003_0.CA11003_1.CA11003_3
(File : in Extended_File_Type) -- Parent type.
return Boolean is
 
function New_File_Validated (File : Extended_File_Type)
return Boolean is
begin
if (File.Descriptor > System_File.Descriptor) and -- Grandparent
(File.Mode in File_Mode ) and -- object and type
not ((File.Blocks < System_Extended_File.Blocks) or
(File.Blocks > Max_File_Size)) -- Parent object
then -- and constant.
return True;
else
return False;
end if;
end New_File_Validated;
begin
return (New_File_Validated (File)) and
(File.Descriptor /= Null_File); -- Grandparent constant.
end CA11003_0.CA11003_1.CA11003_3; -- Grandchild subprogram Validate
 
--=================================================================--
 
with CA11003_0.CA11003_1.CA11003_3;
-- Grandchild package body OS.Operations.Menu
package body CA11003_0.CA11003_1.CA11003_2 is
 
procedure News (Mode : in File_Mode;
File : out Extended_File_Type) is -- Parent type.
begin
Create_File (Mode, File); -- Parent subprogram.
if not CA11003_0.CA11003_1.CA11003_3 (File) then
raise File_Data_Error; -- Grandparent exception.
end if;
end News;
--------------------------------------------------
procedure Copy (Original : in Extended_File_Type;
Duplicate : out Extended_File_Type) is
begin
Duplicate_File (Original, Duplicate); -- Parent subprogram.
 
if Original.Descriptor = Duplicate.Descriptor then
raise File_Duplication_Error; -- Parent exception.
end if;
 
end Copy;
--------------------------------------------------
procedure Delete (File : in Extended_File_Type) is
begin
Reclaim_File_Descriptor; -- Grandparent
end Delete; -- subprogram.
 
end CA11003_0.CA11003_1.CA11003_2;
 
--=================================================================--
 
with CA11003_0.CA11003_1.CA11003_2; -- Grandchild Pkg OS.Operations.Menu
with CA11003_0.CA11003_1.CA11003_3; -- Grandchild Ftn OS.Operations.Validate
with Report;
 
procedure CA11003 is
 
package Menu renames CA11003_0.CA11003_1.CA11003_2;
 
begin
 
Report.Test ("CA11003", "Check that a public grandchild can utilize " &
"its ancestor unit's visible definitions");
 
File_Processing: -- Validate all of the capabilities contained in
-- the Menu package by exercising them on specific
-- files. This will demonstrate the use of child
-- and grandchild functionality based on components
-- that have been declared in the
-- parent/grandparent package.
declare
 
function Validate (File : CA11003_0.CA11003_1.Extended_File_Type)
return Boolean renames CA11003_0.CA11003_1.CA11003_3;
 
MacWrite_File,
Backup_Copy : CA11003_0.CA11003_1.Extended_File_Type;
MacWrite_File_Mode : CA11003_0.File_Mode := CA11003_0.Read_Write;
begin
Menu.News (MacWrite_File_Mode, MacWrite_File);
 
if not Validate (MacWrite_File) then
Report.Failed ("Incorrect initialization of files");
end if;
 
Menu.Copy (MacWrite_File, Backup_Copy);
 
if not (Validate (MacWrite_File) and
Validate (Backup_Copy))
then
Report.Failed ("Incorrect duplication of files");
end if;
 
Menu.Delete (Backup_Copy);
 
exception
when CA11003_0.File_Data_Error =>
Report.Failed ("Exception raised during file validation");
when CA11003_0.CA11003_1.File_Duplication_Error =>
Report.Failed ("Exception raised during file duplication");
when others =>
Report.Failed ("Unexpected exception in test procedure");
 
end File_Processing;
 
Report.Result;
 
end CA11003;
/ca110042.am
0,0 → 1,130
-- CA110042.AM
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that the private part of a child library unit package can
-- utilize its parent unit's visible definitions.
--
-- TEST DESCRIPTION:
-- Declare a public library unit package and child package, with the
-- child package having a private part in the specification. Within
-- this child private part, make use of components that are declared in
-- the visible part of the parent.
--
-- Demonstrate visibility to the following parent components in the
-- child private part:
-- Parent
-- Type X
-- Constant X
-- Object X
-- Subprogram X
-- Exception X
--
--
-- TEST FILES:
-- The following files comprise this test:
--
-- CA110040.A
-- CA110041.A
-- => CA110042.AM
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
with Report;
with CA110040.CA110041;
 
procedure CA110042 is
 
package System_Manager renames CA110040.CA110041;
use CA110040;
User1, User2, User3 : System_Manager.User_Account;
 
begin
 
Report.Test ("CA110042", "Check that the private part of a child " &
"library unit package can utilize its " &
"parent unit's visible definitions");
 
Assign_New_Accounts: -- This code simulates the entering of new
-- user accounts into a computer system.
-- It also simulates the processing that
-- could occur when the limit on system
-- accounts has been exceeded.
 
-- This processing block demonstrates the
-- use of child package functionality that
-- takes advantage of components declared in
-- the parent package.
begin
 
if Total_Accounts /= 2 then
Report.Failed ("Incorrect number of accounts currently allocated");
end if; -- At this point, both
-- System_Account and
-- Auditor_Account have
-- been declared and
-- initialized in package
-- CA110040.CA110041.
 
System_Manager.Initialize_User_Account (User1); -- User_ID has been
-- set to 3.
 
System_Manager.Initialize_User_Account (User2); -- User_ID has been
-- set to 4, which
-- is the last value
-- defined for the
-- CA110040.ID_Type
-- range.
 
System_Manager.Initialize_User_Account (User3); -- This final call will
-- result in an
-- Account_Limit_Exceeded
-- exception being raised.
 
Report.Failed ("Control should have transferred with exception");
 
exception
 
when Account_Limit_Exceeded =>
if (not (Administrator_Account.User_ID = ID_Type'First)) or
(User2.User_ID /= CA110040.ID_Type'Last)
then
Report.Failed ("Account initialization failure");
end if;
when others =>
Report.Failed ("Unexpected exception raised");
 
end Assign_New_Accounts;
 
if (User1.User_ID /= 3) or (User2.User_ID /= 4) then
Report.Failed ("Improper initialization of user accounts");
end if;
 
Report.Result;
 
end CA110042;
/ca13002.a
0,0 → 1,259
-- CA13002.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that two library child units and/or subunits may have the same
-- simple names if they have distinct expanded names.
--
-- TEST DESCRIPTION:
-- Declare a package that provides some primitive functionality (minimal
-- terminal driver operations in this case). Add child packages to
-- expand the functionality for different but related contexts (different
-- terminal kinds). Add child packages, or subunits, to the children to
-- provide the same high level operation for each of the different
-- contexts (terminals). Since the operations are the same, at the leaf
-- level they are likely to have the same names.
--
-- The main program "with"s the child packages. Check that the
-- child units and subunits perform as expected.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
-- Public parent.
package CA13002_0 is -- Terminal_Driver.
 
type TC_Name is (First_Child, Second_Child, Third_Child, Fourth_Child);
type TC_Call_From is (First_Grandchild, Second_Grandchild, First_Subunit,
Second_Subunit);
type TC_Calls_Arr is array (TC_Name, TC_Call_From) of boolean;
TC_Calls : TC_Calls_Arr := (others => (others => false));
 
-- In real application, Send_Control_Sequence sends keystrokes from
-- the terminal, i.e., space, escape, etc.
procedure Send_Control_Sequence (Row : in TC_Name;
Col : in TC_Call_From);
 
end CA13002_0;
 
--==================================================================--
 
-- First child.
package CA13002_0.CA13002_1 is -- Terminal_Driver.VT100
 
-- Move cursor up, down, left, or right.
procedure Move_Cursor (Col : in TC_Call_From);
 
end CA13002_0.CA13002_1;
 
--==================================================================--
 
-- First grandchild.
procedure CA13002_0.CA13002_1.CA13002_5; -- Terminal_Driver.VT100.Cursor_Up
 
--==================================================================--
 
-- Second child.
package CA13002_0.CA13002_2 is -- Terminal_Driver.IBM3270
 
procedure Move_Cursor (Col : in TC_Call_From);
 
end CA13002_0.CA13002_2;
 
--==================================================================--
 
-- Second grandchild.
procedure CA13002_0.CA13002_2.CA13002_5; -- Terminal_Driver.IBM3270.Cursor_Up
 
--==================================================================--
 
-- Third child.
package CA13002_0.CA13002_3 is -- Terminal_Driver.DOS_ANSI
 
procedure Move_Cursor (Col : in TC_Call_From);
 
procedure CA13002_5; -- Terminal_Driver.DOS_ANSI.Cursor_Up
-- implementation will be as a
-- separate subunit.
end CA13002_0.CA13002_3;
 
--==================================================================--
 
-- Fourth child.
package CA13002_0.CA13002_4 is -- Terminal_Driver.WYSE
 
procedure Move_Cursor (Col : in TC_Call_From);
 
procedure CA13002_5; -- Terminal_Driver.WYSE.Cursor_Up
-- implementation will be as a
-- separate subunit.
 
end CA13002_0.CA13002_4;
 
--==================================================================--
 
-- Terminal_Driver.
package body CA13002_0 is
 
procedure Send_Control_Sequence (Row : in TC_Name;
Col : in TC_Call_From) is
begin
-- Reads a key and takes action.
TC_Calls (Row, Col) := true;
end Send_Control_Sequence;
 
end CA13002_0;
 
--==================================================================--
 
-- Terminal_Driver.VT100.
package body CA13002_0.CA13002_1 is
 
procedure Move_Cursor (Col : in TC_Call_From) is
begin
Send_Control_Sequence (First_Child, Col);
end Move_Cursor;
 
end CA13002_0.CA13002_1;
 
--==================================================================--
 
-- Terminal_Driver.VT100.Cursor_Up.
procedure CA13002_0.CA13002_1.CA13002_5 is
begin
Move_Cursor (First_Grandchild); -- from Terminal_Driver.VT100.
end CA13002_0.CA13002_1.CA13002_5;
 
--==================================================================--
 
-- Terminal_Driver.IBM3270.
package body CA13002_0.CA13002_2 is
 
procedure Move_Cursor (Col : in TC_Call_From) is
begin
Send_Control_Sequence (Second_Child, Col);
end Move_Cursor;
 
end CA13002_0.CA13002_2;
 
--==================================================================--
 
-- Terminal_Driver.IBM3270.Cursor_Up.
procedure CA13002_0.CA13002_2.CA13002_5 is
begin
Move_Cursor (Second_Grandchild); -- from Terminal_Driver.IBM3270.
end CA13002_0.CA13002_2.CA13002_5;
 
--==================================================================--
 
-- Terminal_Driver.DOS_ANSI.
package body CA13002_0.CA13002_3 is
 
procedure Move_Cursor (Col : in TC_Call_From) is
begin
Send_Control_Sequence (Third_Child, Col);
end Move_Cursor;
 
procedure CA13002_5 is separate;
 
end CA13002_0.CA13002_3;
 
--==================================================================--
 
-- Terminal_Driver.DOS_ANSI.Cursor_Up.
separate (CA13002_0.CA13002_3)
procedure CA13002_5 is
begin
Move_Cursor (First_Subunit); -- from Terminal_Driver.DOS_ANSI.
end CA13002_5;
 
--==================================================================--
 
-- Terminal_Driver.WYSE.
package body CA13002_0.CA13002_4 is
 
procedure Move_Cursor (Col : in TC_Call_From) is
begin
Send_Control_Sequence (Fourth_Child, Col);
end Move_Cursor;
 
procedure CA13002_5 is separate;
 
end CA13002_0.CA13002_4;
 
--==================================================================--
 
-- Terminal_Driver.WYSE.Cursor_Up.
separate (CA13002_0.CA13002_4)
procedure CA13002_5 is
begin
Move_Cursor (Second_Subunit); -- from Terminal_Driver.WYSE.
end CA13002_5;
 
--==================================================================--
 
with CA13002_0.CA13002_1.CA13002_5; -- Terminal_Driver.VT100.Cursor_Up,
-- implicitly with parent, CA13002_0.
with CA13002_0.CA13002_2.CA13002_5; -- Terminal_Driver.IBM3270.Cursor_Up.
with CA13002_0.CA13002_3; -- Terminal_Driver.DOS_ANSI.
with CA13002_0.CA13002_4; -- Terminal_Driver.WYSE.
with Report;
use CA13002_0; -- All primitive subprograms directly
-- visible.
 
procedure CA13002 is
Expected_Calls : constant CA13002_0.TC_Calls_Arr
:= ((true, false, false, false),
(false, true , false, false),
(false, false, true , false),
(false, false, false, true ));
begin
Report.Test ("CA13002", "Check that two library units and/or subunits " &
"may have the same simple names if they have distinct " &
"expanded names");
 
-- Note that the leaves all have the same name.
-- Call the first grandchild.
CA13002_0.CA13002_1.CA13002_5;
 
-- Call the second grandchild.
CA13002_0.CA13002_2.CA13002_5;
 
-- Call the first subunit.
CA13002_0.CA13002_3.CA13002_5;
 
-- Call the second subunit.
CA13002_0.CA13002_4.CA13002_5;
 
if TC_Calls /= Expected_Calls then
Report.Failed ("Wrong result");
end if;
 
Report.Result;
 
end CA13002;
/ca11007.a
0,0 → 1,228
-- CA11007.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that the private part of a grandchild library unit can
-- utilize its grandparent unit's private definition.
--
-- TEST DESCRIPTION:
-- Declare a package, child package, and grandchild package, all
-- with private parts in their specifications.
--
-- The private part of the grandchild package will make use of components
-- that have been declared in the private part of the grandparent
-- specification.
--
-- The child package demonstrates the extension of a parent file type
-- into an abstraction of an analog file structure. The grandchild package
-- extends the grandparent file type into an abstraction of a digital
-- file structure, and provides conversion capability to/from the parent
-- analog file structure.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
package CA11007_0 is -- Package File_Package
 
type File_Descriptor is private;
type File_Type is tagged private;
 
function Next_Available_File return File_Descriptor;
 
private
 
type File_Measure_Type is range 0 .. 1000;
type File_Descriptor is new Integer;
 
Null_Measure : constant File_Measure_Type := File_Measure_Type'First;
Null_File : constant File_Descriptor := 0;
 
type File_Type is tagged
record
Descriptor : File_Descriptor := Null_File;
end record;
 
end CA11007_0; -- Package File_Package
 
--=================================================================--
 
package body CA11007_0 is -- Package body File_Package
 
File_Count : Integer := 0;
 
function Next_Available_File return File_Descriptor is
begin
File_Count := File_Count + 1;
return File_Descriptor (File_Count);
end Next_Available_File;
 
end CA11007_0; -- Package body File_Package
 
--=================================================================--
 
package CA11007_0.CA11007_1 is -- Child package Analog
 
type Analog_File_Type is new File_Type with private;
 
private
 
type Wavelength_Type is new File_Measure_Type;
 
Min_Wavelength : constant Wavelength_Type := Wavelength_Type'First;
 
type Analog_File_Type is new File_Type with -- Parent type.
record
Wavelength : Wavelength_Type := Min_Wavelength;
end record;
 
end CA11007_0.CA11007_1; -- Child package Analog
 
--=================================================================--
 
package CA11007_0.CA11007_1.CA11007_2 is -- Grandchild package Digital
 
type Digital_File_Type is new File_Type with private;
 
procedure Recording (File : out Digital_File_Type);
 
procedure Convert (From : in Analog_File_Type;
To : out Digital_File_Type);
 
function Validate (File : in Digital_File_Type) return Boolean;
function Valid_Conversion (To : Digital_File_Type) return Boolean;
function Valid_Initial (From : Analog_File_Type) return Boolean;
 
private
 
type Track_Type is new File_Measure_Type; -- Grandparent type.
 
Min_Tracks : constant Track_Type :=
Track_Type (Null_Measure) + Track_Type'First; -- Grandparent private
Max_Tracks : constant Track_Type := -- constant.
Track_Type (Null_Measure) + Track_Type'Last;
 
type Digital_File_Type is new File_Type with -- Grandparent type.
record
Tracks : Track_Type := Min_Tracks;
end record;
 
end CA11007_0.CA11007_1.CA11007_2; -- Grandchild package Digital
 
--=================================================================--
 
-- Grandchild package body Digital
package body CA11007_0.CA11007_1.CA11007_2 is
 
procedure Recording (File : out Digital_File_Type) is
begin
File.Descriptor := Next_Available_File; -- Assign new file descriptor.
File.Tracks := Max_Tracks; -- Change initial value.
end Recording;
--------------------------------------------------------------------------
procedure Convert (From : in Analog_File_Type;
To : out Digital_File_Type) is
begin
To.Descriptor := From.Descriptor + 100; -- Dummy conversion.
To.Tracks := Track_Type (From.Wavelength) / 2;
end Convert;
--------------------------------------------------------------------------
function Validate (File : in Digital_File_Type) return Boolean is
Result : Boolean := False;
begin
if not (File.Tracks /= Max_Tracks) then
Result := True;
end if;
return Result;
end Validate;
--------------------------------------------------------------------------
function Valid_Conversion (To : Digital_File_Type) return Boolean is
begin
return (To.Descriptor = 100) and (To.Tracks = (Min_Tracks / 2));
end Valid_Conversion;
--------------------------------------------------------------------------
function Valid_Initial (From : Analog_File_Type) return Boolean is
begin
return (From.Wavelength = Min_Wavelength); -- Validate initial
end Valid_Initial; -- conditions.
 
end CA11007_0.CA11007_1.CA11007_2; -- Grandchild package body Digital
 
--=================================================================--
 
with CA11007_0.CA11007_1.CA11007_2; -- with Grandchild package Digital
with Report;
 
procedure CA11007 is
 
package Analog renames CA11007_0.CA11007_1;
package Digital renames CA11007_0.CA11007_1.CA11007_2;
 
Original_Digital_File,
Converted_Digital_File : Digital.Digital_File_Type;
 
Original_Analog_File : Analog.Analog_File_Type;
 
begin
-- This code demonstrates how private extensions could be utilized
-- in child packages to allow for recording on different media.
-- The processing contained in the procedures and functions is
-- "dummy" processing, not intended to perform actual recording,
-- conversion, or validation operations, but simply to demonstrate
-- this type of structural decomposition as a possible solution to
-- a user's design problem.
 
Report.Test ("CA11007", "Check that the private part of a grandchild " &
"library unit can utilize its grandparent " &
"unit's private definition");
 
if not Digital.Valid_Initial (Original_Analog_File)
then
Report.Failed ("Incorrect initialization of Analog File");
end if;
 
---
 
Digital.Convert (From => Original_Analog_File, -- Convert file to
To => Converted_Digital_File); -- digital format.
 
if not Digital.Valid_Conversion (To => Converted_Digital_File) then
Report.Failed ("Incorrect conversion of analog file");
end if;
---
 
Digital.Recording (Original_Digital_File); -- Create file in
-- digital format.
if not Digital.Validate (Original_Digital_File) then
Report.Failed ("Incorrect recording of digital file");
end if;
 
Report.Result;
 
end CA11007;
/ca1102a0.ada
0,0 → 1,31
-- CA1102A0.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 6/12/81
 
PACKAGE CA1102A0 IS -- BODY IS IN CA1102A1.
 
PROCEDURE P (INVOKED : IN OUT BOOLEAN);
 
END CA1102A0;
/ca1102a2.ada
0,0 → 1,58
-- CA1102A2M.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT MORE THAN ONE WITH_CLAUSE CAN APPEAR IN
-- A CONTEXT_SPECIFICATION.
-- CHECK THAT USE_CLAUSES CAN MENTION NAMES MADE
-- VISIBLE BY PRECEDING WITH_CLAUSES IN THE SAME
-- CONTEXT_SPECIFICATION.
-- CHECK THAT CONSECUTIVE USE_CLAUSES ARE ALLOWED.
 
-- SEPARATE FILES ARE:
-- CA1102A0 A LIBRARY PACKAGE DECLARATION.
-- CA1102A1 A LIBRARY PACKAGE BODY (CA1102A0).
-- CA1102A2M THE MAIN PROCEDURE.
 
-- WKB 6/12/81
-- BHS 7/19/84
 
WITH CA1102A0;
WITH REPORT; USE CA1102A0; USE REPORT;
PROCEDURE CA1102A2M IS
 
 
INVOKED : BOOLEAN := FALSE;
 
BEGIN
TEST ("CA1102A", "MORE THAN ONE WITH_CLAUSE; ALSO, A " &
"USE_CLAUSE REFERING TO A PRECEDING WITH_CLAUSE " &
"IN THE SAME CONTEXT_SPECIFICATION");
 
P (INVOKED);
IF NOT INVOKED THEN
FAILED ("COMPILATION UNIT NOT MADE VISIBLE");
END IF;
 
RESULT;
END CA1102A2M;
/ca200020.a
0,0 → 1,70
-- CA200020.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687 and
-- F08630-91-C-0015, the U.S. Government obtained unlimited rights in the
-- software and documentation contained herein. Unlimited rights are
-- defined in DFAR 252.227-7013(a)(19). By making this public release,
-- the Government intends to confer upon all recipients unlimited rights
-- equal to those held by the Government. These rights include rights to
-- use, duplicate, release or disclose the released technical data and
-- computer software in whole or in part, in any manner and for any purpose
-- whatsoever, and to have or permit others to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that a partition can be created even if the environment contains
-- two units with the same name. (This is rule 10.2(19)).
--
-- TEST DESCRIPTION:
-- Declare the a parent package (CA20002_0). Declare a child package
-- (CA20002_0.CA20002_1). Declare a subunit in the parent package body
-- (CA20002_1). Declare a main subprogram that does NOT include the
-- child package. Insure that this partition can be created.
--
-- This test is intended to test the effects of program maintenance.
-- After the programmer receives an error from creating a partition
-- like that tested in test LA20001, the programmer may then repair
-- the partition by eliminating the reference of the child unit. The
-- partition should be able to be created.
--
-- To build this test:
-- 1) Compile the file CA200020 (and include the results in the
-- program library).
-- 2) Compile the file CA200021 (and include the results in the
-- program library).
-- 3) Compile the file CA200022 (and include the results in the
-- program library).
-- 4) Build an executable image, and run it.
--
-- TEST FILES:
-- This test consists of the following files:
-- -> CA200020.A
-- CA200021.A
-- CA200022.AM
--
-- CHANGE HISTORY:
-- 27 Jan 99 RLB Initial test.
-- 20 Mar 00 RLB Removed special requirements, because there
-- aren't any.
--!
 
package CA20002_0 is
procedure Do_a_Little (A : out Integer);
 
end CA20002_0;
 
package CA20002_0.CA20002_1 is
My_Global : Integer;
end CA20002_0.CA20002_1;
 
/ca11d013.am
0,0 → 1,256
-- CA11D013.AM
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that a child unit can raise an exception that is declared in
-- parent.
--
-- TEST DESCRIPTION:
-- Declare a package which defines complex number abstraction with
-- user-defined exceptions (foundation code).
--
-- Add a public child package to the above package. Declare two
-- subprograms for the parent type. Each of the subprograms raises a
-- different exception, based on the value of an input parameter.
--
-- Add a public child procedure to the foundation package. This
-- procedure raises an exception based on the value of an input
-- parameter.
--
-- Add a public child function to the foundation package. This
-- function raises an exception based on the value of an input
-- parameter.
--
-- In the main program, "with" the child packages, then check that
-- the exceptions are raised and handled as expected. Ensure that
-- exceptions are:
-- 1) raised in the public child package and handled/reraised to
-- be handled by the main program.
-- 2) raised and handled locally in the public child package.
-- 3) raised and handled locally by "others" in the public child
-- procedure.
-- 4) raised in the public child function and propagated to the
-- main program.
--
-- TEST FILES:
-- The following files comprise this test:
--
-- FA11D00.A
-- CA11D010.A
-- CA11D011.A
-- CA11D012.A
-- => CA11D013.AM
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
 
with FA11D00.CA11D010; -- Add_Subtract_Complex
with FA11D00.CA11D011; -- Multiply_Complex
with FA11D00.CA11D012; -- Divide_Complex
 
with Report;
 
 
procedure CA11D013 is
 
package Complex_Pkg renames FA11D00;
package Add_Subtract_Complex_Pkg renames FA11D00.CA11D010;
use Complex_Pkg;
 
begin
 
Report.Test ("CA11D013", "Check that a child unit can raise an " &
"exception that is declared in parent");
 
 
Add_Complex_Subtest:
declare
First : Complex_Type := Complex (Int_Type (Report.Ident_Int (3)),
Int_Type (Report.Ident_Int (7)));
Second : Complex_Type := Complex (Int_Type (Report.Ident_Int (5)),
Int_Type (Report.Ident_Int (3)));
Add_Result : Complex_Type := Complex (Int_Type (Report.Ident_Int (8)),
Int_Type (Report.Ident_Int (10)));
Third : Complex_Type := Complex (Int_Type(Report.Ident_Int(-100)),
Int_Type (Report.Ident_Int (100)));
Complex_Num : Complex_Type := Zero;
 
begin
Add_Subtract_Complex_Pkg.Add (First, Second, Complex_Num);
 
if (Complex_Num /= Add_Result) then
Report.Failed ("Incorrect results from addition");
end if;
-- Error is raised in child package and exception
-- will be handled/reraised to caller.
 
Add_Subtract_Complex_Pkg.Add (First, Third, Complex_Num);
 
-- Error was not raised in child package.
Report.Failed ("Exception was not reraised in addition");
 
exception
when Add_Error =>
if not TC_Handled_In_Child_Pkg_Proc then
Report.Failed ("Exception was not raised in addition");
else
TC_Handled_In_Caller := true; -- Exception is reraised from
-- child package.
end if;
 
when others =>
Report.Failed ("Unexpected exception in addition subtest");
TC_Handled_In_Caller := false; -- Improper exception handling
-- in caller.
 
end Add_Complex_Subtest;
 
 
Subtract_Complex_Subtest:
declare
First : Complex_Type := Complex (Int_Type (Report.Ident_Int (3)),
Int_Type (Report.Ident_Int (6)));
Second : Complex_Type := Complex (Int_Type (Report.Ident_Int (5)),
Int_Type (Report.Ident_Int (7)));
Sub_Result : Complex_Type := Complex (Int_Type (Report.Ident_Int (2)),
Int_Type (Report.Ident_Int (1)));
Third : Complex_Type := Complex (Int_Type(Report.Ident_Int(-200)),
Int_Type (Report.Ident_Int (1)));
Complex_Num : Complex_Type;
 
begin
Complex_Num := Add_Subtract_Complex_Pkg.Subtract (Second, First);
 
if (Complex_Num /= Sub_Result) then
Report.Failed ("Incorrect results from subtraction");
end if;
-- Error is raised and exception will be handled in child package.
Complex_Num := Add_Subtract_Complex_Pkg.Subtract (Second, Third);
 
exception
when Subtract_Error =>
Report.Failed ("Exception raised in subtraction and " &
"propagated to caller");
TC_Handled_In_Child_Pkg_Func := false; -- Improper exception handling
-- in caller.
 
when others =>
Report.Failed ("Unexpected exception in subtraction subtest");
TC_Handled_In_Child_Pkg_Func := false; -- Improper exception handling
-- in caller.
 
end Subtract_Complex_Subtest;
 
 
Multiply_Complex_Subtest:
declare
First : Complex_Type := Complex (Int_Type(Report.Ident_Int(3)),
Int_Type (Report.Ident_Int (4)));
Second : Complex_Type := Complex (Int_Type(Report.Ident_Int(5)),
Int_Type (Report.Ident_Int (3)));
Mult_Result : Complex_Type := Complex(Int_Type(Report.Ident_Int(15)),
Int_Type(Report.Ident_Int (12)));
Third : Complex_Type := Complex(Int_Type(Report.Ident_Int(10)),
Int_Type(Report.Ident_Int (-10)));
Complex_Num : Complex_Type;
 
begin
CA11D011 (First, Second, Complex_Num);
 
if (Complex_Num /= Mult_Result) then
Report.Failed ("Incorrect results from multiplication");
end if;
-- Error is raised and exception will be handled in child package.
CA11D011 (First, Third, Complex_Num);
 
exception
when Multiply_Error =>
Report.Failed ("Exception raised in multiplication and " &
"propagated to caller");
TC_Handled_In_Child_Sub := false; -- Improper exception handling
-- in caller.
 
when others =>
Report.Failed ("Unexpected exception in multiplication subtest");
TC_Handled_In_Child_Sub := false; -- Improper exception handling
-- in caller.
end Multiply_Complex_Subtest;
 
 
Divide_Complex_Subtest:
declare
First : Complex_Type := Complex (Int_Type (Report.Ident_Int(10)),
Int_Type (Report.Ident_Int (15)));
Second : Complex_Type := Complex (Int_Type(Report.Ident_Int(5)),
Int_Type (Report.Ident_Int (3)));
Div_Result : Complex_Type := Complex (Int_Type(Report.Ident_Int(2)),
Int_Type (Report.Ident_Int (5)));
Third : Complex_Type := Complex (Int_Type(Report.Ident_Int(-10)),
Int_Type (Report.Ident_Int (0)));
Complex_Num : Complex_Type := Zero;
 
begin
Complex_Num := CA11D012 (First, Second);
 
if (Complex_Num /= Div_Result) then
Report.Failed ("Incorrect results from division");
end if;
-- Error is raised in child package; exception will be
-- propagated to caller.
Complex_Num := CA11D012 (Second, Third);
 
-- Error was not raised in child package.
Report.Failed ("Exception was not raised in division subtest ");
 
exception
when Divide_Error =>
TC_Propagated_To_Caller := true; -- Exception is propagated.
 
when others =>
Report.Failed ("Unexpected exception in division subtest");
TC_Propagated_To_Caller := false; -- Improper exception handling
-- in caller.
end Divide_Complex_Subtest;
 
 
if not (TC_Handled_In_Caller and -- Check to see that all
TC_Handled_In_Child_Pkg_Proc and -- exceptions were handled in
TC_Handled_In_Child_Pkg_Func and -- the proper locations.
TC_Handled_In_Child_Sub and
TC_Propagated_To_Caller)
then
Report.Failed ("Exceptions handled in incorrect locations");
end if;
 
Report.Result;
 
end CA11D013;
/ca110050.a
0,0 → 1,99
-- CA110050.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- See CA110051.AM
--
-- TEST DESCRIPTION:
-- See CA110051.AM
--
-- TEST FILES:
-- The test consists of the following files:
--
-- => CA110050.A
-- CA110051.AM
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
-- 21 Dec 94 SAIC Modified discriminant type
-- 26 Apr 96 SAIC ACVC 2.1: Modified prologue; Added pragma
-- Elaborate_Body.
--
--!
package CA110050_0 is -- Package Messages.
pragma Elaborate_Body (CA110050_0);
 
type Descriptor is new Integer;
 
Null_Descriptor_Value : constant Descriptor := 0;
Null_Message_Descriptor : constant Descriptor := 0;
 
type Message_Type is tagged
record
Number : Descriptor := Null_Message_Descriptor;
end record;
 
function Next_Available_Message return Descriptor;
 
end CA110050_0; -- Package Messages.
 
--=================================================================--
 
package body CA110050_0 is -- Package body Messages.
 
Message_Count : Integer := 0;
 
function Next_Available_Message return Descriptor is
begin
Message_Count := Message_Count + 5;
return (Descriptor(Message_Count));
end Next_Available_Message;
 
end CA110050_0; -- Package body Messages.
 
--=================================================================--
 
package CA110050_0.CA110050_1 is -- Child package Messages.Text
 
subtype Default_Length is Natural range 0 .. 80;
 
type Text_Type (Max_Length : Default_Length := 0) is
record
Length : Default_Length := Max_Length;
Text_Field : String (1 .. Max_Length);
end record;
 
type Text_Message_Type is new Message_Type with
record
Text : Text_Type;
end record;
 
Null_Text : Text_Type (0); -- Null range for
-- Text_Field component.
 
end CA110050_0.CA110050_1; -- Child package Messages.Text
--
-- No package body needed for this specification.
/ca2009f1.ada
0,0 → 1,43
-- CA2009F1.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- SEPARATE GENERIC PROCEDURE BODY.
-- SPECIFICATION, BODY STUB, AND INSTANTIATION ARE IN A2009F0M.DEP.
 
-- APPLICABILITY CRITERIA:
-- THIS UNIT MUST BE ACCEPTED BY ALL ADA 95 IMPLEMENTATIONS.
 
-- HISTORY:
-- BHS 08/01/84 CREATED ORIGINAL TEST.
-- PWB 02/19/86 MODIFIED COMMENTS TO SHOW RELATION TO OTHER FILES
-- AND TO CLARIFY NON-APPLICABILITY.
-- BCB 01/05/88 MODIFIED HEADER.
-- EDS 08/04/98 REMOVE CONTROL Z AT END OF FILE.
-- RLB 09/13/99 UPDATED APPLICABILITY CRITERIA FOR ADA 95.
 
SEPARATE (CA2009F0M)
PROCEDURE PROC1 IS
BEGIN
PVAR1 := PCON1;
END PROC1;
/ca1004a.ada
0,0 → 1,77
-- CA1004A.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT A PACKAGE DECLARATION AND BODY CAN BE
-- SUBMITTED TOGETHER FOR COMPILATION.
 
-- JRK 5/12/81
 
 
PACKAGE CA1004A_PKG IS
 
I : INTEGER := 0;
 
PROCEDURE P (I : IN OUT INTEGER);
 
END CA1004A_PKG;
 
 
PACKAGE BODY CA1004A_PKG IS
 
PROCEDURE P (I : IN OUT INTEGER) IS
BEGIN
I := I + 1;
END P;
 
BEGIN
 
I := 10;
 
END CA1004A_PKG;
 
 
WITH REPORT, CA1004A_PKG;
USE REPORT;
 
PROCEDURE CA1004A IS
 
I : INTEGER := IDENT_INT (0);
 
BEGIN
TEST ("CA1004A", "A PACKAGE DECLARATION AND BODY SUBMITTED " &
"TOGETHER");
 
CA1004A_PKG.I := CA1004A_PKG.I + IDENT_INT(5);
IF CA1004A_PKG.I /= 15 THEN
FAILED ("PACKAGED VARIABLE NOT ACCESSIBLE OR " &
"PACKAGE BODY NOT EXECUTED");
END IF;
 
CA1004A_PKG.P (I);
IF I /= 1 THEN
FAILED ("PACKAGED PROCEDURE NOT EXECUTED");
END IF;
 
RESULT;
END CA1004A;
/ca5004a.ada
0,0 → 1,105
-- CA5004A.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT IF PRAGMA ELABORATE IS APPLIED TO A PACKAGE THAT DECLARES
-- A TASK OBJECT, THE IMPLICIT PACKAGE BODY IS ELABORATED AND THE TASK
-- IS ACTIVATED.
 
-- BHS 8/03/84
-- JRK 9/20/84
-- PWN 01/31/95 ADDED A PROCEDURE TO REQUIRE A BODY FOR ADA 9X.
 
 
PACKAGE CA5004A0 IS
 
TASK TYPE TSK IS
ENTRY E (VAR : OUT INTEGER);
END TSK;
 
END CA5004A0;
 
 
PACKAGE BODY CA5004A0 IS
 
TASK BODY TSK IS
BEGIN
ACCEPT E (VAR : OUT INTEGER) DO
VAR := 4;
END E;
END TSK;
 
END CA5004A0;
 
 
WITH CA5004A0; USE CA5004A0; PRAGMA ELABORATE (CA5004A0);
PACKAGE CA5004A1 IS
 
T : TSK;
 
END CA5004A1;
 
 
PACKAGE CA5004A2 IS
PROCEDURE REQUIRE_BODY;
END CA5004A2;
 
 
WITH REPORT; USE REPORT;
WITH CA5004A1; USE CA5004A1;
PRAGMA ELABORATE (CA5004A1, REPORT);
PACKAGE BODY CA5004A2 IS
 
I : INTEGER := 1;
 
PROCEDURE REQUIRE_BODY IS
BEGIN
NULL;
END;
BEGIN
 
TEST ("CA5004A", "APPLYING PRAGMA ELABORATE TO A PACKAGE " &
"DECLARING A TASK OBJECT CAUSES IMPLICIT " &
"BODY ELABORATION AND TASK ACTIVATION");
 
SELECT
T.E(I);
IF I /= 4 THEN
FAILED ("TASK NOT EXECUTED PROPERLY");
END IF;
OR
DELAY 10.0;
FAILED ("TASK NOT ACTIVATED AFTER 10 SECONDS");
END SELECT;
 
END CA5004A2;
 
 
WITH CA5004A2;
WITH REPORT; USE REPORT;
PROCEDURE CA5004A IS
BEGIN
 
RESULT;
 
END CA5004A;
/ca200022.am
0,0 → 1,64
-- CA200022.AM
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687 and
-- F08630-91-C-0015, the U.S. Government obtained unlimited rights in the
-- software and documentation contained herein. Unlimited rights are
-- defined in DFAR 252.227-7013(a)(19). By making this public release,
-- the Government intends to confer upon all recipients unlimited rights
-- equal to those held by the Government. These rights include rights to
-- use, duplicate, release or disclose the released technical data and
-- computer software in whole or in part, in any manner and for any purpose
-- whatsoever, and to have or permit others to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- See CA200020.A.
--
-- TEST DESCRIPTION:
-- See CA200020.A.
--
-- TEST FILES:
-- This test consists of the following files:
-- CA200020.A
-- CA200021.A
-- -> CA200022.AM
--
-- PASS/FAIL CRITERIA:
-- See CA200020.A.
--
-- CHANGE HISTORY:
-- 25 JAN 99 RLB Initial version.
-- 08 JUL 99 RLB Repaired comments.
-- 20 MAR 00 RLB Removed special requirements, because there
-- aren't any.
--!
 
with Report;
use Report;
with CA20002_0; -- Child unit not included in the partition.
procedure CA200022 is
Value : Integer := 0;
begin
Test ("CA20002","Check that compiling multiple units with the same " &
"name does not prevent the creation of a partition " &
"using only one of the units.");
CA20002_0.Do_a_Little (Value);
if Report.Equal (Value, 5) then
null; -- OK.
else
Failed ("Wrong result from subunit");
end if;
 
Result;
end CA200022;
/ca11012.a
0,0 → 1,259
-- CA11012.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that a child package of a library level instantiation
-- of a generic can be the instantiation of a child package of
-- the generic. Check that the child instance can use its parent's
-- declarations and operations, including a formal type of the parent.
--
-- TEST DESCRIPTION:
-- Declare a generic package which simulates an integer complex
-- abstraction. Declare a generic child package of this package
-- which defines additional complex operations.
--
-- Instantiate the first generic package, then instantiate the child
-- generic package as a child unit of the first instance. In the main
-- program, check that the operations in both instances perform as
-- expected.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
-- 21 Dec 94 SAIC Corrected visibility errors for literals
-- 27 Feb 97 PWB.CTA Added elaboration pragma at package CA11012_3
--!
 
generic -- Complex number abstraction.
type Int_Type is range <>;
 
package CA11012_0 is
-- Simulate a generic complex number support package. Complex numbers
-- are treated as coordinates in the Cartesian plane.
 
type Complex_Type is private;
 
Zero : constant Complex_Type; -- Real number (0,0).
 
function Complex (Real, Imag : Int_Type) -- Create a complex
return Complex_Type; -- number.
 
function "-" (Right : Complex_Type) -- Invert a complex
return Complex_Type; -- number.
 
function "+" (Left, Right : Complex_Type) -- Add two complex
return Complex_Type; -- numbers.
 
private
type Complex_Type is record
Real : Int_Type;
Imag : Int_Type;
end record;
 
Zero : constant Complex_Type := (Real => 0, Imag => 0);
 
end CA11012_0;
 
--==================================================================--
 
package body CA11012_0 is
 
function Complex (Real, Imag : Int_Type) return Complex_Type is
begin
return (Real, Imag);
end Complex;
---------------------------------------------------------------
function "-" (Right : Complex_Type) return Complex_Type is
begin
return (-Right.Real, -Right.Imag);
end "-";
---------------------------------------------------------------
function "+" (Left, Right : Complex_Type) return Complex_Type is
begin
return ( (Left.Real + Right.Real, Left.Imag + Right.Imag) );
end "+";
 
end CA11012_0;
 
--==================================================================--
 
-- Generic child of complex number package. Child must be generic since
-- parent is generic.
 
generic -- Complex additional operations
 
package CA11012_0.CA11012_1 is
-- More operations on complex number. This child adds a layer of
-- functionality to the parent generic.
 
function Real_Part (Complex_No : Complex_Type)
return Int_Type;
 
function Imag_Part (Complex_No : Complex_Type)
return Int_Type;
 
function "*" (Factor : Int_Type;
C : Complex_Type) return Complex_Type;
 
function Vector_Magnitude (Complex_No : Complex_Type)
return Int_Type;
 
end CA11012_0.CA11012_1;
 
--==================================================================--
 
package body CA11012_0.CA11012_1 is
 
function Real_Part (Complex_No : Complex_Type) return Int_Type is
begin
return (Complex_No.Real);
end Real_Part;
---------------------------------------------------------------
function Imag_Part (Complex_No : Complex_Type) return Int_Type is
begin
return (Complex_No.Imag);
end Imag_Part;
---------------------------------------------------------------
function "*" (Factor : Int_Type;
C : Complex_Type) return Complex_Type is
Result : Complex_Type := Zero; -- Zero is declared in parent,
-- Complex_Number
begin
for I in 1 .. abs (Factor) loop
Result := Result + C; -- Complex_Number "+"
end loop;
 
if Factor < 0 then
Result := - Result; -- Complex_Number "-"
end if;
 
return Result;
end "*";
---------------------------------------------------------------
function Vector_Magnitude (Complex_No : Complex_Type)
return Int_Type is -- Not a real vector magnitude.
begin
return (Complex_No.Real + Complex_No.Imag);
end Vector_Magnitude;
 
end CA11012_0.CA11012_1;
 
--==================================================================--
 
package CA11012_2 is
 
subtype My_Integer is integer range -100 .. 100;
 
-- ... Various other types used by the application.
 
end CA11012_2;
 
-- No body for CA11012_2;
 
--==================================================================--
 
-- Declare instances of the generic complex packages for integer type.
-- The instance of the child must itself be declared as a child of the
-- instance of the parent.
 
with CA11012_0; -- Complex number abstraction
with CA11012_2; -- Package containing integer type
pragma Elaborate (CA11012_0);
package CA11012_3 is new CA11012_0 (Int_Type => CA11012_2.My_Integer);
 
with CA11012_0.CA11012_1; -- Complex additional operations
with CA11012_3;
package CA11012_3.CA11012_4 is new CA11012_3.CA11012_1;
 
--==================================================================--
 
with CA11012_2; -- Package containing integer type
with CA11012_3.CA11012_4; -- Complex abstraction + additional operations
with Report;
 
procedure CA11012 is
 
package My_Complex_Pkg renames CA11012_3;
 
package My_Complex_Operation renames CA11012_3.CA11012_4;
 
use My_Complex_Pkg, -- All user-defined
My_Complex_Operation; -- operators directly
-- visible.
Complex_One, Complex_Two : Complex_Type;
 
begin
 
Report.Test ("CA11012", "Check that child instance can use its parent's " &
"declarations and operations, including a formal " &
"type of the parent");
 
Correct_Range_Test:
declare
My_Literal : CA11012_2.My_Integer := -3;
 
begin
Complex_One := Complex (-4, 7); -- Operation from the generic
-- parent package.
 
Complex_Two := My_Literal * Complex_One; -- Operation from the generic
-- child package.
 
if Real_Part (Complex_Two) /= 12 -- Operation from the generic
or Imag_Part (Complex_Two) /= -21 -- child package.
then
Report.Failed ("Incorrect results from complex operation");
end if;
 
end Correct_Range_Test;
 
---------------------------------------------------------------
 
Out_Of_Range_Test:
declare
My_Vector : CA11012_2.My_Integer;
 
begin
Complex_One := Complex (70, 70); -- Operation from the generic
-- parent package.
My_Vector := Vector_Magnitude (Complex_One);
-- Operation from the generic child package.
 
Report.Failed ("Exception not raised in child package");
 
exception
when Constraint_Error =>
Report.Comment ("Exception is raised as expected");
 
when others =>
Report.Failed ("Others exception is raised");
 
end Out_Of_Range_Test;
 
Report.Result;
 
end CA11012;
/ca110051.am
0,0 → 1,224
-- CA110051.AM
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that entities and operations declared in a package can be used
-- in the private part of a child of a child of the package.
--
-- TEST DESCRIPTION:
-- Declare a series of library unit packages -- parent, child, and
-- grandchild. The grandchild package will have a private part.
-- From within the private part of the grandchild, make use of
-- components declared in the parent and grandparent packages.
--
-- TEST FILES:
-- The test consists of the following files:
--
-- CA110050.A
-- => CA110051.AM
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
 
-- Grandchild Package Message.Text.Encoded
package CA110050_0.CA110050_1.CA110050_2 is
 
type Coded_Message is new Text_Message_Type with private;
 
procedure Send (Message : in Coded_Message;
Confirm : out Coded_Message;
Status : out Boolean);
 
function Encode (Message : Text_Message_Type) return Coded_Message;
function Decode (Message : Coded_Message) return Boolean;
function Test_Connection return Boolean;
 
private
 
Uncoded : Descriptor renames Null_Descriptor_Value; -- Grandparent object.
 
type Coded_Message is new Text_Message_Type with -- Parent type.
record
Key : Descriptor := Uncoded;
Coded_Key : Descriptor := Next_Available_Message;
-- Grandparent type, grandparent function.
Scrambled : Text_Type := Null_Text; -- Parent object.
end record;
 
Coded_Msg : Coded_Message;
 
type Blank_Message is new Message_Type with -- Grandparent type.
record
ID : Descriptor := Next_Available_Message;
-- Grandparent type, grandparent function.
end record;
 
Test_Message : Blank_Message;
 
Confirm_String : constant String := "OK";
Scrambled_String : constant String := "KO";
 
Confirm_Text : Text_Type (Confirm_String'Length) :=
(Max_Length => Confirm_String'Length,
Length => Confirm_String'Length,
Text_Field => Confirm_String);
 
Scrambled_Text : Text_Type (Scrambled_String'Length) :=
(Max_Length => Scrambled_String'Length,
Length => Scrambled_String'Length,
Text_Field => Scrambled_String);
end CA110050_0.CA110050_1.CA110050_2; -- Grandchild Pkg Message.Text.Encoded
 
--=================================================================--
 
-- Grandchild Package body Message.Text.Encoded
package body CA110050_0.CA110050_1.CA110050_2 is
 
procedure Send (Message : in Coded_Message;
Confirm : out Coded_Message;
Status : out Boolean) is
 
Confirmation_Message : Coded_Message :=
(Number => Message.Number,
Text => Confirm_Text,
Key => Message.Number,
Coded_Key => Message.Number,
Scrambled => Scrambled_Text);
 
begin -- Dummy processing unit.
Confirm := Confirmation_Message;
if Confirm.Number /= Null_Message_Descriptor then
Status := True;
else
Status := False;
end if;
end Send;
-------------------------------------------------------------------------
function Encode (Message : Text_Message_Type) return Coded_Message is
begin
Coded_Msg.Number := Message.Number;
if Message.Text.Length > 0 then
Coded_Msg.Text := Message.Text; -- Record assignment.
Coded_Msg.Key := Message.Number; -- Same as msg number.
Coded_Msg.Coded_Key := Message.Number; -- Same as msg number.
Coded_Msg.Scrambled := Message.Text; -- Dummy processing.
end if;
return (Coded_Msg);
end Encode;
-------------------------------------------------------------------------
function Decode (Message : Coded_Message) return Boolean is
Decoded : Boolean := False;
begin
if (Message.Text.Length = Confirm_String'Length) and then
(Message.Text.Text_Field = Confirm_String) and then
(Message.Scrambled.Length = Scrambled_String'Length) and then
(Message.Scrambled.Text_Field = Scrambled_String) and then
(Message.Coded_Key = 15)
then
Decoded := True;
end if;
return (Decoded);
end Decode;
-------------------------------------------------------------------------
function Test_Connection return Boolean is
begin
return Test_Message.Id = 10;
end Test_Connection;
 
end CA110050_0.CA110050_1.CA110050_2;
-- Grandchild Package body Message.Text.Encoded
--=================================================================--
 
with CA110050_0.CA110050_1.CA110050_2;
with Report;
 
procedure CA110051 is
 
package Message_Package renames CA110050_0.CA110050_1;
package Code_Package renames CA110050_0.CA110050_1.CA110050_2;
 
Message_String : constant String := "One if by land, two if by sea";
 
Message_Text : Message_Package.Text_Type (Message_String'Length) :=
(Max_Length => Message_String'Length,
Length => Message_String'Length,
Text_Field => Message_String);
 
Message : Message_Package.Text_Message_Type :=
(Number => CA110050_0.Next_Available_Message,
Text => Message_Text);
 
Confirmation_Message : Code_Package.Coded_Message;
Verification_OK : Boolean := False;
Transmission_OK : Boolean := False;
 
begin
 
-- This test simulates the use of child library unit packages to implement
-- a message encoding and transmission scheme. The full capability of the
-- encoding and transmission mechanisms are not developed here, but the
-- intent is to demonstrate that a grandchild library unit package with a
-- private part will provide the framework for this type of processing.
 
Report.Test ("CA110051", "Check that entities and operations declared " &
"in a package can be used in the private part " &
"of a child of a child of the package");
 
-- The following code demonstrates the use
-- of functionality contained in a grandchild
-- library unit. The grandchild unit made use
-- of components declared in the ancestor
-- packages.
Code_Package.Send -- Message object declared
(Message => Code_Package.Encode (Message), -- above in "encoded" by a
Confirm => Confirmation_Message, -- call to grandchild pkg
Status => Transmission_OK); -- function call, reseting
-- fields and returning a
-- coded message to the
-- parameter. The confirm
-- parameter receives an
-- encoded message value
-- from proc Send, which is
-- "decoded"/verified below.
 
if not Code_Package.Test_Connection then
Report.Failed ("Bad initialization");
end if;
 
Verification_OK := Code_Package.Decode (Confirmation_Message);
 
if not (Transmission_OK and Verification_OK) then
Report.Failed ("Message transmission failure");
end if;
 
Report.Result;
 
end CA110051;
/ca11016.a
0,0 → 1,321
-- CA11016.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that a child of a non-generic package can be a private generic
-- package. Check that the private child instance can use its parent's
-- declarations and operations. Check that the body of a public child
-- package can instantiate its sibling private generic package.
--
-- TEST DESCRIPTION:
-- Declare a map abstraction in a package which manages basic physical
-- map[s]. Declare a private generic child of this package which can be
-- instantiated for any display device which has display locations of
-- the physical map that can be characterized by any integer type, i.e.,
-- the intensity of the display point.
--
-- Declare a public child of the physical map which specifies the
-- display device. In the body of this child, declare an instance of
-- its generic sibling to display the geographic locations.
--
-- In the main program, check that the operations in the parent, public
-- child and instance of the private child package perform as expected.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
-- 17 Apr 96 SAIC ACVC 2.1: Added pragma Elaborate.
--
--!
 
-- Simulates map of physical features, i.e., desert, forest, or water.
 
package CA11016_0 is
type Map_Type is private;
subtype Latitude is integer range 1 .. 9;
subtype Longitude is integer range 1 .. 7;
 
type Physical_Features is (Desert, Forest, Water);
-- Use geographic database to initialize the basic map.
 
procedure Initialize_Basic_Map (Map : in out Map_Type);
 
function Get_Physical_Feature (Lat : Latitude;
Long : Longitude;
Map : Map_Type) return Physical_Features;
 
private
type Map_Type is array (Latitude, Longitude) of Physical_Features;
Basic_Map : Map_Type;
 
end CA11016_0;
 
--==================================================================--
 
package body CA11016_0 is
 
procedure Initialize_Basic_Map (Map : in out Map_Type) is
-- Not a real initialization. Real application can use geographic
-- database to create the basic map.
 
begin
for I in Latitude'first .. Latitude'last loop
for J in 1 .. 2 loop
Map (I, J) := Desert;
end loop;
for J in 3 .. 4 loop
Map (I, J) := Forest;
end loop;
for J in 5 .. 7 loop
Map (I, J) := Water;
end loop;
end loop;
 
end Initialize_Basic_Map;
--------------------------------------------------------
function Get_Physical_Feature (Lat : Latitude;
Long : Longitude;
Map : Map_Type)
return Physical_Features is
begin
return (Map (Lat, Long));
end Get_Physical_Feature;
--------------------------------------------------------
 
begin
-- Initialize a basic map.
Initialize_Basic_Map (Basic_Map);
 
end CA11016_0;
 
--==================================================================--
 
-- Private generic child package of physical map. This generic package may
-- be instantiated for any display device which has display locations
-- (latitude, longitude) that can be characterized by an integer value.
-- For example, the intensity of the display point might be so characterized.
-- It can be instantiated for any desired range of values (which would
-- correspond to the range accepted by the display device).
 
 
private
 
generic
 
type Display_Value is range <>; -- Any display feature that is
-- represented by an integer.
 
package CA11016_0.CA11016_1 is
 
function Get_Display_Value (Lat : Latitude;
Long : Longitude;
Map : Map_Type) return Display_Value;
 
end CA11016_0.CA11016_1;
 
 
--==================================================================--
 
 
package body CA11016_0.CA11016_1 is
 
function Get_Display_Value (Lat : Latitude;
Long : Longitude;
Map : Map_Type)
return Display_Value is
begin
case Get_Physical_Feature (Lat, Long, Map) is
-- Parent's operation,
when Forest => return (Display_Value'first);
-- Parent's type.
when Desert => return (Display_Value'last);
-- Parent's type.
when others => return
( (Display_Value'last - Display_Value'first) / 2 );
-- NOTE: Results are truncated.
end case;
 
end Get_Display_Value;
 
end CA11016_0.CA11016_1;
 
 
--==================================================================--
 
-- Map display operation, public child of physical map.
 
package CA11016_0.CA11016_2 is
 
-- Super-duper Ultra Geographic Display Device (SDUGD) can display
-- geographic locations with light intensity values ranging from 1 to 7.
 
type Display_Val is range 1 .. 7;
 
type Device_Color is (Brown, Blue, Green);
 
type IO_Packet is
record
Lat : Latitude; -- Parent's type.
Long : Longitude; -- Parent's type.
Color : Device_Color;
Intensity : Display_Val;
end record;
 
procedure Data_For_SDUGD (Lat : in Latitude;
Long : in Longitude;
Output_Packet : in out IO_Packet);
 
end CA11016_0.CA11016_2;
 
--==================================================================--
 
 
with CA11016_0.CA11016_1; -- Private generic sibling.
pragma Elaborate (CA11016_0.CA11016_1);
 
package body CA11016_0.CA11016_2 is
 
-- Declare instance of the private generic sibling for
-- an integer type that represents color intensity.
 
package SDUGD is new CA11016_0.CA11016_1 (Display_Val);
 
procedure Data_For_SDUGD (Lat : in Latitude;
Long : in Longitude;
Output_Packet : in out IO_Packet) is
 
-- Simulates sending control information to a display device.
-- Control information consists of latitude, longitude, a
-- color, and an intensity.
 
begin
case Get_Physical_Feature (Lat, Long, Basic_Map) is
-- Parent's operation.
when Water => Output_Packet.Color := Blue;
Output_Packet.Intensity := SDUGD.Get_Display_Value
(Lat, Long, Basic_Map);
-- Sibling's operation.
when Forest => Output_Packet.Color := Green;
Output_Packet.Intensity := SDUGD.Get_Display_Value
(Lat, Long, Basic_Map);
-- Sibling's operation.
when others => Output_Packet.Color := Brown;
Output_Packet.Intensity := SDUGD.Get_Display_Value
(Lat, Long, Basic_Map);
-- Sibling's operation.
end case;
 
end Data_For_SDUGD;
 
end CA11016_0.CA11016_2;
 
--==================================================================--
 
with CA11016_0.CA11016_2; -- Map display device operation,
-- implicitly withs parent, physical map
-- application.
 
use CA11016_0.CA11016_2; -- Allows direct visibility to the simple
-- name of CA11016_0.CA11016_2.
 
with Report;
 
procedure CA11016 is
 
TC_Packet : IO_Packet;
 
begin
 
Report.Test ("CA11016", "Check that body of a public child package can " &
"use its sibling private generic package " &
"declarations and operations");
 
-- Simulate control information at coordinates 3 and 7 of the
-- basic map for the SDUGD.
Water_Display_Subtest:
begin
TC_Packet.Lat := 3;
TC_Packet.Long := 7;
 
-- Build color and light intensity of the basic map at
-- latitude 3 and longitude 7.
 
Data_For_SDUGD (TC_Packet.Lat, TC_Packet.Long, TC_Packet);
 
if ( (TC_Packet.Color /= Blue) or
(TC_Packet.Intensity /= 3) ) then
Report.Failed ("Map display device contains " &
"incorrect values for water subtest");
end if;
 
end Water_Display_Subtest;
 
-- Simulate control information at coordinates 2 and 1 of the
-- basic map for the SDUGD.
Desert_Display_Subtest:
begin
TC_Packet.Lat := 9;
TC_Packet.Long := 2;
 
-- Build color and light intensity of the basic map at
-- latitude 9 and longitude 2.
 
Data_For_SDUGD (TC_Packet.Lat, TC_Packet.Long, TC_Packet);
 
if ( (TC_Packet.Color /= Brown) or
(TC_Packet.Intensity /= 7) ) then
Report.Failed ("Map display device contains " &
"incorrect values for desert subtest");
end if;
 
end Desert_Display_Subtest;
 
-- Simulate control information at coordinates 8 and 4 of the
-- basic map for the SDUGD.
Forest_Display_Subtest:
begin
TC_Packet.Lat := 8;
TC_Packet.Long := 4;
 
-- Build color and light intensity of the basic map at
-- latitude 8 and longitude 4.
 
Data_For_SDUGD (TC_Packet.Lat, TC_Packet.Long, TC_Packet);
 
if ( (TC_Packet.Color /= Green) or
(TC_Packet.Intensity /= 1) ) then
Report.Failed ("Map display device contains " &
"incorrect values for forest subtest");
end if;
 
end Forest_Display_Subtest;
 
Report.Result;
 
end CA11016;
/ca1011a0.ada
0,0 → 1,35
-- CA1011A0.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- BHS 7/20/84
-- JBG 5/23/85
 
WITH REPORT; USE REPORT;
PROCEDURE CA1011A0 (X : IN OUT INTEGER; Y : IN INTEGER := 2) IS
BEGIN
 
X := Y;
FAILED ("DID NOT REPLACE CA1011A0");
 
END CA1011A0;
/ca2002a0.ada
0,0 → 1,139
-- CA2002A0M.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT SUBUNITS HAVING DIFFERENT ANCESTOR LIBRARY UNITS CAN HAVE
-- THE SAME NAME.
 
-- SEPARATE FILES ARE:
-- CA2002A0M THE MAIN PROCEDURE, WITH SEPARATE LIBRARY
-- PACKAGES (CA2002A1) AND (CA2002A2).
-- CA2002A1 SUBUNIT BODIES FOR STUBS IN PACKAGE CA2002A1.
-- CA2002A2 SUBUNIT BODIES FOR STUBS IN PACKAGE CA2002A2.
 
-- BHS 8/02/84
 
PACKAGE CA2002A1 IS
 
PROCEDURE PROC (X : OUT INTEGER);
FUNCTION FUN RETURN BOOLEAN;
 
PACKAGE PKG IS
I : INTEGER;
PROCEDURE PKG_PROC (XX : IN OUT INTEGER);
END PKG;
 
END CA2002A1;
 
PACKAGE BODY CA2002A1 IS
 
PROCEDURE PROC (X : OUT INTEGER) IS SEPARATE;
FUNCTION FUN RETURN BOOLEAN IS SEPARATE;
PACKAGE BODY PKG IS SEPARATE;
 
END CA2002A1;
 
 
PACKAGE CA2002A2 IS
 
PROCEDURE PROC (Y : OUT INTEGER);
FUNCTION FUN (Z : INTEGER := 3) RETURN BOOLEAN;
 
PACKAGE PKG IS
I : INTEGER;
PROCEDURE PKG_PROC (YY : IN OUT INTEGER);
END PKG;
 
END CA2002A2;
 
PACKAGE BODY CA2002A2 IS
 
PROCEDURE PROC (Y : OUT INTEGER) IS SEPARATE;
FUNCTION FUN (Z : INTEGER := 3) RETURN BOOLEAN IS SEPARATE;
PACKAGE BODY PKG IS SEPARATE;
 
END CA2002A2;
 
WITH CA2002A1, CA2002A2;
WITH REPORT; USE REPORT;
PROCEDURE CA2002A0M IS
BEGIN
 
TEST ("CA2002A", "SUBUNITS WITH DIFFERENT ANCESTORS " &
"CAN HAVE THE SAME NAME");
 
DECLARE
VAR1 : INTEGER;
USE CA2002A1;
BEGIN
 
PROC (VAR1);
IF VAR1 /= 1 THEN
FAILED ("CA2002A1 PROCEDURE NOT INVOKED CORRECTLY");
END IF;
 
IF NOT FUN THEN
FAILED ("CA2002A1 FUNCTION NOT INVOKED CORRECTLY");
END IF;
 
IF PKG.I /= 1 THEN
FAILED ("CA2202A1 PKG VARIABLE NOT ACCESSED CORRECTLY");
END IF;
 
VAR1 := 5;
PKG.PKG_PROC (VAR1);
IF VAR1 /= 4 THEN
FAILED ("CA2002A1 PKG SUBUNIT NOT INVOKED CORRECTLY");
END IF;
 
END;
 
DECLARE
VAR2 : INTEGER;
USE CA2002A2;
BEGIN
 
PROC (VAR2);
IF VAR2 /= 2 THEN
FAILED ("CA2002A2 PROCEDURE NOT INVOKED CORRECTLY");
END IF;
 
IF FUN THEN
FAILED ("CA2002A2 FUNCTION NOT INVOKED CORRECTLY");
END IF;
 
IF PKG.I /= 2 THEN
FAILED ("CA2002A2 PKG VARIABLE NOT ACCESSED CORRECTLY");
END IF;
 
VAR2 := 3;
PKG.PKG_PROC (VAR2);
IF VAR2 /= 4 THEN
FAILED ("CA2002A2 PKG SUBUNIT NOT INVOKED CORRECTLY");
END IF;
 
END;
 
RESULT;
 
END CA2002A0M;
/ca1011a2.ada
0,0 → 1,35
-- CA1011A2.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- BHS 7/20/84
-- JBG 5/23/85
 
WITH REPORT; USE REPORT;
PROCEDURE CA1011A2 (X : INTEGER := 1; Y : IN OUT FLOAT) IS
BEGIN
 
Y := 2.0;
FAILED ("DID NOT REPLACE CA1011A2");
 
END CA1011A2;
/ca1013a1.ada
0,0 → 1,39
-- CA1013A1.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 7/20/81
 
 
GENERIC
TYPE INDEX IS RANGE <>;
PROCEDURE CA1013A1 (I : IN OUT INDEX);
 
 
PROCEDURE CA1013A1 (I : IN OUT INDEX) IS
 
BEGIN
I := I + 1;
 
END CA1013A1;
/ca2002a2.ada
0,0 → 1,53
-- CA2002A2.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- SUBUNIT BODIES FOR STUBS GIVEN IN PACKAGE CA2002A2 IN FILE
-- CA2002A0M.
 
-- BHS 8/02/84
 
SEPARATE (CA2002A2)
PROCEDURE PROC (Y : OUT INTEGER) IS
BEGIN
Y := 2;
END PROC;
 
SEPARATE (CA2002A2)
FUNCTION FUN (Z : INTEGER := 3) RETURN BOOLEAN IS
BEGIN
RETURN Z /= 3;
END FUN;
 
SEPARATE (CA2002A2)
PACKAGE BODY PKG IS
PROCEDURE PKG_PROC (YY : IN OUT INTEGER) IS SEPARATE;
BEGIN
I := 2;
END PKG;
 
SEPARATE (CA2002A2.PKG)
PROCEDURE PKG_PROC (YY : IN OUT INTEGER) IS
BEGIN
YY := YY + 1;
END PKG_PROC;
/ca1011a4.ada
0,0 → 1,35
-- CA1011A4.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- BHS 7/20/84
-- JBG 5/23/85
 
WITH REPORT; USE REPORT;
FUNCTION CA1011A4 RETURN INTEGER IS
BEGIN
 
FAILED ("DID NOT REPLACE CA1011A4");
RETURN 2;
 
END CA1011A4;
/ca2004a1.ada
0,0 → 1,34
-- CA2004A1.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 6/26/81
 
SEPARATE (CA2004A0M)
PACKAGE BODY CA2004A1 IS
 
K : INTEGER := 3;
 
PROCEDURE CA2004A2 IS SEPARATE;
 
END CA2004A1;
/ca1013a3.ada
0,0 → 1,31
-- CA1013A3.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 7/20/81
-- SPS 10/27/82
-- JBG 9/15/83
 
WITH CA1013A0;
PRAGMA ELABORATE (CA1013A0);
PACKAGE CA1013A3 IS NEW CA1013A0 (INTEGER);
/ca1011a6.ada
0,0 → 1,71
-- CA1011A6M.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT IF A SUBPROGRAM BODY IS INITIALLY COMPILED, SUBSEQUENT
-- ATTEMPTS TO COMPILE A SUBPROGRAM BODY WITH A DIFFERENT PARAMETER AND
-- RESULT TYPE PROFILE ARE ACCEPTED (SEE AI-00199).
 
-- SEPARATE FILES ARE:
-- CA1011A0 A LIBRARY PROCEDURE (CA1011A0).
-- CA1011A1 A LIBRARY PROCEDURE (CA1011A0).
-- CA1011A2 A LIBRARY PROCEDURE (CA1011A2).
-- CA1011A3 A LIBRARY PROCEDURE (CA1011A2).
-- CA1011A4 A LIBRARY FUNCTION (CA1011A4).
-- CA1011A5 A LIBRARY FUNCTION (CA1011A4).
-- CA1011A6M THE MAIN PROCEDURE.
 
-- BHS 7/20/84
-- JBG 5/23/85
 
WITH CA1011A0, CA1011A2, CA1011A4;
WITH REPORT; USE REPORT;
PROCEDURE CA1011A6M IS
 
I : INTEGER := 5;
J : FLOAT := 4.0;
 
BEGIN
 
TEST("CA1011A", "ATTEMPTS TO RECOMPILE A SUBPROGRAM WITH " &
"NONCONFORMING PARAMETER OR RESULT TYPE " &
"PROFILES ARE ACCEPTED");
 
CA1011A0(X => I); -- EXPECT DEFAULT Y
IF I = 3 THEN
COMMENT ("SECOND DECLARATION OF CA1011A0 INVOKED CORRECTLY");
END IF;
 
CA1011A2(Y => J); -- USE DEFAULT X.
IF J = 3.0 THEN
COMMENT ("SECOND DECLARATION OF CA1011A2 INVOKED CORRECTLY");
END IF;
 
I := INTEGER(CA1011A4);
IF I = 3 THEN
COMMENT ("SECOND DECLARATION OF CA1011A4 INVOKED CORRECTLY");
END IF;
 
RESULT;
 
END CA1011A6M;
/ca2004a3.ada
0,0 → 1,39
-- CA2004A3.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- BHS 7/31/84
 
SEPARATE (CA2004A0M)
PROCEDURE CA2004A3 IS
 
PROCEDURE CA2004A4 IS SEPARATE;
 
BEGIN
 
IF I /= IDENT_INT(1) OR
J /= IDENT_INT(2) THEN
FAILED ("IDENTIFIER NOT VISIBLE - 4");
END IF;
 
END CA2004A3;
/ca1013a5.ada
0,0 → 1,30
-- CA1013A5.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 7/20/81
-- JBG 9/15/83
 
WITH CA1013A2;
PRAGMA ELABORATE (CA1013A2);
FUNCTION CA1013A5 IS NEW CA1013A2 (INTEGER);
/ca5004b1.ada
0,0 → 1,56
-- CA5004B1.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- OBJECTIVE: See CA5004B2M.ADA
--
-- SPECIAL INSTRUCTIONS: See CA5004B2M.ADA
--
-- TEST FILES:
-- CA5004B0.ADA
-- => CA5004B1.ADA
-- CA5004B2M.ADA
 
-- PWN 05/31/96 Split test into files without duplicate unit names.
-- RLB 03/11/99 Split test into files so that units that will be replaced
-- and units that won't are not in the same source file.
 
------------------------------------------------------------------
 
PACKAGE CA5004B0 IS
 
I : INTEGER := 1;
 
FUNCTION F RETURN BOOLEAN;
 
END CA5004B0;
 
 
PACKAGE BODY CA5004B0 IS
 
FUNCTION F RETURN BOOLEAN IS
BEGIN
RETURN TRUE;
END F;
 
END CA5004B0;
/ca2008a1.ada
0,0 → 1,35
-- CA2008A1.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 6/26/81
 
SEPARATE (CA2008A0M)
 
PROCEDURE CA2008A1 (B : IN OUT BOOLEAN) IS
 
BEGIN
 
B := FALSE;
 
END CA2008A1;
/ca2009c1.ada
0,0 → 1,43
-- CA2009C1.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- A GENERIC PACKAGE BODY.
-- THE DECLARATION AND AN INSTANTIATION ARE IN CA2009C0M.DEP.
 
-- APPLICABILITY CRITERIA:
-- THIS UNIT MUST BE ACCEPTED BY ALL ADA 95 IMPLEMENTATIONS.
 
-- HISTORY:
-- BHS 08/09/84 CREATED ORIGINAL TEST.
-- PWB 02/19/86 ADDED COMMENTS TO RELATE TO OTHER TEST FILES
-- AND TO DESCRIBE EXPECTED COMPILER ACTION.
-- BCB 01/05/88 MODIFIED HEADER.
-- EDS 08/04/98 REMOVE CONTROL Z AT END OF FILE.
-- RLB 09/13/99 UPDATED APPLICABILITY CRITERIA FOR ADA 95.
 
SEPARATE (CA2009C0M)
PACKAGE BODY PKG1 IS
BEGIN
VAR1 := CON1;
END PKG1;
/ca11a01.a
0,0 → 1,228
-- CA11A01.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that type extended in a public child inherits primitive
-- operations from its ancestor.
--
-- TEST DESCRIPTION:
-- Declare a root tagged type in a package specification. Declare two
-- primitive subprograms for the type (foundation code).
--
-- Add a public child to the above package. Extend the root type with
-- a record extension in the specification. Declare a new primitive
-- subprogram to write to the child extension.
--
-- Add a public grandchild to the above package. Extend the extension of
-- the parent type with a record extension in the private part of the
-- specification. Declare a new primitive subprogram for this grandchild
-- extension.
--
-- In the main program, "with" the grandchild. Access the primitive
-- operations from grandparent and parent package.
--
-- TEST FILES:
-- This test depends on the following foundation code:
--
-- FA11A00.A
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
 
package FA11A00.CA11A01_0 is -- Color_Widget_Pkg
-- This public child declares an extension from its parent. It
-- represents processing of widgets in a window system.
 
type Widget_Color_Enum is (Black, Green, White);
 
type Color_Widget is new Widget with -- Record extension of
record -- parent tagged type.
Color : Widget_Color_Enum;
end record;
 
-- Inherits procedure Set_Width from Widget.
-- Inherits procedure Set_Height from Widget.
 
-- To be inherited by its derivatives.
procedure Set_Color (The_Widget : in out Color_Widget;
C : in Widget_Color_Enum);
 
procedure Set_Color_Widget (The_Widget : in out Color_Widget;
The_Width : in Widget_Length;
The_Height : in Widget_Length;
The_Color : in Widget_Color_Enum);
 
end FA11A00.CA11A01_0; -- Color_Widget_Pkg
 
--=======================================================================--
 
package body FA11A00.CA11A01_0 is -- Color_Widget_Pkg
 
procedure Set_Color (The_Widget : in out Color_Widget;
C : in Widget_Color_Enum) is
begin
The_Widget.Color := C;
end Set_Color;
---------------------------------------------------------------
procedure Set_Color_Widget (The_Widget : in out Color_Widget;
The_Width : in Widget_Length;
The_Height : in Widget_Length;
The_Color : in Widget_Color_Enum) is
begin
Set_Width (The_Widget, The_Width); -- Inherited from parent.
Set_Height (The_Widget, The_Height); -- Inherited from parent.
Set_Color (The_Widget, The_Color);
end Set_Color_Widget;
 
end FA11A00.CA11A01_0; -- Color_Widget_Pkg
 
--=======================================================================--
 
package FA11A00.CA11A01_0.CA11A01_1 is -- Label_Widget_Pkg
-- This public grandchild extends the extension from its parent. It
-- represents processing of widgets in a window system.
 
-- Declaration used by private extension component.
subtype Widget_Label_Str is string (1 .. 10);
 
type Label_Widget is new Color_Widget with private;
-- Record extension of parent tagged type.
 
-- Inherits (inherited) procedure Set_Width from Color_Widget.
-- Inherits (inherited) procedure Set_Height from Color_Widget.
-- Inherits procedure Set_Color from Color_Widget.
-- Inherits procedure Set_Color_Widget from Color_Widget.
 
procedure Set_Label_Widget (The_Widget : in out Label_Widget;
The_Width : in Widget_Length;
The_Height : in Widget_Length;
The_Color : in Widget_Color_Enum;
The_Label : in Widget_Label_Str);
 
-- The following function is needed to verify the value of the
-- extension's private component.
 
function Verify_Label (The_Widget : in Label_Widget;
The_Label : in Widget_Label_Str) return Boolean;
 
private
type Label_Widget is new Color_Widget with
record
Label : Widget_Label_Str;
end record;
 
end FA11A00.CA11A01_0.CA11A01_1; -- Label_Widget_Pkg
 
--=======================================================================--
 
package body FA11A00.CA11A01_0.CA11A01_1 is -- Label_Widget_Pkg
 
procedure Set_Label (The_Widget : in out Label_Widget;
L : in Widget_Label_Str) is
begin
The_Widget.Label := L;
end Set_Label;
--------------------------------------------------------------
procedure Set_Label_Widget (The_Widget : in out Label_Widget;
The_Width : in Widget_Length;
The_Height : in Widget_Length;
The_Color : in Widget_Color_Enum;
The_Label : in Widget_Label_Str) is
begin
Set_Width (The_Widget, The_Width); -- Twice inherited.
Set_Height (The_Widget, The_Height); -- Twice inherited.
Set_Color (The_Widget, The_Color); -- Inherited from parent.
Set_Label (The_Widget, The_Label);
end Set_Label_Widget;
--------------------------------------------------------------
function Verify_Label (The_Widget : in Label_Widget;
The_Label : in Widget_Label_Str) return Boolean is
begin
return (The_Widget.Label = The_Label);
end Verify_Label;
 
end FA11A00.CA11A01_0.CA11A01_1; -- Label_Widget_Pkg
 
--=======================================================================--
 
with FA11A00.CA11A01_0.CA11A01_1; -- Label_Widget_Pkg,
-- implicitly with Widget_Pkg,
-- implicitly with Color_Widget_Pkg
with Report;
 
procedure CA11A01 is
 
package Widget_Pkg renames FA11A00;
package Color_Widget_Pkg renames FA11A00.CA11A01_0;
package Label_Widget_Pkg renames FA11A00.CA11A01_0.CA11A01_1;
 
use Widget_Pkg; -- All user-defined operators directly visible.
 
Mail_Label : Label_Widget_Pkg.Widget_Label_Str := "Quick_Mail";
 
Default_Widget : Widget;
Black_Widget : Color_Widget_Pkg.Color_Widget;
Mail_Widget : Label_Widget_Pkg.Label_Widget;
 
begin
 
Report.Test ("CA11A01", "Check that type extended in a public " &
"child inherits primitive operations from its " &
"ancestor");
 
Set_Width (Default_Widget, 9); -- Call from parent.
Set_Height (Default_Widget, 10); -- Call from parent.
 
If Default_Widget.Width /= Widget_Length (Report.Ident_Int (9)) or
Default_Widget.Height /= Widget_Length (Report.Ident_Int (10)) then
Report.Failed ("Incorrect result for Default_Widget");
end if;
 
Color_Widget_Pkg.Set_Color_Widget
(Black_Widget, 17, 18, Color_Widget_Pkg.Black); -- Explicitly declared.
 
If Black_Widget.Width /= Widget_Length (Report.Ident_Int (17)) or
Black_Widget.Height /= Widget_Length (Report.Ident_Int (18)) or
Color_Widget_Pkg."/=" (Black_Widget.Color, Color_Widget_Pkg.Black) then
Report.Failed ("Incorrect result for Black_Widget");
end if;
 
Label_Widget_Pkg.Set_Label_Widget
(Mail_Widget, 15, 21, Color_Widget_Pkg.White,
"Quick_Mail"); -- Explicitly declared.
 
If Mail_Widget.Width /= Widget_Length (Report.Ident_Int (15)) or
Mail_Widget.Height /= Widget_Length (Report.Ident_Int (21)) or
Color_Widget_Pkg."/=" (Mail_Widget.Color, Color_Widget_Pkg.White) or
not Label_Widget_Pkg.Verify_Label (Mail_Widget, Mail_Label) then
Report.Failed ("Incorrect result for Mail_Widget");
end if;
 
Report.Result;
 
end CA11A01;
/ca11c01.a
0,0 → 1,170
-- CA11C01.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that when primitive operations declared in a child package
-- override operations declared in ancestor packages, a client of the
-- child package inherits the operations correctly.
--
-- TEST DESCRIPTION:
--
-- This test builds on the foundation code file (FA11C00) that contains
-- a parent package, child package, and grandchild package. The parent
-- package declares a tagged type and primitive operation. The child
-- package extends the type, and overrides the primitive operation. The
-- grandchild package does the same.
--
-- The test procedure "withs" the grandchild package, and receives
-- visibility to all of its ancestor packages, types and operations.
-- Three procedures, each with a formal parameter of a specific type are
-- defined. Each of these invokes a particular version of the overridden
-- primitive operation Image. Calls to these local procedures are made,
-- with objects of each of the tagged types as parameters, and the global
-- variable is finally examined to ensure that the correct version of
-- primitive operation was inherited by the client and invoked by the
-- call.
--
-- TEST FILES:
-- This test depends on the following foundation code:
--
-- FA11C00.A
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
 
with FA11C00_0.FA11C00_1.FA11C00_2; -- Package Animal.Mammal.Primate
with Report;
 
procedure CA11C01 is
 
package Animal_Package renames FA11C00_0;
package Mammal_Package renames FA11C00_0.FA11C00_1;
package Primate_Package renames FA11C00_0.FA11C00_1.FA11C00_2;
 
Max_Animals : constant := 3;
 
subtype Data_String is String (1 .. 37);
type Data_Base_Type is array (1 .. Max_Animals) of Data_String;
 
Zoo_Data_Base : Data_Base_Type := (others => (others => ' '));
-- Global variable.
 
Salmon : Animal_Package.Animal := (Common_Name => "Chinook Salmon ",
Weight => 10);
 
Platypus : Mammal_Package.Mammal := (Common_Name => "Tasmanian Platypus ",
Weight => 13,
Hair_Color => Mammal_Package.Brown);
 
Orangutan : Primate_Package.Primate :=
(Common_Name => "Sumatran Orangutan ",
Weight => 220,
Hair_Color => Mammal_Package.Red,
Habitat => Primate_Package.Arboreal);
begin
 
Report.Test ("CA11C01", "Check that when primitive operations declared " &
"in a child package override operations declared " &
"in ancestor packages, a client of the child " &
"package inherits the operations correctly");
 
declare
 
use Animal_Package, Mammal_Package, Primate_Package;
 
-- The function Image has been overridden in the child and grandchild
-- packages, but the client has inherited all versions of the function,
-- and can successfully use them to enter data into the database.
-- Each of the following procedures updates the global variable
-- Zoo_Data_Base.
 
procedure Enter_Animal_Data (A : Animal; I : Integer) is
begin
Zoo_Data_Base (I) := Image (A);
end Enter_Animal_Data;
 
procedure Enter_Mammal_Data (M : Mammal; I : Integer) is
begin
Zoo_Data_Base (I) := Image (M);
end Enter_Mammal_Data;
 
procedure Enter_Primate_Data (P : Primate; I : Integer) is
begin
Zoo_Data_Base (I) := Image (P);
end Enter_Primate_Data;
 
begin
 
-- Verify initial test conditions.
 
if not (Zoo_Data_Base(1)(1..6) = " ")
or else
(Zoo_Data_Base(2)(1..6) /= " ")
or else
(Zoo_Data_Base(3)(1..6) /= " ")
then
Report.Failed ("Initial condition failure");
end if;
 
 
-- Enter data from all three animals into the zoo database.
 
Enter_Animal_Data (A => Salmon, I => 1); -- First entry in database.
Enter_Mammal_Data (M => Platypus, I => 2); -- Second entry.
Enter_Primate_Data (P => Orangutan, I => 3); -- Third entry.
 
-- Verify the correct version of the overridden function Image was used
-- for entering the specific data.
 
if Zoo_Data_Base(1)(1 .. 6) /= "Animal"
or else
Zoo_Data_Base(1)(26 .. 31) /= "Salmon"
then
Report.Failed ("Incorrect version of Image for parent type");
end if;
 
if (Zoo_Data_Base(2)(1 .. 6) /= "Mammal")
or
(Zoo_Data_Base(2)(28 .. 35) /= "Platypus")
then
Report.Failed ("Incorrect version of Image for child type");
end if;
 
if ((Zoo_Data_Base(3)(1 .. 7) /= "Primate")
or
(Zoo_Data_Base(3)(27 .. 35) /= "Orangutan"))
then
Report.Failed ("Incorrect version of Image for grandchild type");
end if;
 
end;
 
 
Report.Result;
 
end CA11C01;
/ca11d03.a
0,0 → 1,174
-- CA11D03.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that an exception declared in a package can be raised by a
-- client of a child of the package. Check that it can be renamed in
-- the client of the child of the package and raised with the correct
-- effect.
--
-- TEST DESCRIPTION:
-- Declare a package which defines complex number abstraction with
-- user-defined exceptions (foundation code).
--
-- Add a public child package to the above package. Declare two
-- subprograms for the parent type.
--
-- In the main program, "with" the child package, then check that
-- an exception can be raised and handled as expected.
--
-- TEST FILES:
-- This test depends on the following foundation code:
--
-- FA11D00.A
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
 
-- Child package of FA11D00.
package FA11D00.CA11D03_0 is -- Basic_Complex
 
function "+" (Left, Right : Complex_Type)
return Complex_Type; -- Add two complex numbers.
 
function "*" (Left, Right : Complex_Type)
return Complex_Type; -- Multiply two complex numbers.
 
end FA11D00.CA11D03_0; -- Basic_Complex
 
--=======================================================================--
 
package body FA11D00.CA11D03_0 is -- Basic_Complex
 
function "+" (Left, Right : Complex_Type) return Complex_Type is
begin
return ( (Left.Real + Right.Real, Left.Imag + Right.Imag) );
end "+";
--------------------------------------------------------------
function "*" (Left, Right : Complex_Type) return Complex_Type is
begin
return ( Real => (Left.Real * Right.Real),
Imag => (Left.Imag * Right.Imag) );
end "*";
 
end FA11D00.CA11D03_0; -- Basic_Complex
 
--=======================================================================--
 
with FA11D00.CA11D03_0; -- Basic_Complex,
-- implicitly with Complex_Definition.
with Report;
 
procedure CA11D03 is
 
package Complex_Pkg renames FA11D00; -- Complex_Definition_Pkg
package Basic_Complex_Pkg renames FA11D00.CA11D03_0; -- Basic_Complex
 
use Complex_Pkg;
use Basic_Complex_Pkg;
TC_Handled_In_Subtest_1,
TC_Handled_In_Subtest_2 : boolean := false;
 
begin
 
Report.Test ("CA11D03", "Check that an exception declared in a package " &
"can be raised by a client of a child of the package");
 
Multiply_Complex_Subtest:
declare
Operand_1 : Complex_Type := Complex (Int_Type (Report.Ident_Int (3)),
Int_Type (Report.Ident_Int (2)));
-- Referenced to function in parent package.
Operand_2 : Complex_Type := Complex (Int_Type (Report.Ident_Int (10)),
Int_Type (Report.Ident_Int (8)));
Mul_Res : Complex_type := Complex (Int_Type (Report.Ident_Int (30)),
Int_Type (Report.Ident_Int (16)));
Complex_No : Complex_Type := Zero; -- Zero is declared in parent package.
begin
Complex_No := Operand_1 * Operand_2; -- Basic_Complex."*".
if Complex_No /= Mul_Res then
Report.Failed ("Incorrect results from multiplication");
end if;
 
-- Error is raised and exception will be handled.
if Complex_No = Mul_Res then
raise Multiply_Error; -- Reference to exception in
end if; -- parent package.
 
exception
when Multiply_Error =>
TC_Handled_In_Subtest_1 := true;
when others =>
TC_Handled_In_Subtest_1 := false; -- Improper exception handling.
 
end Multiply_Complex_Subtest;
 
Add_Complex_Subtest:
declare
Error_In_Client : exception renames Add_Error;
-- Reference to exception in parent package.
Operand_1 : Complex_Type := Complex (Int_Type (Report.Ident_Int (2)),
Int_Type (Report.Ident_Int (7)));
Operand_2 : Complex_Type := Complex (Int_Type (Report.Ident_Int (-4)),
Int_Type (Report.Ident_Int (1)));
Add_Res : Complex_type := Complex (Int_Type (Report.Ident_Int (-2)),
Int_Type (Report.Ident_Int (8)));
Complex_No : Complex_Type := One; -- One is declared in parent
-- package.
begin
Complex_No := Operand_1 + Operand_2; -- Basic_Complex."+".
 
if Complex_No /= Add_Res then
Report.Failed ("Incorrect results from multiplication");
end if;
 
-- Error is raised and exception will be handled.
if Complex_No = Add_Res then
raise Error_In_Client;
end if;
 
exception
when Error_In_Client =>
TC_Handled_In_Subtest_2 := true;
 
when others =>
TC_Handled_In_Subtest_2 := false; -- Improper exception handling.
 
end Add_Complex_Subtest;
 
if not (TC_Handled_In_Subtest_1 and -- Check to see that all
TC_Handled_In_Subtest_2) -- exceptions were handled
-- in the proper location.
then
Report.Failed ("Exceptions handled in incorrect locations");
end if;
 
Report.Result;
 
end CA11D03;
/ca1106a.ada
0,0 → 1,112
-- CA1106A.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- OBJECTIVE:
-- CHECK THAT A WITH CLAUSE FOR A PACKAGE BODY (GENERIC OR
-- NONGENERIC) OR FOR A GENERIC SUBPROGRAM BODY CAN NAME THE
-- CORRESPONDING SPECIFICATION, AND A USE CLAUSE CAN ALSO BE
-- GIVEN.
 
-- HISTORY:
-- JET 07/14/88 CREATED ORIGINAL TEST.
-- PWN 05/25/94 ADDED A PROCEDURE TO KEEP PACKAGE BODIES LEGAL.
 
PACKAGE CA1106A_1 IS
I : INTEGER := 0;
PROCEDURE REQUIRE_BODY;
END CA1106A_1;
 
GENERIC
TYPE TG IS RANGE <>;
PACKAGE CA1106A_2 IS
J : TG := 0;
PROCEDURE REQUIRE_BODY;
END CA1106A_2;
 
GENERIC
TYPE TG IS RANGE <>;
FUNCTION CA1106A_3 RETURN TG;
 
WITH REPORT; USE REPORT;
WITH CA1106A_1; USE CA1106A_1;
PRAGMA ELABORATE (REPORT);
PACKAGE BODY CA1106A_1 IS
PROCEDURE REQUIRE_BODY IS
BEGIN
NULL;
END;
BEGIN
I := IDENT_INT(1);
END CA1106A_1;
 
WITH REPORT; USE REPORT;
WITH CA1106A_2;
PRAGMA ELABORATE (REPORT);
PACKAGE BODY CA1106A_2 IS
PROCEDURE REQUIRE_BODY IS
BEGIN
NULL;
END;
BEGIN
J := TG(IDENT_INT(2));
END CA1106A_2;
 
WITH REPORT; USE REPORT;
WITH CA1106A_3;
FUNCTION CA1106A_3 RETURN TG IS
BEGIN
RETURN TG(IDENT_INT(3));
END CA1106A_3;
 
WITH REPORT; USE REPORT;
WITH CA1106A_1, CA1106A_2, CA1106A_3;
USE CA1106A_1;
PROCEDURE CA1106A IS
 
PACKAGE CA1106A_2X IS NEW CA1106A_2 (INTEGER);
FUNCTION CA1106A_3X IS NEW CA1106A_3 (INTEGER);
 
USE CA1106A_2X;
 
BEGIN
TEST ("CA1106A", "CHECK THAT A WITH CLAUSE FOR A PACKAGE BODY " &
"(GENERIC OR NONGENERIC) OR FOR A GENERIC " &
"SUBPROGRAM BODY CAN NAME THE CORRESPONDING " &
"SPECIFICATION, AND A USE CLAUSE CAN ALSO BE " &
"GIVEN");
 
IF I /= 1 THEN
FAILED ("INCORRECT VALUE FROM NONGENERIC PACKAGE");
END IF;
 
IF J /= 2 THEN
FAILED ("INCORRECT VALUE FROM GENERIC PACKAGE");
END IF;
 
IF CA1106A_3X /= 3 THEN
FAILED ("INCORRECT VALUE FROM GENERIC SUBPROGRAM");
END IF;
 
RESULT;
END CA1106A;
/ca2009a.ada
0,0 → 1,77
-- CA2009A.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT A GENERIC PACKAGE SUBUNIT CAN BE SPECIFIED AND
-- INSTANTIATED.
 
-- BHS 8/01/84
-- JRK 5/24/85 CHANGED TO .ADA, SEE AI-00323.
 
 
WITH REPORT;
USE REPORT;
PROCEDURE CA2009A IS
 
INT1 : INTEGER := 1;
 
SUBTYPE STR15 IS STRING (1..15);
SVAR : STR15 := "ABCDEFGHIJKLMNO";
 
GENERIC
TYPE ITEM IS PRIVATE;
CON1 : IN ITEM;
VAR1 : IN OUT ITEM;
PACKAGE PKG1 IS
END PKG1;
 
PACKAGE BODY PKG1 IS SEPARATE;
PACKAGE NI_PKG1 IS NEW PKG1 (INTEGER, IDENT_INT(2), INT1);
PACKAGE NS_PKG1 IS NEW PKG1 (STR15, IDENT_STR("REINSTANTIATION"),
SVAR);
 
BEGIN
 
TEST ("CA2009A", "SPECIFICATION AND INSTANTIATION " &
"OF GENERIC PACKAGE SUBUNITS");
 
IF INT1 /= 2 THEN
FAILED ("INCORRECT INSTANTIATION - INTEGER");
END IF;
 
IF SVAR /= "REINSTANTIATION" THEN
FAILED ("INCORRECT INSTANTIATION - STRING");
END IF;
 
 
RESULT;
 
END CA2009A;
 
 
SEPARATE (CA2009A)
PACKAGE BODY PKG1 IS
BEGIN
VAR1 := CON1;
END PKG1;
/ca21001.a
0,0 → 1,152
-- CA21001.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687 and
-- F08630-91-C-0015, the U.S. Government obtained unlimited rights in the
-- software and documentation contained herein. Unlimited rights are
-- defined in DFAR 252.227-7013(a)(19). By making this public release,
-- the Government intends to confer upon all recipients unlimited rights
-- equal to those held by the Government. These rights include rights to
-- use, duplicate, release or disclose the released technical data and
-- computer software in whole or in part, in any manner and for any purpose
-- whatsoever, and to have or permit others to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE
-- Check the requirements of the revised 10.2.1(11) from Technical
-- Corrigendum 1 (originally discussed as AI95-00002).
-- A package subunit whose parent is a preelaborated subprogram need
-- not be preelaborable.
--
-- TEST DESCRIPTION
-- We create several preelaborated library procedures with
-- non-preelaborable package body subunits. We try various levels
-- of nesting of package and procedure subunits.
--
-- CHANGE HISTORY:
-- 29 JUN 1999 RAD Initial Version
-- 23 SEP 1999 RLB Improved comments, renamed, issued.
--
--!
 
procedure CA21001_1(X: out Integer);
pragma Preelaborate(CA21001_1);
 
procedure CA21001_1(X: out Integer) is
function F return Integer is separate;
 
package Sub is
function G(X: Integer) return Integer;
-- Returns X + 1.
Not_Preelaborable: Integer := F; -- OK, by AI-2.
end Sub;
 
package body Sub is separate;
 
begin
X := -1;
X := F;
X := Sub.G(X);
end CA21001_1;
 
separate(CA21001_1)
package body Sub is
package Sub_Sub is
-- Empty.
end Sub_Sub;
package body Sub_Sub is separate;
 
function G(X: Integer) return Integer is separate;
begin
Not_Preelaborable := G(F); -- OK, by AI-2.
if Not_Preelaborable /= 101 then
raise Program_Error; -- Can't call Report.Failed, here,
-- because Report is not preelaborated.
end if;
end Sub;
 
separate(CA21001_1.Sub)
package body Sub_Sub is
begin
X := X; -- OK by AI-2.
end Sub_Sub;
 
separate(CA21001_1.Sub)
function G(X: Integer) return Integer is
 
package G_Sub is
function H(X: Integer) return Integer;
-- Returns X + 1.
Not_Preelaborable: Integer := F; -- OK, by AI-2.
end G_Sub;
package body G_Sub is separate;
 
begin
return G_Sub.H(X);
end G;
 
separate(CA21001_1.Sub.G)
package body G_Sub is
function H(X: Integer) return Integer is separate;
begin
Not_Preelaborable := H(F); -- OK, by AI-2.
if Not_Preelaborable /= 101 then
raise Program_Error; -- Can't call Report.Failed, here,
-- because Report is not preelaborated.
end if;
end G_Sub;
 
separate(CA21001_1.Sub.G.G_Sub)
function H(X: Integer) return Integer is
begin
return X + 1;
end H;
 
separate(CA21001_1)
function F return Integer is
 
package F_Sub is
-- Empty.
end F_Sub;
 
package body F_Sub is separate;
begin
return 100;
end F;
 
separate(CA21001_1.F)
package body F_Sub is
True_Var: Boolean;
begin
True_Var := True;
if True_Var then -- OK by AI-2.
X := X;
else
X := X + 2;
end if;
end F_Sub;
 
with Report; use Report;
with CA21001_1;
procedure CA21001 is
X: Integer := 0;
begin
Test("CA21001",
"Test that a package subunit whose parent is a preelaborated"
& " subprogram need not be preelaborable");
CA21001_1(X);
if X /= 101 then
Failed("Bad value for X");
end if;
Result;
end CA21001;
/ca11021.a
0,0 → 1,245
-- CA11021.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that body of the generic parent package can depend on one of
-- its own private generic children.
--
-- TEST DESCRIPTION:
-- A scenario is created that demonstrates the potential of adding a
-- public generic child during code maintenance without distubing a large
-- subsystem. After child is added to the subsystem, a maintainer
-- decides to take advantage of the new functionality and rewrites
-- the parent's body.
--
-- Declare a generic package which declares high level operations for a
-- complex number abstraction. Declare a private generic child package
-- of this package which defines low level complex operations. In the
-- parent body, instantiate the private child. Use the low level
-- operation to complete the high level operation.
--
-- In the main program, instantiate the parent generic package.
-- Check that the operations in both packages perform as expected.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
 
generic -- Complex number abstraction.
type Int_Type is range <>;
 
package CA11021_0 is
-- Simulate a generic complex number support package. Complex numbers
-- are treated as coordinates in the Cartesian plane.
 
type Complex_Type is private;
 
Zero : constant Complex_Type; -- Real number (0,0).
 
function Real_Part (Complex_No : Complex_Type)
return Int_Type;
 
function Imag_Part (Complex_No : Complex_Type)
return Int_Type;
 
function Complex (Real, Imag : Int_Type)
return Complex_Type;
 
-- High level operation for complex number.
function "*" (Factor : Int_Type;
C : Complex_Type) return Complex_Type;
 
-- ... and other complicated ones.
 
private
type Complex_Type is record
Real : Int_Type;
Imag : Int_Type;
end record;
 
Zero : constant Complex_Type := (Real => 0, Imag => 0);
 
end CA11021_0;
 
--==================================================================--
 
-- Private generic child of Complex_Number.
 
private
 
generic
 
-- No parameter.
 
package CA11021_0.CA11021_1 is
-- ... Other declarations.
 
-- Low level operation on complex number.
function "+" (Left, Right : Complex_Type)
return Complex_Type;
 
function "-" (Right : Complex_Type)
return Complex_Type;
 
-- ... Various other operations in real application.
 
end CA11021_0.CA11021_1;
 
--==================================================================--
 
package body CA11021_0.CA11021_1 is
 
function "+" (Left, Right : Complex_Type)
return Complex_Type is
 
begin
return ( (Left.Real + Right.Real, Left.Imag + Right.Imag) );
end "+";
 
--------------------------------------------------
 
function "-" (Right : Complex_Type) return Complex_Type is
begin
return (-Right.Real, -Right.Imag);
end "-";
 
end CA11021_0.CA11021_1;
 
--==================================================================--
 
with CA11021_0.CA11021_1; -- Private generic child package.
 
package body CA11021_0 is
 
-----------------------------------------------------
-- Parent's body depends on private generic child. --
-----------------------------------------------------
 
-- Instantiate the private child.
 
package Complex_Ops is new CA11021_1;
use Complex_Ops; -- All user-defined operators
-- directly visible.
 
--------------------------------------------------
 
function "*" (Factor : Int_Type;
C : Complex_Type) return Complex_Type is
Result : Complex_Type := Zero;
 
begin
for I in 1 .. abs (Factor) loop
Result := Result + C; -- Private generic child "+".
end loop;
 
if Factor < 0 then
Result := - Result; -- Private generic child "-".
end if;
 
return Result;
end "*";
 
--------------------------------------------------
 
function Real_Part (Complex_No : Complex_Type) return Int_Type is
begin
return (Complex_No.Real);
end Real_Part;
 
--------------------------------------------------
 
function Imag_Part (Complex_No : Complex_Type) return Int_Type is
begin
return (Complex_No.Imag);
end Imag_Part;
 
--------------------------------------------------
 
function Complex (Real, Imag : Int_Type) return Complex_Type is
begin
return (Real, Imag);
end Complex;
 
end CA11021_0;
 
--==================================================================--
 
with CA11021_0; -- Complex number abstraction.
 
with Report;
 
procedure CA11021 is
 
type My_Integer is range -100 .. 100;
 
--------------------------------------------------
 
-- Declare instance of the generic complex package for one particular
-- integer type.
 
package My_Complex_Pkg is new
CA11021_0 (Int_Type => My_Integer);
 
use My_Complex_Pkg; -- All user-defined operators
-- directly visible.
 
--------------------------------------------------
 
Complex_One, Complex_Two : Complex_Type;
 
My_Literal : My_Integer := -3;
 
begin
 
Report.Test ("CA11021", "Check that body of the generic parent package " &
"can depend on its private generic child");
 
Complex_One := Complex (11, 6);
 
Complex_Two := 5 * Complex_One;
 
if Real_Part (Complex_Two) /= 55
and Imag_Part (Complex_Two) /= 30
then
Report.Failed ("Incorrect results from complex operation");
end if;
 
Complex_One := Complex (-4, 7);
 
Complex_Two := My_Literal * Complex_One;
 
if Real_Part (Complex_Two) /= 12
and Imag_Part (Complex_Two) /= -21
then
Report.Failed ("Incorrect results from complex operation");
end if;
 
Report.Result;
 
end CA11021;
/ca13003.a
0,0 → 1,256
-- CA13003.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that separate subunits which share an ancestor may have the
-- same name if they have different fully qualified names. Check
-- the case of separate subunits of separate subunits.
-- This test is a change in semantics from Ada 83 to Ada 9X.
--
-- TEST DESCRIPTION:
-- Declare a package that provides file processing operations. Declare
-- one separate package to do the file processing, and another to do the
-- auditing. These packages contain similar functions declared in
-- separate subunits. Verify that the main program can call the
-- separate subunits with the same name.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
 
-- Simulates a file processing application. The processing package opens
-- files, reads files, does file processing, and generates reports.
-- The auditing package opens files, read files, and generates reports.
 
package CA13003_0 is
 
type File_ID is range 1 .. 100;
subtype File_Name is string (1 .. 10);
 
TC_Open_For_Process : boolean := false;
TC_Open_For_Audit : boolean := false;
TC_Report_From_Process : boolean := false;
TC_Report_From_Audit : boolean := false;
 
type File_Rec is
record
Name : File_Name;
ID : File_ID;
end record;
 
procedure Initialize_File_Rec (Name_In : in File_Name;
ID_In : in File_ID;
File_In : out File_Rec);
----------------------------------------------------------------------
 
package CA13003_1 is -- File processing
 
procedure CA13003_3; -- Open files
function CA13003_4 (ID_In : File_ID; File_In : File_Rec)
return File_Name; -- Process files
package CA13003_5 is -- Generate report
procedure Generate_Report;
end CA13003_5;
 
end CA13003_1;
 
----------------------------------------------------------------------
 
package CA13003_2 is -- File auditing
 
procedure CA13003_3; -- Open files
function CA13003_4 (ID_In : File_ID; File_In : File_Rec)
return File_Name; -- Process files
package CA13003_5 is -- Generate report
procedure Generate_Report;
end CA13003_5;
 
end CA13003_2;
 
end CA13003_0;
 
--==================================================================--
 
package body CA13003_0 is
 
procedure Initialize_File_Rec (Name_In : in File_Name;
ID_In : in File_ID;
File_In : out File_Rec) is
-- Not a real initialization. Real application can use file
-- database to create the file record.
begin
File_In.Name := Name_In;
File_In.ID := ID_In;
end Initialize_File_Rec;
 
package body CA13003_1 is separate;
package body CA13003_2 is separate;
 
end CA13003_0;
 
--==================================================================--
 
separate (CA13003_0)
package body CA13003_1 is
 
procedure CA13003_3 is separate; -- Open files
function CA13003_4 (ID_In : File_ID; File_In : File_Rec)
return File_Name is separate; -- Process files
package body CA13003_5 is separate; -- Generate report
 
end CA13003_1;
 
--==================================================================--
 
separate (CA13003_0.CA13003_1)
procedure CA13003_3 is -- Open files
begin
-- In real file processing application, open file from database, setup
-- data structure, etc.
TC_Open_For_Process := true;
end CA13003_3;
 
--==================================================================--
 
separate (CA13003_0.CA13003_1)
function CA13003_4 (ID_In : File_ID; -- Process files
File_In : File_Rec) return File_Name is
begin
-- In real file processing application, process files for more information.
return File_In.Name;
end CA13003_4;
 
--==================================================================--
 
separate (CA13003_0.CA13003_1)
package body CA13003_5 is -- Generate report
procedure Generate_Report is
begin
-- In real file processing application, generate various report from the
-- file database.
TC_Report_From_Process := true;
end Generate_Report;
 
end CA13003_5;
 
--==================================================================--
 
separate (CA13003_0)
package body CA13003_2 is
 
procedure CA13003_3 is separate; -- Open files
function CA13003_4 (ID_In : File_ID; File_In : File_Rec)
return File_Name is separate; -- Process files
package body CA13003_5 is separate; -- Generate report
 
end CA13003_2;
 
--==================================================================--
 
separate (CA13003_0.CA13003_2)
procedure CA13003_3 is -- Open files
begin
TC_Open_For_Audit := true;
end CA13003_3;
 
--==================================================================--
 
separate (CA13003_0.CA13003_2)
function CA13003_4 (ID_In : File_ID;
File_In : File_Rec) return File_Name is
begin
return File_In.Name;
end CA13003_4;
 
--==================================================================--
 
separate (CA13003_0.CA13003_2)
package body CA13003_5 is -- Generate report
procedure Generate_Report is
begin
TC_Report_From_Audit := true;
end Generate_Report;
 
end CA13003_5;
 
--==================================================================--
 
with CA13003_0;
with Report;
 
procedure CA13003 is
First_File_Name : CA13003_0.File_Name := "Joe Smith ";
First_File_Id : CA13003_0.File_ID := 11;
Second_File_Name : CA13003_0.File_Name := "John Schep";
Second_File_Id : CA13003_0.File_ID := 47;
Expected_Name : CA13003_0.File_Name := " ";
Student_File : CA13003_0.File_Rec;
function Process_Input_Files (ID_In : CA13003_0.File_ID;
File_In : CA13003_0.File_Rec) return
CA13003_0.File_Name renames CA13003_0.CA13003_1.CA13003_4;
 
function Process_Audit_Files (ID_In : CA13003_0.File_ID;
File_In : CA13003_0.File_Rec) return
CA13003_0.File_Name renames CA13003_0.CA13003_2.CA13003_4;
begin
Report.Test ("CA13003", "Check that separate subunits which share " &
"an ancestor may have the same name if they have " &
"different fully qualified names");
 
Student_File := (ID => First_File_Id, Name => First_File_Name);
 
-- Note that all subunits have the same simple name.
-- Generate report from file processing.
CA13003_0.CA13003_1.CA13003_3;
Expected_Name := Process_Input_Files (First_File_Id, Student_File);
CA13003_0.CA13003_1.CA13003_5.Generate_Report;
 
if not CA13003_0.TC_Open_For_Process or
not CA13003_0.TC_Report_From_Process or
Expected_Name /= First_File_Name then
Report.Failed ("Unexpected results in processing file");
end if;
 
CA13003_0.Initialize_File_Rec
(Second_File_Name, Second_File_Id, Student_File);
 
-- Generate report from file auditing.
CA13003_0.CA13003_2.CA13003_3;
Expected_Name := Process_Audit_Files (Second_File_Id, Student_File);
CA13003_0.CA13003_2.CA13003_5.Generate_Report;
 
if not CA13003_0.TC_Open_For_Audit or
not CA13003_0.TC_Report_From_Audit or
Expected_Name /= Second_File_Name then
Report.Failed ("Unexpected results in auditing file");
end if;
 
Report.Result;
 
end CA13003;
/ca11d010.a
0,0 → 1,119
-- CA11D010.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- See CA11D013.AM
--
-- TEST DESCRIPTION:
-- See CA11D013.AM
--
-- TEST FILES:
-- The following files comprise this test:
--
-- FA11D00.A
-- => CA11D010.A
-- CA11D011.A
-- CA11D012.A
-- CA11D013.AM
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
-- 26 Apr 96 SAIC ACVC 2.1: Modified prologue.
--
--!
 
-- Child package of FA11D00.
 
package FA11D00.CA11D010 is -- Add_Subtract_Complex
 
procedure Add (Left, Right : in Complex_Type; -- Add two complex
C : out Complex_Type); -- numbers.
 
function Subtract (Left, Right : Complex_Type) -- Subtract two
return Complex_Type; -- complex numbers.
end FA11D00.CA11D010; -- Add_Subtract_Complex
 
--=======================================================================--
 
with Report;
 
package body FA11D00.CA11D010 is -- Add_Subtract_Complex
 
procedure Add (Left, Right : in Complex_Type;
C : out Complex_Type) is
begin
-- Zero is declared in parent package.
 
if Left.Real < Zero.Real or else Right.Real < Zero.Real
or else Left.Imag < Zero.Imag or else Right.Imag < Zero.Imag then
raise Add_Error; -- Reference to exception in parent package.
Report.Failed ("Program control not transferred by raise in " &
"procedure Add");
else
C.Real := (Left.Real + Right.Real);
C.Imag := (Left.Imag + Right.Imag);
end if;
 
exception
when Add_Error =>
TC_Handled_In_Child_Pkg_Proc := true;
C := Check_Value; -- Reference to object in parent package.
raise; -- Reraise the Add_Error exception in the subtest.
Report.Failed ("Exception not reraised in handler");
 
when others =>
Report.Failed ("Unexpected exception raised in Add");
 
end Add;
-----------------------------------------------------------
function Subtract (Left, Right : Complex_Type)
return Complex_Type is
begin
-- Zero is declared in parent package.
if Left.Real < Zero.Real or Right.Real < Zero.Real
or Left.Imag < Zero.Imag or Right.Imag < Zero.Imag then
raise Subtract_Error; -- Reference to exception in parent package.
Report.Failed ("Program control not transferred by raise in " &
"function Subtract");
else
return ( Real => (Left.Real - Right.Real),
Imag => (Left.Imag - Right.Imag) );
end if;
 
exception
when Subtract_Error =>
Report.Comment ("Exception is properly handled in Subtract");
TC_Handled_In_Child_Pkg_Func := true;
return Check_Value;
 
when others =>
Report.Failed ("Unexpected exception raised in Subtract");
 
end Subtract;
 
end FA11D00.CA11D010; -- Add_Subtract_Complex
/ca11008.a
0,0 → 1,216
-- CA11008.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that a private child package can use entities declared in the
-- visible part of its parent unit.
--
-- TEST DESCRIPTION:
-- Declare a parent package containing types and objects used
-- by the system. Declare a private child package that uses the parent
-- components to provide functionality to the system.
--
-- The tagged file type defined in the parent has defaults for all
-- component fields. Prior to initialization, these values are checked
-- to ensure a correct start condition. The initial subprogram is
-- called, which utilizes the functionality provided in the private
-- child package. This subprogram changes the fields of the file object
-- to something other than the default values, and this process is then
-- verified at the conclusion of the test.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
package CA11008_0 is -- Package OS.
 
type File_Descriptor_Type is new Integer;
type File_Name_Type is new String (1 .. 11);
type Permission_Type is (None, User, System, Bypass);
type File_Mode_Type is (Read_Only, Write_Only, Read_Write);
type File_Status_Type is (Open, Closed);
 
Default_Descriptor : constant File_Descriptor_Type := 0;
Default_Permission : constant Permission_Type := None;
Default_Mode : constant File_Mode_Type := Read_Only;
Default_Status : constant File_Status_Type := Closed;
Default_Filename : constant File_Name_Type := " ";
 
Max_Files : constant File_Descriptor_Type := 100;
Constant_Name : constant File_Name_Type := "AdaFileName";
File_Counter : Integer := 0;
 
type File_Type is tagged
record
Descriptor : File_Descriptor_Type := Default_Descriptor;
Name : File_Name_Type := Default_Filename;
Acct_Access : Permission_Type := Default_Permission;
Mode : File_Mode_Type := Default_Mode;
Current_Status : File_Status_Type := Default_Status;
end record;
 
type File_Array_Type is array (1 .. Max_Files) of File_Type;
 
File_Table : File_Array_Type;
 
--
 
function Get_File_Name return File_Name_Type;
 
function Initialize_File return File_Descriptor_Type;
 
end CA11008_0; -- Package OS.
 
--=================================================================--
 
-- Subprograms that perform the actual file operations are contained in a
-- private package so that they are not accessible to any client.
 
private package CA11008_0.CA11008_1 is -- Package OS.Internals
 
Private_File_Counter : Integer renames File_Counter; -- Parent
-- object.
function Initialize
(File_Name : File_Name_Type := Get_File_Name; -- Parent function.
File_Mode : File_Mode_Type := Read_Write) -- Parent literal.
return File_Descriptor_Type; -- Parent type.
 
end CA11008_0.CA11008_1; -- Package OS.Internals
 
--=================================================================--
 
package body CA11008_0.CA11008_1 is -- Package body OS.Internals
 
function Next_Available_File return File_Descriptor_Type is
begin
Private_File_Counter := Private_File_Counter + 1;
return (File_Descriptor_Type(File_Counter));
end Next_Available_File;
-----------------------------------------------------------------
function Initialize
(File_Name : File_Name_Type := Get_File_Name; -- Parent function
File_Mode : File_Mode_Type := Read_Write) -- Parent literal
return File_Descriptor_Type is -- Parent type
Number : File_Descriptor_Type;
begin
Number := Next_Available_File;
File_Table(Number).Descriptor := Number; -- Parent object
File_Table(Number).Name := File_Name; -- Default parameter value
File_Table(Number).Mode := File_Mode; -- Default parameter value
File_Table(Number).Acct_Access := User;
File_Table(Number).Current_Status := Open;
return (Number);
end Initialize;
 
end CA11008_0.CA11008_1; -- Package body OS.Internals
 
--=================================================================--
 
with CA11008_0.CA11008_1; -- Private child package "withed" by
-- parent body.
 
package body CA11008_0 is -- Package body OS
 
function Get_File_Name return File_Name_Type is
begin
return (Constant_Name); -- Of course if this was a real function, the
end Get_File_Name; -- user would be asked to input a name, or
-- there would be some type of similar process.
 
-- This subprogram utilizes a call to a subprogram contained in a private
-- child to perform the actual processing.
 
function Initialize_File return File_Descriptor_Type is
begin
return (CA11008_0.CA11008_1.Initialize); -- No parameters are needed,
-- since defaults have been
-- provided.
end Initialize_File;
 
end CA11008_0; -- Package body OS
 
--=================================================================--
 
with CA11008_0; -- with Package OS.
with Report;
 
procedure CA11008 is
 
package OS renames CA11008_0;
use OS;
Ada_File_Key : File_Descriptor_Type := Default_Descriptor;
 
begin
 
-- This test indicates one approach to file management operations.
-- It is not intended to demonstrate full functionality, but rather
-- that the use of a private child package can provide a solution
-- to a user situation, that being the implementation of certain functions
-- being provided in a child package, with the parent package body
-- utilizing these implementations.
 
Report.Test ("CA11008", "Check that a private child package can use " &
"entities declared in the visible part of its " &
"parent unit");
 
-- Check initial conditions of the first entry in the file table.
-- These are all default values provided in the declaration of the
-- type File_Type.
 
if (Ada_File_Key /= Default_Descriptor) or else
(File_Table(1).Descriptor /= (Default_Descriptor) or
(File_Table(1).Name /= Default_Filename)) or else
(File_Table(1).Acct_Access /= (Default_Permission) or
(File_Table(1).Mode /= Default_Mode)) or else
(File_Table(1).Current_Status /= Default_Status)
then
Report.Failed ("Initial condition failure");
end if;
-- Call the initialization function. This will result in the resetting
-- of the fields associated with the first entry in the File_Table (this
-- is the first call of Initialize_File).
-- No parameters are necessary for this call, due to the default values
-- provided in the private child package routine Initialize.
Ada_File_Key := Initialize_File;
 
-- Verify that the initial conditions of the file table component have
-- been properly modified by the initialization function.
 
if not ((File_Table(1).Descriptor = Ada_File_Key) and then
(File_Table(1).Name = Constant_Name) and then
(File_Table(1).Acct_Access = User) and then
not ((File_Table(1).Mode = Default_Mode) or else
(File_Table(1).Current_Status = Default_Status)))
then
Report.Failed ("Initialization processing failure");
end if;
 
Report.Result;
 
end CA11008;
/ca1022a1.ada
0,0 → 1,33
-- CA1022A1.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- BHS 7/23/84
 
WITH CA1022A0;
PROCEDURE CA1022A1 (Y : IN OUT INTEGER) IS
BEGIN
 
CA1022A0.P0 (Y);
 
END CA1022A1;
/ca1020e1.ada
0,0 → 1,59
-- CA1020E1.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- OBJECTIVE:
-- CHECK THAT A SUBPROGRAM LIBRARY UNIT CAN BE REPLACED BY A GENERIC
-- INSTANTIATION HAVING THE SAME IDENTIFIER. THIS FILE CONTAINS
-- SUBPROGRAMS TO BE REPLACED BY LATER GENERIC INSTANTIATIONS.
 
-- HISTORY:
-- JBG 05/28/85 CREATED ORIGINAL TEST.
-- JET 07/29/88 ADDED CASES IN WHICH SUBPROGRAM PROFILES ARE NOT
-- THE SAME AND ALSO WHEN SUBPROGRAM IS FIRST
-- DECLARED WITHOUT A BODY.
 
PROCEDURE CA1020E_PROC1 (X : OUT INTEGER) IS
BEGIN
X := 3;
END CA1020E_PROC1;
 
WITH REPORT; USE REPORT;
PRAGMA ELABORATE (REPORT);
FUNCTION CA1020E_FUNC1 RETURN INTEGER IS
BEGIN
RETURN IDENT_INT(4);
END CA1020E_FUNC1;
 
PROCEDURE CA1020E_PROC2 (X : OUT INTEGER);
PROCEDURE CA1020E_PROC2 (X : OUT INTEGER) IS
BEGIN
X := 3;
END CA1020E_PROC2;
 
WITH REPORT; USE REPORT;
PRAGMA ELABORATE (REPORT);
FUNCTION CA1020E_FUNC2 RETURN FLOAT IS
BEGIN
RETURN FLOAT(IDENT_INT(4));
END CA1020E_FUNC2;
/ca1022a3.ada
0,0 → 1,53
-- CA1022A3.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- RECOMPILATION OF PACKAGE CA1022A0.
 
-- BHS 7/23/84
 
PACKAGE CA1022A0 IS
 
I, J : INTEGER;
PROCEDURE P0 (X : IN OUT INTEGER);
FUNCTION F RETURN INTEGER;
 
END CA1022A0;
 
PACKAGE BODY CA1022A0 IS
 
PROCEDURE P0 (X : IN OUT INTEGER) IS
BEGIN
 
X := X + 2;
 
END P0;
 
FUNCTION F RETURN INTEGER IS
BEGIN
 
RETURN 3;
 
END F;
 
END CA1022A0;
/ca5003a0.ada
0,0 → 1,50
-- CA5003A0.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 7/22/81
-- JBG 10/6/83
 
PACKAGE CA5003A0 IS
 
ORDER : STRING (1..5) := " ";
 
INDEX : NATURAL := 1;
 
FUNCTION SHOW_ELAB (UNIT : CHARACTER) RETURN INTEGER;
 
END CA5003A0;
 
 
WITH REPORT;
USE REPORT;
PACKAGE BODY CA5003A0 IS
 
FUNCTION SHOW_ELAB (UNIT : CHARACTER) RETURN INTEGER IS
BEGIN
ORDER (INDEX) := UNIT;
INDEX := INDEX + 1;
RETURN INDEX - 1;
END SHOW_ELAB;
 
END CA5003A0;
/ca140283.am
0,0 → 1,91
-- CA140283.AM
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- OBJECTIVE:
-- Check that when a subprogram body is compiled as a library unit
-- it is not interpreted as a completion for any previous library
-- subprogram created by generic instantiation, and it therefore
-- declares a new library subprogram.
--
-- TEST DESCRIPTION
-- A generic function and procedure plus their instantiations are
-- created. Then, subprogram bodies which ought to replace the
-- instantiations are compiled. Following that, additional instantiations
-- are compiled. Finally the main subprogram is compiled.
--
-- TEST FILES:
-- This test consists of the following files:
-- CA140280.A
-- CA140281.A
-- CA140282.A
-- -> CA140283.AM
--
-- CHANGE HISTORY:
-- JBG 05/28/85 CREATED ORIGINAL TEST.
-- RDH 04/18/90 ADDED CASES WHERE SUBPROGRAM PARAMETER TYPES ARE
-- NOT THE SAME.
-- THS 09/24/90 REWORDED HEADER COMMENTS, ERROR MESSAGES, AND
-- CALL TO TEST. CALLED IDENT_INT CONSISTENTLY.
-- RLB 07/08/99 Reinstated withdrawn test; revised to Ada 95 format.
 
WITH REPORT; USE REPORT;
WITH CA14028_PROC1, CA14028_FUNC2, CA14028_PROC5, CA14028_FUNC22,
CA14028_PROC3, CA14028_FUNC3;
PROCEDURE CA140283 IS
TEMP : INTEGER := 0;
BEGIN
TEST ("CA14028", "Check that library subprograms created by " &
"generic instantiation are replaced " &
"when new non-generic subprogram bodies are " &
"compiled");
 
CA14028_PROC1(TEMP);
IF TEMP /= IDENT_INT(3) THEN
FAILED ("CA14028_Proc1 instantiation not replaced");
END IF;
 
IF CA14028_FUNC2 /= IDENT_INT(4) THEN
FAILED ("CA14028_Func2 instantiation not replaced");
END IF;
 
CA14028_PROC5(TEMP);
IF TEMP /= IDENT_INT(5) THEN
FAILED ("New CA14028_Proc5 instantiation not correct");
END IF;
 
IF CA14028_FUNC22 /= IDENT_INT(2) THEN
FAILED ("New CA14028_Func22 instantiation not correct");
END IF;
 
CA14028_PROC3(TEMP);
IF TEMP /= IDENT_INT(4) THEN
FAILED ("CA14028_Proc3 not replaced by correct version");
END IF;
 
IF CA14028_FUNC3 /= IDENT_INT(7) THEN
FAILED ("CA14028_Func3 not replaced by correct version");
END IF;
 
RESULT;
END CA140283;
/ca1020e3.ada
0,0 → 1,71
-- CA1020E3M.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- OBJECTIVE:
-- CHECK THAT A SUBPROGRAM LIBRARY UNIT CAN BE REPLACED BY A GENERIC
-- INSTANTIATION HAVING THE SAME IDENTIFIER. THIS FILE CONTAINS
-- GENERIC UNITS TO BE INSTANTIATED AS LIBRARY UNITS.
 
-- SEPARATE FILES ARE:
-- CA1020E0 -- GENERIC UNITS GENPROC_CA1020E AND GENFUNC_CA1020E.
-- CA1020E1 -- SUBPROGRAM LIBRARY UNIT BODIES (CA1020E_PROC1,
-- CA1020E_FUNC1, CA1020E_PROC2, CA1020E_FUNC2).
-- CA1020E2 -- INSTANTIATIONS REPLACING UNITS COMPILED IN CA1020E1.
-- CA1020E3M -- MAIN PROGRAM.
 
-- HISTORY:
-- JBG 05/28/85 CREATED ORIGINAL TEST.
-- JET 07/29/88 ADDED CASES IN WHICH SUBPROGRAM PROFILES ARE NOT
-- THE SAME AND ALSO WHEN SUBPROGRAM IS FIRST
-- DECLARED WITHOUT A BODY.
 
WITH REPORT; USE REPORT;
WITH CA1020E_PROC1, CA1020E_FUNC1, CA1020E_PROC2, CA1020E_FUNC2;
PROCEDURE CA1020E3M IS
TEMP : INTEGER := 0;
BEGIN
TEST ("CA1020E", "CHECK THAT A SUBPROGRAM LIBRARY UNIT CAN BE " &
"REPLACED BY A GENERIC INSTANTIATION HAVING " &
"THE SAME IDENTIFIER");
 
CA1020E_PROC1 (TEMP);
IF TEMP /= IDENT_INT(1) THEN
FAILED ("INSTANTIATION DID NOT REPLACE PROCEDURE");
END IF;
 
IF CA1020E_FUNC1 /= IDENT_INT(2) THEN
FAILED ("INSTANTIATION DID NOT REPLACE FUNCTION");
END IF;
 
CA1020E_PROC2 (TEMP);
IF TEMP /= IDENT_INT(5) THEN
FAILED ("INSTANTIATION DID NOT REPLACE PROCEDURE");
END IF;
 
IF CA1020E_FUNC2 /= IDENT_INT(2) THEN
FAILED ("INSTANTIATION DID NOT REPLACE FUNCTION");
END IF;
 
RESULT;
END CA1020E3M;
/ca1022a5.ada
0,0 → 1,34
-- CA1022A5.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- RECOMPILATION OF FUNCTION CA1022A2 (DECL AND BODY).
 
-- BHS 7/23/84
 
FUNCTION CA1022A2 (Z : INTEGER := 1) RETURN BOOLEAN IS
BEGIN
 
RETURN Z /= 1;
 
END CA1022A2;
/ca5003a2.ada
0,0 → 1,34
-- CA5003A2.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 7/22/81
-- JBG 10/6/83
 
WITH CA5003A0;
USE CA5003A0; PRAGMA ELABORATE (CA5003A0);
PACKAGE CA5003A2 IS
 
A2 : INTEGER := SHOW_ELAB ('2');
 
END CA5003A2;
/ca2001h1.ada
0,0 → 1,39
-- CA2001H1.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 6/25/81
-- JBG 8/25/83
-- BHS 7/31/84
 
SEPARATE (CA2001H0)
 
PACKAGE BODY CA2001H1 IS
PROCEDURE NOT_USED IS SEPARATE;
 
BEGIN
 
I := 1;
NOT_USED;
 
END CA2001H1;
/ca5003a4.ada
0,0 → 1,34
-- CA5003A4.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 7/22/81
-- JBG 10/6/83
 
WITH CA5003A0, CA5003A2;
USE CA5003A0; PRAGMA ELABORATE (CA5003A0);
PACKAGE CA5003A4 IS
 
A4 : INTEGER := SHOW_ELAB ('4');
 
END CA5003A4;
/ca2001h3.ada
0,0 → 1,66
-- CA2001H3M.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT IF A BODY_STUB IS DELETED FROM A COMPILATION UNIT,
-- THE PREVIOUSLY EXISTING SUBUNIT CAN NO LONGER BE ACCESSED.
 
-- SEPARATE FILES ARE;
-- CA2001H0 A LIBRARY FUNCTION (CA2001H0).
-- CA2001H1 A SUBUNIT PACKAGE BODY.
-- CA2001H2 A LIBRARY FUNCTION (CA2001H0).
-- CA2001H3M THE MAIN PROCEDURE.
 
-- WKB 6/25/81
-- JRK 6/26/81
-- SPS 11/2/82
-- JBG 8/25/83
 
 
WITH REPORT, CA2001H0;
USE REPORT;
PROCEDURE CA2001H3M IS
 
I : INTEGER := -1;
 
BEGIN
TEST ("CA2001H", "IF A BODY_STUB IS DELETED FROM A COMPILATION " &
"UNIT, THE PREVIOUSLY EXISTING SUBUNIT CAN NO " &
"LONGER BE ACCESSED");
 
I := CA2001H0;
 
IF I = 1 THEN
FAILED ("SUBUNIT ACCESSED");
END IF;
 
IF I = 0 THEN
FAILED ("OLD LIBRARY UNIT ACCESSED");
END IF;
 
IF I /= 2 THEN
FAILED ("NEW LIBRARY UNIT NOT ACCESSED");
END IF;
 
RESULT;
END CA2001H3M;
/ca5003a6.ada
0,0 → 1,71
-- CA5003A6M.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT THE ELABORATION OF LIBRARY UNITS REQUIRED BY
-- A MAIN PROGRAM IS PERFORMED CONSISTENTLY WITH THE PARTIAL
-- ORDERING DEFINED BY THE COMPILATION ORDER RULES.
 
-- SEPARATE FILES ARE:
-- CA5003A0 A LIBRARY PACKAGE.
-- CA5003A1 A LIBRARY PACKAGE SPECIFICATION.
-- CA5003A2 A LIBRARY PACKAGE SPECIFICATION.
-- CA5003A3 A LIBRARY PACKAGE SPECIFICATION.
-- CA5003A4 A LIBRARY PACKAGE SPECIFICATION.
-- CA5003A5 A LIBRARY PACKAGE SPECIFICATION.
-- CA5003A6M THE MAIN PROCEDURE.
 
-- PACKAGE A5 MUST BE ELABORATED AFTER A2, A3, AND A4.
-- PACKAGE A3 MUST BE ELABORATED AFTER A2.
-- PACKAGE A4 MUST BE ELABORATED AFTER A2.
 
-- WKB 7/22/81
-- JBG 10/6/83
 
WITH REPORT, CA5003A0;
USE REPORT, CA5003A0;
WITH CA5003A1, CA5003A5;
PROCEDURE CA5003A6M IS
 
BEGIN
 
TEST ("CA5003A", "CHECK THAT ELABORATION ORDER IS CONSISTENT " &
"WITH PARTIAL ORDERING REQUIREMENTS");
 
COMMENT ("ACTUAL ELABORATION ORDER WAS " & ORDER);
 
IF ORDER /= "12345" AND
ORDER /= "12435" AND
ORDER /= "21345" AND
ORDER /= "21435" AND
ORDER /= "23145" AND
ORDER /= "24135" AND
ORDER /= "23415" AND
ORDER /= "24315" AND
ORDER /= "23451" AND
ORDER /= "24351" THEN
FAILED ("ILLEGAL ELABORATION ORDER");
END IF;
 
RESULT;
END CA5003A6M;
/ca200021.a
0,0 → 1,66
-- CA200021.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687 and
-- F08630-91-C-0015, the U.S. Government obtained unlimited rights in the
-- software and documentation contained herein. Unlimited rights are
-- defined in DFAR 252.227-7013(a)(19). By making this public release,
-- the Government intends to confer upon all recipients unlimited rights
-- equal to those held by the Government. These rights include rights to
-- use, duplicate, release or disclose the released technical data and
-- computer software in whole or in part, in any manner and for any purpose
-- whatsoever, and to have or permit others to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- See CA200020.A.
--
-- TEST DESCRIPTION:
-- See CA200020.A.
--
-- TEST FILES:
-- This test consists of the following files:
-- CA200020.A
-- -> CA200021.A
-- CA200022.AM
--
-- PASS/FAIL CRITERIA:
-- See CA200020.A.
--
-- CHANGE HISTORY:
-- 27 JAN 99 RLB Initial version.
-- 20 MAR 00 RLB Removed special requirements, because there
-- aren't any.
--
--!
 
package body CA20002_0 is
 
function CA20002_1 return Integer is separate; -- Has the same expanded name
-- as the child.
-- Note: An implementation may produce a warning about the child
-- unit at this point, but it must accept the subunit declaration.
 
procedure Do_a_Little (A : out Integer) is
begin
A := CA20002_1;
end Do_a_Little;
 
end CA20002_0;
 
with Report;
separate (CA20002_0)
function CA20002_1 return Integer is
begin
return Report.Ident_Int(5);
end CA20002_1;
/ca140233.a
0,0 → 1,68
-- CA140233.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- See CA140232.AM.
--
-- TEST DESCRIPTION:
-- See CA140232.AM.
--
-- TEST FILES:
-- This test consists of the following files:
-- CA140230.A
-- CA140231.A
-- CA140232.AM
-- -> CA140233.A
--
-- PASS/FAIL CRITERIA:
-- See CA140232.AM.
--
-- CHANGE HISTORY:
-- 01 MAY 95 ACVC 1.12 LA5008T baseline version
-- 29 JUN 95 SAIC Initial version
-- 05 MAR 96 SAIC First revision after review
-- 18 NOV 96 SAIC Modified unit names and prologue to conform
-- to coding conventions.
-- 07 DEC 96 SAIC Modified prologue to reflect new test
-- file organization.
-- 13 SEP 99 RLB Changed to C-test (by AI-00077).
-- 20 MAR 00 RLB Removed special requirements, because there
-- aren't any.
--!
 
-- here is the replacement body, correcting "errors" in
-- the original
 
function CA14023_1 (P1, P2 : Data_type) return Data_type is
begin
-- return min rather than max
if Floor < P1 and Floor < P2 then
return Floor;
elsif P2 < P1 then
return P2;
else
return P1;
end if;
end CA14023_1;
/ca1006a.ada
0,0 → 1,106
-- CA1006A.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT A LIBRARY UNIT AND ITS SUBUNITS CAN BE
-- SUBMITTED TOGETHER FOR COMPILATION.
 
-- JRK 5/14/81
 
WITH REPORT;
USE REPORT;
 
PROCEDURE CA1006A IS
 
I : INTEGER := IDENT_INT (0);
 
PACKAGE CALL_TEST IS
END CALL_TEST;
 
PACKAGE BODY CALL_TEST IS
BEGIN
TEST ("CA1006A", "A LIBRARY UNIT AND ITS SUBUNITS " &
"SUBMITTED TOGETHER");
END CALL_TEST;
 
FUNCTION F (I : INTEGER) RETURN INTEGER IS SEPARATE;
 
PACKAGE PKG IS
I : INTEGER := IDENT_INT (0);
PROCEDURE P (I : IN OUT INTEGER);
END PKG;
 
PACKAGE BODY PKG IS SEPARATE;
 
PROCEDURE P (I : IN OUT INTEGER) IS SEPARATE;
 
BEGIN
 
IF PKG.I /= 10 THEN
FAILED ("PACKAGE BODY STATEMENTS NOT EXECUTED");
END IF;
 
IF F(IDENT_INT(5)) /= -5 THEN
FAILED ("FUNCTION NOT ELABORATED/EXECUTED");
END IF;
 
PKG.P (I);
IF I /= 3 THEN
FAILED ("PACKAGED PROCEDURE NOT ELABORATED/EXECUTED");
END IF;
 
I := IDENT_INT (-20);
P (I);
IF I /= -24 THEN
FAILED ("PROCEDURE NOT ELABORATED/EXECUTED");
END IF;
 
RESULT;
END CA1006A;
 
 
SEPARATE (CA1006A)
FUNCTION F (I : INTEGER) RETURN INTEGER IS
BEGIN
RETURN -I;
END F;
 
 
SEPARATE (CA1006A)
PACKAGE BODY PKG IS
 
PROCEDURE P (I : IN OUT INTEGER) IS
BEGIN
I := I + 3;
END P;
 
BEGIN
I := I + 10;
END PKG;
 
 
SEPARATE (CA1006A)
PROCEDURE P (I : IN OUT INTEGER) IS
BEGIN
I := I - 4;
END P;
/ca5006a.ada
0,0 → 1,145
-- CA5006A.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT A PROGRAM IS NOT REJECTED JUST BECAUSE THERE IS NO WAY TO
-- ELABORATE SECONDARY UNITS SO PROGRAM_ERROR WILL BE AVOIDED.
 
-- R.WILLIAMS 9/22/86
 
-----------------------------------------------------------------------
 
PACKAGE CA5006A0 IS
FUNCTION P_E_RAISED RETURN BOOLEAN;
PROCEDURE SHOW_PE_RAISED;
END CA5006A0;
 
-----------------------------------------------------------------------
 
WITH REPORT; USE REPORT;
PRAGMA ELABORATE (REPORT);
PACKAGE BODY CA5006A0 IS
RAISED : BOOLEAN := FALSE;
 
FUNCTION P_E_RAISED RETURN BOOLEAN IS
BEGIN
RETURN RAISED;
END P_E_RAISED;
 
PROCEDURE SHOW_PE_RAISED IS
BEGIN
RAISED := TRUE;
END SHOW_PE_RAISED;
 
BEGIN
TEST ( "CA5006A", "CHECK THAT A PROGRAM IS NOT REJECTED JUST " &
"BECAUSE THERE IS NO WAY TO ELABORATE " &
"SECONDARY UNITS SO PROGRAM_ERROR WILL BE " &
"AVOIDED" );
 
END CA5006A0;
 
-----------------------------------------------------------------------
 
PACKAGE CA5006A1 IS
FUNCTION F RETURN INTEGER;
END CA5006A1;
 
-----------------------------------------------------------------------
 
PACKAGE CA5006A2 IS
FUNCTION G RETURN INTEGER;
END CA5006A2;
 
-----------------------------------------------------------------------
 
WITH REPORT; USE REPORT;
WITH CA5006A0; USE CA5006A0;
WITH CA5006A2; USE CA5006A2;
PRAGMA ELABORATE(CA5006A0);
 
PACKAGE BODY CA5006A1 IS
X : INTEGER;
 
FUNCTION F RETURN INTEGER IS
BEGIN
RETURN IDENT_INT(0);
END F;
 
BEGIN
X := G;
IF NOT P_E_RAISED THEN
FAILED ( "G CALLED" );
END IF;
EXCEPTION
WHEN PROGRAM_ERROR =>
COMMENT ( "PROGRAM_ERROR RAISED IN CA5006A1" );
SHOW_PE_RAISED;
WHEN OTHERS =>
FAILED ( "OTHER ERROR RAISED IN CA5006A1" );
END CA5006A1;
 
-----------------------------------------------------------------------
 
WITH REPORT; USE REPORT;
WITH CA5006A0; USE CA5006A0;
WITH CA5006A1; USE CA5006A1;
PRAGMA ELABORATE(CA5006A0);
 
PACKAGE BODY CA5006A2 IS
X : INTEGER;
 
FUNCTION G RETURN INTEGER IS
BEGIN
RETURN IDENT_INT(1);
END G;
 
BEGIN
X := F;
IF NOT P_E_RAISED THEN
FAILED ( "F CALLED" );
END IF;
EXCEPTION
WHEN PROGRAM_ERROR =>
COMMENT ( "PROGRAM_ERROR RAISED IN CA5006A2" );
SHOW_PE_RAISED;
WHEN OTHERS =>
FAILED ( "OTHER ERROR RAISED IN CA5006A2" );
END CA5006A2;
 
-----------------------------------------------------------------------
 
WITH REPORT; USE REPORT;
WITH CA5006A0; USE CA5006A0;
WITH CA5006A1;
WITH CA5006A2;
 
PROCEDURE CA5006A IS
BEGIN
IF NOT P_E_RAISED THEN
FAILED ( "PROGRAM_ERROR NEVER RAISED" );
END IF;
 
RESULT;
END CA5006A;
/ca11013.a
0,0 → 1,201
-- CA11013.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that a child function of a library level instantiation
-- of a generic can be the instantiation of a child function of
-- the generic. Check that the child instance can use its parent's
-- declarations and operations, including a formal subprogram of the
-- parent.
--
-- TEST DESCRIPTION:
-- Declare a generic package which simulates a real complex
-- abstraction. Declare a generic child function of this package
-- which builds a random complex number. Declare a second
-- package which defines a random complex number generator. This
-- package provides actual parameters for the generic parent package.
--
-- Instantiate the first generic package, then instantiate the child
-- generic function as a child unit of the first instance. In the main
-- program, check that the operations in both instances perform as
-- expected.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
-- 16 Nov 95 SAIC Update and repair for ACVC 2.0.1
-- 19 Oct 96 SAIC ACVC 2.1: Added pragma Elaborate to context
-- clause of CA11013_3.
-- 27 Feb 97 CTA.PWB Added elaboration pragma at package CA11013_3
--!
generic -- Complex number abstraction.
type Real_Type is digits <>;
with function Random_Generator (Seed : Real_Type) return Real_Type;
 
package CA11013_0 is
-- Simulate a generic complex number support package. Complex numbers
-- are treated as coordinates in the Cartesian plane.
 
type Complex_Type is
record
Real : Real_Type;
Imag : Real_Type;
end record;
 
function Make (Real, Imag : Real_Type) -- Create a complex
return Complex_Type; -- number.
 
procedure Components (Complex_No : in Complex_Type;
Real_Part, Imag_Part : out Real_Type);
 
end CA11013_0;
 
--==================================================================--
 
package body CA11013_0 is
 
function Make (Real, Imag : Real_Type) return Complex_Type is
begin
return (Real, Imag);
end Make;
-------------------------------------------------------------
procedure Components (Complex_No : in Complex_Type;
Real_Part, Imag_Part : out Real_Type) is
begin
Real_Part := Complex_No.Real;
Imag_Part := Complex_No.Imag;
end Components;
 
end CA11013_0;
 
--==================================================================--
 
-- Generic child of complex number package. This child adds a layer of
-- functionality to the parent generic.
 
generic -- Random complex number operation.
 
function CA11013_0.CA11013_1 (Seed : Real_Type) return Complex_Type;
 
--==============================================--
 
function CA11013_0.CA11013_1 (Seed : Real_Type) return Complex_Type is
 
Random_Real_Part : Real_Type := Random_Generator (Seed);
-- parent's formal subprogram
Random_Imag_Part : Real_Type
:= Random_Generator (Random_Generator (Seed));
-- parent's formal subprogram
Random_Complex_No : Complex_Type;
 
begin -- CA11013_0.CA11013_1
 
Random_Complex_No := Make (Random_Real_Part, Random_Imag_Part);
-- operation from parent
return (Random_Complex_No);
 
end CA11013_0.CA11013_1;
 
--==================================================================--
 
package CA11013_2 is
-- To be used as actual parameters for random number generator
-- in the parent package.
 
type My_Float is digits 6 range -10.0 .. 100.0;
 
function Random_Complex (Seed : My_float) return My_Float;
 
end CA11013_2;
 
--==================================================================--
 
package body CA11013_2 is
 
-- Not a real random number generator.
function Random_Complex (Seed : My_float) return My_Float is
begin
return (Seed + 3.0);
end Random_Complex;
 
end CA11013_2;
 
--==================================================================--
 
-- Declare instances of the generic complex packages for real type.
-- The instance of the child must itself be declared as a child of the
-- instance of the parent.
 
with CA11013_0; -- Complex number.
with CA11013_2; -- Random number generator.
pragma Elaborate (CA11013_0);
package CA11013_3 is new
CA11013_0 (Random_Generator => CA11013_2.Random_Complex,
Real_Type => CA11013_2.My_Float);
 
with CA11013_0.CA11013_1; -- Random complex number operation.
with CA11013_3;
pragma Elaborate (CA11013_3);
function CA11013_3.CA11013_4 is new CA11013_3.CA11013_1;
--==================================================================--
 
with Report;
with CA11013_2; -- Random number generator.
with CA11013_3.CA11013_4; -- Complex abstraction + Random complex
-- number operation.
procedure CA11013 is
 
package My_Complex_Pkg renames CA11013_3;
use type CA11013_2.My_Float;
 
My_Complex : My_Complex_Pkg.Complex_Type;
My_Literal : CA11013_2.My_Float := 3.0;
My_Real_Part, My_Imag_Part : CA11013_2.My_Float;
 
begin
 
Report.Test ("CA11013", "Check that child instance can use its parent's " &
"declarations and operations, including a formal " &
"subprogram of the parent");
 
My_Complex := CA11013_3.CA11013_4 (My_Literal);
-- Operation from the generic child function.
 
My_Complex_Pkg.Components (My_Complex, My_Real_Part, My_Imag_Part);
-- Operation from the generic parent package.
 
if My_Real_Part /= 6.0 -- Operation from the generic
or My_Imag_Part /= 9.0 -- parent package.
then
Report.Failed ("Incorrect results from complex operation");
end if;
 
Report.Result;
 
end CA11013;
/ca140232.am
0,0 → 1,139
-- CA140232.AM
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that a compilation unit may not depend semantically
-- on two different versions of the same compilation unit.
-- Check the case where a generic instantiation depends on
-- a generic function that is changed.
--
-- TEST DESCRIPTION:
-- This test compiles a generic function, a generic
-- instantiation of the generic function, and a main
-- procedure that withs the instantiated generic
-- function. Then, a new version of the first generic
-- function is compiled (in a separate file, simulating
-- editing and modification to the unit). The test should
-- link the correct version of the withed function and
-- report "PASSED" at execution time.
--
-- Note that compilers are required by the standard to support
-- replacement of a generic body without recompilation of the
-- instantation. The ARG confirmed 10.1.4(10) with AI-00077.
--
-- To build this test:
-- 1) Compile the file CA140230 (and include the results in the
-- program library).
-- 2) Compile the file CA140231 (and include the results in the
-- program library).
-- 3) Compile the file CA140232 (and include the results in the
-- program library).
-- 4) Compile the file CA140233 (and include the results in the
-- program library).
-- 5) Build and run an executable image.
--
-- TEST FILES:
-- This test consists of the following files:
-- CA140230.A
-- CA140231.A
-- -> CA140232.AM
-- CA140233.A
--
-- CHANGE HISTORY:
-- 01 MAY 95 ACVC 1.12 LA5008T baseline version
-- 29 JUN 95 SAIC Initial version
-- 05 MAR 96 SAIC First revision after review
-- 18 NOV 96 SAIC Modified unit names and prologue to conform
-- to coding conventions.
-- 07 DEC 96 SAIC Moved CA14023_1 to a separate file.
-- 13 SEP 99 RLB Changed to C-test (by AI-00077).
-- 20 MAR 00 RLB Removed special requirements, because there
-- aren't any.
--
--!
 
with CA14023_0;
use CA14023_0;
 
generic
Min : Little_float := 0.0;
type Any_rec is new Data_rec with private;
function CA14023_2 (R1, R2 : Any_rec) return Little_float;
 
--------------------------------------------------------
 
with CA14023_1;
 
function CA14023_2 (R1, R2 : Any_rec) return Little_float is
function Max_val is new CA14023_1 (Little_float, Min);
begin
return max_val (R1.Data, R2.Data);
end CA14023_2;
 
--------------------------------------------------------
 
package CA14023_0.CA14023_3 is
type New_data_rec is new Data_rec with record
Other_val : integer := 100;
end record;
end CA14023_0.CA14023_3;
 
--------------------------------------------------------
 
with Report; use Report;
with CA14023_2;
with CA14023_0;
with CA14023_0.CA14023_3;
 
procedure CA140232 is
 
NDR1, NDR2 : CA14023_0.CA14023_3.New_data_rec;
Min_value : constant CA14023_0.Little_float := 0.0;
TC_result : CA14023_0.Little_float;
function Max_Data_Val is new CA14023_2 (Min_value,
CA14023_0.CA14023_3.New_data_rec);
begin
Test ("CA14023", "Check that a compilation unit may not " &
"depend semantically on two different " &
"versions of the same compilation unit. " &
"Check the case where a generic " &
"instantiation depends on a generic " &
"function that is changed");
 
NDR1.Data := 2.0;
NDR2.Data := 5.0;
 
TC_result := Max_Data_Val (NDR1, NDR2);
 
if TC_result = 5.0 then
Failed ("Revised generic not used");
elsif TC_result /= 0.0 then -- the minimum, floor
Failed ("Incorrect value returned"); -- value of 0.0 should
end if; -- be returned rather
-- than the min of the
-- two actual parameters
 
Result;
end CA140232;
/ca11017.a
0,0 → 1,246
-- CA11017.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that body of the parent package may depend on one of its own
-- public children.
--
-- TEST DESCRIPTION:
-- A scenario is created that demonstrates the potential of adding a
-- public child during code maintenance without distubing a large
-- subsystem. After child is added to the subsystem, a maintainer
-- decides to take advantage of the new functionality and rewrites
-- the parent's body.
--
-- Declare a string abstraction in a package which manipulates string
-- replacement. Define a parent package which provides operations for
-- a record type with discriminant. Declare a public child of this
-- package which adds functionality to the original subsystem. In the
-- parent body, call operations from the public child.
--
-- In the main program, check that operations in the parent and public
-- child perform as expected.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
 
-- Simulates application which manipulates strings.
 
package CA11017_0 is
 
type String_Rec (The_Size : positive) is private;
 
type Substring is new string;
 
-- ... Various other types used by the application.
 
procedure Replace (In_The_String : in out String_Rec;
At_The_Position : in positive;
With_The_String : in String_Rec);
 
-- ... Various other operations used by the application.
 
private
-- Different size for each individual record.
 
type String_Rec (The_Size : positive) is
record
The_Length : natural := 0;
The_Content : Substring (1 .. The_Size);
end record;
 
end CA11017_0;
 
--=================================================================--
 
-- Public child added during code maintenance without disturbing a
-- large system. This public child would add functionality to the
-- original system.
 
package CA11017_0.CA11017_1 is
 
Position_Error : exception;
 
function Equal_Length (Left : in String_Rec;
Right : in String_Rec) return boolean;
 
function Same_Content (Left : in String_Rec;
Right : in String_Rec) return boolean;
 
procedure Copy (From_The_Substring : in Substring;
To_The_String : in out String_Rec);
 
-- ... Various other operations used by the application.
 
end CA11017_0.CA11017_1;
 
--=================================================================--
 
package body CA11017_0.CA11017_1 is
 
function Equal_Length (Left : in String_Rec;
Right : in String_Rec) return boolean is
-- Quick comparison between the lengths of the input strings.
 
begin
return (Left.The_Length = Right.The_Length); -- Parent's private
-- type.
end Equal_Length;
--------------------------------------------------------------------
function Same_Content (Left : in String_Rec;
Right : in String_Rec) return boolean is
 
begin
for I in 1 .. Left.The_Length loop
if Left.The_Content (I) = Right.The_Content (I) then
return true;
else
return false;
end if;
end loop;
 
end Same_Content;
--------------------------------------------------------------------
procedure Copy (From_The_Substring : in Substring;
To_The_String : in out String_Rec) is
begin
To_The_String.The_Content -- Parent's private type.
(1 .. From_The_Substring'length) := From_The_Substring;
 
To_The_String.The_Length -- Parent's private type.
:= From_The_Substring'length;
end Copy;
 
end CA11017_0.CA11017_1;
 
--=================================================================--
 
-- After child is added to the subsystem, a maintainer decides
-- to take advantage of the new functionality and rewrites the
-- parent's body.
 
with CA11017_0.CA11017_1;
 
package body CA11017_0 is
 
-- Calls functions from public child for a quick comparison of the
-- input strings. If their lengths are the same, do the replacement.
 
procedure Replace (In_The_String : in out String_Rec;
At_The_Position : in positive;
With_The_String : in String_Rec) is
End_Position : natural := At_The_Position +
With_The_String.The_Length - 1;
 
begin
if not CA11017_0.CA11017_1.Equal_Length -- Public child's operation.
(With_The_String, In_The_String) then
raise CA11017_0.CA11017_1.Position_Error;
-- Public child's exception.
else
In_The_String.The_Content (At_The_Position .. End_Position) :=
With_The_String.The_Content (1 .. With_The_String.The_Length);
end if;
 
end Replace;
 
end CA11017_0;
 
--=================================================================--
 
with Report;
 
with CA11017_0.CA11017_1; -- Explicit with public child package,
-- implicit with parent package (CA11017_0).
 
procedure CA11017 is
 
package String_Pkg renames CA11017_0;
use String_Pkg;
 
begin
 
Report.Test ("CA11017", "Check that body of the parent package can " &
"depend on one of its own public children");
 
-- Both input strings have the same size. Replace the first string by the
-- second string.
 
Replace_Subtest:
declare
The_First_String, The_Second_String : String_Rec (16);
-- Parent's private type.
The_Position : positive := 1;
begin
CA11017_1.Copy ("This is the time",
To_The_String => The_First_String);
 
CA11017_1.Copy ("For all good men", The_Second_String);
 
Replace (The_First_String, The_Position, The_Second_String);
-- Compare results using function from public child since
-- the type is private.
 
if not CA11017_1.Same_Content
(The_First_String, The_Second_String) then
Report.Failed ("Incorrect results");
end if;
 
end Replace_Subtest;
 
-- During processing, the application may erroneously attempt to replace
-- strings of different size. This would result in the raising of an
-- exception.
 
Exception_Subtest:
declare
The_First_String : String_Rec (17);
-- Parent's private type.
The_Second_String : String_Rec (13);
-- Parent's private type.
The_Position : positive := 2;
begin
CA11017_1.Copy (" ACVC Version 2.0", The_First_String);
 
CA11017_1.Copy (From_The_Substring => "ACVC 9X Basic",
To_The_String => The_Second_String);
 
Replace (The_First_String, The_Position, The_Second_String);
 
Report.Failed ("Exception was not raised");
 
exception
when CA11017_1.Position_Error =>
Report.Comment ("Exception is raised as expected");
 
end Exception_Subtest;
 
Report.Result;
 
end CA11017;
/ca1012a1.ada
0,0 → 1,45
-- CA1012A1.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- GENERIC PROCEDURE BODY.
-- DECLARATION IS IN CA1012A0.DEP.
-- INSTANTIATION IN CA1012A4M.DEP.
 
-- APPLICABILITY CRITERIA:
-- THIS UNIT MUST BE ACCEPTED BY ALL ADA 95 IMPLEMENTATIONS.
 
-- HISTORY:
-- WKB 07/20/81 CREATED ORIGINAL TEST.
-- PWB 02/19/86 ADDED COMMENTS TO DESCRIBE RELATION TO OTHER FILES
-- IN TEST AND POSSIBLE NON-APPLICABILITY.
-- BCB 01/05/88 MODIFIED HEADER.
-- RLB 09/13/99 UPDATED APPLICABILITY CRITERIA FOR ADA 95.
 
PROCEDURE CA1012A0 (I : IN OUT INDEX) IS
 
BEGIN
 
I := I + 1;
 
END CA1012A0;
/ca3011a0.ada
0,0 → 1,74
-- CA3011A0.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- A GENERIC UNIT.
-- SUBUNITS ARE IN CA3011A1, CA3011A2, AND CA3011A3.
-- INSTANTIATION IS IN CA3011A4M.
 
-- APPLICABILITY CRITERIA:
-- THIS UNIT MUST BE ACCEPTED BY ALL ADA 95 IMPLEMENTATIONS.
 
-- HISTORY:
-- RJW 09/22/86 CREATED ORIGINAL TEST.
-- BCB 01/05/88 MODIFIED HEADER.
-- RLB 09/13/99 UPDATED APPLICABILITY CRITERIA FOR ADA 95.
 
WITH REPORT; USE REPORT;
 
GENERIC
TYPE T IS (<>);
X : T;
PROCEDURE CA3011A0 (Z : OUT T);
 
PROCEDURE CA3011A0 (Z : OUT T) IS
T1 : T;
 
FUNCTION CA3011A1 RETURN T IS SEPARATE;
 
PROCEDURE CA3011A2 (Y : OUT T) IS SEPARATE;
 
PACKAGE CA3011A3 IS
FUNCTION CA3011A3F RETURN T;
END CA3011A3;
 
PACKAGE BODY CA3011A3 IS SEPARATE;
 
BEGIN
IF CA3011A1 /= X THEN
FAILED ( "INCORRECT VALUE RETURNED BY FUNCTION CA3011A1" );
END IF;
 
CA3011A2 (T1);
 
IF T1 /= X THEN
FAILED ( "INCORRECT VALUE RETURNED BY PROCEDURE CA3011A2 " );
END IF;
 
IF CA3011A3.CA3011A3F /= X THEN
FAILED ( "INCORRECT VALUE RETURNED BY FUNCTION CA3011A3F " );
END IF;
 
Z := X;
 
END CA3011A0;
/ca1014a0.ada
0,0 → 1,85
-- CA1014A0M.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT A SUBUNIT CAN BE SUBMITTED FOR COMPILATION
-- SEPARATELY FROM ITS PARENT UNIT.
 
-- SEPARATE FILES ARE:
-- CA1014A0M THE MAIN PROCEDURE.
-- CA1014A1 A SUBUNIT PROCEDURE BODY.
-- CA1014A2 A SUBUNIT PACKAGE BODY.
-- CA1014A3 A SUBUNIT FUNCTION BODY.
 
-- JRK 5/20/81
 
WITH REPORT;
USE REPORT;
 
PROCEDURE CA1014A0M IS
 
I : INTEGER := 0;
 
PACKAGE CALL_TEST IS
END CALL_TEST;
 
PACKAGE BODY CALL_TEST IS
BEGIN
TEST ("CA1014A", "SUBUNITS SUBMITTED FOR COMPILATION " &
"SEPARATELY FROM PARENT UNIT");
END CALL_TEST;
 
PROCEDURE CA1014A1 (I : IN OUT INTEGER) IS SEPARATE;
 
PACKAGE CA1014A2 IS
I : INTEGER := 10;
PROCEDURE P (I : IN OUT INTEGER);
END CA1014A2;
 
PACKAGE BODY CA1014A2 IS SEPARATE;
 
FUNCTION CA1014A3 (I : INTEGER) RETURN INTEGER IS SEPARATE;
 
BEGIN
 
CA1014A1 (I);
IF I /= 1 THEN
FAILED ("SUBUNIT PROCEDURE NOT ELABORATED/EXECUTED");
END IF;
 
IF CA1014A2.I /= 15 THEN
FAILED ("SUBUNIT PACKAGE BODY NOT ELABORATED/EXECUTED");
END IF;
 
I := 0;
CA1014A2.P (I);
IF I /= -20 THEN
FAILED ("SUBUNIT PACKAGED PROCEDURE NOT ELABORATED/EXECUTED");
END IF;
 
IF CA1014A3(50) /= -50 THEN
FAILED ("SUBUNIT FUNCTION NOT ELABORATED/EXECUTED");
END IF;
 
RESULT;
END CA1014A0M;
/ca2003a1.ada
0,0 → 1,35
-- CA2003A1.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 6/26/81
 
SEPARATE (CA2003A0M)
PROCEDURE CA2003A1 IS
BEGIN
 
IF I /= 1 THEN
FAILED ("IDENTIFIER IN PARENT NOT VISIBLE");
END IF;
 
END CA2003A1;
/ca3011a2.ada
0,0 → 1,42
-- CA3011A2.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- A SUBUNIT OF A GENERIC UNIT.
-- THE GENERIC UNIT IS IN CA3011A0.
-- INSTANTIATION IS IN CA3011A4M.
 
-- APPLICABILITY CRITERIA:
-- THIS UNIT MUST BE ACCEPTED BY ALL ADA 95 IMPLEMENTATIONS.
 
-- HISTORY:
-- RJW 09/22/86 CREATED ORIGINAL TEST.
-- BCB 01/05/88 MODIFIED HEADER.
-- RLB 09/13/99 UPDATED APPLICABILITY CRITERIA FOR ADA 95.
 
SEPARATE (CA3011A0)
PROCEDURE CA3011A2 (Y : OUT T) IS
 
BEGIN
Y := X;
END CA3011A2;
/ca1012a3.ada
0,0 → 1,45
-- CA1012A3.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- GENERIC FUNCTION BODY.
-- DECLARATION IS IN CA1012AB.DEP.
-- INSTANTIATION IS IN CA1012A4B.DEP.
 
-- APPLICABILITY CRITERIA:
-- THIS UNIT MUST BE ACCEPTED BY ALL ADA 95 IMPLEMENTATIONS.
 
-- HISTORY:
-- WKB 07/20/81 CREATED ORIGINAL TEST.
-- PWB 02/19/86 ADDED COMMENTS TO DESCRIBE RELATION TO OTHER FILES
-- AND POSSIBLE NON-APPLICABILITY.
-- BCB 01/05/88 MODIFIED HEADER.
-- RLB 09/13/99 UPDATED APPLICABILITY CRITERIA FOR ADA 95.
 
FUNCTION CA1012A2 (J : IN ELEMENT) RETURN ELEMENT IS
 
BEGIN
 
RETURN J + 1;
 
END CA1012A2;
/ca1014a2.ada
0,0 → 1,39
-- CA1014A2.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- JRK 5/20/81
 
SEPARATE (CA1014A0M)
PACKAGE BODY CA1014A2 IS
 
PROCEDURE P (I : IN OUT INTEGER) IS
BEGIN
I := I - 20;
END P;
 
BEGIN
 
I := I + 5;
 
END CA1014A2;
/ca3011a4.ada
0,0 → 1,61
-- CA3011A4M.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- OBJECTIVE:
-- CHECK THAT AN IMPLEMENTATION DOES NOT REQUIRE GENERIC UNIT BODIES AND
-- SUBUNITS TO BE COMPILED TOGETHER IN THE SAME FILE.
 
-- SEPARATE FILES ARE:
-- CA3011A0 - A GENERIC UNIT.
-- CA3011A1, CA3011A2, CA3011A3 - SUBUNITS OF GENERIC UNIT.
-- CA3011A4M - THE MAIN PROCEDURE.
 
-- APPLICABILITY CRITERIA:
-- THIS TEST MUST RUN AND REPORT "PASSED" FOR ALL ADA 95 IMPLEMENTATIONS.
-- THIS WAS NOT REQUIRED FOR ADA 83.
 
-- HISTORY:
-- RJW 09/22/86 CREATED ORIGINAL TEST.
-- BCB 01/05/88 MODIFIED HEADER.
-- RLB 09/13/99 UPDATED APPLICABILITY CRITERIA FOR ADA 95.
-- RLB 09/15/99 REPAIRED OBJECTIVE FOR ADA 95.
 
WITH REPORT; USE REPORT;
WITH CA3011A0;
PROCEDURE CA3011A4M IS
I : INTEGER;
PROCEDURE P IS NEW CA3011A0 (INTEGER, 22);
 
BEGIN
TEST ( "CA3011A", "CHECK THAT AN IMPLEMENTATION DOES NOT REQUIRE " &
"GENERIC UNIT BODIES AND SUBUNITS TO BE " &
"COMPILED TOGETHER IN THE SAME FILE" );
 
P (I);
IF I /= 22 THEN
FAILED ( "INCORRECT INSTANTIATION" );
END IF;
 
RESULT;
END CA3011A4M;
/ca5003b1.ada
0,0 → 1,46
-- CA5003B1.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 7/22/81
-- JBG 10/6/83
-- BHS 8/02/84
-- JRK 9/20/84
 
 
WITH CA5003B0; USE CA5003B0; PRAGMA ELABORATE (CA5003B0);
PACKAGE CA5003B1 IS
 
PACKAGE CA5003B2 IS
PROCEDURE P1;
END CA5003B2;
 
END CA5003B1;
 
 
PACKAGE BODY CA5003B1 IS
 
A1 : INTEGER := SHOW_ELAB ('1');
PACKAGE BODY CA5003B2 IS SEPARATE;
 
END CA5003B1;
/ca2007a1.ada
0,0 → 1,36
-- CA2007A1.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 7/1/81
 
SEPARATE (CA2007A0M)
 
PACKAGE BODY CA2007A1 IS
 
BEGIN
 
ELAB_ORDER (NEXT) := '1';
NEXT := NEXT + 1;
 
END CA2007A1;
/ca5003b3.ada
0,0 → 1,35
-- CA5003B3.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 7/22/81
-- JBG 10/6/83
-- BHS 8/02/84
-- JRK 9/20/84
 
WITH CA5003B0; USE CA5003B0; PRAGMA ELABORATE (CA5003B0);
PACKAGE CA5003B3 IS
 
A3 : INTEGER := SHOW_ELAB ('3');
 
END CA5003B3;
/ca2007a3.ada
0,0 → 1,36
-- CA2007A3.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 7/1/81
 
SEPARATE (CA2007A0M)
 
PACKAGE BODY CA2007A3 IS
 
BEGIN
 
ELAB_ORDER (NEXT) := '3';
NEXT := NEXT + 1;
 
END CA2007A3;
/ca5003b5.ada
0,0 → 1,65
-- CA5003B5M.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT THE ELABORATION OF LIBRARY UNITS REQUIRED BY
-- A MAIN PROGRAM IS PERFORMED CONSISTENTLY WITH THE PARTIAL
-- ORDERING DEFINED BY THE COMPILATION ORDER RULES.
-- IN PARTICULAR, CHECK THAT A LIBRARY UNIT MENTIONED IN THE
-- WITH_CLAUSE OF A SUBUNIT IS ELABORATED PRIOR TO THE BODY OF
-- THE ANCESTOR UNIT.
 
-- SEPARATE FILES ARE:
-- CA5003B0 A LIBRARY PACKAGE.
-- CA5003B1 A LIBRARY PACKAGE.
-- CA5003B2 A SUBUNIT PACKAGE BODY (_B1._B2).
-- CA5003B3 A LIBRARY PACKAGE DECLARATION.
-- CA5003B4 A SUBUNIT PACKAGE BODY (_B1._B2._B4).
-- CA5003B5M THE MAIN PROCEDURE.
 
-- LIBRARY PACKAGES MUST BE ELABORATED IN ORDER: _B0, _B3, _B1.
-- PARENT UNITS MUST BE ELABORATED BEFORE THEIR SUBUNITS.
 
-- WKB 7/22/81
-- JBG 10/6/83
-- BHS 8/02/84
-- JRK 9/20/84
 
WITH REPORT, CA5003B0;
USE REPORT, CA5003B0;
WITH CA5003B1;
PROCEDURE CA5003B5M IS
 
BEGIN
TEST ("CA5003B", "CHECK THAT UNITS IN WITH_CLAUSES OF " &
"SUBUNITS ARE ELABORATED PRIOR TO THE " &
"BODY OF THE ANCESTOR UNIT");
 
COMMENT ("ACTUAL ELABORATION ORDER WAS " & ORDER);
 
IF ORDER /= "3124" THEN
FAILED ("ILLEGAL ELABORATION ORDER");
END IF;
 
RESULT;
END CA5003B5M;
/ca11a02.a
0,0 → 1,156
-- CA11A02.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that a type extended in a client of a public child inherits
-- primitive operations from parent.
--
-- TEST DESCRIPTION:
-- Declare a root tagged type in a package specification. Declare two
-- primitive subprograms for the type (foundation code).
--
-- Add a public child to the above package. Extend the root type with
-- a record extension in the specification. Declare a new primitive
-- subprogram to write to the child extension.
--
-- In the main program, "with" the child. Declare an extension of
-- the child extension. Access the primitive operations from both
-- parent and child packages.
--
-- TEST FILES:
-- This test depends on the following foundation code:
--
-- FA11A00.A
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
-- 20 Dec 94 SAIC Moved declaration of Label_Widget to library level
--
--!
 
package FA11A00.CA11A02_0 is -- Color_Widget_Pkg
-- This public child declares an extension from its parent. It
-- represents processing of widgets in a window system.
 
type Widget_Color_Enum is (Black, Green, White);
 
type Color_Widget is new Widget with -- Record extension of
record -- parent tagged type.
Color : Widget_Color_Enum;
end record;
 
-- Inherits procedure Set_Width from parent.
-- Inherits procedure Set_Height from parent.
 
-- To be inherited by its derivatives.
procedure Set_Color (The_Widget : in out Color_Widget;
C : in Widget_Color_Enum);
 
end FA11A00.CA11A02_0; -- Color_Widget_Pkg
 
--=======================================================================--
 
package body FA11A00.CA11A02_0 is -- Color_Widget_Pkg
 
procedure Set_Color (The_Widget : in out Color_Widget;
C : in Widget_Color_Enum) is
begin
The_Widget.Color := C;
end Set_Color;
 
end FA11A00.CA11A02_0; -- Color_Widget_Pkg
 
--=======================================================================--
 
with FA11A00.CA11A02_0; -- Color_Widget_Pkg.
 
package CA11A02_1 is
 
type Label_Widget (Str_Disc : Integer) is new
FA11A00.CA11A02_0.Color_Widget with
record
Label : String (1 .. Str_Disc);
end record;
 
-- Inherits (inherited) procedure Set_Width from Color_Widget.
-- Inherits (inherited) procedure Set_Height from Color_Widget.
-- Inherits procedure Set_Color from Color_Widget.
 
end CA11A02_1;
 
--=======================================================================--
 
with FA11A00.CA11A02_0; -- Color_Widget_Pkg,
-- implicitly with Widget_Pkg
with CA11A02_1;
 
with Report;
 
procedure CA11A02 is
 
package Widget_Pkg renames FA11A00;
package Color_Widget_Pkg renames FA11A00.CA11A02_0;
 
use Widget_Pkg; -- All user-defined operators directly visible.
 
procedure Set_Label (The_Widget : in out CA11A02_1.Label_Widget;
L : in String) is
begin
The_Widget.Label := L;
end Set_Label;
---------------------------------------------------------
procedure Set_Widget (The_Widget : in out CA11A02_1.Label_Widget;
The_Width : in Widget_Length;
The_Height : in Widget_Length;
The_Color : in
Color_Widget_Pkg.Widget_Color_Enum;
The_Label : in String) is
begin
CA11A02_1.Set_Width (The_Widget, The_Width); -- Twice inherited.
CA11A02_1.Set_Height (The_Widget, The_Height); -- Twice inherited.
CA11A02_1.Set_Color (The_Widget, The_Color); -- Inherited.
Set_Label (The_Widget, The_Label); -- Explicitly declared.
end Set_Widget;
 
White_Widget : CA11A02_1.Label_Widget (11);
 
begin
 
Report.Test ("CA11A02", "Check that a type extended in a client of " &
"a public child inherits primitive operations from parent");
 
Set_Widget (White_Widget, 15, 21, Color_Widget_Pkg.White, "Alarm_Clock");
 
If White_Widget.Width /= Widget_Length (Report.Ident_Int (15)) or
White_Widget.Height /= Widget_Length (Report.Ident_Int (21)) or
Color_Widget_Pkg."/=" (White_Widget.Color, Color_Widget_Pkg.White) or
White_Widget.Label /= "Alarm_Clock" then
Report.Failed ("Incorrect result for White_Widget");
end if;
 
Report.Result;
 
end CA11A02;
/ca13a01.a
0,0 → 1,320
-- CA13A01.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that subunits declared in non-generic child units of a public
-- parent have the same visibility into its parent, its siblings
-- (public and private), and packages on which its parent depends
-- as is available at the point of their declaration.
--
-- TEST DESCRIPTION:
-- Declare an check system procedure as a subunit in a private child
-- package of the basic operation package (FA13A00.A). This procedure
-- has visibility into its parent ancestor and its private sibling.
--
-- Declare an emergency procedure as a subunit in a public child package
-- of the basic operation package (FA13A00.A). This procedure has
-- visibility into its parent ancestor and its private sibling.
--
-- Declare an express procedure as a subunit in a public child subprogram
-- of the basic operation package (FA13A00.A). This procedure has
-- visibility into its parent ancestor and its public sibling.
--
-- In the main program, "with"s the child package and subprogram. Check
-- that subunits perform as expected.
--
-- TEST FILES:
-- The following files comprise this test:
--
-- FA13A00.A
-- CA13A01.A
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
 
-- Private child package of an elevator application. This package
-- provides maintenance operations.
 
private package FA13A00_1.CA13A01_4 is -- Maintenance operation
 
One_Floor : Floor_No := 1; -- Type declared in parent.
 
procedure Check_System;
 
-- other type definitions and procedure declarations in real application.
 
end FA13A00_1.CA13A01_4;
 
--==================================================================--
 
-- Context clauses required for visibility needed by separate subunit.
 
with FA13A00_0; -- Building Manager
 
with FA13A00_1.FA13A00_2; -- Floor Calculation (private)
with FA13A00_1.FA13A00_3; -- Move Elevator
 
use FA13A00_0;
 
package body FA13A00_1.CA13A01_4 is
 
procedure Check_System is separate;
 
end FA13A00_1.CA13A01_4;
 
--==================================================================--
 
separate (FA13A00_1.CA13A01_4)
 
-- Subunit Check_System declared in Maintenance Operation.
 
procedure Check_System is
begin
-- See if regular power is on.
 
if Power /= V120 then -- Reference package with'ed by
TC_Operation := false; -- the subunit parent's body.
end if;
 
-- Test elevator function.
 
FA13A00_1.FA13A00_3.Move_Elevator -- Reference public sibling of
(Penthouse, Call_Waiting); -- the subunit parent's body.
 
if not Call_Waiting (Penthouse) then -- Reference private part of the
TC_Operation := false; -- parent of the subunit package's
-- body.
end if;
 
FA13A00_1.FA13A00_2.Down (One_Floor); -- Reference private sibling of
-- the subunit parent's body.
 
if Current_Floor /= Floor'pred (Penthouse) then
TC_Operation := false; -- Reference type declared in the
end if; -- parent of the subunit parent's
-- body.
 
end Check_System;
 
--==================================================================--
 
-- Public child package of an elevator application. This package provides
-- an emergency operation.
 
package FA13A00_1.CA13A01_5 is -- Emergency Operation
 
-- Other type definitions in real application.
 
procedure Emergency;
 
private
type Bell_Type is (Inactive, Active);
 
end FA13A00_1.CA13A01_5;
 
--==================================================================--
 
-- Context clauses required for visibility needed by separate subunit.
 
with FA13A00_0; -- Building Manager
 
with FA13A00_1.FA13A00_3; -- Move Elevator
 
with FA13A00_1.CA13A01_4; -- Maintenance Operation (private)
 
use FA13A00_0;
 
package body FA13A00_1.CA13A01_5 is
 
procedure Emergency is separate;
 
end FA13A00_1.CA13A01_5;
 
--==================================================================--
 
separate (FA13A00_1.CA13A01_5)
 
-- Subunit Emergency declared in Maintenance Operation.
 
procedure Emergency is
Bell : Bell_Type; -- Reference type declared in the
-- subunit parent's body.
 
begin
-- Calls maintenance operation.
 
FA13A00_1.CA13A01_4.Check_System; -- Reference private sibling of the
-- subunit parent 's body.
 
-- Clear all calls to the elevator.
 
Clear_Calls (Call_Waiting); -- Reference subprogram declared
-- in the parent of the subunit
-- parent's body.
for I in Floor loop
if Call_Waiting (I) then -- Reference private part of the
TC_Operation := false; -- parent of the subunit parent's
end if; -- body.
end loop;
 
-- Move elevator to the basement.
 
FA13A00_1.FA13A00_3.Move_Elevator -- Reference public sibling of the
(Basement, Call_Waiting); -- subunit parent's body.
 
if Current_Floor /= Basement then -- Reference type declared in the
TC_Operation := false; -- parent of the subunit parent's
end if; -- body.
 
-- Shut off power.
 
Power := Off; -- Reference package with'ed by
-- the subunit parent's body.
 
-- Activate bell.
 
Bell := Active; -- Reference type declared in the
-- subunit parent's body.
 
end Emergency;
 
--==================================================================--
 
-- Public child subprogram of an elevator application. This subprogram
-- provides an express operation.
 
procedure FA13A00_1.CA13A01_6;
 
--==================================================================--
 
-- Context clauses required for visibility needed by separate subunit.
 
with FA13A00_0; -- Building Manager
 
with FA13A00_1.FA13A00_2; -- Floor Calculation (private)
 
with FA13A00_1.FA13A00_3; -- Move Elevator
 
use FA13A00_0;
 
procedure FA13A00_1.CA13A01_6 is -- Express Operation
 
-- Other type definitions in real application.
 
procedure GoTo_Penthouse is separate;
 
begin
GoTo_Penthouse;
 
end FA13A00_1.CA13A01_6;
 
--==================================================================--
 
separate (FA13A00_1.CA13A01_6)
 
-- Subunit GoTo_Penthouse declared in Express Operation.
 
procedure GoTo_Penthouse is
begin
-- Go faster.
 
Power := V240; -- Reference package with'ed by
-- the subunit parent's body.
 
-- Call elevator.
 
Call (Penthouse, Call_Waiting); -- Reference subprogram declared in
-- the parent of the subunit
-- parent's body.
 
if not Call_Waiting (Penthouse) then -- Reference private part of the
TC_Operation := false; -- parent of the subunit parent's
end if; -- body.
 
-- Move elevator to Penthouse.
 
FA13A00_1.FA13A00_3.Move_Elevator -- Reference public sibling of the
(Penthouse, Call_Waiting); -- subunit parent's body.
 
if Current_Floor /= Penthouse then -- Reference type declared in the
TC_Operation := false; -- parent of the subunit parent's
end if; -- body.
 
-- Return slowly
 
while Current_Floor /= Floor1 loop -- Reference type, subprogram
FA13A00_1.FA13A00_2.Down (1); -- declared in the parent of the
-- subunit parent's body.
end loop;
 
if Current_Floor /= Floor1 then -- Reference type declared in
TC_Operation := false; -- the parent of the subunit
end if; -- parent's body.
 
-- Back to normal.
Power := V120; -- Reference package with'ed by
-- the subunit parent's body.
 
end GoTo_Penthouse;
 
--==================================================================--
 
with FA13A00_1.CA13A01_5; -- Emergency Operation
-- implicitly with Basic Elevator
-- Operations
 
with FA13A00_1.CA13A01_6; -- Express Operation
 
with Report;
 
procedure CA13A01 is
 
begin
 
Report.Test ("CA13A01", "Check that subunits declared in non-generic " &
"child units of a public parent have the same visibility " &
"into its parent, its parent's siblings, and packages on " &
"which its parent depends");
 
-- Go to Penthouse.
 
FA13A00_1.CA13A01_6;
 
-- Call emergency operation.
 
FA13A00_1.CA13A01_5.Emergency;
 
if not FA13A00_1.TC_Operation then
Report.Failed ("Incorrect elevator operation");
end if;
 
Report.Result;
 
end CA13A01;
/ca11c02.a
0,0 → 1,158
-- CA11C02.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that primitive operations declared in a child package
-- override operations declared in ancestor packages, and that
-- operations on class-wide types defined in the ancestor packages
-- dispatch as appropriate to these overriding implementations.
--
-- TEST DESCRIPTION:
--
-- This test builds on the foundation code file (FA11C00) that contains
-- a parent package, child package, and grandchild package. The parent
-- package declares a tagged type and primitive operation. The child
-- package extends the type, and overrides the primitive operation. The
-- grandchild package does the same.
--
-- The test procedure "withs" the grandchild package, and receives
-- visibility to all of its ancestor packages, types and operations.
-- A procedure with a formal class-wide parameter is defined that will
-- allow for dispatching calls to the overridden primitive operations,
-- based on the specific type of the actual parameter. The primitive
-- operations provide a string value to update a global string array
-- variable. Calls to the local procedure are made, with objects of each
-- of the tagged types as parameters, and the global variable is finally
-- examined to ensure that the correct version of primitive operation was
-- dispatched correctly.
--
-- TEST FILES:
-- This test depends on the following foundation code:
--
-- FA11C00.A
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
 
with FA11C00_0.FA11C00_1.FA11C00_2; -- Package Animal.Mammal.Primate
with Report;
 
procedure CA11C02 is
 
package Animal_Package renames FA11C00_0;
package Mammal_Package renames FA11C00_0.FA11C00_1;
package Primate_Package renames FA11C00_0.FA11C00_1.FA11C00_2;
 
Max_Animals : constant := 3;
 
type Data_Base_Type is array (1 .. Max_Animals) of String (1 .. 37);
 
Zoo_Data_Base : Data_Base_Type := (others => (others => ' '));
-- Global variable.
 
Macaw : Animal_Package.Animal := (Common_Name => "Scarlet Macaw ",
Weight => 2);
 
Manatee : Mammal_Package.Mammal := (Common_Name => "Southern Manatee ",
Weight => 230,
Hair_Color => Mammal_Package.Brown);
 
Lemur : Primate_Package.Primate :=
(Common_Name => "Ring-Tailed Lemur ",
Weight => 5,
Hair_Color => Mammal_Package.Black,
Habitat => Primate_Package.Arboreal);
begin
 
Report.Test ("CA11C02", "Check that primitive operations declared " &
"in a child package override operations declared " &
"in ancestor packages, and that operations " &
"on class-wide types defined in the ancestor " &
"packages dispatch as appropriate to these " &
"overriding implementations");
 
declare
 
use Animal_Package, Mammal_Package, Primate_Package;
 
-- The following procedure updates the global variable Zoo_Data_Base.
 
procedure Enter_Data (A : Animal'Class; I : Integer) is
begin
Zoo_Data_Base (I) := Image (A);
end Enter_Data;
 
begin
 
-- Verify initial test conditions.
 
if not (Zoo_Data_Base(1)(1..6) = " ")
or not
(Zoo_Data_Base(2)(1..6) = " ")
or not
(Zoo_Data_Base(3)(1..6) = " ")
then
Report.Failed ("Initial condition failure");
end if;
 
 
-- Enter data from all three animals into the zoo database.
 
Enter_Data (Macaw, 1); -- First entry in database.
Enter_Data (A => Manatee, I => 2); -- Second entry.
Enter_Data (Lemur, I => 3); -- Third entry.
 
-- Verify the correct version of the overridden function Image was used
-- for entering the specific data.
 
if not (Zoo_Data_Base(1)(1 .. 6) = "Animal")
or not
(Zoo_Data_Base(1)(26 .. 30) = "Macaw")
then
Report.Failed ("Incorrect version of Image for parent type");
end if;
 
if not (Zoo_Data_Base(2)(1 .. 6) = "Mammal"
and
Zoo_Data_Base(2)(27 .. 33) = "Manatee")
then
Report.Failed ("Incorrect version of Image for child type");
end if;
 
if not ((Zoo_Data_Base(3)(1 .. 7) = "Primate")
and
(Zoo_Data_Base(3)(30 .. 34) = "Lemur"))
then
Report.Failed ("Incorrect version of Image for grandchild type");
end if;
 
end;
 
Report.Result;
 
end CA11C02;
/ca1003a.ada
0,0 → 1,73
-- CA1003A.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT MORE THAN ONE COMPLETELY INDEPENDENT COMPILATION
-- UNIT CAN BE SUBMITTED IN A SINGLE FILE.
 
-- JRK 5/13/81
-- JBG 8/25/83
 
PROCEDURE CA1003A_P (I : IN OUT INTEGER) IS
BEGIN
I := I + 1;
END CA1003A_P;
 
 
PACKAGE CA1003A_PKG IS
I : INTEGER := 0;
END CA1003A_PKG;
 
 
FUNCTION CA1003A_F (I : INTEGER) RETURN INTEGER IS
BEGIN
RETURN -I;
END CA1003A_F;
 
 
WITH REPORT, CA1003A_P, CA1003A_PKG, CA1003A_F;
USE REPORT;
 
PROCEDURE CA1003A IS
 
I : INTEGER := IDENT_INT (0);
 
BEGIN
TEST ("CA1003A", "INDEPENDENT UNITS IN A SINGLE FILE");
 
CA1003A_P (I);
IF I /= 1 THEN
FAILED ("INDEPENDENT PROCEDURE NOT INVOKED");
END IF;
 
CA1003A_PKG.I := CA1003A_PKG.I + IDENT_INT(10);
IF CA1003A_PKG.I /= 10 THEN
FAILED ("INDEPENDENT PACKAGE VARIABLE ACCESSED INCORRECTLY");
END IF;
 
IF CA1003A_F(IDENT_INT(5)) /= -5 THEN
FAILED ("INDEPENDENT FUNCTION NOT INVOKED");
END IF;
 
RESULT;
END CA1003A;
/ca2011b.ada
0,0 → 1,118
-- CA2011B.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- OBJECTIVE:
-- CHECK THAT FOR A SUBPROGRAM DECLARATION-STUB-BODY TRIPLE, THE
-- DECLARATION-STUB AND STUB-BODY SPECIFICATIONS CAN CONFORM, BUT
-- THE DECLARATION-BODY SPECIFICATIONS NEED NOT.
 
-- HISTORY:
-- JET 08/01/88 CREATED ORIGINAL TEST.
 
PACKAGE CA2011B0 IS
SUBTYPE T IS INTEGER RANGE -100 .. 100;
I : T := 0;
END CA2011B0;
 
WITH CA2011B0; USE CA2011B0;
PACKAGE CA2011B1 IS
PROCEDURE P1 (X : CA2011B0.T);
PROCEDURE P2 (X : T);
END CA2011B1;
 
WITH REPORT; USE REPORT;
PRAGMA ELABORATE (REPORT);
PACKAGE BODY CA2011B1 IS
PACKAGE CA2011BX RENAMES CA2011B0;
PROCEDURE P1 (X : T) IS SEPARATE;
PROCEDURE P2 (X : CA2011BX.T) IS SEPARATE;
END CA2011B1;
 
SEPARATE (CA2011B1)
PROCEDURE P1 (X : CA2011BX.T) IS
BEGIN
I := IDENT_INT(X);
END P1;
 
SEPARATE (CA2011B1)
PROCEDURE P2 (X : CA2011BX.T) IS
BEGIN
I := IDENT_INT(X);
END P2;
 
WITH REPORT; USE REPORT;
WITH CA2011B0, CA2011B1;
PROCEDURE CA2011B IS
 
PACKAGE P1 IS
SUBTYPE T IS INTEGER RANGE -100 .. 100;
END P1;
USE P1;
 
FUNCTION F1 RETURN P1.T;
FUNCTION F2 RETURN T;
 
PACKAGE P2 RENAMES P1;
 
FUNCTION F1 RETURN T IS SEPARATE;
FUNCTION F2 RETURN P2.T IS SEPARATE;
 
BEGIN
TEST ("CA2011B", "CHECK THAT FOR A SUBPROGRAM DECLARATION-STUB-" &
"BODY TRIPLE, THE DECLARATION-STUB AND STUB-" &
"BODY SPECIFICATIONS CAN CONFORM, BUT THE " &
"DECLARATON-BODY SPECIFICATIONS NEED NOT");
 
IF F1 /= IDENT_INT(100) THEN
FAILED ("INCORRECT RETURN VALUE FROM FUNCTION 1");
END IF;
 
IF F2 /= IDENT_INT(-100) THEN
FAILED ("INCORRECT RETURN VALUE FROM FUNCTION 2");
END IF;
 
CA2011B1.P1(3);
IF CA2011B0.I /= IDENT_INT(3) THEN
FAILED ("INCORRECT RETURN VALUE FROM PROCEDURE 1");
END IF;
 
CA2011B1.P2(4);
IF CA2011B0.I /= IDENT_INT(4) THEN
FAILED ("INCORRECT RETURN VALUE FROM PROCEDURE 2");
END IF;
 
RESULT;
END CA2011B;
 
SEPARATE (CA2011B)
FUNCTION F1 RETURN P2.T IS
BEGIN
RETURN 100;
END F1;
 
SEPARATE (CA2011B)
FUNCTION F2 RETURN P2.T IS
BEGIN
RETURN -100;
END F2;
/ca140280.a
0,0 → 1,77
-- CA140280.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- OBJECTIVE:
-- See CA140283.AM.
--
-- TEST DESCRIPTION
-- See CA140283.AM.
--
-- TEST FILES:
-- This test consists of the following files:
-- -> CA140280.A
-- CA140281.A
-- CA140282.A
-- CA140283.AM
--
-- CHANGE HISTORY:
-- JBG 05/28/85 CREATED ORGINAL TEST.
-- RDH 04/18/90 ADDED CASES WHERE SUBPROGRAM PARAMETER TYPES ARE
-- NOT THE SAME.
-- RLB 07/08/99 Reinstated withdrawn test; revised to Ada 95 format.
 
GENERIC
C : INTEGER;
PROCEDURE GENPROC_CA14028 (X : OUT INTEGER);
 
WITH REPORT; USE REPORT;
PRAGMA ELABORATE (REPORT);
PROCEDURE GENPROC_CA14028 (X : OUT INTEGER) IS
BEGIN
X := IDENT_INT(C);
END GENPROC_CA14028;
 
GENERIC
FUNCTION GENFUNC_CA14028 RETURN INTEGER;
 
FUNCTION GENFUNC_CA14028 RETURN INTEGER IS
BEGIN
RETURN 2;
END GENFUNC_CA14028;
 
WITH GENPROC_CA14028;
PRAGMA ELABORATE (GENPROC_CA14028);
PROCEDURE CA14028_PROC1 IS NEW GENPROC_CA14028(1);
 
WITH GENFUNC_CA14028;
PRAGMA ELABORATE (GENFUNC_CA14028);
FUNCTION CA14028_FUNC2 IS NEW GENFUNC_CA14028;
 
WITH GENPROC_CA14028;
PRAGMA ELABORATE (GENPROC_CA14028);
PROCEDURE CA14028_PROC3 IS NEW GENPROC_CA14028(3);
 
WITH GENFUNC_CA14028;
PRAGMA ELABORATE (GENFUNC_CA14028);
FUNCTION CA14028_FUNC3 IS NEW GENFUNC_CA14028;
/ca1108a.ada
0,0 → 1,136
-- CA1108A.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT A WITH_CLAUSE AND USE_CLAUSE GIVEN FOR A PACKAGE
-- SPECIFICATION APPLIES TO THE BODY AND SUBUNITS OF THE BODY.
 
-- BHS 7/27/84
-- JBG 5/1/85
 
PACKAGE OTHER_PKG IS
 
I : INTEGER := 4;
FUNCTION F (X : INTEGER) RETURN INTEGER;
 
END OTHER_PKG;
 
PACKAGE BODY OTHER_PKG IS
 
FUNCTION F (X : INTEGER) RETURN INTEGER IS
BEGIN
RETURN X + 1;
END F;
 
END OTHER_PKG;
 
WITH REPORT, OTHER_PKG;
USE REPORT, OTHER_PKG;
PRAGMA ELABORATE (OTHER_PKG);
PACKAGE CA1108A_PKG IS
 
J : INTEGER := 2;
PROCEDURE PROC;
PROCEDURE CALL_SUBS (X, Y : IN OUT INTEGER);
 
END CA1108A_PKG;
 
PACKAGE BODY CA1108A_PKG IS
PROCEDURE SUB (X, Y : IN OUT INTEGER) IS SEPARATE;
 
PROCEDURE PROC IS
Y : INTEGER := 2;
BEGIN
Y := OTHER_PKG.I;
IF Y /= 4 THEN
FAILED ("OTHER_PKG VARIABLE NOT VISIBLE " &
"IN PACKAGE BODY PROCEDURE");
END IF;
END PROC;
 
PROCEDURE CALL_SUBS (X, Y : IN OUT INTEGER) IS
BEGIN
SUB (X, Y);
END CALL_SUBS;
 
BEGIN
 
J := F(J); -- J => J + 1.
IF J /= 3 THEN
FAILED ("OTHER_PKG FUNCTION NOT VISIBLE IN " &
"PACKAGE BODY");
END IF;
 
END CA1108A_PKG;
 
 
WITH REPORT, CA1108A_PKG;
USE REPORT, CA1108A_PKG;
PROCEDURE CA1108A IS
 
VAR1, VAR2 : INTEGER;
 
BEGIN
 
TEST ("CA1108A", "WITH_ AND USE_CLAUSES GIVEN FOR A PACKAGE " &
"SPEC APPLY TO THE BODY AND ITS SUBUNITS");
 
PROC;
 
VAR1 := 1;
VAR2 := 1;
CALL_SUBS (VAR1, VAR2);
IF VAR1 /= 4 THEN
FAILED ("OTHER_PKG VARIABLE NOT VISIBLE IN SUBUNIT");
END IF;
 
IF VAR2 /= 6 THEN
FAILED ("OTHER_PKG FUNCTION NOT VISIBLE IN SUBUNIT " &
"OF SUBUNIT");
END IF;
 
RESULT;
 
END CA1108A;
 
 
SEPARATE (CA1108A_PKG)
PROCEDURE SUB (X, Y : IN OUT INTEGER) IS
PROCEDURE SUB2 (Z : IN OUT INTEGER) IS SEPARATE;
BEGIN
 
X := I;
SUB2 (Y);
 
END SUB;
 
 
SEPARATE (CA1108A_PKG.SUB)
PROCEDURE SUB2 (Z : IN OUT INTEGER) IS
I : INTEGER := 5;
BEGIN
 
Z := OTHER_PKG.F(I); -- Z => I + 1.
 
END SUB2;
/ca11001.a
0,0 → 1,276
-- CA11001.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that a child unit can be used to provide an alternate view and
-- operations on a private type in its parent package. Check that a
-- child unit can be a package. Check that a WITH of a child unit
-- includes an implicit WITH of its ancestor unit.
--
-- TEST DESCRIPTION:
-- Declare a private type in a package specification. Declare
-- subprograms for the type.
--
-- Add a public child to the above package. Within the body of this
-- package, access the private type. Declare operations to read and
-- write to its parent private type.
--
-- In the main program, "with" the child. Declare objects of the
-- parent private type. Access the subprograms from both parent and
-- child packages.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
 
package CA11001_0 is -- Cartesian_Complex
-- This package represents a Cartesian view of a complex number. It contains
-- a private type plus subprograms to construct and decompose a complex
-- number.
 
type Complex_Int is range 0 .. 100;
 
type Complex_Type is private;
 
Constant_Complex : constant Complex_Type;
 
Complex_Error : exception;
 
procedure Cartesian_Assign (R, I : in Complex_Int;
C : out Complex_Type);
 
function Cartesian_Real_Part (C : Complex_Type)
return Complex_Int;
 
function Cartesian_Imag_Part (C : Complex_Type)
return Complex_Int;
 
function Complex (Real, Imaginary : Complex_Int)
return Complex_Type;
 
private
type Complex_Type is -- Parent private type
record
Real, Imaginary : Complex_Int;
end record;
 
Constant_Complex : constant Complex_Type := (Real => 0, Imaginary => 0);
 
end CA11001_0; -- Cartesian_Complex
 
--=======================================================================--
 
package body CA11001_0 is -- Cartesian_Complex
 
procedure Cartesian_Assign (R, I : in Complex_Int;
C : out Complex_Type) is
begin
C.Real := R;
C.Imaginary := I;
end Cartesian_Assign;
-------------------------------------------------------------
function Cartesian_Real_Part (C : Complex_Type)
return Complex_Int is
begin
return C.Real;
end Cartesian_Real_Part;
-------------------------------------------------------------
function Cartesian_Imag_Part (C : Complex_Type)
return Complex_Int is
begin
return C.Imaginary;
end Cartesian_Imag_Part;
-------------------------------------------------------------
function Complex (Real, Imaginary : Complex_Int)
return Complex_Type is
begin
return (Real, Imaginary);
end Complex;
 
end CA11001_0; -- Cartesian_Complex
 
--=======================================================================--
 
package CA11001_0.CA11001_1 is -- Polar_Complex
-- This public child provides a different view of the private type from its
-- parent. It provides a polar view by the provision of subprograms which
-- construct and decompose a complex number.
 
procedure Polar_Assign (R, Theta : in Complex_Int;
C : out Complex_Type);
-- Complex_Type is a
-- record of CA11001_0
 
function Polar_Real_Part (C: Complex_Type) return Complex_Int;
 
function Polar_Imag_Part (C: Complex_Type) return Complex_Int;
 
function Equals_Const (Num : Complex_Type) return Boolean;
 
end CA11001_0.CA11001_1; -- Polar_Complex
 
--=======================================================================--
 
package body CA11001_0.CA11001_1 is -- Polar_Complex
 
function Cos (Angle : Complex_Int) return Complex_Int is
Num : constant Complex_Int := 2;
begin
return (Angle * Num); -- not true Cosine function
end Cos;
-------------------------------------------------------------
function Sine (Angle : Complex_Int) return Complex_Int is
begin
return 1; -- not true Sine function
end Sine;
-------------------------------------------------------------
function Sqrt (Num : Complex_Int)
return Complex_Int is
begin
return (Num); -- not true Square root function
end Sqrt;
-------------------------------------------------------------
function Tan (Angle : Complex_Int) return Complex_Int is
begin
return Angle; -- not true Tangent function
end Tan;
-------------------------------------------------------------
procedure Polar_Assign (R, Theta : in Complex_Int;
C : out Complex_Type) is
begin
if R = 0 and Theta = 0 then
raise Complex_Error;
end if;
C.Real := R * Cos (Theta);
C.Imaginary := R * Sine (Theta);
end Polar_Assign;
-------------------------------------------------------------
function Polar_Real_Part (C: Complex_Type) return Complex_Int is
begin
return Sqrt ((Cartesian_Imag_Part (C)) ** 2 +
(Cartesian_Real_Part (C)) ** 2);
end Polar_Real_Part;
-------------------------------------------------------------
function Polar_Imag_Part (C: Complex_Type) return Complex_Int is
begin
return (Tan (Cartesian_Imag_Part (C) /
Cartesian_Real_Part (C)));
end Polar_Imag_Part;
-------------------------------------------------------------
function Equals_Const (Num : Complex_Type) return Boolean is
begin
return Num.Real = Constant_Complex.Real and
Num.Imaginary = Constant_Complex.Imaginary;
end Equals_Const;
 
end CA11001_0.CA11001_1; -- Polar_Complex
 
--=======================================================================--
 
with CA11001_0.CA11001_1; -- Polar_Complex
with Report;
 
procedure CA11001 is
 
Complex_No : CA11001_0.Complex_Type; -- Complex_Type is a
-- record of CA11001_0
 
Complex_5x2 : CA11001_0.Complex_Type := CA11001_0.Complex (5, 2);
 
Int_2 : CA11001_0.Complex_Int
:= CA11001_0.Complex_Int (Report.Ident_Int (2));
 
begin
 
Report.Test ("CA11001", "Check that a child unit can be used " &
"to provide an alternate view and operations " &
"on a private type in its parent package");
 
Basic_View_Subtest:
 
begin
-- Assign using Cartesian coordinates.
CA11001_0.Cartesian_Assign
(CA11001_0.Complex_Int (Report.Ident_Int (1)), Int_2, Complex_No);
 
-- Read back in Polar coordinates.
-- Polar values are surrogates used in checking for correct
-- subprogram calls.
if CA11001_0."/=" (CA11001_0.CA11001_1.Polar_Real_Part (Complex_No),
CA11001_0.Cartesian_Real_Part (Complex_5x2)) and CA11001_0."/="
(CA11001_0.CA11001_1.Polar_Imag_Part (Complex_No),
CA11001_0.Cartesian_Imag_Part (Complex_5x2)) then
Report.Failed ("Incorrect Cartesian result");
end if;
 
end Basic_View_Subtest;
-------------------------------------------------------------
Alternate_View_Subtest:
begin
-- Assign using Polar coordinates.
CA11001_0.CA11001_1.Polar_Assign
(Int_2, CA11001_0.Complex_Int (Report.Ident_Int (3)), Complex_No);
 
-- Read back in Cartesian coordinates.
if CA11001_0."/=" (CA11001_0.Cartesian_Real_Part
(Complex_No), CA11001_0.Complex_Int (Report.Ident_Int (12))) or
CA11001_0."/=" (CA11001_0.Cartesian_Imag_Part (Complex_No), Int_2)
then
Report.Failed ("Incorrect Polar result");
end if;
end Alternate_View_Subtest;
-------------------------------------------------------------
Other_Subtest:
begin
-- Assign using Polar coordinates.
CA11001_0.CA11001_1.Polar_Assign
(CA11001_0.Complex_Int (Report.Ident_Int (0)), Int_2, Complex_No);
 
-- Compare with Complex_Num in CA11001_0.
if not CA11001_0.CA11001_1.Equals_Const (Complex_No)
then
Report.Failed ("Incorrect result");
end if;
end Other_Subtest;
-------------------------------------------------------------
Exception_Subtest:
begin
-- Raised parent's exception.
CA11001_0.CA11001_1.Polar_Assign
(CA11001_0.Complex_Int (Report.Ident_Int (0)),
CA11001_0.Complex_Int (Report.Ident_Int (0)), Complex_No);
Report.Failed ("Exception was not raised");
exception
when CA11001_0.Complex_Error =>
null;
when others =>
Report.Failed ("Unexpected exception raised in test");
end Exception_Subtest;
 
Report.Result;
 
end CA11001;
/ca11022.a
0,0 → 1,242
-- CA11022.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that body of a child unit can instantiate its generic sibling.
--
-- TEST DESCRIPTION:
-- Declare a package that provides some types for the graphic
-- application. Add a generic child package with a subprogram parameter
-- to provide algorithms that can be used by different terminal types
-- but that have to be customized to the specific terminal. Add child
-- packages to take advantage of the parent types and to provide a
-- customized operation for each of the different terminals. The
-- customized operation will be passed as a generic subprogram parameter
-- to the child package's sibling.
--
-- The main program "with"s the child packages. Check that the
-- operations in child units perform as expected.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
 
package CA11022_0 is -- Graphic Manager
type Row is range 1 .. 66;
type Column is range 1 .. 80;
type Radius is range 1 .. 3;
type Length is range 5 .. 10;
 
-- Testing artifice.
TC_Screen : array (Row, Column) of boolean := (others => (others => false));
TC_Draw_Circle : boolean := false;
TC_Draw_Square : boolean := false;
 
-- ... and other complicated ones.
 
end CA11022_0;
 
-- No bodies required for CA11022_0.
 
--==================================================================--
 
-- Child package to provide general graphic functionalities.
 
generic
 
with procedure Put_Dot (X : in Column;
Y : in Row);
 
package CA11022_0.CA11022_1 is
 
procedure Draw_Square (At_Col : in Column;
At_Row : in Row;
Len : in Length);
 
procedure Draw_Circle (At_Col : in Column;
At_Row : in Row;
Rad : in Radius);
 
-- procedure Draw_Ellipse ...
-- and other drawings ...
 
end CA11022_0.CA11022_1;
 
--==================================================================--
 
package body CA11022_0.CA11022_1 is
 
procedure Draw_Square (At_Col : in Column;
At_Row : in Row;
Len : in Length) is
begin
-- use square drawing algorithm
-- call
Put_Dot (At_Col + Column (Len), At_Row + Row(Len));
-- as needed in the algorithm.
TC_Draw_Square := true;
end Draw_Square;
 
-------------------------------------------------------
procedure Draw_Circle (At_Col : in Column;
At_Row : in Row;
Rad : in Radius) is
begin
-- use circle drawing algorithm
-- call
for I in 1 .. Rad loop
Put_Dot (At_Col + Column(I), At_Row + Row(I));
end loop;
-- as needed in the algorithm.
TC_Draw_Circle := true;
end Draw_Circle;
 
end CA11022_0.CA11022_1;
 
--==================================================================--
 
with CA11022_0.CA11022_1; -- Generic sibling.
 
-- Child package to provide customized graphic functions for the
-- VT100.
package CA11022_0.CA11022_2 is -- VT100 Graphic.
 
X : Column := 8;
Y : Row := 3;
R : Radius := 2;
L : Length := 6;
 
procedure VT100_Graphic;
 
end CA11022_0.CA11022_2;
 
--==================================================================--
 
package body CA11022_0.CA11022_2 is
 
procedure VT100_Graphic is
procedure VT100_Putdot (X : in Column;
Y : in Row) is
begin
-- Light a pixel at location (X, Y);
TC_Screen (Y, X) := true;
end VT100_Putdot;
 
------------------------------------
 
-- Declare instance of the generic sibling package to draw a circle,
-- a square, or an ellipse customized for the VT100.
package VT100_Graphic is new CA11022_0.CA11022_1 (VT100_Putdot);
begin
VT100_Graphic.Draw_Circle (X, Y, R);
VT100_Graphic.Draw_Square (X, Y, L);
end VT100_Graphic;
 
end CA11022_0.CA11022_2;
 
--==================================================================--
 
with CA11022_0.CA11022_1; -- Generic sibling.
 
-- Child package to provide customized graphic functions for the
-- IBM3270.
package CA11022_0.CA11022_3 is -- IBM3270 Graphic.
 
X : Column := 39;
Y : Row := 11;
R : Radius := 3;
L : Length := 7;
 
procedure IBM3270_Graphic;
 
end CA11022_0.CA11022_3;
 
--==================================================================--
 
package body CA11022_0.CA11022_3 is
 
procedure IBM3270_Graphic is
procedure IBM3270_Putdot (X : in Column;
Y : in Row) is
begin
-- Light a pixel at location (X + 2, Y);
TC_Screen (Y, X + Column(2)) := true;
end IBM3270_Putdot;
 
------------------------------------
 
-- Declare instance of the generic sibling package to draw a circle,
-- a square, or an ellipse customized for the IBM3270.
package IBM3270_Graphic is new CA11022_0.CA11022_1 (IBM3270_Putdot);
begin
IBM3270_Graphic.Draw_Circle (X, Y, R);
IBM3270_Graphic.Draw_Square (X, Y, L);
end IBM3270_Graphic;
 
end CA11022_0.CA11022_3;
 
--==================================================================--
 
with CA11022_0.CA11022_2; -- VT100 Graphic, implicitly with
-- CA11022_0, Graphic Manager.
with CA11022_0.CA11022_3; -- IBM3270 Graphic.
with Report;
 
procedure CA11022 is
 
begin
 
Report.Test ("CA11022", "Check that body of a child unit can depend on " &
"its generic sibling");
 
-- Customized graphic functions for the VT100 terminal.
CA11022_0.CA11022_2.VT100_Graphic;
 
if not CA11022_0.TC_Screen (4,9) and not CA11022_0.TC_Screen (5,10)
and not CA11022_0.TC_Screen (9,14) and not CA11022_0.TC_Draw_Circle
and not CA11022_0.TC_Draw_Square then
Report.Failed ("Wrong results for the VT100");
end if;
 
CA11022_0.TC_Draw_Circle := false;
CA11022_0.TC_Draw_Square := false;
 
-- Customized graphic functions for the IBM3270 terminal.
CA11022_0.CA11022_3.IBM3270_Graphic;
 
if not CA11022_0.TC_Screen (12,42) and not CA11022_0.TC_Screen (13,43)
and not CA11022_0.TC_Screen (14,44) and not CA11022_0.TC_Screen (46,18)
and not CA11022_0.TC_Draw_Circle and not CA11022_0.TC_Draw_Square then
Report.Failed ("Wrong results for the IBM3270");
end if;
 
Report.Result;
 
end CA11022;
/ca11d011.a
0,0 → 1,79
-- CA11D011.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- See CA11D013.AM
--
-- TEST DESCRIPTION:
-- See CA11D013.AM
--
-- TEST FILES:
-- The following files comprise this test:
--
-- FA11D00.A
-- CA11D010.A
-- => CA11D011.A
-- CA11D012.A
-- CA11D013.AM
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
-- 21 Dec 94 SAIC Declared child procedure specification
-- 26 Apr 96 SAIC ACVC 2.1: Modified prologue.
--
--!
 
with Report;
 
 
-- Child procedure of FA11D00.
 
procedure FA11D00.CA11D011 (Left, Right : in Complex_Type;
C : out Complex_Type);
 
--=======================================================================--
 
procedure FA11D00.CA11D011 (Left, Right : in Complex_Type;
C : out Complex_Type) is
-- Multiply_Complex.
 
begin
-- Zero is declared in parent package.
 
if Left.Real < Zero.Real or Right.Imag < Zero.Imag then
raise Multiply_Error; -- Reference to exception in parent package.
Report.Failed ("Program control not transferred by raise in " &
"child procedure FA11D00.CA11D011");
else
C.Real := (Left.Real * Right.Real);
C.Imag := (Left.Imag * Right.Imag);
end if;
 
exception
when others =>
TC_Handled_In_Child_Sub := true;
C := Check_Value; -- Reference to object in parent package.
 
end FA11D00.CA11D011; -- Multiply_Complex
/ca15003.a
0,0 → 1,161
-- CA15003.A
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE
-- Check the requirements of 10.1.5(4) and the modified 10.1.5(5)
-- from Technical Corrigendum 1. (Originally discussed as AI95-00136.)
-- Specifically:
-- Check that program unit pragma for a generic package are accepted
-- when given at the beginning of the package specification.
-- Check that a program unit pragma can be given for a generic
-- instantiation by placing the pragma immediately after the instantation.
--
-- TEST DESCRIPTION
-- This test checks the cases that are *not* forbidden by the RM,
-- and makes sure such legal cases actually work.
--
-- CHANGE HISTORY:
-- 29 JUN 1999 RAD Initial Version
-- 08 JUL 1999 RLB Cleaned up and added to test suite.
-- 27 AUG 1999 RLB Repaired errors introduced by me.
--
--!
 
with System;
package CA15003A is
pragma Pure;
 
type Big_Int is range -System.Max_Int .. System.Max_Int;
type Big_Positive is new Big_Int range 1..Big_Int'Last;
end CA15003A;
 
generic
type Int is new Big_Int;
package CA15003A.Pure is
pragma Pure;
function F(X: access Int) return Int;
end CA15003A.Pure;
 
with CA15003A.Pure;
package CA15003A.Pure_Instance is new CA15003A.Pure(Int => Big_Positive);
pragma Pure(CA15003A.Pure_Instance);
 
package body CA15003A.Pure is
function F(X: access Int) return Int is
begin
X.all := X.all + 1;
return X.all;
end F;
end CA15003A.Pure;
 
generic
package CA15003A.Pure.Preelaborate is
pragma Preelaborate;
One: Int := 1;
function F(X: access Int) return Int;
end CA15003A.Pure.Preelaborate;
 
package body CA15003A.Pure.Preelaborate is
function F(X: access Int) return Int is
begin
X.all := X.all + One;
return X.all;
end F;
end CA15003A.Pure.Preelaborate;
 
with CA15003A.Pure_Instance;
with CA15003A.Pure.Preelaborate;
package CA15003A.Pure_Preelaborate_Instance is
new CA15003A.Pure_Instance.Preelaborate;
pragma Preelaborate(CA15003A.Pure_Preelaborate_Instance);
 
package CA15003A.Empty_Pure is
pragma Pure;
pragma Elaborate_Body;
end CA15003A.Empty_Pure;
 
package body CA15003A.Empty_Pure is
end CA15003A.Empty_Pure;
 
package CA15003A.Empty_Preelaborate is
pragma Preelaborate;
pragma Elaborate_Body;
One: Big_Int := 1;
end CA15003A.Empty_Preelaborate;
 
package body CA15003A.Empty_Preelaborate is
function F(X: access Big_Int) return Big_Int is
begin
X.all := X.all + One;
return X.all;
end F;
end CA15003A.Empty_Preelaborate;
 
package CA15003A.Empty_Elaborate_Body is
pragma Elaborate_Body;
Three: aliased Big_Positive := 1;
Two, Tres: Big_Positive'Base := 0;
end CA15003A.Empty_Elaborate_Body;
 
with Report; use Report; pragma Elaborate_All(Report);
with CA15003A.Pure_Instance;
with CA15003A.Pure_Preelaborate_Instance;
use CA15003A;
package body CA15003A.Empty_Elaborate_Body is
begin
if Two /= Big_Positive'Base(Ident_Int(0)) then
Failed ("Two should be zero now");
end if;
if Tres /= Big_Positive'Base(Ident_Int(0)) then
Failed ("Tres should be zero now");
end if;
if Two /= Tres then
Failed ("Tres should be zero now");
end if;
Two := Pure_Instance.F(Three'Access);
Tres := Pure_Preelaborate_Instance.F(Three'Access);
if Two /= Big_Positive(Ident_Int(2)) then
Failed ("Two should be 2 now");
end if;
if Tres /= Big_Positive(Ident_Int(3)) then
Failed ("Tres should be 3 now");
end if;
end CA15003A.Empty_Elaborate_Body;
 
with Report; use Report;
with CA15003A.Empty_Pure;
with CA15003A.Empty_Preelaborate;
with CA15003A.Empty_Elaborate_Body; use CA15003A.Empty_Elaborate_Body;
use type CA15003A.Big_Positive'Base;
procedure CA15003 is
begin
Test("CA15003", "Placement of Program Unit Pragmas in Generic Packages");
if Two /= 2 then
Failed ("Two should be 2 now");
end if;
if Tres /= 3 then
Failed ("Tres should be 3 now");
end if;
Result;
end CA15003;
/ca11009.a
0,0 → 1,246
-- CA11009.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that a private child package can use entities declared in the
-- visible part of the parent unit of its parent unit.
--
-- TEST DESCRIPTION:
-- Declare a parent package containing types and objects used by the
-- system. Declare a public child package that provides a visible
-- interface to the system functionality.
-- Declare a private grandchild package that uses the visible grandparent
-- components to provide the actual functionality to the system.
--
-- The public child (parent of the private grandchild) uses the
-- functionality of its private child (grandchild package) to provide
-- the visible interface to operations of the system.
--
-- The test itself will utilize the visible interface provided in the
-- public child package to demonstrate a possible structure for
-- file management.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
-- 15 Apr 96 SAIC ACVC 2.1: Added pragma Elaborate_body.
--
--!
 
package CA11009_0 is -- Package OS.
pragma Elaborate_Body (CA11009_0);
 
type File_Descriptor_Type is new Integer;
type File_Name_Type is new String (1 .. 11);
type Permission_Type is (None, User, System, Bypass);
type File_Mode_Type is (Read_Only, Write_Only, Read_Write);
type File_Status_Type is (Open, Closed);
 
Default_Descriptor : constant File_Descriptor_Type := 0;
Default_Permission : constant Permission_Type := None;
Default_Mode : constant File_Mode_Type := Read_Only;
Default_Status : constant File_Status_Type := Closed;
Default_Filename : constant File_Name_Type := " ";
 
Max_Files : constant File_Descriptor_Type := 10;
An_Ada_File_Name : constant File_Name_Type := "AdaFileName";
File_Counter : Integer := 0;
 
type File_Type is tagged
record
Descriptor : File_Descriptor_Type := Default_Descriptor;
Name : File_Name_Type := Default_Filename;
Acct_Access : Permission_Type := Default_Permission;
Mode : File_Mode_Type := Default_Mode;
Current_Status : File_Status_Type := Default_Status;
end record;
 
type File_Array_Type is array (1 .. Max_Files) of File_Type;
 
File_Table : File_Array_Type;
 
--
 
function Get_File_Name return File_Name_Type;
 
end CA11009_0; -- Package OS.
 
--=================================================================--
 
package body CA11009_0 is -- Package body OS.
 
function Get_File_Name return File_Name_Type is
begin
return (An_Ada_File_Name); -- Processing would be replace by a user
-- prompt in a functioning system.
end Get_File_Name;
end CA11009_0; -- Package body OS.
 
--=================================================================--
 
package CA11009_0.CA11009_1 is -- Child Package OS.File_Manager
 
-- This package simulates a visible interface for the Operating System.
-- The actual processing performed by this routine is encapsulated
-- in the routines of private child package Internals, which is "withed"
-- by the body of this package.
 
procedure Create_File (Mode : in File_Mode_Type;
File_Key : out File_Descriptor_Type);
 
end CA11009_0.CA11009_1; -- Child Package OS.File_Manager
 
--=================================================================--
 
-- Subprogram that performs the actual file operation is contained in a
-- private package so that it is not accessible to any client, and can be
-- modified/extended without requiring recompilation of the clients of the
-- parent (since this package is "withed" by the parent body only.)
 
 
-- Grandchild Package OS.File_Manager.Internals
private package CA11009_0.CA11009_1.CA11009_2 is
 
Initial_Permission : constant Permission_Type := User; -- Grandparent
Initial_Status : constant File_Status_Type := Open; -- literals.
Initial_Filename : constant File_Name_Type := -- Grandparent type.
Get_File_Name; -- Grandparent function.
 
function Create (Mode : File_Mode_Type)
return File_Descriptor_Type; -- Grandparent type.
 
end CA11009_0.CA11009_1.CA11009_2;
-- Grandchild Package OS.File_Manager.Internals
 
--=================================================================--
 
-- Grandchild Package body OS.File_Manager.Internals
package body CA11009_0.CA11009_1.CA11009_2 is
 
function Next_Available_File return File_Descriptor_Type is
begin
File_Counter := File_Counter + 1; -- Grandparent object.
return (File_Descriptor_Type(File_Counter));
end Next_Available_File;
-------------------------------------------------------------------------
function Create (Mode : File_Mode_Type) -- Grandparent literal.
return File_Descriptor_Type is
Number : File_Descriptor_Type; -- Grandparent type.
begin
Number := Next_Available_File;
File_Table(Number).Descriptor := Number; -- Grandparent object.
File_Table(Number).Name := Initial_Filename;
File_Table(Number).Mode := Mode; -- Parameter.
File_Table(Number).Acct_Access := Initial_Permission;
File_Table(Number).Current_Status := Initial_Status;
return (Number);
end Create;
 
end CA11009_0.CA11009_1.CA11009_2;
-- Grandchild Package body OS.File_Manager.Internals
 
--=================================================================--
 
-- "With" of a child package
-- by the parent body.
with CA11009_0.CA11009_1.CA11009_2; -- Grandchild OS.File_Manager.Internals
 
package body CA11009_0.CA11009_1 is -- Child Package body OS.File_Manager
 
package Internal renames CA11009_0.CA11009_1.CA11009_2;
 
-- These subprograms utilize calls to subprograms contained in a private
-- sibling to perform the actual processing.
 
procedure Create_File (Mode : in File_Mode_Type;
File_Key : out File_Descriptor_Type) is
begin
File_Key := Internal.Create (Mode);
end Create_File;
 
end CA11009_0.CA11009_1; -- Child Package body OS.File_Manager
 
--=================================================================--
 
with CA11009_0.CA11009_1; -- with Child Package OS.File_Manager
with Report;
 
procedure CA11009 is
 
package OS renames CA11009_0;
use OS;
package File_Manager renames CA11009_0.CA11009_1;
 
Data_Base_File_Key : File_Descriptor_Type := Default_Descriptor;
New_Mode : File_Mode_Type := Read_Write;
 
begin
-- This test indicates one approach to file management.
-- It is not intended to demonstrate full functionality, but rather
-- that the use of a private child package could provide a solution
-- to this type of situation.
 
Report.Test ("CA11009", "Check that a private child package can use " &
"entities declared in the visible part of the " &
"parent unit of its parent unit");
 
-- Check initial conditions of the first entry in the file table.
-- These are all default values provided in the declaration of the
-- type File_Type.
 
if (not (Data_Base_File_Key = Default_Descriptor)) and then
(((not (File_Table(1).Name = Default_Filename)) or
(File_Table(1).Descriptor /= Default_Descriptor)) or else
((File_Table(1).Acct_Access /= Default_Permission) or
(not (File_Table(1).Mode = Default_Mode)) or
(File_Table(1).Current_Status /= Default_Status)))
then
Report.Failed ("Initial condition failure");
end if;
 
-- Create/initialize file using the capability provided by the visible
-- interface to the operating system, OS.File_Manager. The actual
-- processing routine is contained in the private grandchild package
-- Internals, which utilize the components from the grandparent package.
 
File_Manager.Create_File (New_Mode, Data_Base_File_Key);
 
-- Verify that the initial conditions of the file table component have
-- been properly modified by the initialization function.
 
if not ((File_Table(1).Descriptor = Data_Base_File_Key) and then
(File_Table(1).Name = An_Ada_File_Name) and then
(File_Table(1).Acct_Access = User) and then
not ((File_Table(1).Mode = Default_Mode) or else
(File_Table(1).Current_Status = Default_Status)))
then
Report.Failed ("File creation failure");
end if;
 
Report.Result;
 
end CA11009;
/ca1012b0.ada
0,0 → 1,37
-- CA1012B0.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 7/20/81
 
GENERIC
TYPE INDEX IS RANGE <>;
PROCEDURE CA1012B0 (I : IN OUT INDEX);
 
PROCEDURE CA1012B0 (I : IN OUT INDEX) IS
 
BEGIN
 
I := I + 1;
 
END CA1012B0;
/ca1102a1.ada
0,0 → 1,36
-- CA1102A1.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 6/12/81
 
PACKAGE BODY CA1102A0 IS
 
PROCEDURE P (INVOKED : IN OUT BOOLEAN) IS
BEGIN
INVOKED := TRUE;
END P;
 
BEGIN
NULL;
END CA1102A0;
/ca1012b2.ada
0,0 → 1,37
-- CA1012B2.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 7/20/81
 
GENERIC
TYPE ELEMENT IS RANGE <>;
FUNCTION CA1012B2 (J : IN ELEMENT) RETURN ELEMENT;
 
FUNCTION CA1012B2 (J : IN ELEMENT) RETURN ELEMENT IS
 
BEGIN
 
RETURN J + 1;
 
END CA1012B2;
/ca1012b4.ada
0,0 → 1,63
-- CA1012B4M.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT GENERIC SUBPROGRAM DECLARATIONS AND BODIES CAN BE
-- COMPILED SEPARATELY.
 
-- SEPARATE FILES ARE:
-- CA1012B0 A LIBRARY GENERIC PROCEDURE DECLARATION AND BODY.
-- CA1012B2 A LIBRARY GENERIC FUNCTION DECLARATION AND BODY.
-- CA1012B4M THE MAIN PROCEDURE.
 
-- WKB 7/20/81
 
WITH REPORT, CA1012B0, CA1012B2;
USE REPORT;
PROCEDURE CA1012B4M IS
 
N : INTEGER := 1;
 
SUBTYPE S50 IS INTEGER RANGE 1..50;
 
PROCEDURE P IS NEW CA1012B0 (S50);
 
FUNCTION F IS NEW CA1012B2 (INTEGER);
 
BEGIN
TEST ("CA1012B", "SEPARATELY COMPILED GENERIC SUBPROGRAM " &
"DECLARATIONS AND BODIES");
 
P(N);
IF N /= 2 THEN
FAILED ("PROCEDURE NOT INVOKED");
END IF;
 
N := 1;
IF F(N) /= 2 THEN
FAILED ("FUNCTION NOT INVOKED");
END IF;
 
RESULT;
 
END CA1012B4M;
/ca2009f0.ada
0,0 → 1,134
-- CA2009F0M.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- OBJECTIVE:
-- CHECK THAT A GENERIC SUBPROGRAM SUBUNIT CAN BE SPECIFIED AND
-- INSTANTIATED. IN THIS TEST, SOME SUBUNIT BODIES ARE
-- IN SEPARATE FILES.
 
-- APPLICABILITY CRITERIA:
-- THIS TEST MUST RUN AND REPORT "PASSED" FOR ALL ADA 95 IMPLEMENTATIONS.
 
-- SEPARATE FILES ARE:
-- CA2009F0M THE MAIN PROCEDURE, WITH SUBUNIT BODIES FOR
-- PROC2 AND FUNC2.
-- CA2009F1 A SUBUNIT PROCEDURE BODY (PROC1).
-- CA2009F2 A SUBUNIT FUNCTION BODY (FUNC1).
 
-- HISTORY:
-- BHS 08/01/84 CREATED ORIGINAL TEST.
-- PWB 02/19/86 ADDED "SOME" TO FIRST COMMENT.
-- BCB 01/05/88 MODIFIED HEADER.
-- EDS 08/04/98 REMOVE CONTROL Z AT END OF FILE.
-- RLB 09/13/99 UPDATED APPLICABILITY CRITERIA FOR ADA 95.
-- RLB 09/15/99 REMOVED JUNK COMMENT.
 
WITH REPORT;
USE REPORT;
PROCEDURE CA2009F0M IS
 
INT1 : INTEGER := 1;
INT2 : INTEGER := 2;
INT3 : INTEGER := 3;
INT4 : INTEGER := 4;
 
 
GENERIC
TYPE ELEM IS PRIVATE;
PCON1 : IN ELEM;
PVAR1 : IN OUT ELEM;
PROCEDURE PROC1;
 
GENERIC
TYPE ELEM IS PRIVATE;
PCON2 : IN ELEM;
PVAR2 : IN OUT ELEM;
PROCEDURE PROC2;
 
GENERIC
TYPE OBJ IS PRIVATE;
FCON1 : IN OBJ;
FVAR1 : IN OUT OBJ;
FUNCTION FUNC1 RETURN OBJ;
 
GENERIC
TYPE OBJ IS PRIVATE;
FCON2 : IN OBJ;
FVAR2 : IN OUT OBJ;
FUNCTION FUNC2 RETURN OBJ;
 
 
PROCEDURE PROC1 IS SEPARATE;
PROCEDURE PROC2 IS SEPARATE;
FUNCTION FUNC1 RETURN OBJ IS SEPARATE;
FUNCTION FUNC2 RETURN OBJ IS SEPARATE;
 
 
PROCEDURE NI_PROC1 IS NEW PROC1 (INTEGER, 2, INT1);
PROCEDURE NI_PROC2 IS NEW PROC2 (INTEGER, 3, INT2);
FUNCTION NI_FUNC1 IS NEW FUNC1 (INTEGER, 4, INT3);
FUNCTION NI_FUNC2 IS NEW FUNC2 (INTEGER, 5, INT4);
 
 
BEGIN
 
TEST ("CA2009F", "SPECIFICATION AND INSTANTIATION " &
"OF GENERIC SUBPROGRAM SUBUNITS");
 
NI_PROC1;
IF INT1 /= 2 THEN
FAILED ("INCORRECT INSTANTIATION - NI_PROC1");
END IF;
 
NI_PROC2;
IF INT2 /= 3 THEN
FAILED ("INCORRECT INSTANTIATION - NI_PROC2");
END IF;
 
IF NI_FUNC1 /= 4 THEN
FAILED ("INCORRECT INSTANTIATION - NI_FUNC1");
END IF;
 
IF NI_FUNC2 /= 5 THEN
FAILED ("INCORRECT INSTANTIATION - NI_FUNC2");
END IF;
 
 
RESULT;
 
END CA2009F0M;
 
 
SEPARATE (CA2009F0M)
PROCEDURE PROC2 IS
BEGIN
PVAR2 := PCON2;
END PROC2;
 
SEPARATE (CA2009F0M)
FUNCTION FUNC2 RETURN OBJ IS
BEGIN
FVAR2 := FCON2;
RETURN FVAR2;
END FUNC2;
/ca2009f2.ada
0,0 → 1,45
-- CA2009F2.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- SEPARATE GENERIC FUNCTION BODY.
-- SPECIFICATION, BODY STUB, AND AN INSTANTIATION ARE
-- IN CA2009F0M.DEP.
 
-- APPLICABILITY CRITERIA:
-- THIS UNIT MUST BE ACCEPTED BY ALL ADA 95 IMPLEMENTATIONS.
 
-- HISTORY:
-- BHS 08/01/84 CREATED ORIGINAL TEST.
-- PWB 02/19/86 MODIFIED COMMENTS TO DESCRIBE RELATION TO OTHER
-- FILES AND POSSIBLE NON-APPLICABILITY.
-- BCB 01/05/88 MODIFIED HEADER.
-- EDS 08/04/98 REMOVE CONTROL Z AT END OF FILE.
-- RLB 09/13/99 UPDATED APPLICABILITY CRITERIA FOR ADA 95.
 
SEPARATE (CA2009F0M)
FUNCTION FUNC1 RETURN OBJ IS
BEGIN
FVAR1 := FCON1;
RETURN FVAR1;
END FUNC1;
/ca140230.a
0,0 → 1,62
-- CA140230.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- See CA140232.AM.
--
-- TEST DESCRIPTION:
-- See CA140232.AM.
--
-- TEST FILES:
-- This test consists of the following files:
-- -> CA140230.A
-- CA140231.A
-- CA140232.AM
-- CA140233.A
--
-- PASS/FAIL CRITERIA:
-- See CA140232.AM.
--
-- CHANGE HISTORY:
-- 07 DEC 96 SAIC ACVC 2.1: Initial version.
-- 13 SEP 99 RLB Changed to C-test (by AI-00077).
-- 20 MAR 00 RLB Removed special requirements, because there
-- aren't any.
--
--!
 
package CA14023_0 is
subtype Little_float is float digits 4 range 0.0..100.0;
type Data_rec is tagged record
Data : Little_float;
end record;
end CA14023_0;
 
--------------------------------------------------------
 
generic
type Data_type is digits <>;
Floor : Data_type;
function CA14023_1 (P1, P2 : Data_type) return Data_type;
/ca11010.a
0,0 → 1,254
-- CA11010.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that a private child package can use entities declared in the
-- private part of its parent unit.
--
-- TEST DESCRIPTION:
-- Declare a parent package containing private types, objects,
-- and functions used by the system. Declare a private child package that
-- uses the parent components to provide functionality to the system.
--
-- Declare an array of files with default values for all
-- component fields of the files (records). Check the initial state of
-- a specified file for proper default values. Perform the file "creation"
-- (initialization), which will modify the fields of the record object.
-- Again verify the file object to determine whether the fields have been
-- reset properly.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
package CA11010_0 is -- Package OS.
type File_Descriptor_Type is private;
 
Default_Descriptor : constant File_Descriptor_Type;
 
function Initialize_File return File_Descriptor_Type;
procedure Verify_Initial_Conditions (Status : out Boolean);
function Final_Conditions_Valid return Boolean;
 
private
 
type File_Descriptor_Type is new Integer;
type File_Name_Type is new String (1 .. 11);
type Permission_Type is (None, User, System);
type File_Mode_Type is (Read_Only, Write_Only, Read_Write);
type File_Status_Type is (Open, Closed);
 
Default_Descriptor : constant File_Descriptor_Type := 0;
Default_Permission : constant Permission_Type := None;
Default_Mode : constant File_Mode_Type := Read_Only;
Default_Status : constant File_Status_Type := Closed;
Default_Filename : constant File_Name_Type := " ";
An_Ada_File_Name : constant File_Name_Type := "AdaFileName";
Max_Files : constant File_Descriptor_Type := 100;
 
type File_Type is tagged
record
Descriptor : File_Descriptor_Type := Default_Descriptor;
Name : File_Name_Type := Default_Filename;
Acct_Access : Permission_Type := Default_Permission;
Mode : File_Mode_Type := Default_Mode;
Current_Status : File_Status_Type := Default_Status;
end record;
 
type File_Array_Type is array (1 .. Max_Files) of File_Type;
 
File_Table : File_Array_Type;
File_Counter : Integer := 0;
 
--
 
function Get_File_Name return File_Name_Type;
 
end CA11010_0; -- Package OS.
 
--=================================================================--
 
-- Subprograms that perform the actual file operations are contained in a
-- private package so that they are not accessible to any client.
 
private package CA11010_0.CA11010_1 is -- Package OS.Internals
 
Private_File_Counter : Integer renames File_Counter; -- Parent priv. object.
 
function Initialize
(File_Name : File_Name_Type := Get_File_Name; -- Parent priv. function.
File_Mode : File_Mode_Type := Read_Write) -- Parent priv. literal.
return File_Descriptor_Type; -- Parent type.
 
end CA11010_0.CA11010_1; -- Package OS.Internals
 
--=================================================================--
 
package body CA11010_0.CA11010_1 is -- Package body OS.Internals
 
function Next_Available_File return File_Descriptor_Type is
begin
Private_File_Counter := Private_File_Counter + 1;
return (File_Descriptor_Type(File_Counter));
end Next_Available_File;
----------------------------------------------------------------
function Initialize
(File_Name : File_Name_Type := Get_File_Name; -- Parent priv. function
File_Mode : File_Mode_Type := Read_Write) -- Parent priv. literal
return File_Descriptor_Type is -- Parent type
Number : File_Descriptor_Type;
begin
Number := Next_Available_File;
File_Table(Number).Descriptor := Number; -- Parent priv. object
File_Table(Number).Name := File_Name; -- Default parameter value
File_Table(Number).Mode := File_Mode; -- Default parameter value
File_Table(Number).Acct_Access := User;
File_Table(Number).Current_Status := Open;
return (Number);
end Initialize;
 
end CA11010_0.CA11010_1; -- Package body OS.Internals
 
--=================================================================--
 
with CA11010_0.CA11010_1; -- Private child package "withed" by
-- parent body.
 
package body CA11010_0 is -- Package body OS
 
function Get_File_Name return File_Name_Type is
begin
return (An_Ada_File_Name); -- If this was a real function, the user
end Get_File_Name; -- would be asked to input a name, or there
-- would be some type of similar processing.
 
-- This subprogram utilizes a call to a subprogram contained in a private
-- child to perform the actual processing.
 
function Initialize_File return File_Descriptor_Type is
begin
return (CA11010_0.CA11010_1.Initialize); -- No parameters are needed,
-- since defaults have been
-- provided.
end Initialize_File;
 
--
-- Separate subunits.
--
 
procedure Verify_Initial_Conditions (Status : out Boolean) is separate;
 
function Final_Conditions_Valid return Boolean is separate;
 
end CA11010_0; -- Package body OS
 
--=================================================================--
 
separate (CA11010_0)
procedure Verify_Initial_Conditions (Status : out Boolean) is
begin
Status := False;
if (File_Table(1).Descriptor = Default_Descriptor) and then
(File_Table(1).Name = Default_Filename) and then
(File_Table(1).Acct_Access = Default_Permission) and then
(File_Table(1).Mode = Default_Mode) and then
(File_Table(1).Current_Status = Default_Status)
then
Status := True;
end if;
end Verify_Initial_Conditions;
 
--=================================================================--
 
separate (CA11010_0)
function Final_Conditions_Valid return Boolean is
begin
if ((File_Table(1).Descriptor /= Default_Descriptor) and then
(File_Table(1).Name = An_Ada_File_Name) and then
(File_Table(1).Acct_Access = User) and then
not ((File_Table(1).Mode = Default_Mode) or else
(File_Table(1).Current_Status = Default_Status)))
then
return (True);
else
return (False);
end if;
end Final_Conditions_Valid;
 
--=================================================================--
 
with CA11010_0; -- with Package OS.
with Report;
 
procedure CA11010 is
 
package OS renames CA11010_0;
 
Ada_File_Key : OS.File_Descriptor_Type := OS.Default_Descriptor;
Initialization_Status : Boolean := False;
 
begin
 
-- This test indicates one approach to a file management operation.
-- It is not intended to demonstrate full functionality, but rather
-- that the use of a private child package can provide a solution
-- to a user situation, that being the implementation of certain functions
-- being provided in a child package, with the parent package body
-- utilizing these implementations.
 
Report.Test ("CA11010", "Check that a private child package can use " &
"entities declared in the private part of its " &
"parent unit");
 
-- Check initial conditions of the first entry in the file table.
-- These are all default values provided in the declaration of the
-- type File_Type.
 
OS.Verify_Initial_Conditions (Initialization_Status);
 
if not Initialization_Status then
Report.Failed ("Initial condition failure");
end if;
-- Call the initialization function. This will result in the resetting
-- of the fields associated with the first entry in the File_Table (this
-- is the first/only call of Initialize_File).
-- No parameters are necessary for this call, due to the default values
-- provided in the private child package routine Initialize.
Ada_File_Key := OS.Initialize_File;
 
-- Verify that the initial conditions of the file table component have
-- been properly modified by the initialization function.
 
if not OS.Final_Conditions_Valid then
Report.Failed ("Initialization processing failure");
end if;
 
Report.Result;
 
end CA11010;
/ca11014.a
0,0 → 1,302
-- CA11014.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that an instantiation of a child package of a generic package
-- can use its parent's declarations and operations, including a formal
-- package of the parent.
--
-- TEST DESCRIPTION:
-- Declare a list abstraction in a generic package which manages lists of
-- elements of any discrete type. Declare a generic package which
-- operates on lists of elements of integer types. Declare a generic
-- child of this package which defines additional list operations.
-- Use the formal discrete type as the generic formal actual part for the
-- parent formal package.
--
-- Declare an instance of parent, then declare an instance of the child
-- which is itself a child the parent's instance. In the main program,
-- check that the operations in both instances perform as expected.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
-- 15 Nov 95 SAIC Update and repair for ACVC 2.0.1
-- 07 Sep 96 SAIC Change formal param E to be out only.
-- 19 Oct 96 SAIC ACVC 2.1: Added pragma Elaborate to context
-- clauses of CA11014_0, CA11014_1, and CA11014_5.
-- 27 Feb 97 PWB.CTA Added elaboration pragma at package CA11014_4
--!
-- Actual package for the parent's formal.
generic
 
type Element_Type is (<>); -- List elems may be of any discrete types.
 
package CA11014_0 is
 
type Node_Type;
type Node_Pointer is access Node_Type;
 
type Node_Type is record
Item : Element_Type;
Next : Node_Pointer := null;
end record;
 
type List_Type is record
First : Node_Pointer := null;
Current : Node_Pointer := null;
Last : Node_Pointer := null;
end record;
 
-- Return true if current element is last in the list.
function End_Of_List (L : List_Type) return boolean;
 
-- Set "current" pointer to first list element.
procedure Reset (L : in out List_Type);
 
end CA11014_0;
 
--==================================================================--
 
package body CA11014_0 is
 
function End_Of_List (L : List_Type) return boolean is
begin
return (L.Current = null);
end End_Of_List;
-------------------------------------------------------
procedure Reset (L : in out List_Type) is
begin
L.Current := L.First; -- Set "current" pointer to first
end Reset; -- list element.
 
end CA11014_0;
 
--==================================================================--
 
with CA11014_0; -- Generic list abstraction.
pragma Elaborate (CA11014_0);
generic
 
-- Import the list abstraction defined in CA11014_0.
with package List_Mgr is new CA11014_0 (<>);
 
package CA11014_1 is
 
-- Write to current element and advance "current" pointer.
procedure Write_Element (L : in out List_Mgr.List_Type;
E : in List_Mgr.Element_Type);
 
-- Read from current element and advance "current" pointer.
procedure Read_Element (L : in out List_Mgr.List_Type;
E : out List_Mgr.Element_Type);
 
-- Add element to end of list.
procedure Add_Element (L : in out List_Mgr.List_Type;
E : in List_Mgr.Element_Type);
 
end CA11014_1;
 
--==================================================================--
 
package body CA11014_1 is
 
procedure Write_Element (L : in out List_Mgr.List_Type;
E : in List_Mgr.Element_Type) is
begin
L.Current.Item := E; -- Write to current element.
L.Current := L.Current.Next; -- Advance "current" pointer.
end Write_Element;
-------------------------------------------------------
procedure Read_Element (L : in out List_Mgr.List_Type;
E : out List_Mgr.Element_Type) is
begin
E := L.Current.Item; -- Retrieve current element.
L.Current := L.Current.Next; -- Advance "current" pointer.
end Read_Element;
-------------------------------------------------------
procedure Add_Element (L : in out List_Mgr.List_Type;
E : in List_Mgr.Element_Type) is
New_Node : List_Mgr.Node_Pointer := new List_Mgr.Node_Type'(E, null);
use type List_Mgr.Node_Pointer;
begin
if L.First = null then -- No elements in list, so add new
L.First := New_Node; -- element at beginning of list.
else
L.Last.Next := New_Node; -- Add new element at end of list.
end if;
L.Last := New_Node; -- Set last-in-list pointer.
end Add_Element;
 
end CA11014_1;
 
--==================================================================--
 
-- Generic child of list operation. This child adds a layer of
-- functionality to the parent generic.
 
generic
 
package CA11014_1.CA11014_2 is
 
procedure Write_First_To_List (L : in out List_Mgr.List_Type);
 
-- ... Various other operations used by the application.
 
end CA11014_1.CA11014_2;
 
--==================================================================--
 
package body CA11014_1.CA11014_2 is
 
procedure Write_First_To_List (L : in out List_Mgr.List_Type) is
begin
List_Mgr.Reset (L); -- Parent's formal package.
 
while not List_Mgr.End_Of_List (L) loop -- Parent's formal package.
Write_Element (L, List_Mgr.Element_Type'First);
-- Parent's operation,
end loop; -- parent's formal.
end Write_First_To_List;
 
end CA11014_1.CA11014_2;
 
--==================================================================--
 
package CA11014_3 is
 
type Points is range 0 .. 100;
 
-- ... Various other types used by the application.
 
end CA11014_3;
 
 
-- No body for CA11014_3;
 
--==================================================================--
 
-- Declare instances of the generic list packages for the discrete type.
-- The instance of the child must itself be declared as a child of the
-- instance of the parent.
 
with CA11014_0; -- Generic list abstraction.
with CA11014_3; -- Package containing discrete type declaration.
pragma Elaborate (CA11014_0);
package CA11014_4 is new CA11014_0 (CA11014_3.Points); -- Points list.
 
with CA11014_4; -- Points list.
with CA11014_1; -- Generic list operation.
pragma Elaborate (CA11014_1);
package CA11014_5 is new CA11014_1 (CA11014_4); -- Scores list.
 
with CA11014_1.CA11014_2; -- Additional generic list operation,
with CA11014_5;
pragma Elaborate (CA11014_5);
package CA11014_5.CA11014_6 is new CA11014_5.CA11014_2;
-- Points list operation.
 
--==================================================================--
 
with CA11014_1.CA11014_2; -- Additional generic list operation,
-- implicitly with list operation.
with CA11014_3; -- Package containing discrete type declaration.
with CA11014_4; -- Points list.
with CA11014_5.CA11014_6; -- Points list operation.
with Report;
 
procedure CA11014 is
 
package Lists_Of_Scores renames CA11014_4;
package Score_Ops renames CA11014_5;
package Point_Ops renames CA11014_5.CA11014_6;
 
Scores : Lists_Of_Scores.List_Type; -- List of points.
 
type TC_Score_Array is array (1 .. 3) of CA11014_3.Points;
 
TC_Initial_Values : constant TC_Score_Array := (10, 21, 49);
TC_Final_Values : constant TC_Score_Array := (0, 0, 0);
 
TC_Initial_Values_Are_Correct : boolean := false;
TC_Final_Values_Are_Correct : boolean := false;
 
--------------------------------------------------
 
-- Initial list contains 3 scores with the values 10, 21, and 49.
procedure TC_Initialize_List (L : in out Lists_of_Scores.List_Type) is
begin
for I in TC_Score_Array'range loop
Score_Ops.Add_Element (L, TC_Initial_Values(I));
-- Operation from generic parent.
end loop;
end TC_Initialize_List;
 
--------------------------------------------------
 
-- Verify that all scores have been set to zero.
procedure TC_Verify_List (L : in out Lists_of_Scores.List_Type;
Expected : in TC_Score_Array;
OK : out boolean) is
Actual : TC_Score_Array;
begin
Lists_of_Scores.Reset (L); -- Operation from parent's formal.
for I in TC_Score_Array'range loop
Score_Ops.Read_Element (L, Actual(I));
-- Operation from generic parent.
end loop;
OK := (Actual = Expected);
end TC_Verify_List;
 
--------------------------------------------------
 
begin -- CA11014
 
Report.Test ("CA11014", "Check that an instantiation of a child package " &
"of a generic package can use its parent's " &
"declarations and operations, including a " &
"formal package of the parent");
 
TC_Initialize_List (Scores);
TC_Verify_List (Scores, TC_Initial_Values, TC_Initial_Values_Are_Correct);
 
if not TC_Initial_Values_Are_Correct then
Report.Failed ("List contains incorrect initial values");
end if;
 
Point_Ops.Write_First_To_List (Scores);
-- Operation from generic child package.
 
TC_Verify_List (Scores, TC_Final_Values, TC_Final_Values_Are_Correct);
 
if not TC_Final_Values_Are_Correct then
Report.Failed ("List contains incorrect final values");
end if;
 
Report.Result;
 
end CA11014;
/ca1011a1.ada
0,0 → 1,36
-- CA1011A1.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- BHS 7/20/84
-- JBG 5/23/85
 
PROCEDURE CA1011A0 (X : IN OUT INTEGER;
Y : IN INTEGER := -1;
Z : IN INTEGER := 2) IS
 
BEGIN
 
X := 3;
 
END CA1011A0;
/ca11018.a
0,0 → 1,366
-- CA11018.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that body of the parent package may depend on one of its own
-- public generic children.
--
-- TEST DESCRIPTION:
-- A scenario is created that demonstrates the potential of adding a
-- public generic child during code maintenance without distubing a large
-- subsystem. After child is added to the subsystem, a maintainer
-- decides to take advantage of the new functionality and rewrites
-- the parent's body.
--
-- Declare a message application in a package which highlights some
-- key words. Declare a public generic child of this package which adds
-- functionality to the original subsystem. In the parent body,
-- instantiate the child.
--
-- In the main program, check that the operations in the parent,
-- and instances of the public child package perform as expected.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
-- 14 Dec 94 SAIC Modified Copy_Particularly_Designated_Pkg inst.
-- 17 Nov 95 SAIC Update and repair for ACVC 2.0.1
--
--!
-- Simulates application which displays messages.
 
package CA11018_0 is
 
type Designated_Num is new Integer range 0 .. 100;
 
type Particularly_Designated_Num is new Integer range 0 .. 100;
 
type Message is new String;
 
type Message_Rec is tagged private;
 
type Designated_Msg is new Message_Rec with private;
 
type Particularly_Designated_Msg is new Message_Rec with private;
 
-- Analyzes message for presence of word in the secret message. If found,
-- word is highlighted.
 
procedure Highlight_Designated (The_Word : in Message;
In_The_Message : in out Designated_Msg);
 
-- Analyzes message for presence of word in the secret message. If found,
-- word is highlighted and do other actions.
 
procedure Highlight_Particularly_Designated
(The_Word : in Message;
In_The_Message : in out Particularly_Designated_Msg);
 
-- Begin test code declarations: -----------------------
 
TC_Designated_Not_Zero : Boolean := false;
 
TC_Particularly_Designated_Not_Zero : Boolean := false;
 
-- The following two functions are used to check for function
-- calls from the public generic child.
 
function TC_Designated_Success return Boolean;
 
function TC_Particularly_Designated_Success return Boolean;
 
-- End test code declarations. -------------------------
 
private
type Message_Rec is tagged
record
The_Length : natural := 0;
The_Content : Message (1 .. 60);
end record;
 
type Designated_Msg is new Message_Rec with null record;
-- ... More components in real application.
 
type Particularly_Designated_Msg is new Message_Rec with null record;
-- ... More components in real application.
 
end CA11018_0;
 
--=================================================================--
 
 
-- Public generic child package of message display application. Imagine that
-- messages of one security level are associated with a type derived from
-- integer. For overall system security, messages of a different security
-- level are associated with a different type derived from integer. By
-- instantiating this package for each security level, the results of Count
-- applied to one kind of message cannot inadvertently be compared with the
-- results applied to a different kind.
 
generic
type Msg_Type is new Message_Rec with private;
-- Derived from parent's type.
type Count is range <>;
 
package CA11018_0.CA11018_1 is
 
TC_Function_Called : Boolean := false;
 
function Find_Word (Wrd : in Message;
Msg : in Msg_Type) return Count;
 
end CA11018_0.CA11018_1;
 
--=================================================================--
 
package body CA11018_0.CA11018_1 is
 
function Find_Word (Wrd : in Message;
Msg : in Msg_Type) return Count is
 
Num : Count := Count'first;
 
-- Count how many time the word appears within the given message.
 
begin
-- ... Error-checking code omitted for brevity.
 
for I in 1 .. (Msg.The_Length - Wrd'length + 1) loop
-- Parent's private type
if Msg.The_Content (I .. I + Wrd'length - 1) = Wrd
-- Parent's private type
then
Num := Num + 1;
end if;
 
end loop;
 
TC_Function_Called := true;
 
return (Num);
 
end Find_Word;
 
end CA11018_0.CA11018_1;
 
--=================================================================--
 
with CA11018_0.CA11018_1; -- Public generic child.
 
pragma Elaborate (CA11018_0.CA11018_1);
package body CA11018_0 is
 
----------------------------------------------------
-- Parent's body depends on public generic child. --
----------------------------------------------------
 
-- Instantiate the public child for the secret message.
 
package Designated_Pkg is new CA11018_0.CA11018_1
(Msg_Type => Designated_Msg, Count => Designated_Num);
 
-- Instantiate the public child for the top secret message.
 
package Particularly_Designated_Pkg is new CA11018_0.CA11018_1
(Particularly_Designated_Msg, Particularly_Designated_Num);
 
-- End instantiations. -----------------------------
 
function TC_Designated_Success return Boolean is
-- Check to see if the function in the public generic child is called.
 
begin
return Designated_Pkg.TC_Function_Called;
end TC_Designated_Success;
--------------------------------------------------------------
function TC_Particularly_Designated_Success return Boolean is
-- Check to see if the function in the public generic child is called.
 
begin
return Particularly_Designated_Pkg.TC_Function_Called;
end TC_Particularly_Designated_Success;
--------------------------------------------------------------
-- Calls functions from public child to search for a key word.
-- If the word appears more than once in each message,
-- highlight all of them.
 
procedure Highlight_Designated (The_Word : in Message;
In_The_Message : in out Designated_Msg) is
 
-- Not a real highlight procedure. Real application can use graphic
-- device to highlight all occurrences of words.
 
begin
--------------------------------------------------------------
-- Parent's body uses function from instantiation of public --
-- generic child. --
--------------------------------------------------------------
 
if Designated_Pkg.Find_Word -- Child's operation.
(The_Word, In_The_Message) > 0 then
 
-- Highlight all occurrences in lavender.
 
TC_Designated_Not_Zero := true;
end if;
 
end Highlight_Designated;
--------------------------------------------------------------
procedure Highlight_Particularly_Designated
(The_Word : in Message;
In_The_Message : in out Particularly_Designated_Msg) is
 
-- Not a real highlight procedure. Real application can use graphic
-- device to highlight all occurrences of words.
 
begin
--------------------------------------------------------------
-- Parent's body uses function from instantiation of public --
-- generic child. --
--------------------------------------------------------------
 
if Particularly_Designated_Pkg.Find_Word -- Child's operation.
(The_Word, In_The_Message) > 0 then
 
-- Highlight all occurrences in chartreuse.
-- Do other more secret stuff.
 
TC_Particularly_Designated_Not_Zero := true;
end if;
 
end Highlight_Particularly_Designated;
 
end CA11018_0;
 
--=================================================================--
 
-- Public generic child to copy words to the messages.
 
generic
type Message_Type is new Message_Rec with private;
-- Derived from parent's type.
 
package CA11018_0.CA11018_2 is
 
procedure Copy (From_The_Word : in Message;
To_The_Message : in out Message_Type);
 
end CA11018_0.CA11018_2;
 
--=================================================================--
 
package body CA11018_0.CA11018_2 is
 
procedure Copy (From_The_Word : in Message;
To_The_Message : in out Message_Type) is
 
-- Copy words to the appropriate messages.
 
begin
To_The_Message.The_Content -- Parent's private type.
(1 .. From_The_Word'length) := From_The_Word;
 
To_The_Message.The_Length -- Parent's private type.
:= From_The_Word'length;
end Copy;
 
end CA11018_0.CA11018_2;
 
--=================================================================--
 
with Report;
 
with CA11018_0.CA11018_2; -- Public generic child package, copy words
-- to the message.
-- Implicit with parent package (CA11018_0).
 
procedure CA11018 is
 
package Message_Pkg renames CA11018_0;
 
begin
 
Report.Test ("CA11018", "Check that body of the parent package can " &
"depend on one of its own public generic children");
 
-- Highlight the word "Alert" from the secret message.
Designated_Subtest:
declare
The_Message : Message_Pkg.Designated_Msg; -- Parent's private type.
 
-- Instantiate the public child to copy words to the secret message.
 
package Copy_Designated_Pkg is new CA11018_0.CA11018_2
(Message_Pkg.Designated_Msg);
 
begin
Copy_Designated_Pkg.Copy ("Alert Level 1 : Alert The Guard",
To_The_Message => The_Message);
 
Message_Pkg.Highlight_Designated ("Alert", The_Message);
 
if not Message_Pkg.TC_Designated_Not_Zero and
Message_Pkg.TC_Designated_Success then
Report.Failed ("Alert should have been highlighted");
end if;
 
end Designated_Subtest;
 
-- Highlight the word "Push The Alarm" from the top secret message.
 
Particularly_Designated_Subtest:
declare
The_Message : Message_Pkg.Particularly_Designated_Msg ;
-- Parent's private type.
 
-- Instantiate the public child to copy words to the top secret
-- message.
 
package Copy_Particularly_Designated_Pkg is new
CA11018_0.CA11018_2 (Message_Pkg.Particularly_Designated_Msg);
 
begin
Copy_Particularly_Designated_Pkg.Copy
("Alert Level 10 : Alert The Guard and Push The Alarm",
The_Message);
 
Message_Pkg.Highlight_Particularly_Designated
("Push The Alarm", The_Message);
 
if not Message_Pkg.TC_Particularly_Designated_Not_Zero and
Message_Pkg.TC_Particularly_Designated_Success then
Report.Failed ("Key words should have been highlighted");
end if;
 
end Particularly_Designated_Subtest;
 
Report.Result;
 
end CA11018;
/ca1013a0.ada
0,0 → 1,51
-- CA1013A0.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 7/20/81
-- PWN 5/25/94 ADDED A PROCEDURE TO KEEP PACKAGE BODIES LEGAL.
 
 
GENERIC
TYPE ELEM IS RANGE <>;
PACKAGE CA1013A0 IS
 
I : ELEM;
 
PROCEDURE REQUIRE_BODY;
 
END CA1013A0;
 
 
PACKAGE BODY CA1013A0 IS
 
PROCEDURE REQUIRE_BODY IS
BEGIN
NULL;
END;
 
BEGIN
 
I := 1;
 
END CA1013A0;
/ca2002a1.ada
0,0 → 1,53
-- CA2002A1.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- SUBUNIT BODIES FOR STUBS GIVEN IN PACKAGE CA2002A1 IN FILE
-- CA2002A0M.
 
-- BHS 8/02/84
 
SEPARATE (CA2002A1)
PROCEDURE PROC (X : OUT INTEGER) IS
BEGIN
X := 1;
END PROC;
 
SEPARATE (CA2002A1)
FUNCTION FUN RETURN BOOLEAN IS
BEGIN
RETURN TRUE;
END FUN;
 
SEPARATE (CA2002A1)
PACKAGE BODY PKG IS
PROCEDURE PKG_PROC (XX : IN OUT INTEGER) IS SEPARATE;
BEGIN
I := 1;
END PKG;
 
SEPARATE (CA2002A1.PKG)
PROCEDURE PKG_PROC (XX : IN OUT INTEGER) IS
BEGIN
XX := XX - 1;
END PKG_PROC;
/ca1011a3.ada
0,0 → 1,34
-- CA1011A3.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- BHS 7/20/84
-- JBG 5/23/85
 
PROCEDURE CA1011A2 (X : BOOLEAN := TRUE;
Y : IN OUT FLOAT) IS
BEGIN
 
Y := 3.0;
 
END CA1011A2;
/ca2004a0.ada
0,0 → 1,65
-- CA2004A0M.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT A SUBUNIT HAS VISIBILITY OF IDENTIFIERS DECLARED
-- IN ANCESTORS OTHER THAN THE PARENT.
 
-- SEPARATE FILES ARE:
-- CA2004A0M THE MAIN PROCEDURE.
-- CA2004A1 A SUBUNIT PACKAGE BODY.
-- CA2004A2 A SUBUNIT PROCEDURE BODY.
-- CA2004A3 A SUBUNIT PROCEDURE BODY.
-- CA2004A4 A SUBUNIT PROCEDURE BODY.
 
-- WKB 6/26/81
-- JRK 6/26/81
-- BHS 7/31/84
 
WITH REPORT;
USE REPORT;
PROCEDURE CA2004A0M IS
 
I : INTEGER := 1;
 
PACKAGE CA2004A1 IS
J : INTEGER := 2;
PROCEDURE CA2004A2;
END CA2004A1;
 
USE CA2004A1;
PACKAGE BODY CA2004A1 IS SEPARATE;
PROCEDURE CA2004A3 IS SEPARATE;
 
BEGIN
TEST ("CA2004A", "CHECK THAT A SUBUNIT HAS VISIBILITY OF " &
"IDENTIFIERS DECLARED IN ANCESTORS");
 
 
CA2004A1.
CA2004A2;
 
CA2004A3;
 
RESULT;
END CA2004A0M;
/ca1013a2.ada
0,0 → 1,39
-- CA1013A2.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 7/20/81
 
 
GENERIC
TYPE ITEM IS RANGE <>;
FUNCTION CA1013A2 RETURN ITEM;
 
 
FUNCTION CA1013A2 RETURN ITEM IS
 
BEGIN
 
RETURN 2;
 
END CA1013A2;
/ca1011a5.ada
0,0 → 1,33
-- CA1011A5.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- BHS 7/20/84
-- JBG 5/23/85
 
FUNCTION CA1011A4 RETURN FLOAT IS
BEGIN
 
RETURN 3.0;
 
END CA1011A4;
/ca2004a2.ada
0,0 → 1,43
-- CA2004A2.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 6/26/81
 
SEPARATE (CA2004A0M.CA2004A1)
PROCEDURE CA2004A2 IS
BEGIN
 
IF I /= 1 THEN
FAILED ("IDENTIFIER NOT VISIBLE - 1");
END IF;
 
IF J /= 2 THEN
FAILED ("IDENTIFIER NOT VISIBLE - 2");
END IF;
 
IF K /= 3 THEN
FAILED ("IDENTIFIER NOT VISIBLE - 3");
END IF;
 
END CA2004A2;
/ca1013a4.ada
0,0 → 1,31
-- CA1013A4.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 7/20/81
-- SPS 10/27/82
-- JBG 9/15/83
 
WITH CA1013A1;
PRAGMA ELABORATE (CA1013A1);
PROCEDURE CA1013A4 IS NEW CA1013A1 (INTEGER);
/ca5004b0.ada
0,0 → 1,64
-- CA5004B0.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- OBJECTIVE: See CA5004B2M.ADA
--
-- SPECIAL INSTRUCTIONS: See CA5004B2M.ADA
--
-- TEST FILES:
-- => CA5004B0.ADA
-- CA5004B1.ADA
-- CA5004B2M.ADA
 
-- PWN 05/31/96 Split test into files without duplicate unit names.
-- RLB 03/11/99 Split test into files so that units that will be replaced
-- and units that won't are not in the same source file.
 
-------------------------------------------------------------
 
PACKAGE HEADER IS
 
PROCEDURE WRONG (WHY : STRING);
 
END HEADER;
 
 
WITH REPORT; USE REPORT;
PRAGMA ELABORATE (REPORT);
PACKAGE BODY HEADER IS
 
PROCEDURE WRONG (WHY : STRING) IS
BEGIN
FAILED ("PACKAGE WITH " & WHY & " NOT ELABORATED " &
"CORRECTLY");
END WRONG;
 
BEGIN
 
TEST ("CA5004B", "PRAGMA ELABORATE IS ACCEPTED AND OBEYED " &
"EVEN WHEN THE BODY OF THE UNIT NAMED IS " &
"MISSING OR OBSOLETE");
 
END HEADER;
 
/ca2004a4.ada
0,0 → 1,36
-- CA2004A4.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- BHS 7/31/84
 
SEPARATE (CA2004A0M.CA2004A3)
PROCEDURE CA2004A4 IS
BEGIN
 
IF I /= IDENT_INT(1) OR
J /= IDENT_INT(2) THEN
FAILED ("IDENTIFIER NOT VISIBLE - 5");
END IF;
 
END CA2004A4;
/ca2008a0.ada
0,0 → 1,81
-- CA2008A0M.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT FOR AN OVERLOADED SUBPROGRAM, ONE OF THE
-- SUBPROGRAM BODIES CAN BE SPECIFIED WITH A BODY_STUB AND
-- COMPILED SEPARATELY.
 
-- SEPARATE FILES ARE:
-- CA2008A0M THE MAIN PROCEDURE.
-- CA2008A1 A SUBUNIT PROCEDURE BODY.
-- CA2008A2 A SUBUNIT FUNCTION BODY.
 
-- WKB 6/26/81
-- SPS 11/2/82
 
WITH REPORT;
USE REPORT;
PROCEDURE CA2008A0M IS
 
I : INTEGER := 0;
B : BOOLEAN := TRUE;
 
PROCEDURE CA2008A1 (I : IN OUT INTEGER) IS
BEGIN
I := IDENT_INT (1);
END CA2008A1;
 
PROCEDURE CA2008A1 (B : IN OUT BOOLEAN) IS SEPARATE;
 
FUNCTION CA2008A2 RETURN INTEGER IS SEPARATE;
 
FUNCTION CA2008A2 RETURN BOOLEAN IS
BEGIN
RETURN IDENT_BOOL (FALSE);
END CA2008A2;
 
BEGIN
TEST ("CA2008A", "CHECK THAT AN OVERLOADED SUBPROGRAM " &
"CAN HAVE ONE OF ITS BODIES COMPILED SEPARATELY");
 
CA2008A1 (I);
IF I /= 1 THEN
FAILED ("OVERLOADED PROCEDURE NOT INVOKED - 1");
END IF;
 
CA2008A1 (B);
IF B THEN
FAILED ("OVERLOADED PROCEDURE NOT INVOKED - 2");
END IF;
 
IF CA2008A2 /= 2 THEN
FAILED ("OVERLOADED FUNCTION NOT INVOKED - 1");
END IF;
 
IF CA2008A2 THEN
FAILED ("OVERLOADED FUNCTION NOT INVOKED - 2");
END IF;
 
RESULT;
END CA2008A0M;
/ca1013a6.ada
0,0 → 1,65
-- CA1013A6M.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT A GENERIC PACKAGE OR SUBPROGRAM INSTANTIATION
-- CAN BE SUBMITTED FOR SEPARATE COMPILATION.
 
-- SEPARATE FILES ARE:
-- CA1013A0 A LIBRARY GENERIC PACKAGE.
-- CA1013A1 A LIBRARY GENERIC PROCEDURE.
-- CA1013A2 A LIBRARY GENERIC FUNCTION.
-- CA1013A3 A LIBRARY GENERIC PACKAGE INSTANTIATION.
-- CA1013A4 A LIBRARY GENERIC PROCEDURE INSTANTIATION.
-- CA1013A5 A LIBRARY GENERIC FUNCTION INSTANTIATION.
-- CA1013A6M THE MAIN PROCEDURE.
 
-- WKB 7/20/81
-- SPS 11/5/82
 
WITH REPORT;
WITH CA1013A3, CA1013A4, CA1013A5;
USE REPORT;
PROCEDURE CA1013A6M IS
 
J : INTEGER := 1;
 
BEGIN
TEST ("CA1013A", "GENERIC INSTANTIATIONS SUBMITTED " &
"FOR SEPARATE COMPILATION");
 
IF CA1013A3.I /= 1 THEN
FAILED ("PACKAGE NOT ACCESSED");
END IF;
 
CA1013A4 (J);
IF J /= 2 THEN
FAILED ("PROCEDURE NOT INVOKED");
END IF;
 
IF CA1013A5 /= 2 THEN
FAILED ("FUNCTION NOT INVOKED");
END IF;
 
RESULT;
END CA1013A6M;
/ca5004b2.ada
0,0 → 1,153
-- CA5004B2M.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT PRAGMA ELABORATE IS ACCEPTED AND OBEYED EVEN IF THE UNIT
-- NAMED IN THE PRAGMA DOES NOT YET HAVE A BODY IN THE LIBRARY OR IF
-- ITS BODY IS OBSOLETE.
-- CHECK THAT MORE THAN ONE NAME IS ALLOWED IN A PRAGMA ELABORATE.
--
-- SPECIAL INSTRUCTIONS:
-- 1. Compile CA5004B0.ADA
-- 2. Compile CA5004B1.ADA
-- 3. Compile CA5004B2M.ADA
-- 4. Bind/Link main unit CA5004B2M
-- 5. Execute the resulting file
--
-- TEST FILES:
-- CA5004B0.ADA
-- CA5004B1.ADA
-- => CA5004B2M.ADA
 
-- BHS 8/03/84
-- JRK 9/20/84
-- PWN 11/30/94 ADDED A PROCEDURE TO KEEP PACKAGE BODIES LEGAL.
-- PWN 05/31/96 Split test into files without duplicate unit names.
-- TMB 11/20/96 ADDED PROCEDURE DECL TO CA5004B0 TO INSURE IT MAKES
-- THE OLD BODY OBSOLETE
-- TMB 12/2/96 MADE NAME OF MAIN PROCEDURE SAME AS FILE NAME
-- RLB 03/11/99 Split first test file in order to prevent good units
-- from being made obsolete.
 
-------------------------------------------------------------
 
PACKAGE CA5004B0 IS -- OLD BODY NOW OBSOLETE.
 
I : INTEGER := 2;
B : BOOLEAN := TRUE;
 
FUNCTION F RETURN BOOLEAN;
PROCEDURE P;
 
END CA5004B0;
 
---------------------------------------------------------
 
PACKAGE CA5004B1 IS
 
J : INTEGER := 3;
 
PROCEDURE P (X : INTEGER);
 
END CA5004B1; -- NO BODY GIVEN YET.
 
----------------------------------------------------------
 
WITH HEADER; USE HEADER;
WITH CA5004B0, CA5004B1;
USE CA5004B0, CA5004B1;
PRAGMA ELABORATE (HEADER, CA5004B0, CA5004B1);
PACKAGE CA5004B2 IS
 
K1 : INTEGER := CA5004B0.I;
K2 : INTEGER := CA5004B1.J;
 
PROCEDURE REQUIRE_BODY;
 
END CA5004B2;
 
 
PACKAGE BODY CA5004B2 IS
 
PROCEDURE REQUIRE_BODY IS
BEGIN
NULL;
END;
 
BEGIN
 
IF K1 /= 4 THEN
WRONG ("OBSOLETE BODY");
END IF;
 
IF K2 /= 5 THEN
WRONG ("NO BODY");
END IF;
 
END CA5004B2;
 
--------------------------------------------------
 
WITH REPORT, CA5004B2;
USE REPORT, CA5004B2;
PROCEDURE CA5004B2M IS
BEGIN
 
RESULT;
 
END CA5004B2M;
 
----------------------------------------------------
 
PACKAGE BODY CA5004B0 IS
 
FUNCTION F RETURN BOOLEAN IS
BEGIN
RETURN FALSE;
END F;
 
PROCEDURE P IS
BEGIN
RETURN;
END P;
 
BEGIN
 
I := 4;
 
END CA5004B0;
 
---------------------------------------------------
 
PACKAGE BODY CA5004B1 IS
 
PROCEDURE P (X : INTEGER) IS
BEGIN
NULL;
END P;
 
BEGIN
 
J := 5;
 
END CA5004B1;
/ca2008a2.ada
0,0 → 1,35
-- CA2008A2.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 6/26/81
 
SEPARATE (CA2008A0M)
 
FUNCTION CA2008A2 RETURN INTEGER IS
 
BEGIN
 
RETURN 2;
 
END CA2008A2;
/ca2009c0.ada
0,0 → 1,83
-- CA2009C0M.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- OBJECTIVE:
-- CHECK THAT A GENERIC PACKAGE SUBUNIT CAN BE SPECIFIED AND
-- INSTANTIATED. IN THIS TEST, THE SUBUNIT BODY IS IN A
-- SEPARATE FILE.
 
-- APPLICABILITY CRITERIA:
-- THIS TEST MUST RUN AND REPORT "PASSED" FOR ALL ADA 95 IMPLEMENTATIONS.
 
-- SEPARATE FILES ARE:
-- CA2009C0M THE MAIN PROCEDURE.
-- CA2009C1 A SUBUNIT PACKAGE BODY (PKG1).
 
-- HISTORY:
-- BHS 08/01/84 CREATED ORIGINAL TEST.
-- BCB 01/05/88 MODIFIED HEADER.
-- EDS 08/04/98 REMOVE CONTROL Z AT END OF FILE.
-- RLB 09/13/99 UPDATED APPLICABILITY CRITERIA FOR ADA 95.
-- RLB 09/15/99 REMOVED JUNK COMMENT.
 
WITH REPORT;
USE REPORT;
PROCEDURE CA2009C0M IS
 
INT1 : INTEGER := 1;
 
SUBTYPE STR15 IS STRING (1..15);
SVAR : STR15 := "ABCDEFGHIJKLMNO";
 
GENERIC
TYPE ITEM IS PRIVATE;
CON1 : IN ITEM;
VAR1 : IN OUT ITEM;
PACKAGE PKG1 IS
END PKG1;
 
PACKAGE BODY PKG1 IS SEPARATE;
 
PACKAGE NI_PKG1 IS NEW PKG1 (INTEGER, IDENT_INT(2), INT1);
PACKAGE NS_PKG1 IS NEW PKG1 (STR15, IDENT_STR("REINSTANTIATION"),
SVAR);
 
BEGIN
 
TEST ("CA2009C", "SPECIFICATION AND INSTANTIATION " &
"OF GENERIC PACKAGE SUBUNITS " &
" - SEPARATE FILES USED");
 
IF INT1 /= 2 THEN
FAILED ("INCORRECT INSTANTIATION - INTEGER");
END IF;
 
IF SVAR /= "REINSTANTIATION" THEN
FAILED ("INCORRECT INSTANTIATION - STRING");
END IF;
 
 
RESULT;
 
END CA2009C0M;
/ca11b01.a
0,0 → 1,208
-- CA11B01.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that a type derived in a public child inherits primitive
-- operations from parent.
--
-- TEST DESCRIPTION:
-- Declare a root record type with discriminant in a package
-- specification. Declare a primitive subprogram for the type
-- (foundation code).
--
-- Add a public child to the above package. Derive a new type
-- with constraint to the discriminant record type from the parent
-- package. Declare a new primitive subprogram to write to the child
-- derived type.
--
-- Add a new public child to the above package. This grandchild package
-- derives a new type using the record type from the above package.
-- Declare a new primitive subprogram to write to the grandchild derived
-- type.
--
-- In the main program, "with" the grandchild. Access the inherited
-- operations from grandparent, parent, and grandchild packages.
--
-- TEST FILES:
-- This test depends on the following foundation code:
--
-- FA11B00.A
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
 
-- Child package of FA11B00.
package FA11B00.CA11B01_0 is -- Application_Two_Widget
-- This public child declares a derived type from its parent. It
-- represents processing of widgets in a window system.
type App2_Widget is new App1_Widget (Maximum_Size => 5000);
-- Inherits procedure Create_Widget from parent.
 
-- Primitive operation of type App2_Widget.
-- To be inherited by its children derivatives.
procedure App2_Widget_Specific_Oper (The_Widget : in out App2_Widget;
Loc : in Widget_Location);
 
end FA11B00.CA11B01_0; -- Application_Two_Widget
 
--=======================================================================--
 
package body FA11B00.CA11B01_0 is -- Application_Two_Widget
 
procedure App2_Widget_Specific_Oper
(The_Widget : in out App2_Widget;
Loc : in Widget_Location) is
begin
The_Widget.Location := Loc;
end App2_Widget_Specific_Oper;
 
end FA11B00.CA11B01_0; -- Application_Two_Widget
 
--=======================================================================--
 
-- Grandchild package of FA11B00, child package of FA11B00.CA11B01_0.
package FA11B00.CA11B01_0.CA11B01_1 is -- Application_Three_Widget
-- This public grandchild declares a derived type from its parent. It
-- represents processing of widgets in a window system.
 
type App3_Widget is new App2_Widget; -- Derived record of App2_Widget.
 
-- Inherits (inherited) procedure Create_Widget from Application_One_Widget.
-- Inherits procedure App2_Widget_Specific_Oper from App2_Widget.
 
-- Primitive operation of type App3_Widget.
procedure App3_Widget_Specific_Oper (The_Widget : in out App3_Widget;
S : in Widget_Size);
 
end FA11B00.CA11B01_0.CA11B01_1; -- Application_Three_Widget
 
--=======================================================================--
 
package body FA11B00.CA11B01_0.CA11B01_1 is -- Application_Three_Widget
 
procedure App3_Widget_Specific_Oper
(The_Widget : in out App3_Widget;
S : in Widget_Size) is
begin
The_Widget.Size := S;
end App3_Widget_Specific_Oper;
 
end FA11B00.CA11B01_0.CA11B01_1; -- Application_Three_Widget
 
--=======================================================================--
 
with FA11B00.CA11B01_0.CA11B01_1; -- Application_Three_Widget,
-- implicitly with Application_Two_Widget,
-- implicitly with Application_Three_Widget.
with Report;
 
procedure CA11B01 is
 
package Application_One_Widget renames FA11B00;
package Application_Two_Widget renames FA11B00.CA11B01_0;
package Application_Three_Widget renames FA11B00.CA11B01_0.CA11B01_1;
 
use Application_One_Widget;
use Application_Two_Widget;
use Application_Three_Widget;
 
begin
 
Report.Test ("CA11B01", "Check that a type derived in a public " &
"child inherits primitive operations from parent");
 
Application_One_Subtest:
declare
White_Widget : App1_Widget;
 
begin
-- perform an App1_Widget specific operation.
App1_Widget_Specific_Oper (C => White, L => "Line Editor ",
The_Widget => White_Widget, I => 10);
 
If White_Widget.Color /= White or
White_Widget.Id /= Widget_ID
(Report.Ident_Int (10)) or
White_Widget.Label /= "Line Editor " then
Report.Failed ("Incorrect result for White_Widget");
end if;
 
end Application_One_Subtest;
---------------------------------------------------------------
Application_Two_Subtest:
declare
Amber_Widget : App2_Widget;
 
begin
App1_Widget_Specific_Oper (Amber_Widget, I => 11,
C => Amber, L => "Alarm_Clock ");
-- Inherited from Application_One_Widget.
-- perform an App2_Widget specific operation.
App2_Widget_Specific_Oper (The_Widget => Amber_Widget, Loc => (380,512));
 
If Amber_Widget.Color /= Amber or
Amber_Widget.Id /= Widget_ID (Report.Ident_Int (11)) or
Amber_Widget.Label /= "Alarm_Clock " or
Amber_Widget.Location /= (380,512) then
Report.Failed ("Incorrect result for Amber_Widget");
end if;
 
end Application_Two_Subtest;
---------------------------------------------------------------
Application_Three_Subtest:
declare
Green_Widget : App3_Widget;
 
begin
App1_Widget_Specific_Oper (Green_Widget, 100, Green,
"Screen Editor ");
-- Inherited (inherited) from Basic_Widget.
 
-- perform an App2_Widget specific operation.
App2_Widget_Specific_Oper (Loc => (1024,760),
The_Widget => Green_Widget);
-- Inherited from App_1_Widget.
 
-- perform an App3_Widget specific operation.
App3_Widget_Specific_Oper (Green_Widget, S => (100,100));
 
If Green_Widget.Color /= Green or
Green_Widget.Id /= Widget_ID (Report.Ident_Int (100)) or
Green_Widget.Label /= "Screen Editor " or
Green_Widget.Location /= (1024,760) or
Green_Widget.Size /= (100,100) then
Report.Failed ("Incorrect result for Green_Widget");
end if;
 
end Application_Three_Subtest;
 
Report.Result;
 
end CA11B01;
/ca110040.a
0,0 → 1,90
-- CA110040.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- See CA110042.AM
--
-- TEST DESCRIPTION:
-- See CA110042.AM
--
-- TEST FILES:
-- The following files comprise this test:
--
-- => CA110040.A
-- CA110041.A
-- CA110042.AM
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
-- 26 Apr 96 SAIC ACVC 2.1: Modified prologue; Added pragma
-- Elaborate_Body.
--
--!
 
package CA110040 is -- Package Computer_System.
pragma Elaborate_Body (CA110040);
 
-- Types.
type ID_Type is range 1 .. 4;
type System_Account_Capacity is new ID_Type;
 
type Account is tagged
record
User_ID : ID_Type;
end record;
 
-- Constants.
Maximum_System_Accounts : constant System_Account_Capacity :=
System_Account_Capacity'Last;
 
System_Administrator : constant ID_Type :=
ID_Type (System_Account_Capacity'First);
 
Administrator_Account : constant Account :=
(User_ID => System_Administrator);
 
-- Objects.
Total_Accounts : System_Account_Capacity := 1;
 
-- Exceptions.
Illegal_Account : exception;
Account_Limit_Exceeded : exception;
 
-- Subprograms.
function Next_Available_ID return ID_Type;
 
end CA110040; -- Package Computer_System.
 
--=================================================================--
 
package body CA110040 is -- Package body Computer_System.
 
function Next_Available_ID return ID_Type is
begin
Total_Accounts := Total_Accounts + 1;
return (ID_Type(Total_Accounts));
end Next_Available_ID;
 
end CA110040; -- Package body Computer_System.
/ca13a02.a
0,0 → 1,301
-- CA13A02.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that subunits declared in generic child units of a public
-- parent have the same visibility into its parent, its siblings
-- (public and private), and packages on which its parent depends
-- as is available at the point of their declaration.
--
-- TEST DESCRIPTION:
-- Declare an outside elevator button operation as a subunit in a
-- generic child package of the basic operation package (FA13A00.A).
-- This procedure has visibility into its parent ancestor and its
-- private sibling.
--
-- In the main program, instantiate the child package. Check that
-- subunits perform as expected.
--
-- TEST FILES:
-- The following files comprise this test:
--
-- FA13A00.A
-- CA13A02.A
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
 
-- Public generic child package of an elevator application. This package
-- provides outside elevator button operations.
 
generic -- Instantiate once for each floor.
Our_Floor : in Floor; -- Reference type declared in parent.
 
package FA13A00_1.CA13A02_4 is -- Outside Elevator Button Operations
 
type Light is (Up, Down, Express, Off);
 
type Direction is (Up, Down, Express);
 
function Call_Elevator (D : Direction) return Light;
 
-- other type definitions and procedure declarations in real application.
 
end FA13A00_1.CA13A02_4;
 
--==================================================================--
 
-- Context clauses required for visibility needed by separate subunit.
 
with FA13A00_0; -- Building Manager
 
with FA13A00_1.FA13A00_2; -- Floor Calculation (private)
with FA13A00_1.FA13A00_3; -- Move Elevator
 
use FA13A00_0;
 
package body FA13A00_1.CA13A02_4 is
 
function Call_Elevator (D : Direction) return Light is separate;
 
end FA13A00_1.CA13A02_4;
 
--==================================================================--
 
separate (FA13A00_1.CA13A02_4)
 
-- Subunit Call_Elevator declared in Outside Elevator Button Operations.
 
function Call_Elevator (D : Direction) return Light is
Elevator_Button : Light;
 
begin
-- See if power is on.
 
if Power = Off then -- Reference package with'ed by
Elevator_Button := Off; -- the subunit parent's body.
 
else
case D is
when Express =>
FA13A00_1.FA13A00_3.Move_Elevator -- Reference public sibling of
(Penthouse, Call_Waiting); -- the subunit parent's body.
 
Elevator_Button := Express;
 
when Up =>
if Current_Floor < Our_Floor then
FA13A00_1.FA13A00_2.Up -- Reference private sibling of
(Floor'pos (Our_Floor) -- the subunit parent's body.
- Floor'pos (Current_Floor));
else
FA13A00_1.FA13A00_2.Down -- Reference private sibling of
(Floor'pos (Current_Floor) -- the subunit parent's body.
- Floor'pos (Our_Floor));
end if;
 
-- Call elevator.
 
Call
(Current_Floor, Call_Waiting); -- Reference subprogram declared
-- in the parent of the subunit
-- parent's body.
Elevator_Button := Up;
 
when Down =>
if Current_Floor > Our_Floor then
FA13A00_1.FA13A00_2.Down -- Reference private sibling of
(Floor'pos (Current_Floor) -- the subunit parent's body.
- Floor'pos (Our_Floor));
else
FA13A00_1.FA13A00_2.Up -- Reference private sibling of
(Floor'pos (Our_Floor) -- the subunit parent's body.
- Floor'pos (Current_Floor));
end if;
 
Elevator_Button := Down;
 
-- Call elevator.
 
Call
(Current_Floor, Call_Waiting); -- Reference subprogram declared
-- in the parent of the subunit
-- parent's body.
end case;
 
if not Call_Waiting (Current_Floor) -- Reference private part of the
then -- parent of the subunit parent's
-- body.
TC_Operation := false;
end if;
 
end if;
 
return Elevator_Button;
 
end Call_Elevator;
 
--==================================================================--
 
with FA13A00_1.CA13A02_4; -- Outside Elevator Button Operations
-- implicitly with Basic Elevator
-- Operations
with Report;
 
procedure CA13A02 is
 
begin
 
Report.Test ("CA13A02", "Check that subunits declared in generic child " &
"units of a public parent have the same visibility into " &
"its parent, its parent's siblings, and packages on " &
"which its parent depends");
 
-- Going from floor one to penthouse.
 
Going_To_Penthouse:
declare
-- Declare instance of the child generic elevator package for penthouse.
package Call_Elevator_Pkg is new FA13A00_1.CA13A02_4
(FA13A00_1.Penthouse);
 
use Call_Elevator_Pkg;
 
Call_Button_Light : Light;
 
begin
 
Call_Button_Light := Call_Elevator (Express);
 
if not FA13A00_1.TC_Operation or Call_Button_Light /= Express then
Report.Failed ("Incorrect elevator operation going to penthouse");
end if;
 
end Going_To_Penthouse;
 
-- Going from penthouse to basement.
 
Going_To_Basement:
declare
-- Declare instance of the child generic elevator package for basement.
package Call_Elevator_Pkg is new FA13A00_1.CA13A02_4
(FA13A00_1.Basement);
 
use Call_Elevator_Pkg;
 
Call_Button_Light : Light;
 
begin
 
Call_Button_Light := Call_Elevator (Down);
 
if not FA13A00_1.TC_Operation or Call_Button_Light /= Down then
Report.Failed ("Incorrect elevator operation going to basement");
end if;
 
end Going_To_Basement;
-- Going from basement to floor three.
 
Going_To_Floor3:
declare
-- Declare instance of the child generic elevator package for floor
-- three.
package Call_Elevator_Pkg is new FA13A00_1.CA13A02_4
(FA13A00_1.Floor3);
 
use Call_Elevator_Pkg;
 
Call_Button_Light : Light;
 
begin
 
Call_Button_Light := Call_Elevator (Up);
 
if not FA13A00_1.TC_Operation or Call_Button_Light /= Up then
Report.Failed ("Incorrect elevator operation going to floor 3");
end if;
 
end Going_To_Floor3;
-- Going from floor three to floor two.
 
Going_To_Floor2:
declare
-- Declare instance of the child generic elevator package for floor two.
package Call_Elevator_Pkg is new FA13A00_1.CA13A02_4
(FA13A00_1.Floor2);
 
use Call_Elevator_Pkg;
 
Call_Button_Light : Light;
 
begin
 
Call_Button_Light := Call_Elevator (Up);
 
if not FA13A00_1.TC_Operation or Call_Button_Light /= Up then
Report.Failed ("Incorrect elevator operation going to floor 2");
end if;
 
end Going_To_Floor2;
-- Going to floor one.
 
Going_To_Floor1:
declare
-- Declare instance of the child generic elevator package for floor one.
package Call_Elevator_Pkg is new FA13A00_1.CA13A02_4
(FA13A00_1.Floor1);
 
use Call_Elevator_Pkg;
 
Call_Button_Light : Light;
 
begin
-- Calling elevator from floor one.
 
FA13A00_1.Current_Floor := FA13A00_1.Floor1;
 
Call_Button_Light := Call_Elevator (Down);
 
if not FA13A00_1.TC_Operation or Call_Button_Light /= Down then
Report.Failed ("Incorrect elevator operation going to floor 1");
end if;
 
end Going_To_Floor1;
 
Report.Result;
 
end CA13A02;
/ca11c03.a
0,0 → 1,186
-- CA11C03.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that when a child unit is "withed", visibility is obtained to
-- all ancestor units named in the expanded name of the "withed" child
-- unit. Check that when the parent unit is "used", the simple name of
-- a "withed" child unit is made directly visible.
--
-- TEST DESCRIPTION:
-- To satisfy the first part of the objective, various references are
-- made to types and functions declared in the ancestor packages of the
-- foundation code package hierarchy. Since the grandchild library unit
-- package has been "withed" by this test, the visibility of these
-- components demonstrates that visibility of the ancestor package names
-- is provided when the expanded name of a child library unit is "withed".
--
-- The declare block in the test program includes a "use" clause of the
-- parent package (FA11C00_0.FA11C00_1) of the "withed" child package.
-- As a result, the simple name of the child package (FA11C00_2) is
-- directly visible. The type and function declared in the child
-- package are now visible when qualified with the simple name of the
-- "withed" package (FA11C00_2).
--
-- This test simulates the formatting of data strings, based on the
-- component fields of a "doubly-extended" tagged record type.
--
-- TEST FILES:
-- This test depends on the following foundation code:
--
-- FA11C00.A
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
 
with FA11C00_0.FA11C00_1.FA11C00_2; -- "with" of child library package
-- Animal.Mammal.Primate.
-- This will be used in conjunction with
-- a "use" of FA11C00_0.FA11C00_1 below
-- to verify a portion of the objective.
with Report;
 
procedure CA11C03 is
 
Blank_Name_String : constant FA11C00_0.Species_Name_Type := (others => ' ');
-- Visibility of grandparent package.
-- The package FA11C00_0 is visible since
-- it is an ancestor that is mentioned in
-- the expanded name of its "withed"
-- grandchild package.
 
Blank_Hair_Color :
String (1..FA11C00_0.FA11C00_1.Hair_Color_Type'Width) := (others => ' ');
-- Visibility of parent package.
-- The package FA11C00_0.FA11C00_1 is
-- visible due to the "with" of its
-- child package.
 
subtype Data_String_Type is String (1 .. 60);
 
TC_Result_String : Data_String_Type := (others => ' ');
 
--
 
function Format_Primate_Data (Name : String := Blank_Name_String;
Hair : String := Blank_Hair_Color)
return Data_String_Type is
 
Pos : Integer := 1;
Hair_Color_Field_Separator : constant String := " Hair Color: ";
 
Result_String : Data_String_Type := (others => ' ');
 
begin
Result_String (Pos .. Name'Length) := Name; -- Enter name at start
-- of string.
Pos := Pos + Name'Length; -- Increment counter to
-- next blank position.
Result_String
(Pos .. Pos + Hair_Color_Field_Separator'Length + Hair'Length - 1) :=
Hair_Color_Field_Separator & Hair; -- Include hair color data
-- in result string.
return (Result_String);
end Format_Primate_Data;
 
 
begin
 
Report.Test ("CA11C03", "Check that when a child unit is WITHED, " &
"visibility is obtained to all ancestor units " &
"named in the expanded name of the WITHED child " &
"unit. Check that when the parent unit is USED, " &
"the simple name of a WITHED child unit is made " &
"directly visible" );
 
declare
use FA11C00_0.FA11C00_1; -- This "use" clause will allow direct
-- visibility to the simple name of
-- package FA11C00_0.FA11C00_1.FA11C00_2,
-- since this child package was "withed" by
-- the main program.
 
Tarsier : FA11C00_2.Primate := (Common_Name => "East-Indian Tarsier ",
Weight => 7,
Hair_Color => Brown,
Habitat => FA11C00_2.Arboreal);
 
-- Demonstrates visibility of package
-- FA11C00_0.FA11C00_1.FA11C00_2.
--
-- Type Primate referenced with the simple
-- name of package FA11C00_2 only.
--
-- Simple name of package FA11C00_2 is
-- directly visible through "use" of parent.
 
begin
 
-- Verify that the Format_Primate_Data function will return a blank
-- filled string when no parameters are provided in the call.
 
TC_Result_String := Format_Primate_Data;
 
if (TC_Result_String (1 .. 20) /= Blank_Name_String) then
Report.Failed ("Incorrect initialization value from function");
end if;
 
 
-- Use function Format_Primate_Data to return a formatted data string.
 
TC_Result_String :=
Format_Primate_Data
(Name => FA11C00_2.Image (Tarsier),
-- Function returns a 37 character string
-- value.
Hair => Hair_Color_Type'Image(Tarsier.Hair_Color));
-- The Hair_Color_Type is referenced
-- directly, without package
-- FA11C00_0.FA11C00_1 qualifier.
-- No qualification of Hair_Color_Type is
-- needed due to "use" clause.
 
-- Note that the result of calling 'Image
-- with an enumeration type argument
-- results in an upper-case string.
-- (See conditional statement below.)
 
-- Verify the results of the function call.
 
if not (TC_Result_String (1 .. 37) =
"Primate Species: East-Indian Tarsier " and then
TC_Result_String (38 .. 55) =
" Hair Color: BROWN") then
Report.Failed ("Incorrect result returned from function call");
end if;
 
end;
 
Report.Result;
 
end CA11C03;
/ca1005a.ada
0,0 → 1,70
-- CA1005A.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT A SUBPROGRAM DECLARATION AND BODY CAN BE
-- SUBMITTED TOGETHER FOR COMPILATION.
 
-- JRK 5/14/81
 
 
FUNCTION CA1005A_F (I : INTEGER) RETURN INTEGER;
 
 
FUNCTION CA1005A_F (I : INTEGER) RETURN INTEGER IS
BEGIN
RETURN I + 1;
END CA1005A_F;
 
 
PROCEDURE CA1005A_P (I : IN OUT INTEGER);
 
 
PROCEDURE CA1005A_P (I : IN OUT INTEGER) IS
BEGIN
I := -I;
END CA1005A_P;
 
 
WITH REPORT, CA1005A_F, CA1005A_P;
USE REPORT;
 
PROCEDURE CA1005A IS
 
I : INTEGER := IDENT_INT (7);
 
BEGIN
TEST ("CA1005A", "SUBPROGRAM DECLARATIONS AND BODIES " &
"SUBMITTED TOGETHER");
 
IF CA1005A_F (IDENT_INT(2)) /= 3 THEN
FAILED ("FUNCTION NOT EXECUTED");
END IF;
 
CA1005A_P (I);
IF I /= -7 THEN
FAILED ("PROCEDURE NOT EXECUTED");
END IF;
 
RESULT;
END CA1005A;
/ca140281.a
0,0 → 1,67
-- CA140281.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- OBJECTIVE:
-- See CA140283.AM.
--
-- TEST DESCRIPTION
-- See CA140283.AM.
--
-- TEST FILES:
-- This test consists of the following files:
-- CA140280.A
-- -> CA140281.A
-- CA140282.A
-- CA140283.AM
--
-- CHANGE HISTORY:
-- JBG 05/28/85 CREATED ORGINAL TEST.
-- RDH 04/18/90 ADDED CASES WHERE SUBPROGRAM PARAMETER TYPES ARE
-- NOT THE SAME.
-- RLB 07/08/99 Reinstated withdrawn test; revised to Ada 95 format.
 
PROCEDURE CA14028_PROC1 (X : OUT INTEGER) IS
BEGIN
X := 3;
END CA14028_PROC1;
 
WITH REPORT; USE REPORT;
PRAGMA ELABORATE (REPORT);
FUNCTION CA14028_FUNC2 RETURN INTEGER IS
BEGIN
RETURN IDENT_INT(4);
END CA14028_FUNC2;
 
WITH REPORT; USE REPORT;
PRAGMA ELABORATE (REPORT);
PROCEDURE CA14028_PROC3 (X : OUT BOOLEAN; Y : OUT INTEGER) IS
BEGIN
X := FALSE;
Y := IDENT_INT(6);
END CA14028_PROC3;
 
FUNCTION CA14028_FUNC3 RETURN BOOLEAN IS
BEGIN
RETURN FALSE;
END CA14028_FUNC3;
/ca11002.a
0,0 → 1,238
-- CA11002.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that a public child can utilize its parent unit's visible
-- definitions.
--
-- TEST DESCRIPTION:
-- Declare a parent package that contains the following: type, object,
-- constant, exception, and subprograms. Declare a public child unit
-- that utilizes the components found in the visible part of its parent.
--
-- Demonstrate utilization of the following parent components in the
-- child package:
--
-- Parent
-- Type X
-- Constant X
-- Object X
-- Subprogram X
-- Exception X
--
-- This abstraction simulates a portion of a simple operating system.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
 
package CA11002_0 is -- Package OS.
 
type File_Descriptor is new Integer;
type File_Mode is (Read_Only, Write_Only, Read_Write);
 
Null_File : constant File_Descriptor := 0;
Default_Mode : constant File_Mode := Read_Only;
Active_Mode : constant File_Mode := Read_Write;
 
type File_Type is
record
Descriptor : File_Descriptor := Null_File;
Mode : File_Mode := Default_Mode;
end record;
 
System_File : File_Type;
File_Mode_Error : exception;
 
function Next_Available_File return File_Descriptor;
 
function Mode_Of_File (File : File_Type) return File_Mode;
 
end CA11002_0; -- Package OS.
 
--=================================================================--
 
package body CA11002_0 is -- Package body OS.
File_Count : Integer := 0;
 
function Next_Available_File return File_Descriptor is
begin
File_Count := File_Count + 1;
return (File_Descriptor(File_Count)); -- Type conversion.
end Next_Available_File;
--------------------------------------------------------------
function Mode_Of_File (File : File_Type) return File_Mode is
Mode : File_Mode := File.Mode;
begin
return (Mode);
end Mode_Of_File;
 
end CA11002_0; -- Package body OS.
 
--=================================================================--
 
package CA11002_0.CA11002_1 is -- Child package OS.Operations.
 
-- Dot qualification of types, objects, etc. from parent is not required
-- in a child unit.
 
procedure Create_File (Mode : in File_Mode:= Active_Mode;
File : out File_Type);
 
end CA11002_0.CA11002_1; -- Child package OS.Operations.
 
--=================================================================--
 
with Report;
package body CA11002_0.CA11002_1 is -- Child package body OS.Operations.
 
function New_File_Validated (File : File_Type) -- Ensure that a newly
return Boolean is -- created file has
Result : Boolean := False; -- appropriate values.
begin
if (File.Descriptor > System_File.Descriptor) and -- Parent object.
(File.Mode in File_Mode ) -- Parent type.
then
Result := True;
end if;
 
return (Result);
 
end New_File_Validated;
--------------------------------------------------------------
procedure Create_File
(Mode : in File_Mode := Active_Mode; -- Parent constant.
File : out File_Type) is -- Parent type.
 
New_File : File_Type;
 
begin
New_File.Descriptor := Next_Available_File; -- Parent subprogram.
New_File.Mode := Mode;
 
if New_File_Validated (File => New_File) then
File := New_File;
end if;
 
end Create_File;
 
end CA11002_0.CA11002_1; -- Child Package body OS.Operations.
 
--=================================================================--
 
-- Child library subprogram Convert_File_Mode specification.
procedure CA11002_0.CA11002_2 (File : in out File_Type; -- Parent type.
New_Mode : in File_Mode); -- Parent type.
 
 
--=================================================================--
with Report;
 
-- Child library subprogram Convert_File_Mode body.
procedure CA11002_0.CA11002_2 (File : in out File_Type;
New_Mode : in File_Mode) is
begin
if File.Mode = New_Mode then
raise File_Mode_Error; -- Parent exception.
Report.Failed ("Exception not raised in child unit");
else
File.Mode := New_Mode;
end if;
end CA11002_0.CA11002_2;
 
--=================================================================--
 
with Report;
with CA11002_0.CA11002_1; -- Child package OS.Operations.
with CA11002_0.CA11002_2; -- Child subprogram OS.Convert_File_Mode,
-- Implicitly with parent, OS.
use CA11002_0; -- All user-defined operators directly
-- visible.
procedure CA11002 is
begin
 
Report.Test ("CA11002", "Check that a public child can utilize its " &
"parent unit's visible definitions");
 
File_Creation: -- This processing block will demonstrate
-- use of child package subroutine that
-- takes advantage of components declared
-- in the parent package.
declare
User_File : File_Type;
begin
CA11002_0.CA11002_1.Create_File (File => User_File); -- Default mode
-- parameter used in
-- this call.
if (User_File.Descriptor = System_File.Descriptor) or
(User_File.Mode = Default_Mode)
then
Report.Failed ("Incorrect file creation");
end if;
 
end File_Creation;
 
--------------------------------------------------------------
File_Mode_Conversion: -- This processing block will demonstrate
-- the occurrence of a (forced) exception
-- being raised in a child subprogram, and
-- propagated to the caller. The exception
-- is handled, and the child subprogram
-- is called again, this time to perform
-- without error.
declare
procedure Convert_File_Mode (File : in out File_Type;
New_Mode : in File_Mode) renames CA11002_0.CA11002_2;
New_File : File_Type;
begin -- Raise an exception with this
-- illegal conversion operation
-- (attempt to change to current mode).
 
Convert_File_Mode (File => New_File,
New_Mode => Default_Mode);
Report.Failed ("Exception should have been raised in child unit");
 
exception
when File_Mode_Error => -- Perform the conversion again, this
-- time with a different file mode.
 
Convert_File_Mode (File => New_File,
New_Mode => CA11002_0.Active_Mode);
 
if New_File.Mode /= Read_Write then
Report.Failed ("Incorrect result from mode conversion operation");
end if;
 
when others =>
Report.Failed ("Unexpected exception raised in File_Mode_Conversion");
 
end File_Mode_Conversion;
 
Report.Result;
 
end CA11002;
/ca2009d.ada
0,0 → 1,95
-- CA2009D.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT A GENERIC SUBPROGRAM SUBUNIT CAN BE SPECIFIED AND
-- INSTANTIATED.
 
-- BHS 8/01/84
-- JRK 5/24/85 CHANGED TO .ADA, SEE AI-00323.
 
 
WITH REPORT;
USE REPORT;
PROCEDURE CA2009D IS
 
INT1 : INTEGER := 1;
INT2 : INTEGER := 2;
 
 
GENERIC
TYPE ELEM IS PRIVATE;
PCON1 : IN ELEM;
PVAR1 : IN OUT ELEM;
PROCEDURE PROC1;
 
 
GENERIC
TYPE OBJ IS PRIVATE;
FCON1 : IN OBJ;
FVAR1 : IN OUT OBJ;
FUNCTION FUNC1 RETURN OBJ;
 
 
PROCEDURE PROC1 IS SEPARATE;
FUNCTION FUNC1 RETURN OBJ IS SEPARATE;
 
 
PROCEDURE NI_PROC1 IS NEW PROC1 (INTEGER, 2, INT1);
FUNCTION NI_FUNC1 IS NEW FUNC1 (INTEGER, 3, INT2);
 
 
BEGIN
 
TEST ("CA2009D", "SPECIFICATION AND INSTANTIATION " &
"OF GENERIC SUBPROGRAM SUBUNITS");
 
NI_PROC1;
IF INT1 /= 2 THEN
FAILED ("INCORRECT INSTANTIATION - NI_PROC1");
END IF;
 
 
IF NI_FUNC1 /= 3 THEN
FAILED ("INCORRECT INSTANTIATION - NI_FUNC1");
END IF;
 
 
RESULT;
 
END CA2009D;
 
 
SEPARATE (CA2009D)
PROCEDURE PROC1 IS
BEGIN
PVAR1 := PCON1;
END PROC1;
 
 
SEPARATE (CA2009D)
FUNCTION FUNC1 RETURN OBJ IS
BEGIN
FVAR1 := FCON1;
RETURN FVAR1;
END FUNC1;
/ca13001.a
0,0 → 1,370
-- CA13001.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that a separate protected unit declared in a non-generic child
-- unit of a private parent have the same visibility into its parent,
-- its siblings, and packages on which its parent depends as is available
-- at the point of their declaration.
--
-- TEST DESCRIPTION:
-- A scenario is created that demonstrates the potential of having all
-- members of one family to take out a transportation. The restriction
-- is depend on each member to determine who can get a car, a clunker,
-- or a bicycle. If no transportation is available, that member has to
-- walk.
--
-- Declare a package with location for each family member. Declare
-- a public parent package. Declare a private child package. Declare a
-- public grandchild of this private package. Declare a protected unit
-- as a subunit in a public grandchild package. This subunit has
-- visibility into it's parent body ancestor and its sibling.
--
-- Declare another public parent package. The body of this package has
-- visibility into its private sibling's descendants.
--
-- In the main program, "with"s the parent package. Check that the
-- protected subunit performs as expected.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
-- 16 Nov 95 SAIC Update and repair for ACVC 2.0.1
--
--!
 
package CA13001_0 is
 
type Location is (School, Work, Beach, Home);
type Family is (Father, Mother, Teen);
Destination : array (Family) of Location;
 
-- Other type definitions and procedure declarations in real application.
 
end CA13001_0;
 
-- No bodies required for CA13001_0.
 
--==================================================================--
 
-- Public parent.
 
package CA13001_1 is
 
type Transportation is (Bicycle, Clunker, New_Car);
type Key_Type is private;
Walking : boolean := false;
 
-- Other type definitions and procedure declarations in real application.
 
private
type Key_Type
is range Transportation'pos(Bicycle) .. Transportation'pos(New_Car);
 
end CA13001_1;
 
-- No bodies required for CA13001_1.
 
--==================================================================--
 
-- Private child.
 
private package CA13001_1.CA13001_2 is
 
type Transport is
record
In_Use : boolean := false;
end record;
Vehicles : array (Transportation) of Transport;
 
-- Other type definitions and procedure declarations in real application.
 
end CA13001_1.CA13001_2;
 
-- No bodies required for CA13001_1.CA13001_2.
 
--==================================================================--
 
-- Public grandchild of a private parent.
 
package CA13001_1.CA13001_2.CA13001_3 is
 
Flat_Tire : array (Transportation) of boolean := (others => false);
 
-- Other type definitions and procedure declarations in real application.
 
end CA13001_1.CA13001_2.CA13001_3;
 
-- No bodies required for CA13001_1.CA13001_2.CA13001_3.
 
--==================================================================--
 
-- Context clauses required for visibility needed by a separate subunit.
 
with CA13001_0;
use CA13001_0;
 
-- Public grandchild of a private parent.
 
package CA13001_1.CA13001_2.CA13001_4 is
 
type Transit is
record
Available : boolean := false;
end record;
type Keys_Array is array (Transportation) of Transit;
Fuel : array (Transportation) of boolean := (others => true);
 
protected Family_Transportation is
 
procedure Get_Vehicle (Who : in Family;
Key : out Key_Type);
procedure Return_Vehicle (Tr : in Transportation);
function TC_Verify (What : Transportation) return boolean;
 
private
Keys : Keys_Array;
 
end Family_Transportation;
 
end CA13001_1.CA13001_2.CA13001_4;
 
--==================================================================--
 
-- Context clause required for visibility needed by a separate subunit.
 
with CA13001_1.CA13001_2.CA13001_3; -- Public sibling.
 
package body CA13001_1.CA13001_2.CA13001_4 is
 
protected body Family_Transportation is separate;
 
end CA13001_1.CA13001_2.CA13001_4;
 
--==================================================================--
 
separate (CA13001_1.CA13001_2.CA13001_4)
protected body Family_Transportation is
 
procedure Get_Vehicle (Who : in Family;
Key : out Key_Type) is
begin
case Who is
when Father|Mother =>
-- Drive new car to work
 
-- Reference package with'ed by the subunit parent's body.
if Destination(Who) = Work then
 
-- Reference type declared in the private parent of the subunit
-- parent's body.
-- Reference type declared in the visible part of the
-- subunit parent's body.
if not Vehicles(New_Car).In_Use and Fuel(New_Car)
 
-- Reference type declared in the public sibling of the
-- subunit parent's body.
and not CA13001_1.CA13001_2.CA13001_3.Flat_Tire(New_Car) then
Vehicles(New_Car).In_Use := true;
 
-- Reference type declared in the private part of the
-- protected subunit.
Keys(New_Car).Available := false;
Key := Transportation'pos(New_Car);
else
-- Reference type declared in the grandparent of the subunit
-- parent's body.
Walking := true;
end if;
 
-- Drive clunker to other destinations.
else
if not Vehicles(Clunker).In_Use and Fuel(Clunker) and not
CA13001_1.CA13001_2.CA13001_3.Flat_Tire(Clunker) then
Vehicles(Clunker).In_Use := true;
Keys(Clunker).Available := false;
Key := Transportation'pos(Clunker);
else
Walking := true;
Key := Transportation'pos(Bicycle);
end if;
end if;
-- Similar for Teen.
when Teen =>
if not Vehicles(Clunker).In_Use and Fuel(Clunker) and not
CA13001_1.CA13001_2.CA13001_3.Flat_Tire(Clunker) then
Vehicles(Clunker).In_Use := true;
Keys(Clunker).Available := false;
Key := Transportation'pos(Clunker);
else
Walking := true;
Key := Transportation'pos(Bicycle);
end if;
end case;
 
end Get_Vehicle;
 
----------------------------------------------------------------
 
-- Any family member can bring back the transportation with the key.
 
procedure Return_Vehicle (Tr : in Transportation) is
begin
Vehicles(Tr).In_Use := false;
Keys(Tr).Available := true;
end Return_Vehicle;
 
----------------------------------------------------------------
 
function TC_Verify (What : Transportation) return boolean is
begin
return Keys(What).Available;
end TC_Verify;
end Family_Transportation;
 
--==================================================================--
 
with CA13001_0;
use CA13001_0;
 
-- Public child.
 
package CA13001_1.CA13001_5 is
 
-- In a real application, tasks could be used to demonstrate
-- a family transportation scenario, i.e., each member of
-- a family can take a vehicle out concurrently, then return
-- them at the same time. For the purposes of the test, family
-- transportation happens sequentially.
 
procedure Provide_Transportation (Who : in Family;
Get_Key : out Key_Type;
Get_Veh : out boolean);
procedure Return_Transportation (What : in Transportation;
Rt_Veh : out boolean);
 
end CA13001_1.CA13001_5;
 
--==================================================================--
 
with CA13001_1.CA13001_2.CA13001_4; -- Public grandchild of a private parent,
-- implicitly with CA13001_1.CA13001_2.
package body CA13001_1.CA13001_5 is
 
package Transportation_Pkg renames CA13001_1.CA13001_2.CA13001_4;
use Transportation_Pkg;
 
-- These two validation subprograms provide the capability to check the
-- components defined in the private packages from within the client
-- program.
 
procedure Provide_Transportation (Who : in Family;
Get_Key : out Key_Type;
Get_Veh : out boolean) is
begin
-- Goto work, school, or to the beach.
Family_Transportation.Get_Vehicle (Who, Get_Key);
if not Family_Transportation.TC_Verify
(Transportation'Val(Get_Key)) then
Get_Veh := true;
else
Get_Veh := false;
end if;
 
end Provide_Transportation;
 
----------------------------------------------------------------
 
procedure Return_Transportation (What : in Transportation;
Rt_Veh : out boolean) is
begin
Family_Transportation.Return_Vehicle (What);
if Family_Transportation.TC_Verify(What) and
not CA13001_1.CA13001_2.Vehicles(What).In_Use then
Rt_Veh := true;
else
Rt_Veh := false;
end if;
 
end Return_Transportation;
 
end CA13001_1.CA13001_5;
 
--==================================================================--
 
with CA13001_0;
with CA13001_1.CA13001_5; -- Implicitly with parent, CA13001_1.
with Report;
 
procedure CA13001 is
 
Mommy : CA13001_0.Family := CA13001_0.Mother;
Daddy : CA13001_0.Family := CA13001_0.Father;
BG : CA13001_0.Family := CA13001_0.Teen;
BG_Clunker : CA13001_1.Transportation := CA13001_1.Clunker;
Get_Key : CA13001_1.Key_Type;
Get_Transit : boolean := false;
Return_Transit : boolean := false;
 
begin
Report.Test ("CA13001", "Check that a protected subunit declared in " &
"a child unit of a private parent have the same visibility " &
"into its parent, its parent's siblings, and packages on " &
"which its parent depends");
 
-- Get transportation for mother to go to work.
CA13001_0.Destination(CA13001_0.Mother) := CA13001_0.Work;
CA13001_1.CA13001_5.Provide_Transportation (Mommy, Get_Key, Get_Transit);
if not Get_Transit then
Report.Failed ("Failed to get mother transportation");
end if;
 
-- Get transportation for teen to go to school.
CA13001_0.Destination(CA13001_0.Teen) := CA13001_0.School;
Get_Transit := false;
CA13001_1.CA13001_5.Provide_Transportation (BG, Get_Key, Get_Transit);
if not Get_Transit then
Report.Failed ("Failed to get teen transportation");
end if;
 
-- Get transportation for father to go to the beach.
CA13001_0.Destination(CA13001_0.Father) := CA13001_0.Beach;
Get_Transit := false;
CA13001_1.CA13001_5.Provide_Transportation (Daddy, Get_Key, Get_Transit);
if Get_Transit and not CA13001_1.Walking then
Report.Failed ("Failed to make daddy to walk to the beach");
end if;
 
-- Return the clunker.
CA13001_1.CA13001_5.Return_Transportation (BG_Clunker, Return_Transit);
if not Return_Transit then
Report.Failed ("Failed to get back the clunker");
end if;
 
Report.Result;
 
end CA13001;
/ca11006.a
0,0 → 1,211
-- CA11006.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that the private part of a child library unit can utilize
-- its parent unit's private definition.
--
-- TEST DESCRIPTION:
-- Declare a package and public child package, both with private
-- parts. The child package will have a private extension of a type
-- declared in the parent's private part. In addition, the private
-- part of the child package specification will make use of some of
-- the components declared in the private part of the parent.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
-- 15 Nov 95 SAIC Update and repair for ACVC 2.0.1
--
--!
 
package CA11006_0 is -- Package File_Package
 
type File_Descriptor is private;
type File_Mode is (Read_Only, Write_Only, Read_Write);
type File_Type is tagged private;
 
function Next_Available_File return File_Descriptor;
 
private
 
type File_Measure is range 0 .. 1000;
type File_Descriptor is new Integer;
 
Null_File : constant File_Descriptor := 0;
Default_Mode : constant File_Mode := Read_Write;
 
type File_Type is tagged
record
Descriptor : File_Descriptor := Null_File;
Mode : File_Mode := Default_Mode;
end record;
 
System_File : File_Type;
 
end CA11006_0; -- Package File_Package
 
--=================================================================--
 
package body CA11006_0 is -- Package File_Package
File_Count : Integer := 0;
 
function Next_Available_File return File_Descriptor is
begin
File_Count := File_Count + 1;
return File_Descriptor (File_Count);
end Next_Available_File;
 
end CA11006_0; -- Package File_Package
 
--=================================================================--
 
package CA11006_0.CA11006_1 is -- Child package File_Package.Operations
 
type File_Length_Type is private;
type Extended_File_Type is new File_Type with private;
 
System_Extended_File : constant Extended_File_Type;
 
procedure Create_File (Mode : in File_Mode;
File : out Extended_File_Type);
 
procedure Compress_File (Original : in Extended_File_Type;
Compressed_File : out Extended_File_Type);
 
function Validate (File : in Extended_File_Type) return Boolean;
 
function Validate_Compression (File : in Extended_File_Type)
return Boolean;
-- These two validation functions provide
-- the capability to check the private
-- components defined in the parent and
-- child packages from within the client
-- program.
private
 
type File_Length_Type is new File_Measure; -- Parent private type.
 
Min_File_Size : File_Length_Type := File_Length_Type'First;
Max_File_Size : File_Length_Type := File_Length_Type'Last;
 
type Extended_File_Type is new File_Type with -- Parent type.
record
Blocks : File_Length_Type := Min_File_Size;
end record;
 
System_Extended_File : constant Extended_File_Type :=
(Descriptor => System_File.Descriptor, -- Parent private object.
Mode => Read_Only, -- Parent enumeration literal.
Blocks => Min_File_Size);
 
 
end CA11006_0.CA11006_1; -- Child Package File_Package.Operations
 
--=================================================================--
 
-- Child package body File_Package.Operations
package body CA11006_0.CA11006_1 is
 
procedure Create_File
(Mode : in File_Mode;
File : out Extended_File_Type) is
begin
File.Descriptor := Next_Available_File; -- Parent subprogram.
File.Mode := Default_Mode; -- Parent private constant.
File.Blocks := Max_File_Size;
end Create_File;
------------------------------------------------------------------------
procedure Compress_File (Original : in Extended_File_Type;
Compressed_File : out Extended_File_Type) is
begin
Compressed_File.Descriptor := Next_Available_File;
Compressed_File.Mode := Read_Only;
Compressed_File.Blocks := Original.Blocks / 2; -- Simulated file
end Compress_File; -- compression.
------------------------------------------------------------------------
function Validate (File : in Extended_File_Type) return Boolean is
begin
if ((File.Descriptor /= System_Extended_File.Descriptor) and
(File.Mode = Read_Write) and
(File.Blocks = Max_File_Size)) then
return True;
else
return False;
end if;
end Validate;
------------------------------------------------------------------------
function Validate_Compression (File : in Extended_File_Type)
return Boolean is
begin
if ((File.Descriptor /= System_File.Descriptor) and
(File.Mode = Read_Only) and
(File.Blocks = Max_File_Size/2)) then
return True;
else
return False;
end if;
end Validate_Compression;
 
end CA11006_0.CA11006_1; -- Child package body File_Package.Operations
 
--=================================================================--
 
with CA11006_0.CA11006_1; -- with Child package File_Package.Operations
with Report;
 
procedure CA11006 is
 
package File renames CA11006_0;
package File_Ops renames CA11006_0.CA11006_1;
 
Validation_File_Mode : File.File_Mode := File.Read_Only;
Validation_File,
Storage_Copy : File_Ops.Extended_File_Type;
 
begin
 
Report.Test ("CA11006", "Check that the private part of a child " &
"library unit can utilize its parent " &
"unit's private definition");
 
File_Ops.Create_File (Validation_File_Mode, Validation_File);
 
if not File_Ops.Validate (Validation_File) then
Report.Failed ("Incorrect initialization of file");
end if;
 
File_Ops.Compress_File (Validation_File, Storage_Copy);
 
if not (File_Ops.Validate (Validation_File) and
File_Ops.Validate_Compression (Storage_Copy))
then
Report.Failed ("Incorrect compression of file");
end if;
 
Report.Result;
 
end CA11006;
/ca11d012.a
0,0 → 1,73
-- CA11D012.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- See CA11D013.AM
--
-- TEST DESCRIPTION:
-- See CA11D013.AM
--
-- TEST FILES:
-- The following files comprise this test:
--
-- FA11D00.A
-- CA11D010.A
-- CA11D011.A
-- => CA11D012.A
-- CA11D013.AM
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
-- 21 Dec 94 SAIC Declared child function specification
-- 26 Apr 96 SAIC ACVC 2.1: Modified prologue.
--
--!
 
with Report;
 
-- Child function of FA11D00.
-- Does not divide zero complex numbers.
 
function FA11D00.CA11D012 (Left, Right : Complex_Type)
return Complex_Type;
 
--=======================================================================--
 
function FA11D00.CA11D012 (Left, Right : Complex_Type)
return Complex_Type is -- Divide_Complex
 
begin
-- Zero is declared in parent package.
 
if Right.Real = Zero.Real or Right.Imag = Zero.Imag then
raise Divide_Error; -- Reference to exception in parent package.
Report.Failed ("Program control not transferred by raise in " &
"child function FA11D00.CA11D012");
else
return ( Real => (Left.Real / Right.Real),
Imag => (Left.Imag / Right.Imag) );
end if;
 
end FA11D00.CA11D012; -- Divide_Complex
/ca1022a0.ada
0,0 → 1,43
-- CA1022A0.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- BHS 7/23/84
 
PACKAGE CA1022A0 IS
 
I : INTEGER := 2;
PROCEDURE P0 (X : IN OUT INTEGER );
 
END CA1022A0;
 
PACKAGE BODY CA1022A0 IS
 
PROCEDURE P0 (X : IN OUT INTEGER) IS
BEGIN
 
X := X + 1;
 
END P0;
 
END CA1022A0;
/ca1022a2.ada
0,0 → 1,33
-- CA1022A2.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- BHS 7/23/84
 
WITH CA1022A0;
FUNCTION CA1022A2 (Z : INTEGER := 1) RETURN BOOLEAN IS
BEGIN
 
RETURN TRUE;
 
END CA1022A2;
/ca1020e0.ada
0,0 → 1,53
-- CA1020E0.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- OBJECTIVE:
-- CHECK THAT A SUBPROGRAM LIBRARY UNIT CAN BE REPLACED BY A GENERIC
-- INSTANTIATION HAVING THE SAME IDENTIFIER. THIS FILE CONTAINS
-- GENERIC UNITS TO BE INSTANTIATED AS LIBRARY UNITS.
 
-- HISTORY:
-- JBG 05/28/85 CREATED ORIGINAL TEST.
-- JET 07/29/88 ADDED CASES IN WHICH SUBPROGRAM PROFILES ARE NOT
-- THE SAME AND ALSO WHEN SUBPROGRAM IS FIRST
-- DECLARED WITHOUT A BODY.
 
GENERIC
C : INTEGER;
PROCEDURE GENPROC_CA1020E (X : OUT INTEGER);
 
WITH REPORT; USE REPORT;
PRAGMA ELABORATE (REPORT);
PROCEDURE GENPROC_CA1020E (X : OUT INTEGER) IS
BEGIN
X := IDENT_INT(C);
END GENPROC_CA1020E;
 
GENERIC
FUNCTION GENFUNC_CA1020E RETURN INTEGER;
 
FUNCTION GENFUNC_CA1020E RETURN INTEGER IS
BEGIN
RETURN 2;
END GENFUNC_CA1020E;
/ca1020e2.ada
0,0 → 1,51
-- CA1020E2.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- OBJECTIVE:
-- CHECK THAT A SUBPROGRAM LIBRARY UNIT CAN BE REPLACED BY A GENERIC
-- INSTANTIATION HAVING THE SAME IDENTIFIER. THIS FILE CONTAINS
-- GENERIC INSTANTIATIONS REPLACING LIBRARY UNITS CREATED IN
-- CA1020E1.
 
-- HISTORY:
-- JBG 05/28/85 CREATED ORIGINAL TEST.
-- JET 07/29/88 ADDED CASES IN WHICH SUBPROGRAM PROFILES ARE NOT
-- THE SAME AND ALSO WHEN SUBPROGRAM IS FIRST
-- DECLARED WITHOUT A BODY.
 
WITH GENPROC_CA1020E;
PRAGMA ELABORATE (GENPROC_CA1020E);
PROCEDURE CA1020E_PROC1 IS NEW GENPROC_CA1020E(1);
 
WITH GENFUNC_CA1020E;
PRAGMA ELABORATE (GENFUNC_CA1020E);
FUNCTION CA1020E_FUNC1 IS NEW GENFUNC_CA1020E;
 
WITH GENPROC_CA1020E;
PRAGMA ELABORATE (GENPROC_CA1020E);
PROCEDURE CA1020E_PROC2 IS NEW GENPROC_CA1020E(5);
 
WITH GENFUNC_CA1020E;
PRAGMA ELABORATE (GENFUNC_CA1020E);
FUNCTION CA1020E_FUNC2 IS NEW GENFUNC_CA1020E;
/ca1022a4.ada
0,0 → 1,36
-- CA1022A4.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- RECOMPILATION OF PROCEDURE CA1022A1.
 
-- BHS 7/23/84
 
WITH CA1022A0;
PROCEDURE CA1022A1 (Y : IN OUT INTEGER) IS
BEGIN
 
Y := 3;
CA1022A0.P0 (Y);
 
END CA1022A1;
/ca5003a1.ada
0,0 → 1,34
-- CA5003A1.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 7/22/81
-- JBG 10/6/83
 
WITH CA5003A0;
USE CA5003A0; PRAGMA ELABORATE (CA5003A0);
PACKAGE CA5003A1 IS
 
A1 : INTEGER := SHOW_ELAB ('1');
 
END CA5003A1;
/ca2001h0.ada
0,0 → 1,40
-- CA2001H0.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 6/25/81
-- JBG 8/25/83
 
FUNCTION CA2001H0 RETURN INTEGER IS
 
PACKAGE CA2001H1 IS
I : INTEGER := 0;
END CA2001H1;
 
PACKAGE BODY CA2001H1 IS SEPARATE;
 
BEGIN
RETURN CA2001H1.I;
 
END CA2001H0;
/ca1022a6.ada
0,0 → 1,66
-- CA1022A6M.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT IF A SUBPROGRAM BODY IS INITIALLY COMPILED WITH A CONTEXT
-- CLAUSE AND A UNIT NAMED IN THE CONTEXT CLAUSE IS RECOMPILED, THEN AN
-- ATTEMPT TO COMPILE THE BODY AGAIN WILL SUCCEED IF THE CONTEXT CLAUSE
-- IS PRESENT.
-- CHECK THAT IF THE RECOMPILED UNIT IS NOT NEEDED IN THE SUBPROGRAM
-- BODY, THE BODY CAN BE SUCCESSFULLY RECOMPILED WITHOUT MENTIONING THE
-- RECOMPILED UNIT.
 
-- SEPARATE FILES ARE:
-- CA1022A0 A LIBRARY PACKAGE.
-- CA1022A1 A LIBRARY PROCEDURE.
-- CA1022A2 A LIBRARY FUNCTION.
-- CA1022A3 A LIBRARY PACKAGE (CA1022A0).
-- CA1022A4 A LIBRARY PROCEDURE (CA1022A1).
-- CA1022A5 A LIBRARY FUNCTION (CA1022A2).
-- CA1022A6M THE MAIN PROCEDURE.
 
-- BHS 7/23/84
 
WITH CA1022A1, CA1022A2;
WITH REPORT; USE REPORT;
PROCEDURE CA1022A6M IS
 
I : INTEGER := 1;
 
BEGIN
 
TEST ("CA1022A", "USE OF CONTEXT CLAUSES NAMING RECOMPILED " &
"UNITS WITH RECOMPILED SUBPROGRAMS");
 
CA1022A1(I);
IF I /= 5 THEN
FAILED ("PROCEDURE CA1022A1 NOT INVOKED CORRECTLY");
END IF;
 
IF CA1022A2 THEN
FAILED ("FUNCTION CA1022A2 NOT INVOKED CORRECTLY");
END IF;
 
RESULT;
 
END CA1022A6M;
/ca5003a3.ada
0,0 → 1,34
-- CA5003A3.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 7/22/81
-- JBG 10/6/83
 
WITH CA5003A0, CA5003A2;
USE CA5003A0; PRAGMA ELABORATE (CA5003A0);
PACKAGE CA5003A3 IS
 
A3 : INTEGER := SHOW_ELAB ('3');
 
END CA5003A3;
/ca2001h2.ada
0,0 → 1,38
-- CA2001H2.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 6/25/81
-- JBG 8/25/83
 
FUNCTION CA2001H0 RETURN INTEGER IS
 
PACKAGE CA2001H1 IS
I : INTEGER := 2;
END CA2001H1;
 
BEGIN
 
RETURN CA2001H1.I;
 
END CA2001H0;
/ca5003a5.ada
0,0 → 1,34
-- CA5003A5.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 7/22/81
-- JBG 10/6/83
 
WITH CA5003A0, CA5003A3, CA5003A4;
USE CA5003A0; PRAGMA ELABORATE (CA5003A0);
PACKAGE CA5003A5 IS
 
A5 : INTEGER := SHOW_ELAB ('5');
 
END CA5003A5;
/ca140231.a
0,0 → 1,59
-- CA140231.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- See CA140232.AM.
--
-- TEST DESCRIPTION:
-- See CA140232.AM.
--
-- TEST FILES:
-- This test consists of the following files:
-- CA140230.A
-- -> CA140231.A
-- CA140232.AM
-- CA140233.A
--
-- PASS/FAIL CRITERIA:
-- See CA140232.AM.
--
-- CHANGE HISTORY:
-- 07 DEC 96 SAIC ACVC 2.1: Initial version.
-- 13 SEP 99 RLB Changed to C-test (by AI-00077).
-- 20 MAR 00 RLB Removed special requirements, because there
-- aren't any.
--
--!
 
function CA14023_1 (P1, P2 : Data_type) return Data_type is
begin
if Floor > P1 and Floor > P2 then
return Floor;
elsif P2 > P1 then
return P2;
else
return P1;
end if;
end CA14023_1;
/ca11011.a
0,0 → 1,271
-- CA11011.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that a private child package can use entities declared in the
-- private part of the parent unit of its parent unit.
--
-- TEST DESCRIPTION:
-- Declare a parent package containing private types and objects
-- used by the system. Declare a public child package that
-- provides a visible interface to the system functionality.
-- Declare a private grandchild package that uses the visible grandparent
-- components to provide the actual functionality to the system.
--
-- The public child (parent of the private grandchild) uses the
-- functionality of its private child (grandchild package) to provide
-- the visible interface to operations of the system.
--
-- The test itself will utilize the visible interface provided in the
-- public child package to demonstrate a possible solution to file
-- management.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
 
package CA11011_0 is -- Package OS.
 
type File_Descriptor_Type is private;
 
Default_Descriptor : constant File_Descriptor_Type;
First_File : constant File_Descriptor_Type;
 
procedure Verify_Initial_Conditions (Key : in File_Descriptor_Type;
Status : out Boolean);
 
function Final_Conditions_Valid (Key : File_Descriptor_Type)
return Boolean;
 
 
private
 
type File_Descriptor_Type is new Integer;
type File_Name_Type is new String (1 .. 11);
type Permission_Type is (None, User, System);
type File_Mode_Type is (Read_Only, Write_Only, Read_Write);
type File_Status_Type is (Open, Closed);
 
Default_Descriptor : constant File_Descriptor_Type := 0;
First_File : constant File_Descriptor_Type := 1;
Default_Permission : constant Permission_Type := None;
Default_Mode : constant File_Mode_Type := Read_Only;
Default_Status : constant File_Status_Type := Closed;
Default_Filename : constant File_Name_Type := " ";
 
Init_Permission : constant Permission_Type := User;
Init_Mode : constant File_Mode_Type := Read_Write;
Init_Status : constant File_Status_Type := Open;
An_Ada_File_Name : constant File_Name_Type := "AdaFileName";
 
Max_Files : constant File_Descriptor_Type := 10;
 
type File_Type is tagged
record
Descriptor : File_Descriptor_Type := Default_Descriptor;
Name : File_Name_Type := Default_Filename;
Acct_Access : Permission_Type := Default_Permission;
Mode : File_Mode_Type := Default_Mode;
Current_Status : File_Status_Type := Default_Status;
end record;
 
type File_Array_Type is array (1 .. Max_Files) of File_Type;
 
File_Table : File_Array_Type;
File_Counter : Integer := 0;
 
--
 
function Get_File_Name return File_Name_Type;
 
end CA11011_0; -- Package OS.
 
--=================================================================--
 
package body CA11011_0 is -- Package body OS.
 
function Get_File_Name return File_Name_Type is
begin
return (An_Ada_File_Name);
end Get_File_Name;
---------------------------------------------------------------------
procedure Verify_Initial_Conditions (Key : in File_Descriptor_Type;
Status : out Boolean) is
begin
Status := False;
if (File_Table(Key).Descriptor = Default_Descriptor) and then
(File_Table(Key).Name = Default_Filename) and then
(File_Table(Key).Acct_Access = Default_Permission) and then
(File_Table(Key).Mode = Default_Mode) and then
(File_Table(Key).Current_Status = Default_Status)
then
Status := True;
end if;
end Verify_Initial_Conditions;
---------------------------------------------------------------------
function Final_Conditions_Valid (Key : File_Descriptor_Type)
return Boolean is
begin
if ((File_Table(Key).Descriptor = First_File) and then
(File_Table(Key).Name = An_Ada_File_Name) and then
(File_Table(Key).Acct_Access = Init_Permission) and then
not ((File_Table(Key).Mode = Default_Mode) or else
(File_Table(Key).Current_Status = Default_Status)))
then
return (True);
else
return (False);
end if;
end Final_Conditions_Valid;
 
end CA11011_0; -- Package body OS.
 
--=================================================================--
 
package CA11011_0.CA11011_1 is -- Package OS.File_Manager
 
procedure Create_File (File_Key : in File_Descriptor_Type);
 
end CA11011_0.CA11011_1; -- Package OS.File_Manager
 
--=================================================================--
 
-- The Subprogram that performs the actual file operations is contained in a
-- private package so that it is not accessible to any client.
-- Default parameters are used in most cases in the subprogram calls, since
-- the caller does not have visibility to these private types.
 
-- Package OS.File_Manager.Internals
private package CA11011_0.CA11011_1.CA11011_2 is
 
Private_File_Counter : Integer renames File_Counter; -- Grandparent
-- object.
procedure Create
(Key : in File_Descriptor_Type;
File_Name : in File_Name_Type := Get_File_Name; -- Grandparent
-- prvt type,
-- prvt functn.
File_Mode : in File_Mode_Type := Init_Mode; -- Grandparent
-- prvt type,
-- prvt const.
File_Access : in Permission_Type := Init_Permission; -- Grandparent
-- prvt type,
-- prvt const.
File_Status : in File_Status_Type := Init_Status); -- Grandparent
-- prvt type,
-- prvt const.
 
end CA11011_0.CA11011_1.CA11011_2; -- Package OS.File_Manager.Internals
 
--=================================================================--
 
-- Package Body OS.File_Manager.Internals
package body CA11011_0.CA11011_1.CA11011_2 is
 
procedure Create
(Key : in File_Descriptor_Type;
File_Name : in File_Name_Type := Get_File_Name;
File_Mode : in File_Mode_Type := Init_Mode;
File_Access : in Permission_Type := Init_Permission;
File_Status : in File_Status_Type := Init_Status) is
begin
Private_File_Counter := Private_File_Counter + 1;
File_Table(Key).Descriptor := Key; -- Grandparent object.
File_Table(Key).Name := File_Name;
File_Table(Key).Mode := File_Mode;
File_Table(Key).Acct_Access := File_Access;
File_Table(Key).Current_Status := File_Status;
end Create;
 
end CA11011_0.CA11011_1.CA11011_2; -- Package body OS.File_Manager.Internals
 
--=================================================================--
 
with CA11011_0.CA11011_1.CA11011_2; -- with Child OS.File_Manager.Internals
 
package body CA11011_0.CA11011_1 is -- Package body OS.File_Manager
 
package Internal renames CA11011_0.CA11011_1.CA11011_2;
 
-- This subprogram utilizes a call to a subprogram contained in a private
-- child to perform the actual processing.
 
procedure Create_File (File_Key : in File_Descriptor_Type) is
begin
Internal.Create (Key => File_Key); -- Other parameters are defaults,
-- since they are of private types
-- from the parent package.
-- File_Descriptor_Type is private,
-- but declared in visible part of
-- parent spec.
end Create_File;
 
end CA11011_0.CA11011_1; -- Package body OS.File_Manager
 
--=================================================================--
 
with CA11011_0.CA11011_1; -- with public Child Package OS.File_Manager
with Report;
 
procedure CA11011 is
 
package OS renames CA11011_0;
package File_Manager renames CA11011_0.CA11011_1;
 
Data_Base_File_Key : OS.File_Descriptor_Type := OS.First_File;
TC_Status : Boolean := False;
 
begin
 
-- This test indicates one approach to file management operations.
-- It is not intended to demonstrate full functionality, but rather
-- that the use of a private child package can provide a solution
-- to a typical user situation.
 
Report.Test ("CA11011", "Check that a private child package can use " &
"entities declared in the private part of the " &
"parent unit of its parent unit");
 
OS.Verify_Initial_Conditions (Data_Base_File_Key, TC_Status);
 
if not TC_Status then
Report.Failed ("Initial condition failure");
end if;
 
-- Perform file initializations.
 
File_Manager.Create_File (File_Key => Data_Base_File_Key);
 
TC_Status := OS.Final_Conditions_Valid (Data_Base_File_Key);
 
if not TC_Status then
Report.Failed ("Bad status return from Create_File");
end if;
 
Report.Result;
 
end CA11011;
/ca11015.a
0,0 → 1,312
-- CA11015.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that a generic child of a non-generic package can use its
-- parent's declarations and operations. Check that the instantiation
-- of the generic child can correctly use the operations.
--
-- TEST DESCRIPTION:
-- Declare a map abstraction in a package which manages basic physical
-- maps. Declare a generic child of this package which defines copies
-- of maps of any discrete type, i.e., population, density, or weather.
--
-- In the main program, declare an instance of the child. Check that
-- the operations in the parent and instance of the child package
-- perform as expected.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
 
-- Simulates map of physical features, i.e., desert, forest, water,
-- or plains.
 
package CA11015_0 is
type Map_Type is private;
subtype Latitude is integer range 1 .. 9;
subtype Longitude is integer range 1 .. 7;
 
type Physical_Features is (Desert, Forest, Water, Plains, Unexplored);
type Page_Type is range 0 .. 80;
Terra_Incognita : exception;
 
-- Use geographic database to initialize the basic map.
 
procedure Initialize_Basic_Map (Map : in out Map_Type);
 
function Get_Physical_Feature (Lat : Latitude;
Long : Longitude;
Map : Map_Type) return Physical_Features;
 
function Next_Page return Page_Type;
 
private
type Map_Type is array (Latitude, Longitude) of Physical_Features;
Basic_Map : Map_Type;
Page : Page_Type := 0; -- Location for each copy of Map.
 
end CA11015_0;
 
--==================================================================--
 
package body CA11015_0 is
 
procedure Initialize_Basic_Map (Map : in out Map_Type) is
-- Not a real initialization. Real application can use geographic
-- database to create the basic map.
begin
for I in Latitude'first .. Latitude'last loop
for J in 1 .. 2 loop
Map (I, J) := Unexplored;
end loop;
for J in 3 .. 4 loop
Map (I, J) := Desert;
end loop;
for J in 5 .. 7 loop
Map (I, J) := Plains;
end loop;
end loop;
 
end Initialize_Basic_Map;
---------------------------------------------------
function Get_Physical_Feature (Lat : Latitude;
Long : Longitude;
Map : Map_Type)
return Physical_Features is
begin
return (Map (Lat, Long));
end Get_Physical_Feature;
---------------------------------------------------
function Next_Page return Page_Type is
begin
Page := Page + 1;
return (Page);
end Next_Page;
 
---------------------------------------------------
begin -- CA11015_0
-- Initialize a basic map.
Initialize_Basic_Map (Basic_Map);
 
end CA11015_0;
 
--==================================================================--
 
-- Generic child package of physical map. Instantiate this package to
-- create map copy with a new geographic feature, i.e., population, density,
-- or weather.
 
generic
 
type Generic_Feature is (<>); -- Any geographic feature, i.e., population,
-- density, or weather that can be
-- characterized by a scalar value.
 
package CA11015_0.CA11015_1 is
 
type Feature_Map is private;
 
function Get_Feature_Val (Lat : Latitude;
Long : Longitude;
Map : Feature_Map) return Generic_Feature;
 
procedure Set_Feature_Val (Lat : in Latitude;
Long : in Longitude;
Fea : in Generic_Feature;
Map : in out Feature_Map);
 
function Check_Page (Map : Feature_Map;
Page_No : Page_Type) return boolean;
 
private
type Feature_Type is array (Latitude, Longitude) of Generic_Feature;
 
type Feature_Map is
record
Feature : Feature_Type;
Page : Page_Type := Next_Page; -- Operation from parent.
end record;
 
end CA11015_0.CA11015_1;
 
--==================================================================--
 
package body CA11015_0.CA11015_1 is
 
function Get_Feature_Val (Lat : Latitude;
Long : Longitude;
Map : Feature_Map) return Generic_Feature is
begin
return (Map.Feature (Lat, Long));
end Get_Feature_Val;
---------------------------------------------------
procedure Set_Feature_Val (Lat : in Latitude;
Long : in Longitude;
Fea : in Generic_Feature;
Map : in out Feature_Map) is
begin
if Get_Physical_Feature (Lat, Long, Basic_Map) = Unexplored
-- Parent's operation,
-- Parent's private object.
then
raise Terra_Incognita; -- Exception from parent.
else
Map.Feature (Lat, Long) := Fea;
end if;
end Set_Feature_Val;
---------------------------------------------------
function Check_Page (Map : Feature_Map;
Page_No : Page_Type) return boolean is
begin
return (Map.Page = Page_No);
end Check_Page;
 
end CA11015_0.CA11015_1;
 
--==================================================================--
 
with CA11015_0.CA11015_1; -- Generic map operation,
-- implicitly withs parent, basic map
-- application.
with Report;
 
procedure CA11015 is
 
begin
 
Report.Test ("CA11015", "Check that an instantiation of a child package " &
"of a non-generic package can use its parent's " &
"declarations and operations");
 
-- An application creates a population map using an integer type.
 
Population_Map_Subtest:
declare
type Population_Type is range 0 .. 10_000;
 
-- Declare instance of the child generic map package for one
-- particular integer type.
 
package Population is new CA11015_0.CA11015_1 (Population_Type);
 
Population_Map_Latitude : CA11015_0.Latitude := 1;
-- parent's type
Population_Map_Longitude : CA11015_0.Longitude := 5;
-- parent's type
Pop_Map : Population.Feature_Map;
Pop : Population_Type := 1000;
 
begin
Population.Set_Feature_Val (Population_Map_Latitude,
Population_Map_Longitude,
Pop,
Pop_Map);
 
If not ( (Population.Get_Feature_Val (Population_Map_Latitude,
Population_Map_Longitude, Pop_Map) = Pop) or
(Population.Check_Page (Pop_Map, 1)) ) then
Report.Failed ("Population map contains incorrect values");
end if;
 
end Population_Map_Subtest;
 
-- An application creates a weather map using an enumeration type.
 
Weather_Map_Subtest:
declare
type Weather_Type is (Hot, Cold, Mild);
 
-- Declare instance of the child generic map package for one
-- particular enumeration type.
 
package Weather_Pkg is new CA11015_0.CA11015_1 (Weather_Type);
 
Weather_Map_Latitude : CA11015_0.Latitude := 2;
-- parent's type
Weather_Map_Longitude : CA11015_0.Longitude := 6;
-- parent's type
Weather_Map : Weather_Pkg.Feature_Map;
Weather : Weather_Type := Mild;
 
begin
Weather_Pkg.Set_Feature_Val (Weather_Map_Latitude,
Weather_Map_Longitude,
Weather,
Weather_Map);
 
if ( (Weather_Pkg.Get_Feature_Val (Weather_Map_Latitude,
Weather_Map_Longitude, Weather_Map) /= Weather) or
not (Weather_Pkg.Check_Page (Weather_Map, 2)) )
then
Report.Failed ("Weather map contains incorrect values");
end if;
 
end Weather_Map_Subtest;
 
-- During processing, the application may erroneously attempts to create
-- a density map on an unexplored area. This would result in the raising
-- of an exception.
 
Density_Map_Subtest:
declare
type Density_Type is (High, Medium, Low);
 
-- Declare instance of the child generic map package for one
-- particular enumeration type.
 
package Density_Pkg is new CA11015_0.CA11015_1 (Density_Type);
 
Density_Map_Latitude : CA11015_0.Latitude := 7;
-- parent's type
Density_Map_Longitude : CA11015_0.Longitude := 2;
-- parent's type
Density : Density_Type := Low;
Density_Map : Density_Pkg.Feature_Map;
 
begin
Density_Pkg.Set_Feature_Val (Density_Map_Latitude,
Density_Map_Longitude,
Density,
Density_Map);
 
Report.Failed ("Exception not raised in child generic package");
 
exception
 
when CA11015_0.Terra_Incognita => -- parent's exception,
null; -- raised in child.
 
when others =>
Report.Failed ("Others exception is raised");
 
end Density_Map_Subtest;
 
Report.Result;
 
end CA11015;
/ca1012a0.ada
0,0 → 1,41
-- CA1012A0.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- GENERIC PROCEDURE DECLARATION.
-- BODY IS IN CA1012A1.DEP.
-- INSTANTIATION IS IN CA1012A4M.DEP.
 
-- APPLICABILITY CRITERIA:
-- THIS UNIT MUST BE ACCEPTED BY ALL ADA 95 IMPLEMENTATIONS.
 
-- HISTORY:
-- WKB 07/20/81 CREATED ORIGINAL TEST.
-- PWB 02/19/86 ADDED COMMENTS TO DESCRIBE RELATION TO OTHER FILES
-- AND CLARIFY POSSIBLE NON-APPLICABILITY.
-- BCB 01/05/88 MODIFIED HEADER.
-- RLB 09/13/99 UPDATED APPLICABILITY CRITERIA FOR ADA 95.
 
GENERIC
TYPE INDEX IS RANGE <>;
PROCEDURE CA1012A0 (I : IN OUT INDEX);
/ca2003a0.ada
0,0 → 1,55
-- CA2003A0M.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT A SUBUNIT HAS VISIBILITY OF IDENTIFIERS DECLARED
-- PRIOR TO ITS BODY_STUB.
 
-- SEPARATE FILES ARE:
-- CA2003A0M THE MAIN PROCEDURE.
-- CA2003A1 A SUBUNIT PROCEDURE BODY.
 
-- WKB 6/26/81
-- JRK 6/26/81
 
WITH REPORT;
USE REPORT;
PROCEDURE CA2003A0M IS
 
I : INTEGER := 1;
 
PROCEDURE CA2003A1 IS SEPARATE;
 
PACKAGE P IS
I : INTEGER := 2;
END P;
 
BEGIN
TEST ("CA2003A", "A SUBUNIT HAS VISIBILITY OF IDENTIFIERS " &
"DECLARED BEFORE ITS BODY_STUB");
 
 
CA2003A1;
 
RESULT;
END CA2003A0M;
/ca1012a2.ada
0,0 → 1,41
-- CA1012A2.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- GENERIC FUNCTION DECLARATION.
-- BODY IS IN CA1012A3.DEP.
-- INSTANTIATION IS IN CA1012A4M.DEP.
 
-- APPLICABILITY CRITERIA:
-- THIS UNIT MUST BE ACCEPTED BY ALL ADA 95 IMPLEMENTATIONS.
 
-- HISTORY:
-- WKB 07/20/81 CREATED ORIGINAL TEST.
-- PWB 02/19/86 ADDED COMMENTS TO DESCRIBE RELATION TO OTHER FILES
-- AND POSSIBLE NON-APPLICABILITY.
-- BCB 01/05/88 MODIFIED HEADER.
-- RLB 09/13/99 UPDATED APPLICABILITY CRITERIA FOR ADA 95.
 
GENERIC
TYPE ELEMENT IS RANGE <>;
FUNCTION CA1012A2 (J : IN ELEMENT) RETURN ELEMENT;
/ca11019.a
0,0 → 1,306
-- CA11019.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that body of the parent package may depend on one of its own
-- private generic children.
--
-- TEST DESCRIPTION:
-- A scenario is created that demonstrates the potential of adding a
-- generic private child during code maintenance without distubing a
-- large subsystem. After child is added to the subsystem, a maintainer
-- decides to take advantage of the new functionality and rewrites
-- the parent's body.
--
-- Declare a data collection abstraction in a package. Declare a private
-- generic child of this package which provides parameterized code that
-- have been written once and will be used three times to implement the
-- services of the parent package. In the parent body, instantiate the
-- private child.
--
-- In the main program, check that the operations in the parent,
-- and instance of the private child package perform as expected.
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
-- 17 Nov 95 SAIC Update and repair for ACVC 2.0.1
--
--!
package CA11019_0 is
-- parent
 
type Data_Record is tagged private;
type Data_Collection is private;
---
---
subtype Data_1 is integer range 0 .. 100;
procedure Add_1 (Data : Data_1; To : in out Data_Collection);
function Statistical_Op_1 (Data : Data_Collection) return Data_1;
---
subtype Data_2 is integer range -100 .. 1000;
procedure Add_2 (Data : Data_2; To : in out Data_Collection);
function Statistical_Op_2 (Data : Data_Collection) return Data_2;
---
subtype Data_3 is integer range -10_000 .. 10_000;
procedure Add_3 (Data : Data_3; To : in out Data_Collection);
function Statistical_Op_3 (Data : Data_Collection) return Data_3;
---
 
private
 
type Data_Ptr is access Data_Record'class;
subtype Sequence_Number is positive range 1 .. 512;
 
type Data_Record is tagged
record
Next : Data_Ptr := null;
Seq : Sequence_Number;
end record;
---
type Data_Collection is
record
First : Data_Ptr := null;
Last : Data_Ptr := null;
end record;
end CA11019_0;
-- parent
 
--=================================================================--
 
-- This generic package provides parameterized code that has been
-- written once and will be used three times to implement the services
-- of the parent package.
 
private
generic
type Data_Type is range <>;
 
package CA11019_0.CA11019_1 is
-- parent.child
 
type Data_Elem is new Data_Record with
record
Value : Data_Type;
end record;
 
Next_Avail_Seq_No : Sequence_Number := 1;
 
procedure Sequence (Ptr : Data_Ptr);
-- the child must be private for this procedure to know details of
-- the implementation of data collections
 
procedure Add (Datum : Data_Type; To : in out Data_Collection);
 
function Op (Data : Data_Collection) return Data_Type;
-- op models a complicated operation that whose code can be
-- used for various data types
 
 
end CA11019_0.CA11019_1;
-- parent.child
 
--=================================================================--
 
package body CA11019_0.CA11019_1 is
-- parent.child
 
procedure Sequence (Ptr : Data_Ptr) is
begin
Ptr.Seq := Next_Avail_Seq_No;
Next_Avail_Seq_No := Next_Avail_Seq_No + 1;
end Sequence;
 
---------------------------------------------------------
 
procedure Add (Datum : Data_Type; To : in out Data_Collection) is
Ptr : Data_Ptr;
begin
if To.First = null then
-- assign new record with data value to
-- to.next <- null;
To.First := new Data_Elem'(Next => null,
Value => Datum,
Seq => 1);
Sequence (To.First);
To.Last := To.First;
else
-- chase to end of list
Ptr := To.First;
while Ptr.Next /= null loop
Ptr := Ptr.Next;
end loop;
-- and add element there
Ptr.Next := new Data_Elem'(Next => null,
Value => Datum,
Seq => 1);
Sequence (Ptr.Next);
To.Last := Ptr.Next;
end if;
 
end Add;
 
---------------------------------------------------------
 
function Op (Data : Data_Collection) return Data_Type is
-- for simplicity, just return the maximum of the data set
Max : Data_Type := Data_Elem( Data.First.all ).Value;
-- assuming non-empty collection
Ptr : Data_Ptr := Data.First;
 
begin
-- no error checking
while Ptr.Next /= null loop
if Data_Elem( Ptr.Next.all ).Value > Max then
Max := Data_Elem( Ptr.Next.all ).Value;
end if;
Ptr := Ptr.Next;
end loop;
return Max;
end Op;
 
end CA11019_0.CA11019_1;
-- parent.child
 
--=================================================================--
 
-- parent body depends on private generic child
with CA11019_0.CA11019_1; -- Private generic child.
 
pragma Elaborate (CA11019_0.CA11019_1);
package body CA11019_0 is
 
-- instantiate the generic child with data types needed by the
-- package interface services
package Data_1_Ops is new CA11019_1
(Data_Type => Data_1);
package Data_2_Ops is new CA11019_1
(Data_Type => Data_2);
 
package Data_3_Ops is new CA11019_1
(Data_Type => Data_3);
 
---------------------------------------------------------
 
procedure Add_1 (Data : Data_1; To : in out Data_Collection) is
begin
-- maybe do other stuff here
Data_1_Ops.Add (Data, To);
-- and here
end;
 
---------------------------------------------------------
 
function Statistical_Op_1 (Data : Data_Collection) return Data_1 is
begin
-- maybe use generic operation(s) in some complicated ways
-- (but simplified out, for the sake of testing)
return Data_1_Ops.Op (Data);
end;
 
---------------------------------------------------------
 
procedure Add_2 (Data : Data_2; To : in out Data_Collection) is
begin
Data_2_Ops.Add (Data, To);
end;
 
---------------------------------------------------------
 
function Statistical_Op_2 (Data : Data_Collection) return Data_2 is
begin
return Data_2_Ops.Op (Data);
end;
 
---------------------------------------------------------
 
procedure Add_3 (Data : Data_3; To : in out Data_Collection) is
begin
Data_3_Ops.Add (Data, To);
end;
 
---------------------------------------------------------
 
function Statistical_Op_3 (Data : Data_Collection) return Data_3 is
begin
return Data_3_Ops.Op (Data);
end;
 
end CA11019_0;
 
 
--=================================================--
 
with CA11019_0,
-- Main,
-- Main.Child is private
Report;
 
procedure CA11019 is
 
package Main renames CA11019_0;
 
Col_1,
Col_2,
Col_3 : Main.Data_Collection;
 
begin
 
Report.Test ("CA11019", "Check that body of a (non-generic) package " &
"may depend on its private generic child");
 
-- build a data collection
 
for I in 1 .. 10 loop
Main.Add_1 ( Main.Data_1(I), Col_1);
end loop;
 
if Main.Statistical_Op_1 (Col_1) /= 10 then
Report.Failed ("Wrong data_1 value returned");
end if;
 
for I in reverse 10 .. 20 loop
Main.Add_2 ( Main.Data_2(I * 10), Col_2);
end loop;
 
if Main.Statistical_Op_2 (Col_2) /= 200 then
Report.Failed ("Wrong data_2 value returned");
end if;
 
for I in 0 .. 10 loop
Main.Add_3 ( Main.Data_3(I + 5), Col_3);
end loop;
 
if Main.Statistical_Op_3 (Col_3) /= 15 then
Report.Failed ("Wrong data_3 value returned");
end if;
 
Report.Result;
 
end CA11019;
/ca3011a1.ada
0,0 → 1,42
-- CA3011A1.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- A SUBUNIT OF A GENERIC UNIT.
-- THE GENERIC UNIT IS IN CA3011A0.
-- INSTANTIATION IS IN CA0011A4M.
 
-- APPLICABILITY CRITERIA:
-- THIS UNIT MUST BE ACCEPTED BY ALL ADA 95 IMPLEMENTATIONS.
 
-- HISTORY:
-- RJW 09/22/86 CREATED ORIGINAL TEST.
-- BCB 01/05/88 MODIFIED HEADER.
-- RLB 09/13/99 UPDATED APPLICABILITY CRITERIA FOR ADA 95.
 
SEPARATE (CA3011A0)
FUNCTION CA3011A1 RETURN T IS
 
BEGIN
RETURN X;
END CA3011A1;
/ca1014a1.ada
0,0 → 1,34
-- CA1014A1.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- JRK 5/20/81
 
SEPARATE (CA1014A0M)
PROCEDURE CA1014A1 (I : IN OUT INTEGER) IS
 
BEGIN
 
I := I + 1;
 
END CA1014A1;
/ca1012a4.ada
0,0 → 1,74
-- CA1012A4M.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- OBJECTIVE:
-- CHECK THAT GENERIC SUBPROGRAM DECLARATIONS AND BODIES CAN BE
-- COMPILED SEPARATELY.
 
-- SEPARATE FILES ARE:
-- CA1012A0 A LIBRARY GENERIC PROCEDURE DECLARATION.
-- CA1012A1 A LIBRARY GENERIC PROCEDURE BODY (CA1012A0).
-- CA1012A2 A LIBRARY GENERIC FUNCTION DECLARATION.
-- CA1012A3 A LIBRARY GENERIC FUNCTION BODY (CA1012A2).
-- CA1012A4M THE MAIN PROCEDURE.
 
-- APPLICABILITY CRITERIA:
-- THIS TEST MUST RUN AND REPORT "PASSED" FOR ALL ADA 95 IMPLEMENTATIONS.
-- THIS WAS NOT REQUIRED FOR ADA 83.
 
-- HISTORY:
-- WKB 07/20/81 CREATED ORIGINAL TEST.
-- PWB 02/19/86 ADDED COMMENTS REGARDING NON-APPLICABILITY.
-- BCB 01/05/88 MODIFIED HEADER.
-- RLB 09/13/99 UPDATED APPLICABILITY CRITERIA FOR ADA 95.
-- RLB 09/15/99 REMOVED OBSOLETE COMMENT.
 
WITH REPORT, CA1012A0, CA1012A2;
USE REPORT;
PROCEDURE CA1012A4M IS
 
N : INTEGER := 1;
 
SUBTYPE S50 IS INTEGER RANGE 1..50;
 
PROCEDURE P IS NEW CA1012A0 (S50);
 
FUNCTION F IS NEW CA1012A2 (INTEGER);
 
BEGIN
TEST ("CA1012A", "SEPARATELY COMPILED GENERIC SUBPROGRAM " &
"DECLARATIONS AND BODIES");
 
P(N);
IF N /= 2 THEN
FAILED ("PROCEDURE NOT INVOKED");
END IF;
 
N := 1;
IF F(N) /= 2 THEN
FAILED ("FUNCTION NOT INVOKED");
END IF;
 
RESULT;
END CA1012A4M;
/ca3011a3.ada
0,0 → 1,43
-- CA3011A3.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- A SUBUNIT OF A GENERIC UNIT.
-- THE GENERIC UNIT IS IN CA3011A0.
-- INSTANTIATION IS IN CA3011A4M.
 
-- APPLICABILITY CRITERIA:
-- THIS UNIT MUST BE ACCEPTED BY ALL ADA 95 IMPLEMENTATIONS.
 
-- HISTORY:
-- RJW 09/22/86 CREATED ORIGINAL TEST.
-- BCB 01/05/88 MODIFIED HEADER.
-- RLB 09/13/99 UPDATED APPLICABILITY CRITERIA FOR ADA 95.
 
SEPARATE (CA3011A0)
PACKAGE BODY CA3011A3 IS
FUNCTION CA3011A3F RETURN T IS
BEGIN
RETURN X;
END;
END CA3011A3;
/ca2007a0.ada
0,0 → 1,77
-- CA2007A0M.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT SUBUNIT PACKAGES ARE ELABORATED IN THE ORDER IN
-- WHICH THEIR BODY STUBS APPEAR, NOT (NECESSARILY) IN THE
-- ORDER IN WHICH THEY ARE COMPILED.
 
-- SEPARATE FILES ARE:
-- CA2007A0M THE MAIN PROCEDURE.
-- CA2007A1 A SUBUNIT PACKAGE BODY.
-- CA2007A2 A SUBUNIT PACKAGE BODY.
-- CA2007A3 A SUBUNIT PACKAGE BODY.
 
-- WKB 7/1/81
-- JRK 7/1/81
 
WITH REPORT;
USE REPORT;
PROCEDURE CA2007A0M IS
 
ELAB_ORDER : STRING (1..3) := " ";
NEXT : NATURAL := 1;
 
PACKAGE CALL_TEST IS
END CALL_TEST;
 
PACKAGE BODY CALL_TEST IS
BEGIN
TEST ("CA2007A", "CHECK THAT SUBUNIT PACKAGES ARE " &
"ELABORATED IN THE ORDER IN WHICH THEIR " &
"BODY STUBS APPEAR");
END CALL_TEST;
 
PACKAGE CA2007A3 IS
END CA2007A3;
 
PACKAGE BODY CA2007A3 IS SEPARATE;
 
PACKAGE CA2007A2 IS
END CA2007A2;
 
PACKAGE BODY CA2007A2 IS SEPARATE;
 
PACKAGE CA2007A1 IS
END CA2007A1;
 
PACKAGE BODY CA2007A1 IS SEPARATE;
 
BEGIN
 
IF ELAB_ORDER /= "321" THEN
FAILED ("INCORRECT ELABORATION ORDER");
END IF;
 
RESULT;
END CA2007A0M;
/ca1014a3.ada
0,0 → 1,34
-- CA1014A3.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- JRK 5/20/81
 
SEPARATE (CA1014A0M)
FUNCTION CA1014A3 (I : INTEGER) RETURN INTEGER IS
 
BEGIN
RETURN -I;
 
END CA1014A3;
/ca5003b0.ada
0,0 → 1,51
-- CA5003B0.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 7/22/81
-- JBG 10/6/83
-- BHS 8/02/84
-- JRK 9/20/84
 
 
PACKAGE CA5003B0 IS
 
ORDER : STRING (1..4) := " ";
 
INDEX : NATURAL := 1;
 
FUNCTION SHOW_ELAB (UNIT : CHARACTER) RETURN INTEGER;
 
END CA5003B0;
 
 
PACKAGE BODY CA5003B0 IS
 
FUNCTION SHOW_ELAB (UNIT : CHARACTER) RETURN INTEGER IS
BEGIN
ORDER (INDEX) := UNIT;
INDEX := INDEX + 1;
RETURN INDEX - 1;
END SHOW_ELAB;
 
END CA5003B0;
/ca2007a2.ada
0,0 → 1,36
-- CA2007A2.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- WKB 7/1/81
 
SEPARATE (CA2007A0M)
 
PACKAGE BODY CA2007A2 IS
 
BEGIN
 
ELAB_ORDER (NEXT) := '2';
NEXT := NEXT + 1;
 
END CA2007A2;
/ca5003b2.ada
0,0 → 1,45
-- CA5003B2.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- BHS 8/02/84
-- JRK 9/20/84
 
WITH CA5003B0; USE CA5003B0; PRAGMA ELABORATE (CA5003B0);
SEPARATE (CA5003B1)
PACKAGE BODY CA5003B2 IS
 
A2 : INTEGER := SHOW_ELAB ('2');
 
PROCEDURE P1 IS
BEGIN
NULL;
END P1;
 
PACKAGE CA5003B4 IS
PROCEDURE P2;
END CA5003B4;
 
PACKAGE BODY CA5003B4 IS SEPARATE;
 
END CA5003B2;
/ca5003b4.ada
0,0 → 1,40
-- CA5003B4.ADA
 
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- BHS 8/02/84
-- JRK 9/20/84
 
WITH CA5003B3; -- MUST BE ELABORATED BEFORE CA5003B1.
WITH CA5003B0; USE CA5003B0; PRAGMA ELABORATE (CA5003B0);
SEPARATE (CA5003B1.CA5003B2)
PACKAGE BODY CA5003B4 IS
 
A4 : INTEGER := SHOW_ELAB ('4');
 
PROCEDURE P2 IS
BEGIN
NULL;
END P2;
 
END CA5003B4;
/ca11b02.a
0,0 → 1,169
-- CA11B02.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that a type derived in a client of a public child inherits
-- primitive operations from parent.
--
-- TEST DESCRIPTION:
-- Declare a root record type with discriminant in a package
-- specification. Declare a primitive subprogram for the type
-- (foundation code).
--
-- Add a public child to the above package. Derive a new type
-- with constraint to the discriminant record type from the parent
-- package. Declare a new primitive subprogram to write to the child
-- derived type.
--
-- In the main program, "with" the child. Derive a new type using the
-- record type from the child package. Access the inherited operations
-- from both parent and child packages.
--
-- TEST FILES:
-- This test depends on the following foundation code:
--
-- FA11B00.A
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
 
-- Child package of FA11B00.
package FA11B00.CA11B02_0 is -- Application_Two_Widget
-- This public child declares a derived type from its parent. It
-- represents processing of widgets in a window system.
 
-- Dimension of app2_widget is limited to 5000 pixels.
 
type App2_Widget is new App1_Widget (Maximum_Size => 5000);
-- Derived record of parent type.
 
-- Inherits procedure App1_Widget_Specific_Oper from parent.
 
 
-- Primitive operation of type App2_Widget.
 
procedure App2_Widget_Specific_Op1 (The_Widget : in out App2_Widget;
S : in Widget_Size);
-- Primitive operation of type App2_Widget.
 
procedure App2_Widget_Specific_Op2 (The_Widget : in out App2_Widget;
Loc : in Widget_Location);
 
end FA11B00.CA11B02_0; -- Application_Two_Widget
 
 
--=======================================================================--
 
 
package body FA11B00.CA11B02_0 is -- Application_Two_Widget
 
procedure App2_Widget_Specific_Op1 (The_Widget : in out App2_Widget;
S : in Widget_Size) is
begin
The_Widget.Size := S;
end App2_Widget_Specific_Op1;
 
--==============================================--
 
procedure App2_Widget_Specific_Op2 (The_Widget : in out App2_Widget;
Loc : in Widget_Location) is
begin
The_Widget.Location := Loc;
end App2_Widget_Specific_Op2;
 
end FA11B00.CA11B02_0; -- Application_Two_Widget
 
 
--=======================================================================--
 
with FA11B00.CA11B02_0; -- Application_Two_Widget
-- implicitly with Application_One_Widget.
with Report;
 
procedure CA11B02 is
package Application_One_Widget renames FA11B00;
 
package Application_Two_Widget renames FA11B00.CA11B02_0;
 
use Application_One_Widget ;
use Application_Two_Widget ;
 
type Emulator_Widget is new App2_Widget; -- Derived record of
-- parent type.
 
White_Widget, Amber_Widget : Emulator_Widget;
 
 
begin
 
Report.Test ("CA11B02", "Check that a type derived in client of a " &
"public child inherits primitive operations from parent");
 
App1_Widget_Specific_Oper (C => White, L => "Line Editor ",
The_Widget => White_Widget, I => 10);
-- Inherited from Application_One_Widget.
If White_Widget.Color /= White or
White_Widget.Id /= Widget_ID (Report.Ident_Int (10)) or
White_Widget.Label /= "Line Editor "
then
Report.Failed ("Incorrect result for White_Widget");
end if;
 
-- perform an App2_Widget specific operation.
 
App2_Widget_Specific_Op1 (White_Widget, S => (100, 200));
 
If White_Widget.Size.X_Length /= 100 or
White_Widget.Size.Y_Length /= 200
then
Report.Failed ("Incorrect size for White_Widget");
end if;
 
App1_Widget_Specific_Oper (Amber_Widget, 5, Amber, "Screen Editor ");
-- Inherited from Application_One_Widget.
 
-- perform an App2_Widget specific operations.
 
App2_Widget_Specific_Op1 (S => (1024,100), The_Widget => Amber_Widget);
App2_Widget_Specific_Op2 (Amber_Widget, (1024, 760));
 
If Amber_Widget.Color /= Amber or
Amber_Widget.Id /= Widget_ID (Report.Ident_Int (5)) or
Amber_Widget.Label /= "Screen Editor " or
Amber_Widget.Size /= (1024,100) or
Amber_Widget.Location.X_Location /= 1024 or
Amber_Widget.Location.Y_Location /= 760
then
Report.Failed ("Incorrect result for Amber_Widget");
end if;
 
Report.Result;
 
end CA11B02;
/ca110041.a
0,0 → 1,118
-- CA110041.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- See CA110042.AM
--
-- TEST DESCRIPTION:
-- See CA110042.AM
--
-- TEST FILES:
-- The following files comprise this test:
--
-- CA110040.A
-- => CA110041.A
-- CA110042.AM
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
-- 26 Apr 96 SAIC ACVC 2.1: Modified prologue.
--
--!
 
package CA110040.CA110041 is -- Child Package Computer_System.Manager
 
type User_Account is new Account with private;
 
procedure Initialize_User_Account (Acct : out User_Account);
 
private
 
-- The private portion of this spec demonstrates that components contained
-- in the visible part of the parent are directly visible in the private
-- part of a public child.
 
type Account_Access_Type is (None, Guest, User, System);
 
type User_Account is new Account with -- Parent type.
record
Privilege : Account_Access_Type := None;
end record;
 
System_Account : User_Account :=
(User_ID => Administrator_Account.User_ID, -- Parent constant.
Privilege => System); -- User_ID has been
-- set to 1.
Auditor_Account : User_Account :=
(User_ID => Next_Available_ID, -- Parent function.
Privilege => System); -- User_ID has been
-- set to 2.
Total_Authorized_Accounts : System_Account_Capacity
renames Total_Accounts; -- Parent object.
 
Unauthorized_Account : exception
renames Illegal_Account; -- Parent exception
 
end CA110040.CA110041; -- Child Package Computer_System.Manager
 
--=================================================================--
 
-- Child Package body Computer_System.Manager
package body CA110040.CA110041 is
 
function Account_Limit_Reached return Boolean is
begin
if Total_Authorized_Accounts = Maximum_System_Accounts then
return (True);
else
return (False);
end if;
end Account_Limit_Reached;
---------------------------------------------------------------
function Valid_Account (Acct : User_Account) return Boolean is
Result : Boolean := False;
begin
if (Acct.User_ID /= System_Account.User_ID) and
(Acct.User_ID /= Auditor_Account.User_ID)
then
Result := True;
end if;
return (Result);
end Valid_Account;
---------------------------------------------------------------
procedure Initialize_User_Account (Acct : out User_Account) is
begin
if Account_Limit_Reached then
raise Account_Limit_Exceeded;
else
Acct.User_ID := Next_Available_ID;
Acct.Privilege := User;
end if;
if not Valid_Account (Acct) then
raise Unauthorized_Account;
end if;
end Initialize_User_Account;
 
end CA110040.CA110041; -- Child Package body Computer_System.Manager
/ca11d02.a
0,0 → 1,393
-- CA11D02.A
--
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
-- Check that an exception declared in a package can be raised by a
-- child of a child package. Check that it can be renamed in the
-- child of the child package and raised with the correct effect.
--
-- TEST DESCRIPTION:
-- Declare a package which defines complex number abstraction with
-- user-defined exceptions (foundation code).
--
-- Add a public child package to the above package. Declare two
-- subprograms for the parent type.
--
-- Add a public grandchild package to the foundation package. Declare
-- subprograms to raise exceptions.
--
-- In the main program, "with" the grandchild package, then check that
-- the exceptions are raised and handled as expected. Ensure that
-- exceptions are:
-- 1) raised in the public grandchild package and handled/reraised to
-- be handled by the main program.
-- 2) raised and handled locally by the "others" handler in the
-- public grandchild package.
-- 3) raised in the public grandchild and propagated to the main
-- program.
--
-- TEST FILES:
-- This test depends on the following foundation code:
--
-- FA11D00.A
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
--
--!
 
-- Child package of FA11D00.
 
package FA11D00.CA11D02_0 is -- Basic_Complex
 
function "+" (Left, Right : Complex_Type)
return Complex_Type; -- Add two complex numbers.
 
function "*" (Left, Right : Complex_Type)
return Complex_Type; -- Multiply two complex numbers.
 
end FA11D00.CA11D02_0; -- Basic_Complex
 
--=======================================================================--
 
package body FA11D00.CA11D02_0 is -- Basic_Complex
 
function "+" (Left, Right : Complex_Type) return Complex_Type is
begin
return ( (Left.Real + Right.Real, Left.Imag + Right.Imag) );
end "+";
--------------------------------------------------------------
function "*" (Left, Right : Complex_Type) return Complex_Type is
begin
return ( Real => (Left.Real * Right.Real),
Imag => (Left.Imag * Right.Imag) );
end "*";
 
end FA11D00.CA11D02_0; -- Basic_Complex
 
--=======================================================================--
 
-- Child package of FA11D00.CA11D02_0.
-- Grandchild package of FA11D00.
 
package FA11D00.CA11D02_0.CA11D02_1 is -- Array_Complex
 
Inverse_Error : exception renames Divide_Error; -- Reference to exception
-- in grandparent package.
Array_Size : constant := 2;
 
type Complex_Array_Type is
array (1 .. Array_Size) of Complex_Type; -- Reference to type
-- in parent package.
 
function Multiply (Left : Complex_Array_Type; -- Multiply two complex
Right : Complex_Array_Type) -- arrays.
return Complex_Array_Type;
 
function Add (Left, Right : Complex_Array_Type) -- Add two complex
return Complex_Array_Type; -- arrays.
 
procedure Inverse (Right : in Complex_Array_Type; -- Invert a complex
Left : in out Complex_Array_Type); -- array.
end FA11D00.CA11D02_0.CA11D02_1; -- Array_Complex
 
--=======================================================================--
 
with Report;
 
 
package body FA11D00.CA11D02_0.CA11D02_1 is -- Array_Complex
 
function Multiply (Left : Complex_Array_Type;
Right : Complex_Array_Type)
return Complex_Array_Type is
 
-- This procedure will raise an exception depending on the input
-- parameter. The exception will be handled locally by the
-- "others" handler.
 
Result : Complex_Array_Type := (others => Zero);
 
subtype Vector_Size is Positive range Left'Range;
 
begin
if Left = Result or else Right = Result then -- Do not multiply zero.
raise Multiply_Error; -- Refence to exception in
-- grandparent package.
Report.Failed ("Program control not transferred by raise");
else
for I in Vector_Size loop
Result(I) := ( Left(I) * Right(I) ); -- Basic_Complex."*".
end loop;
end if;
return (Result);
exception
when others =>
Report.Comment ("Exception is handled by others in Multiplication");
TC_Handled_In_Grandchild_Pkg_Func := true;
return (Zero, Zero);
end Multiply;
--------------------------------------------------------------
function Add (Left, Right : Complex_Array_Type)
return Complex_Array_Type is
 
-- This function will raise an exception depending on the input
-- parameter. The exception will be propagated and handled
-- by the caller.
 
Result : Complex_Array_Type := (others => Zero);
 
subtype Vector_Size is Positive range Left'Range;
 
begin
if Left = Result or Right = Result then -- Do not add zero.
raise Add_Error; -- Refence to exception in
-- grandparent package.
Report.Failed ("Program control not transferred by raise");
else
for I in Vector_Size loop
Result(I) := ( Left(I) + Right(I) ); -- Basic_Complex."+".
end loop;
end if;
return (Result);
end Add;
--------------------------------------------------------------
procedure Inverse (Right : in Complex_Array_Type;
Left : in out Complex_Array_Type) is
 
-- This function will raise an exception depending on the input
-- parameter. The exception will be handled/reraised to be
-- handled by the caller.
 
Result : Complex_Array_Type := (others => Zero);
 
Array_With_Zero : boolean := false;
 
begin
for I in 1 .. Right'Length loop
if Right(I) = Zero then -- Check for zero.
Array_With_Zero := true;
end if;
end loop;
 
If Array_With_Zero then
raise Inverse_Error; -- Do not inverse zero.
Report.Failed ("Program control not transferred by raise");
else
for I in 1 .. Array_Size loop
Left(I).Real := - Right(I).Real;
Left(I).Imag := - Right(I).Imag;
end loop;
end if;
 
exception
when Inverse_Error =>
TC_Handled_In_Grandchild_Pkg_Proc := true;
Left := Result;
raise; -- Reraise the Inverse_Error exception in the subtest.
Report.Failed ("Exception not reraised in handler");
 
when others =>
Report.Failed ("Unexpected exception in procedure Inverse");
end Inverse;
 
end FA11D00.CA11D02_0.CA11D02_1; -- Array_Complex
 
--=======================================================================--
 
with FA11D00.CA11D02_0.CA11D02_1; -- Array_Complex,
-- implicitly with Basic_Complex.
with Report;
 
procedure CA11D02 is
 
package Complex_Pkg renames FA11D00;
package Array_Complex_Pkg renames FA11D00.CA11D02_0.CA11D02_1;
 
use Complex_Pkg;
use Array_Complex_Pkg;
 
begin
 
Report.Test ("CA11D02", "Check that an exception declared in a package " &
"can be raised by a child of a child package");
 
Multiply_Complex_Subtest:
declare
Operand_1 : Complex_Array_Type
:= ( Complex (Int_Type (Report.Ident_Int (3)),
Int_Type (Report.Ident_Int (5))),
Complex (Int_Type (Report.Ident_Int (2)),
Int_Type (Report.Ident_Int (8))) );
Operand_2 : Complex_Array_Type
:= ( Complex (Int_Type (Report.Ident_Int (1)),
Int_Type (Report.Ident_Int (2))),
Complex (Int_Type (Report.Ident_Int (3)),
Int_Type (Report.Ident_Int (6))) );
Operand_3 : Complex_Array_Type := ( Zero, Zero);
Mul_Result : Complex_Array_Type
:= ( Complex (Int_Type (Report.Ident_Int (3)),
Int_Type (Report.Ident_Int (10))),
Complex (Int_Type (Report.Ident_Int (6)),
Int_Type (Report.Ident_Int (48))) );
Complex_No : Complex_Array_Type := (others => Zero);
 
begin
If (Multiply (Operand_1, Operand_2) /= Mul_Result) then
Report.Failed ("Incorrect results from multiplication");
end if;
 
-- Error is raised and exception will be handled in grandchild package.
 
Complex_No := Multiply (Operand_1, Operand_3);
 
if Complex_No /= (Zero, Zero) then
Report.Failed ("Exception was not raised in multiplication");
end if;
 
exception
when Multiply_Error =>
Report.Failed ("Exception raised in multiplication and " &
"propagated to caller");
TC_Handled_In_Grandchild_Pkg_Func := false;
-- Improper exception handling in caller.
 
when others =>
Report.Failed ("Unexpected exception in multiplication");
TC_Handled_In_Grandchild_Pkg_Func := false;
-- Improper exception handling in caller.
 
end Multiply_Complex_Subtest;
 
 
Add_Complex_Subtest:
declare
Operand_1 : Complex_Array_Type
:= ( Complex (Int_Type (Report.Ident_Int (2)),
Int_Type (Report.Ident_Int (7))),
Complex (Int_Type (Report.Ident_Int (5)),
Int_Type (Report.Ident_Int (8))) );
Operand_2 : Complex_Array_Type
:= ( Complex (Int_Type (Report.Ident_Int (4)),
Int_Type (Report.Ident_Int (1))),
Complex (Int_Type (Report.Ident_Int (2)),
Int_Type (Report.Ident_Int (3))) );
Operand_3 : Complex_Array_Type := ( Zero, Zero);
Add_Result : Complex_Array_Type
:= ( Complex (Int_Type (Report.Ident_Int (6)),
Int_Type (Report.Ident_Int (8))),
Complex (Int_Type (Report.Ident_Int (7)),
Int_Type (Report.Ident_Int (11))) );
Complex_No : Complex_Array_Type := (others => Zero);
 
begin
Complex_No := Add (Operand_1, Operand_2);
 
If (Complex_No /= Add_Result) then
Report.Failed ("Incorrect results from addition");
end if;
 
-- Error is raised in grandchild package and exception
-- will be propagated to caller.
 
Complex_No := Add (Operand_1, Operand_3);
 
if Complex_No = Add_Result then
Report.Failed ("Exception was not raised in addition");
end if;
 
exception
when Add_Error =>
TC_Propagated_To_Caller := true; -- Exception is propagated.
 
when others =>
Report.Failed ("Unexpected exception in addition subtest");
TC_Propagated_To_Caller := false; -- Improper exception handling
-- in caller.
end Add_Complex_Subtest;
 
Inverse_Complex_Subtest:
declare
Operand_1 : Complex_Array_Type
:= ( Complex (Int_Type (Report.Ident_Int (1)),
Int_Type (Report.Ident_Int (5))),
Complex (Int_Type (Report.Ident_Int (3)),
Int_Type (Report.Ident_Int (11))) );
Operand_3 : Complex_Array_Type
:= ( Zero, Complex (Int_Type (Report.Ident_Int (3)),
Int_Type (Report.Ident_Int (6))) );
Inv_Result : Complex_Array_Type
:= ( Complex (Int_Type (Report.Ident_Int (-1)),
Int_Type (Report.Ident_Int (-5))),
Complex (Int_Type (Report.Ident_Int (-3)),
Int_Type (Report.Ident_Int (-11))) );
Complex_No : Complex_Array_Type := (others => Zero);
 
begin
Inverse (Operand_1, Complex_No);
 
if (Complex_No /= Inv_Result) then
Report.Failed ("Incorrect results from inverse");
end if;
 
-- Error is raised in grandchild package and exception
-- will be handled/reraised to caller.
 
Inverse (Operand_3, Complex_No);
 
Report.Failed ("Exception was not handled in inverse");
 
exception
when Inverse_Error =>
if not TC_Handled_In_Grandchild_Pkg_Proc then
Report.Failed ("Exception was not raised in inverse");
else
TC_Handled_In_Caller := true; -- Exception is reraised from
-- child package.
end if;
 
when others =>
Report.Failed ("Unexpected exception in inverse");
TC_Handled_In_Caller := false;
-- Improper exception handling in caller.
 
end Inverse_Complex_Subtest;
 
if not (TC_Handled_In_Caller and -- Check to see that all
TC_Handled_In_Grandchild_Pkg_Proc and -- exceptions were handled
TC_Handled_In_Grandchild_Pkg_Func and -- in proper location.
TC_Propagated_To_Caller)
then
Report.Failed ("Exceptions handled in incorrect locations");
end if;
 
Report.Result;
 
end CA11D02;

powered by: WebSVN 2.1.0

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