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 + -
显示快捷键?