c38202a.ada

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

ADA
197
字号
-- C38202A.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 TASKING ATTRIBUTES ARE DECLARED AND RETURN CORRECT -- VALUES FOR OBJECTS HAVING AN ACCESS TYPE WHOSE DESIGNATED -- TYPE IS A TASK TYPE.-- CHECK THE ACCESS TYPE RESULTS OF FUNCTION CALLS.-- AH  9/12/86-- EDS 7/14/98  AVOID OPTIMIZATIONWITH REPORT; USE REPORT;PROCEDURE C38202A ISBEGIN      TEST ("C38202A", "OBJECTS HAVING ACCESS TYPES WITH DESIGNATED " &           "TASK TYPE CAN BE PREFIX OF TASKING ATTRIBUTES");-- CHECK TWO CASES:  (1)  TASK IS CALLABLE, NOT TERMINATED.--                   (2)  TASK IS NOT CALLABLE, TERMINATED.     DECLARE           TASK TYPE TSK IS                ENTRY GO_ON;          END TSK;          TASK DRIVER IS                ENTRY TSK_DONE;          END DRIVER;          TYPE P_TYPE IS ACCESS TSK;          P : P_TYPE;          TASK BODY TSK IS               I : INTEGER RANGE 0 .. 2;          BEGIN                ACCEPT GO_ON;               I := IDENT_INT(5);         -- CONSTRAINT_ERROR RAISED.               FAILED ("CONSTAINT_ERROR NOT RAISED IN TASK " &                       " TSK - 1A " & INTEGER'IMAGE(I));          EXCEPTION               WHEN CONSTRAINT_ERROR =>                    DRIVER.TSK_DONE;               WHEN OTHERS =>                    FAILED ("WRONG EXCEPTION RAISED IN TASK " &                            "TSK - 1A ");                    DRIVER.TSK_DONE;          END TSK;          TASK BODY DRIVER IS               COUNTER : INTEGER := 1;          BEGIN               P := NEW TSK;               IF NOT P'CALLABLE THEN                    FAILED ("TASKING ATTRIBUTE RETURNS INCORRECT " &                            "VALUE - 1B");               END IF;               IF P'TERMINATED THEN                     FAILED ("TASKING ATTRIBUTE RETURNS INCORRECT " &                            "VALUE - 1C");               END IF;               P.GO_ON;               ACCEPT TSK_DONE;               WHILE (NOT P'TERMINATED AND COUNTER <= 3) LOOP                    DELAY 10.0;                    COUNTER := COUNTER + 1;               END LOOP;               IF COUNTER > 3 THEN                    FAILED ("TASK TSK NOT TERMINATED IN SUFFICIENT " &                            "TIME - 1D");               END IF;               IF P'CALLABLE THEN                    FAILED ("TASKING ATTRIBUTE RETURNS INCORRECT " &                            "VALUE - 1E");               END IF;               IF NOT P'TERMINATED THEN                    FAILED ("TASKING ATTRIBUTE RETURNS INCORRECT " &                            "VALUE - 1F");               END IF;          END DRIVER;     BEGIN          NULL;     END;     -- BLOCK-- CHECK ACCESS TYPE RESULT RETURNED FROM FUNCTION.-- CHECK TWO CASES:  (1)  TASK IS CALLABLE, NOT TERMINATED.--                   (2)  TASK IS NOT CALLABLE, TERMINATED.     DECLARE           TASK TYPE TSK IS                ENTRY GO_ON;          END TSK;          TASK DRIVER IS                ENTRY TSK_DONE;          END DRIVER;          TYPE P_TYPE IS ACCESS TSK;          P : P_TYPE;          TSK_CREATED : BOOLEAN := FALSE;          FUNCTION F1 RETURN P_TYPE IS          BEGIN               RETURN P;          END F1;          TASK BODY TSK IS               I : INTEGER RANGE 0 .. 2;          BEGIN                ACCEPT GO_ON;               I := IDENT_INT(5);          -- CONSTRAINT_ERROR RAISED.               FAILED ("CONSTRAINT_ERROR NOT RAISED IN TASK " &                       "TSK - 2A " & INTEGER'IMAGE(I));          EXCEPTION               WHEN CONSTRAINT_ERROR =>                    DRIVER.TSK_DONE;               WHEN OTHERS =>                    FAILED ("WRONG EXCEPTION RAISED IN TASK " &                            "TSK - 2A ");                    DRIVER.TSK_DONE;          END TSK;          TASK BODY DRIVER IS               COUNTER : INTEGER := 1;          BEGIN               P := NEW TSK;               -- ACTIVATE P.ALL (F1.ALL).               IF NOT F1'CALLABLE THEN                    FAILED ("TASKING ATTRIBUTE RETURNS INCORRECT " &                            "VALUE WHEN PREFIX IS VALUE FROM " &                            "FUNCTION CALL - 2B");               END IF;               IF F1'TERMINATED THEN                     FAILED ("TASKING ATTRIBUTE RETURNS INCORRECT " &                            "VALUE WHEN PREFIX IS VALUE FROM " &                            "FUNCTION CALL - 2C");               END IF;               F1.ALL.GO_ON;               ACCEPT TSK_DONE;               WHILE (NOT F1'TERMINATED AND COUNTER <= 3) LOOP                    DELAY 10.0;                    COUNTER := COUNTER + 1;               END LOOP;               IF COUNTER > 3 THEN                    FAILED ("TASK TSK NOT TERMINATED IN SUFFICIENT " &                            "TIME - 2D");               END IF;               IF F1'CALLABLE THEN                    FAILED ("TASKING ATTRIBUTE RETURNS INCORRECT " &                            "VALUE WHEN PREFIX IS VALUE FROM " &                            "FUNCTION CALL - 2E");               END IF;               IF NOT F1'TERMINATED THEN                    FAILED ("TASKING ATTRIBUTE RETURNS INCORRECT " &                            "VALUE WHEN PREFIX IS VALUE FROM " &                            "FUNCTION CALL - 2F");               END IF;          END DRIVER;     BEGIN          NULL;     END;     -- BLOCK     RESULT;END C38202A;

⌨️ 快捷键说明

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