c95072a.ada
来自「linux下编程用 编译软件」· ADA 代码 · 共 198 行
ADA
198 行
-- C95072A.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 SCALAR AND ACCESS PARAMETERS ARE COPIED FOR ALL THREE-- PARAMETER MODES.-- SUBTESTS ARE:-- (A) SCALAR PARAMETERS TO ENTRIES.-- (B) ACCESS PARAMETERS TO ENTRIES.-- JWC 7/22/85WITH REPORT; USE REPORT;PROCEDURE C95072A ISBEGIN TEST ("C95072A", "CHECK THAT SCALAR AND ACCESS PARAMETERS ARE " & "COPIED"); -------------------------------------------------- DECLARE -- (A) I : INTEGER; E : EXCEPTION; TASK TA IS ENTRY EA (EI : IN INTEGER; EO : OUT INTEGER; EIO : IN OUT INTEGER); END TA; TASK BODY TA IS TMP : INTEGER; BEGIN ACCEPT EA (EI : IN INTEGER; EO : OUT INTEGER; EIO : IN OUT INTEGER) DO TMP := EI; -- SAVE VALUE OF EI AT ACCEPT. EO := 10; IF EI /= TMP THEN FAILED ("ASSIGNMENT TO SCALAR OUT " & "PARAMETER CHANGES THE VALUE OF " & "INPUT PARAMETER"); TMP := EI; -- RESET TMP FOR NEXT CASE. END IF; EIO := EIO + 100; IF EI /= TMP THEN FAILED ("ASSIGNMENT TO SCALAR IN OUT " & "PARAMETER CHANGES THE VALUE OF " & "INPUT PARAMETER"); TMP := EI; -- RESET TMP FOR NEXT CASE. END IF; I := I + 1; IF EI /= TMP THEN FAILED ("ASSIGNMENT TO SCALAR ACTUAL " & "PARAMETER CHANGES THE VALUE OF " & "INPUT PARAMETER"); END IF; RAISE E; -- CHECK EXCEPTION HANDLING. END EA; EXCEPTION WHEN OTHERS => NULL; END TA; BEGIN -- (A) I := 0; -- INITIALIZE I SO VARIOUS CASES CAN BE DETECTED. TA.EA (I, I, I); FAILED ("EXCEPTION NOT RAISED - A"); EXCEPTION WHEN E => IF I /= 1 THEN CASE I IS WHEN 11 => FAILED ("OUT ACTUAL SCALAR PARAMETER " & "CHANGED GLOBAL VALUE"); WHEN 101 => FAILED ("IN OUT ACTUAL SCALAR " & "PARAMETER CHANGED GLOBAL VALUE"); WHEN 111 => FAILED ("OUT AND IN OUT ACTUAL SCALAR " & "PARAMETERS CHANGED GLOBAL " & "VALUE"); WHEN OTHERS => FAILED ("UNDETERMINED CHANGE TO GLOBAL " & "VALUE"); END CASE; END IF; WHEN OTHERS => FAILED ("WRONG EXCEPTION RAISED - A"); END; -- (A) -------------------------------------------------- DECLARE -- (B) TYPE ACCTYPE IS ACCESS INTEGER; I : ACCTYPE; E : EXCEPTION; TASK TB IS ENTRY EB (EI : IN ACCTYPE; EO : OUT ACCTYPE; EIO : IN OUT ACCTYPE); END TB; TASK BODY TB IS TMP : ACCTYPE; BEGIN ACCEPT EB (EI : IN ACCTYPE; EO : OUT ACCTYPE; EIO : IN OUT ACCTYPE) DO TMP := EI; -- SAVE VALUE OF EI AT ACCEPT. I := NEW INTEGER'(101); IF EI /= TMP THEN FAILED ("ASSIGNMENT TO ACCESS ACTUAL " & "PARAMETER CHANGES THE VALUE OF " & "INPUT PARAMETER"); TMP := EI; -- RESET TMP FOR NEXT CASE. END IF; EO := NEW INTEGER'(1); IF EI /= TMP THEN FAILED ("ASSIGNMENT TO ACCESS OUT " & "PARAMETER CHANGES THE VALUE OF " & "INPUT PARAMETER"); TMP := EI; -- RESET TMP FOR NEXT CASE. END IF; EIO := NEW INTEGER'(10); IF EI /= TMP THEN FAILED ("ASSIGNMENT TO ACCESS IN OUT " & "PARAMETER CHANGES THE VALUE OF " & "INPUT PARAMETER"); END IF; RAISE E; -- CHECK EXCEPTION HANDLING. END EB; EXCEPTION WHEN OTHERS => NULL; END TB; BEGIN -- (B) I := NEW INTEGER'(100); TB.EB (I, I, I); FAILED ("EXCEPTION NOT RAISED - B"); EXCEPTION WHEN E => IF I.ALL /= 101 THEN FAILED ("OUT OR IN OUT ACTUAL ENTRY " & "PARAMETER VALUE CHANGED DESPITE " & "RAISED EXCEPTION"); END IF; WHEN OTHERS => FAILED ("WRONG EXCEPTION RAISED - B"); END; -- (B) -------------------------------------------------- RESULT;END C95072A;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?