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

📄 ca11022.a

📁 用于进行gcc测试
💻 A
字号:
-- CA11022.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 body of a child unit can instantiate its generic sibling.--      -- TEST DESCRIPTION:--      Declare a package that provides some types for the graphic --      application.  Add a generic child package with a subprogram parameter--      to provide algorithms that can be used by different terminal types--      but that have to be customized to the specific terminal. Add child --      packages to take advantage of the parent types and to provide a --      customized operation for each of the different terminals.  The --      customized operation will be passed as a generic subprogram parameter --      to the child package's sibling.----      The main program "with"s the child packages.  Check that the--      operations in child units perform as expected.  ------ CHANGE HISTORY:--      06 Dec 94   SAIC    ACVC 2.0----!package CA11022_0 is    -- Graphic Manager    type Row is range 1 .. 66;   type Column is range 1 .. 80;   type Radius is range 1 .. 3;   type Length is range 5 .. 10;   -- Testing artifice.   TC_Screen : array (Row, Column) of boolean := (others => (others => false));   TC_Draw_Circle : boolean := false;   TC_Draw_Square : boolean := false;   -- ... and other complicated ones.end CA11022_0;-- No bodies required for CA11022_0.     --==================================================================---- Child package to provide general graphic functionalities.generic                  with procedure Put_Dot (X : in Column;                           Y : in Row);package CA11022_0.CA11022_1 is        procedure Draw_Square (At_Col : in Column;                          At_Row : in Row;                          Len    : in Length);   procedure Draw_Circle (At_Col : in Column;                          At_Row : in Row;                          Rad    : in Radius);   -- procedure Draw_Ellipse ...   -- and other drawings ...end CA11022_0.CA11022_1;     --==================================================================--package body CA11022_0.CA11022_1 is   procedure Draw_Square (At_Col : in Column;                          At_Row : in Row;                          Len    : in Length) is   begin      -- use square drawing algorithm       -- call      Put_Dot (At_Col + Column (Len), At_Row + Row(Len));      -- as needed in the algorithm.      TC_Draw_Square := true;   end Draw_Square;   -------------------------------------------------------   procedure Draw_Circle (At_Col : in Column;                          At_Row : in Row;                          Rad    : in Radius) is   begin      -- use circle drawing algorithm       -- call      for I in 1 .. Rad loop         Put_Dot (At_Col + Column(I), At_Row + Row(I));      end loop;      -- as needed in the algorithm.      TC_Draw_Circle := true;   end Draw_Circle;end CA11022_0.CA11022_1;     --==================================================================--with CA11022_0.CA11022_1;                -- Generic sibling.-- Child package to provide customized graphic functions for the-- VT100.package CA11022_0.CA11022_2 is           -- VT100 Graphic.   X : Column := 8;   Y : Row    := 3;   R : Radius := 2;   L : Length := 6;   procedure VT100_Graphic;end CA11022_0.CA11022_2;     --==================================================================--package body CA11022_0.CA11022_2 is       procedure VT100_Graphic is      procedure VT100_Putdot (X : in Column;                              Y : in Row) is      begin            -- Light a pixel at location (X, Y);         TC_Screen (Y, X) := true;      end VT100_Putdot;                  ------------------------------------      -- Declare instance of the generic sibling package to draw a circle,       -- a square, or an ellipse customized for the VT100.      package VT100_Graphic is new CA11022_0.CA11022_1 (VT100_Putdot);      begin        VT100_Graphic.Draw_Circle (X, Y, R);      VT100_Graphic.Draw_Square (X, Y, L);   end VT100_Graphic;end CA11022_0.CA11022_2;     --==================================================================--with CA11022_0.CA11022_1;                -- Generic sibling.-- Child package to provide customized graphic functions for the-- IBM3270.package CA11022_0.CA11022_3 is           -- IBM3270 Graphic.   X : Column := 39;   Y : Row    := 11;   R : Radius := 3;   L : Length := 7;   procedure IBM3270_Graphic;end CA11022_0.CA11022_3;     --==================================================================--package body CA11022_0.CA11022_3 is       procedure IBM3270_Graphic is      procedure IBM3270_Putdot (X : in Column;                             Y : in Row) is      begin            -- Light a pixel at location (X + 2, Y);         TC_Screen (Y, X + Column(2)) := true;      end IBM3270_Putdot;                  ------------------------------------      -- Declare instance of the generic sibling package to draw a circle,       -- a square, or an ellipse customized for the IBM3270.      package IBM3270_Graphic is new CA11022_0.CA11022_1 (IBM3270_Putdot);      begin        IBM3270_Graphic.Draw_Circle (X, Y, R);      IBM3270_Graphic.Draw_Square (X, Y, L);   end IBM3270_Graphic;end CA11022_0.CA11022_3;     --==================================================================--with CA11022_0.CA11022_2;              -- VT100 Graphic, implicitly with                                       -- CA11022_0, Graphic Manager.with CA11022_0.CA11022_3;              -- IBM3270 Graphic.with Report;procedure CA11022 isbegin   Report.Test ("CA11022", "Check that body of a child unit can depend on " &                "its generic sibling");   -- Customized graphic functions for the VT100 terminal.   CA11022_0.CA11022_2.VT100_Graphic;   if not CA11022_0.TC_Screen (4,9) and not CA11022_0.TC_Screen (5,10)      and not CA11022_0.TC_Screen (9,14) and not CA11022_0.TC_Draw_Circle        and not CA11022_0.TC_Draw_Square then          Report.Failed ("Wrong results for the VT100");   end if;   CA11022_0.TC_Draw_Circle := false;   CA11022_0.TC_Draw_Square := false;   -- Customized graphic functions for the IBM3270 terminal.   CA11022_0.CA11022_3.IBM3270_Graphic;   if not CA11022_0.TC_Screen (12,42) and not CA11022_0.TC_Screen (13,43)      and not CA11022_0.TC_Screen (14,44) and not CA11022_0.TC_Screen (46,18)        and not CA11022_0.TC_Draw_Circle and not CA11022_0.TC_Draw_Square then          Report.Failed ("Wrong results for the IBM3270");   end if;   Report.Result;end CA11022;

⌨️ 快捷键说明

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