f392a00.a
来自「linux下编程用 编译软件」· A 代码 · 共 201 行
A
201 行
-- F392A00.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.--*---- FOUNDATION DESCRIPTION:-- This foundation provides a basis for tests needing a hierarchy of-- types to check object-oriented features.---- CHANGE HISTORY:-- 06 Dec 94 SAIC ACVC 2.0----!package F392A00 is -- package Accounts -- -- Types and subtypes. -- type Dollar_Amount is new Float; type Interest_Rate is delta 0.001 range 0.000 .. 1.000; type Account_Types is (Bank, Savings, Preferred, Total); type Account_Counter is array (Account_Types) of Integer; type Account_Rep is (President, Manager, New_Account_Manager, Teller); -- -- Constants. -- Opening_Balance : constant Dollar_Amount := 100.00; Current_Rate : constant Interest_Rate := 0.030; Preferred_Minimum_Balance : constant Dollar_Amount := 1000.00; -- -- Global Variables -- Bank_Reserve : Dollar_Amount := 0.00; Daily_Representative : Account_Rep := New_Account_Manager; Number_Of_Accounts : Account_Counter := (Bank => 0, Savings => 0, Preferred => 0, Total => 0); -- -- Account types and their primitive operations. -- -- Root type. type Bank_Account is tagged record Balance : Dollar_Amount; end record; -- Primitive operations of Bank_Account. procedure Increment_Bank_Reserve (Acct : in Bank_Account); procedure Assign_Representative (Acct : in Bank_Account); procedure Increment_Counters (Acct : in Bank_Account); procedure Open (Acct : in out Bank_Account); -- type Savings_Account is new Bank_Account with record Rate : Interest_Rate; end record; -- Procedure Increment_Bank_Reserve inherited from parent (Bank_Account). -- Primitive operations (Overridden). procedure Assign_Representative (Acct : in Savings_Account); procedure Increment_Counters (Acct : in Savings_Account); procedure Open (Acct : in out Savings_Account); -- type Preferred_Account is new Savings_Account with record Minimum_Balance : Dollar_Amount; end record; -- Procedure Increment_Bank_Reserve inherited twice. -- Procedure Assign_Representative inherited from parent (Savings_Account). -- Primitive operations (Overridden). procedure Increment_Counters (Acct : in Preferred_Account); procedure Open (Acct : in out Preferred_Account); -- Function used to verify Open operation for Preferred_Account objects. function Verify_Open (Acct : in Preferred_Account) return Boolean; end F392A00; --=================================================================--package body F392A00 is -- -- Primitive operations for Bank_Account. -- procedure Increment_Bank_Reserve (Acct : in Bank_Account) is begin Bank_Reserve := Bank_Reserve + Acct.Balance; end Increment_Bank_Reserve; procedure Assign_Representative (Acct : in Bank_Account) is begin Daily_Representative := Teller; end Assign_Representative; procedure Increment_Counters (Acct : in Bank_Account) is begin Number_Of_Accounts (Bank) := Number_Of_Accounts (Bank) + 1; Number_Of_Accounts (Total) := Number_Of_Accounts (Total) + 1; end Increment_Counters; procedure Open (Acct : in out Bank_Account) is begin Acct.Balance := Opening_Balance; end Open; -- -- Overridden operations for Savings_Account type. -- procedure Assign_Representative (Acct : in Savings_Account) is begin Daily_Representative := Manager; end Assign_Representative; procedure Increment_Counters (Acct : in Savings_Account) is begin Number_Of_Accounts (Savings) := Number_Of_Accounts (Savings) + 1; Number_Of_Accounts (Total) := Number_Of_Accounts (Total) + 1; end Increment_Counters; procedure Open (Acct : in out Savings_Account) is begin Open (Bank_Account(Acct)); Acct.Rate := Current_Rate; Acct.Balance := 2.0 * Opening_Balance; end Open; -- -- Overridden operation for Preferred_Account type. -- procedure Increment_Counters (Acct : in Preferred_Account) is begin Number_Of_Accounts (Preferred) := Number_Of_Accounts (Preferred) + 1; Number_Of_Accounts (Total) := Number_Of_Accounts (Total) + 1; end Increment_Counters; procedure Open (Acct : in out Preferred_Account) is begin Open (Savings_Account(Acct)); Acct.Minimum_Balance := Preferred_Minimum_Balance; Acct.Balance := Acct.Minimum_Balance; end Open; -- -- Function used to verify Open operation for Preferred_Account objects. -- function Verify_Open (Acct : in Preferred_Account) return Boolean is begin return (Acct.Balance = Preferred_Minimum_Balance and Acct.Rate = Current_Rate and Acct.Minimum_Balance = Preferred_Minimum_Balance); end Verify_Open;end F392A00;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?