cc3016c.ada

来自「linux下编程用 编译软件」· ADA 代码 · 共 193 行

ADA
193
字号
-- CC3016C.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 AN INSTANCE OF A GENERIC PACKAGE MUST DECLARE A--  PACKAGE. CHECK THAT THE STATEMENTS IN AN INSTANTIATED GENERIC--  PACKAGE BODY ARE EXECUTED AFTER THE ELABORATION OF THE--  DECLARATIONS (IN SPEC AND IN BODY).-- HISTORY:--         EDWARD V. BERARD, 8 AUGUST 1990WITH REPORT;PROCEDURE  CC3016C  IS    GENERIC            TYPE SOME_TYPE IS PRIVATE ;        FIRST_INITIAL_VALUE  : IN SOME_TYPE ;        SECOND_INITIAL_VALUE : IN SOME_TYPE ;        WITH PROCEDURE CHANGE (FIRST  : IN SOME_TYPE ;                               RESULT : OUT SOME_TYPE) ;        WITH PROCEDURE SECOND_CHANGE (FIRST  : IN SOME_TYPE ;                                      RESULT : OUT SOME_TYPE) ;        WITH PROCEDURE THIRD_CHANGE (FIRST  : IN SOME_TYPE ;                                     RESULT : OUT SOME_TYPE) ;        FIRST_EXPECTED_RESULT     : IN SOME_TYPE ;        SECOND_EXPECTED_RESULT    : IN SOME_TYPE ;        THIRD_EXPECTED_RESULT     : IN SOME_TYPE ;        FOURTH_EXPECTED_RESULT    : IN SOME_TYPE ;        FIFTH_EXPECTED_RESULT     : IN SOME_TYPE ;        SIXTH_EXPECTED_RESULT     : IN SOME_TYPE ;        PACKAGE OUTER IS        VARIABLE : SOME_TYPE := FIRST_INITIAL_VALUE ;                FUNCTION INNER_VARIABLE RETURN SOME_TYPE ;        GENERIC                    INITIAL_VALUE : IN SOME_TYPE ;            WITH PROCEDURE CHANGE (FIRST  : IN SOME_TYPE ;                                   RESULT : OUT SOME_TYPE) ;            WITH PROCEDURE SECOND_CHANGE (FIRST  : IN SOME_TYPE ;                                          RESULT : OUT SOME_TYPE) ;            FIRST_EXPECTED_RESULT     : IN SOME_TYPE ;            SECOND_EXPECTED_RESULT    : IN SOME_TYPE ;            THIRD_EXPECTED_RESULT     : IN SOME_TYPE ;            FOURTH_EXPECTED_RESULT    : IN SOME_TYPE ;                            PACKAGE INNER  IS            VARIABLE : SOME_TYPE := INITIAL_VALUE ;        END INNER ;            END OUTER ;    PACKAGE BODY OUTER IS        ANOTHER_VARIABLE : SOME_TYPE := FIRST_INITIAL_VALUE ;                PACKAGE BODY  INNER  IS            ANOTHER_VARIABLE : SOME_TYPE := INITIAL_VALUE ;        BEGIN  -- INNER            CHANGE (FIRST  => VARIABLE,                    RESULT => VARIABLE) ;            CHANGE (FIRST  => ANOTHER_VARIABLE,                    RESULT => ANOTHER_VARIABLE) ;            OUTER.SECOND_CHANGE (FIRST  => OUTER.VARIABLE,                                 RESULT => OUTER.VARIABLE) ;            OUTER.CHANGE (FIRST  => OUTER.ANOTHER_VARIABLE,                          RESULT => OUTER.ANOTHER_VARIABLE) ;            IF (VARIABLE /= FIRST_EXPECTED_RESULT) OR               (ANOTHER_VARIABLE /= SECOND_EXPECTED_RESULT) OR               (OUTER.VARIABLE                        /= THIRD_EXPECTED_RESULT) OR               (OUTER.ANOTHER_VARIABLE                        /= FOURTH_EXPECTED_RESULT) THEN                    REPORT.FAILED("ASSIGNED VALUES INCORRECT - BODY OF INNER") ;            END IF;        END INNER ;        PACKAGE NEW_INNER IS NEW INNER             (INITIAL_VALUE          => SECOND_INITIAL_VALUE,             CHANGE                 => CHANGE,             SECOND_CHANGE          => THIRD_CHANGE,             FIRST_EXPECTED_RESULT  => FIRST_EXPECTED_RESULT,             SECOND_EXPECTED_RESULT => SECOND_EXPECTED_RESULT,             THIRD_EXPECTED_RESULT  => THIRD_EXPECTED_RESULT,             FOURTH_EXPECTED_RESULT => FOURTH_EXPECTED_RESULT) ;                     FUNCTION INNER_VARIABLE RETURN SOME_TYPE IS        BEGIN            RETURN NEW_INNER.VARIABLE ;                    END INNER_VARIABLE ;    BEGIN  -- OUTER            SECOND_CHANGE (FIRST  => VARIABLE,                       RESULT => VARIABLE) ;        SECOND_CHANGE (FIRST  => ANOTHER_VARIABLE,                       RESULT => ANOTHER_VARIABLE) ;                               IF (VARIABLE /= FIFTH_EXPECTED_RESULT) OR           (ANOTHER_VARIABLE /= SIXTH_EXPECTED_RESULT) OR           (NEW_INNER.VARIABLE /= FIRST_EXPECTED_RESULT) THEN            REPORT.FAILED("ASSIGNED VALUES INCORRECT - BODY OF OUTER") ;        END IF;    END OUTER ;        PROCEDURE DOUBLE (THIS_VALUE          : IN  INTEGER;                      GIVING_THIS_RESULT  : OUT INTEGER) IS    BEGIN -- DOUBLE        GIVING_THIS_RESULT := 2 * THIS_VALUE ;    END DOUBLE ;        PROCEDURE ADD_20 (TO_THIS_VALUE      : IN  INTEGER;                      GIVING_THIS_RESULT : OUT INTEGER) IS    BEGIN -- ADD_20        GIVING_THIS_RESULT := TO_THIS_VALUE + 20 ;    END ADD_20 ;        PROCEDURE TIMES_FIVE (THIS_VALUE          : IN  INTEGER;                          GIVING_THIS_RESULT  : OUT INTEGER) IS    BEGIN -- TIMES_FIVE        GIVING_THIS_RESULT := 5 * THIS_VALUE ;    END TIMES_FIVE ;        BEGIN -- CC3016C    REPORT.TEST ("CC3016C" , "CHECK THAT AN INSTANCE OF A GENERIC PACKAGE " &                 "MUST DECLARE A PACKAGE. CHECK THAT THE STATEMENTS IN AN " &                 "INSTANTIATED GENERIC PACKAGE BODY ARE EXECUTED AFTER THE " &                 "ELABORATION OF THE DECLARATIONS (IN SPEC AND IN BODY).") ;                       LOCAL_BLOCK:        DECLARE            PACKAGE NEW_OUTER IS NEW OUTER            (SOME_TYPE                 => INTEGER,            FIRST_INITIAL_VALUE        => 7,            SECOND_INITIAL_VALUE       => 11,            CHANGE                     => DOUBLE,            SECOND_CHANGE              => ADD_20,            THIRD_CHANGE               => TIMES_FIVE,            FIRST_EXPECTED_RESULT      => 22,             SECOND_EXPECTED_RESULT     => 22,            THIRD_EXPECTED_RESULT      => 27,            FOURTH_EXPECTED_RESULT     => 14,            FIFTH_EXPECTED_RESULT      => 47,            SIXTH_EXPECTED_RESULT      => 34) ;    BEGIN  -- LOCAL_BLOCK                IF (NEW_OUTER.VARIABLE /= 47) OR           (NEW_OUTER.INNER_VARIABLE /= 22) THEN            REPORT.FAILED("ASSIGNED VALUES INCORRECT - " &                          "BODY OF MAIN PROGRAM") ;        END IF;            END LOCAL_BLOCK ;    REPORT.RESULT;END CC3016C;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?