c974012.a
来自「linux下编程用 编译软件」· A 代码 · 共 166 行
A
166 行
-- C974012.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 abortable part of an asynchronous select statement is-- aborted if it does not complete before the triggering statement-- completes, where the triggering statement is a call on a protected-- entry which is queued.---- TEST DESCRIPTION:-- A fraction of in-line code is simulated. A voltage deficiency causes-- the routine to seek an alternate best-cost route on an electrical grid-- system. -- -- An asynchronous select is used with the triggering alternative being a-- call to a protected entry with a barrier. The abortable part is a-- routine simulating the lengthy alternate path negotiation. The entry-- barrier would be cleared if the voltage deficiency is rectified before-- the alternate can be found thus nullifying the need for the alternate. -- -- The test simulates a return to normal in the middle of the-- negotiation. The barrier is cleared, the triggering alternative-- completes first and the abortable part should be aborted.------ CHANGE HISTORY:-- 06 Dec 94 SAIC ACVC 2.0----!with Report;with ImpDef;procedure C974012 is subtype Grid_Path is string(1..21); subtype Deficiency is integer range 100..1_000; -- in MWh New_Path : Grid_Path; Dummy_Deficiency : Deficiency := 520; Path_Available : Boolean := false; TC_Terminate_Negotiation_Executed : Boolean := false; TC_Trigger_Completed : Boolean := false; TC_Negotiation_Completed : Boolean := false; protected Local_Deficit is procedure Set_Good_Voltage; procedure Bad_Voltage; entry Terminate_Negotiation; private Good_Voltage : Boolean := false; -- barrier end Local_Deficit; protected body Local_Deficit is procedure Set_Good_Voltage is begin Good_Voltage := true; end Set_Good_Voltage; procedure Bad_Voltage is begin Good_Voltage := false; end Bad_Voltage; -- Trigger is queued on this entry with barrier condition entry Terminate_Negotiation when Good_Voltage is begin -- complete the triggering call thus terminating grid_path -- negotiation. null; --::: stub - signal main board TC_Terminate_Negotiation_Executed := true; -- show path traversal end Terminate_Negotiation; end Local_Deficit; -- Routine to find the most cost effective grid path for this -- particular deficiency at this particular time -- procedure Path_Negotiation (Requirement : in Deficiency; Best_Path : out Grid_Path ) is Dummy_Path : Grid_Path := "NYC.425_NY.227_NH.132"; Match : Deficiency := Report.Ident_Int (Requirement); begin -- null; --::: stub -- -- Simulate a lengthy path negotiation for i in 1..5 loop delay ImpDef.Minimum_Task_Switch; -- Part of the way through the negotiation simulate some external -- event returning the voltage to acceptable level if i = 3 then Local_Deficit.Set_Good_Voltage; -- clear the barrier end if; end loop; Best_Path := Dummy_Path; TC_Negotiation_Completed := true; end Path_Negotiation; begin Report.Test ("C974012", "Asynchronous Select: Trigger is queued on a " & "protected entry and completes before the " & "abortable part"); -- ::::::::: Fragment of code Local_Deficit.Bad_Voltage; -- Set barrier condition -- For the given voltage deficiency start negotiating the best grid -- path. If voltage returns to acceptable level cancel the negotiation -- select -- Prepare to terminate the Path_Negotiation if voltage improves Local_Deficit.Terminate_Negotiation; TC_Trigger_Completed := true; then abort Path_Negotiation (Dummy_Deficiency, New_Path) ; Path_Available := true; end select; -- ::::::::: if not TC_Terminate_Negotiation_Executed or else not TC_Trigger_Completed then Report.Failed ("Unexpected test path taken"); end if; if Path_Available or else TC_Negotiation_Completed then Report.Failed ("Abortable part was not aborted"); end if; Report.Result;end C974012;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?