⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c85006c.ada

📁 用于进行gcc测试
💻 ADA
📖 第 1 页 / 共 3 页
字号:
-- C85006C.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 COMPONENT OR SLICE OF A VARIABLE CREATED BY AN ENTRY--     'IN OUT' FORMAL PARAMETER CAN BE RENAMED AND HAS THE CORRECT--     VALUE, AND THAT THE NEW NAME CAN BE USED IN AN ASSIGNMENT--     STATEMENT AND PASSED ON AS AN ACTUAL SUBPROGRAM OR ENTRY--     'IN OUT' OR 'OUT' PARAMETER, AND AS AN ACTUAL GENERIC 'IN OUT'--     PARAMETER, AND THAT WHEN THE VALUE OF THE RENAMED VARIABLE IS--     CHANGED, THE NEW VALUE IS REFLECTED BY THE VALUE OF THE NEW NAME.-- HISTORY:--     JET 03/22/88  CREATED ORIGINAL TEST.WITH REPORT; USE REPORT;PROCEDURE C85006C IS     TYPE ARRAY1 IS ARRAY (POSITIVE RANGE <>) OF INTEGER;     TYPE RECORD1 (D : INTEGER) IS          RECORD               FIELD1 : INTEGER := 1;          END RECORD;     TYPE POINTER1 IS ACCESS INTEGER;     PACKAGE PACK1 IS          TYPE PRIVY IS PRIVATE;          ZERO : CONSTANT PRIVY;          ONE : CONSTANT PRIVY;          TWO : CONSTANT PRIVY;          THREE : CONSTANT PRIVY;          FOUR : CONSTANT PRIVY;          FIVE : CONSTANT PRIVY;          FUNCTION IDENT (I : PRIVY) RETURN PRIVY;          FUNCTION NEXT (I : PRIVY) RETURN PRIVY;     PRIVATE          TYPE PRIVY IS RANGE 0..127;          ZERO : CONSTANT PRIVY := 0;          ONE : CONSTANT PRIVY := 1;          TWO : CONSTANT PRIVY := 2;          THREE : CONSTANT PRIVY := 3;          FOUR : CONSTANT PRIVY := 4;          FIVE : CONSTANT PRIVY := 5;     END PACK1;     TASK TYPE TASK1 IS          ENTRY ASSIGN (J : IN INTEGER);          ENTRY VALU (J : OUT INTEGER);          ENTRY NEXT;          ENTRY STOP;     END TASK1;     TYPE ARR_INT IS ARRAY(POSITIVE RANGE <>) OF INTEGER;     TYPE ARR_ARR IS ARRAY(POSITIVE RANGE <>) OF ARRAY1(1..3);     TYPE ARR_REC IS ARRAY(POSITIVE RANGE <>) OF RECORD1(1);     TYPE ARR_PTR IS ARRAY(POSITIVE RANGE <>) OF POINTER1;     TYPE ARR_PVT IS ARRAY(POSITIVE RANGE <>) OF PACK1.PRIVY;     TYPE ARR_TSK IS ARRAY(POSITIVE RANGE <>) OF TASK1;     TYPE REC_TYPE IS RECORD          RI1 : INTEGER := 0;          RA1 : ARRAY1(1..3) := (OTHERS => 0);          RR1 : RECORD1(1) := (D => 1, FIELD1 => 0);          RP1 : POINTER1 := NEW INTEGER'(0);          RV1 : PACK1.PRIVY := PACK1.ZERO;          RT1 : TASK1;     END RECORD;     DREC : REC_TYPE;     DAI1 : ARR_INT(1..8) := (OTHERS => 0);     DAA1 : ARR_ARR(1..8) := (OTHERS => (OTHERS => 0));     DAR1 : ARR_REC(1..8) := (OTHERS => (D => 1, FIELD1 => 0));     DAP1 : ARR_PTR(1..8) := (OTHERS => NEW INTEGER'(0));     DAV1 : ARR_PVT(1..8) := (OTHERS => PACK1.ZERO);     DAT1 : ARR_TSK(1..8);     I : INTEGER;     GENERIC          GRI1 : IN OUT INTEGER;          GRA1 : IN OUT ARRAY1;          GRR1 : IN OUT RECORD1;          GRP1 : IN OUT POINTER1;          GRV1 : IN OUT PACK1.PRIVY;          GRT1 : IN OUT TASK1;          GAI1 : IN OUT ARR_INT;          GAA1 : IN OUT ARR_ARR;          GAR1 : IN OUT ARR_REC;          GAP1 : IN OUT ARR_PTR;          GAV1 : IN OUT ARR_PVT;          GAT1 : IN OUT ARR_TSK;     PACKAGE GENERIC1 IS     END GENERIC1;     FUNCTION IDENT (P : POINTER1) RETURN POINTER1 IS     BEGIN          IF EQUAL (3,3) THEN               RETURN P;          ELSE               RETURN NULL;          END IF;     END IDENT;     PACKAGE BODY PACK1 IS          FUNCTION IDENT (I : PRIVY) RETURN PRIVY IS          BEGIN               IF EQUAL(3,3) THEN                    RETURN I;               ELSE                    RETURN PRIVY'(0);               END IF;          END IDENT;          FUNCTION NEXT (I : PRIVY) RETURN PRIVY IS          BEGIN               RETURN I+1;          END NEXT;     END PACK1;     PACKAGE BODY GENERIC1 IS     BEGIN          GRI1 := GRI1 + 1;          GRA1 := (GRA1(1)+1, GRA1(2)+1, GRA1(3)+1);          GRR1 := (D => 1, FIELD1 => GRR1.FIELD1+1);          GRP1 := NEW INTEGER'(GRP1.ALL + 1);          GRV1 := PACK1.NEXT(GRV1);          GRT1.NEXT;          GAI1 := (OTHERS => GAI1(GAI1'FIRST) + 1);          GAA1 := (OTHERS => (OTHERS => GAA1(GAA1'FIRST)(1) + 1));          GAR1 := (OTHERS => (D => 1,                              FIELD1 => (GAR1(GAR1'FIRST).FIELD1 + 1)));          GAP1 := (OTHERS => NEW INTEGER'(GAP1(GAP1'FIRST).ALL + 1));          FOR J IN GAV1'RANGE LOOP               GAV1(J) := PACK1.NEXT(GAV1(J));          END LOOP;          FOR J IN GAT1'RANGE LOOP               GAT1(J).NEXT;          END LOOP;     END GENERIC1;     TASK BODY TASK1 IS          TASK_VALUE : INTEGER := 0;          ACCEPTING_ENTRIES : BOOLEAN := TRUE;     BEGIN          WHILE ACCEPTING_ENTRIES LOOP               SELECT                    ACCEPT ASSIGN (J : IN INTEGER) DO                         TASK_VALUE := J;                    END ASSIGN;               OR                    ACCEPT VALU (J : OUT INTEGER) DO                         J := TASK_VALUE;                    END VALU;               OR                    ACCEPT NEXT DO                         TASK_VALUE := TASK_VALUE + 1;                    END NEXT;               OR                    ACCEPT STOP DO                         ACCEPTING_ENTRIES := FALSE;                    END STOP;               END SELECT;          END LOOP;     END TASK1;BEGIN     TEST ("C85006C", "CHECK THAT A COMPONENT OR SLICE OF A VARIABLE " &                      "CREATED BY AN ENTRY 'IN OUT' FORMAL PARAMETER " &                      "CAN BE RENAMED AND HAS THE CORRECT VALUE, AND " &                      "THAT THE NEW NAME CAN BE USED IN AN ASSIGN" &                      "MENT STATEMENT AND PASSED ON AS AN ACTUAL " &                      "SUBPROGRAM OR ENTRY 'IN OUT' OR 'OUT' " &                      "PARAMETER, AND AS AN ACTUAL GENERIC 'IN OUT' " &                      "PARAMETER, AND THAT WHEN THE VALUE OF THE " &                      "RENAMED VARIABLE IS CHANGED, THE NEW VALUE IS " &                      "REFLECTED BY THE VALUE OF THE NEW NAME");     DECLARE          TASK MAIN_TASK IS               ENTRY START (REC : IN OUT REC_TYPE;                            AI1 : IN OUT ARR_INT; AA1 : IN OUT ARR_ARR;                            AR1 : IN OUT ARR_REC; AP1 : IN OUT ARR_PTR;                            AV1 : IN OUT ARR_PVT; AT1 : IN OUT ARR_TSK);          END MAIN_TASK;          TASK BODY MAIN_TASK IS          BEGIN             ACCEPT START (REC : IN OUT REC_TYPE;                           AI1 : IN OUT ARR_INT; AA1 : IN OUT ARR_ARR;                           AR1 : IN OUT ARR_REC; AP1 : IN OUT ARR_PTR;                           AV1 : IN OUT ARR_PVT; AT1 : IN OUT ARR_TSK)                DO                DECLARE                   XRI1 : INTEGER RENAMES REC.RI1;                   XRA1 : ARRAY1 RENAMES REC.RA1;                   XRR1 : RECORD1 RENAMES REC.RR1;                   XRP1 : POINTER1 RENAMES REC.RP1;                   XRV1 : PACK1.PRIVY RENAMES REC.RV1;                   XRT1 : TASK1 RENAMES REC.RT1;                   XAI1 : ARR_INT RENAMES AI1(1..3);                   XAA1 : ARR_ARR RENAMES AA1(2..4);                   XAR1 : ARR_REC RENAMES AR1(3..5);                   XAP1 : ARR_PTR RENAMES AP1(4..6);                   XAV1 : ARR_PVT RENAMES AV1(5..7);                   XAT1 : ARR_TSK RENAMES AT1(6..8);                   TASK TYPE TASK2 IS                      ENTRY ENTRY1 (TRI1 : OUT INTEGER;                                    TRA1 : OUT ARRAY1;                                    TRR1 : OUT RECORD1;                                    TRP1 : IN OUT POINTER1;                                    TRV1 : IN OUT PACK1.PRIVY;                                    TRT1 : IN OUT TASK1;                                    TAI1 : OUT ARR_INT;                                    TAA1 : OUT ARR_ARR;                                    TAR1 : OUT ARR_REC;                                    TAP1 : IN OUT ARR_PTR;                                    TAV1 : IN OUT ARR_PVT;                                    TAT1 : IN OUT ARR_TSK);                   END TASK2;                   CHK_TASK : TASK2;                   TASK BODY TASK2 IS                   BEGIN                      ACCEPT ENTRY1 (TRI1 : OUT INTEGER;                                     TRA1 : OUT ARRAY1;                                     TRR1 : OUT RECORD1;                                     TRP1 : IN OUT POINTER1;                                     TRV1 : IN OUT PACK1.PRIVY;                                     TRT1: IN OUT TASK1;                                     TAI1 : OUT ARR_INT;                                     TAA1 : OUT ARR_ARR;                                     TAR1 : OUT ARR_REC;                                     TAP1 : IN OUT ARR_PTR;                                     TAV1 : IN OUT ARR_PVT;                                     TAT1 : IN OUT ARR_TSK)                      DO

⌨️ 快捷键说明

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