cd300050.am

来自「linux下编程用 编译软件」· AM 代码 · 共 155 行

AM
155
字号
-- CD30005.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 Address clauses are supported for imported subprograms.---- TEST DESCRIPTION:--      This test imports a simple C function and specifies it's location.----      The implementation may choose to implement--      Impdef.CD30005_1_Foreign_Address so as to dynamically call a C--      function that returns the appropriate address for the external--      function identified by Impdef.CD30005_1_External_Name.---- TEST FILES:--         CD300050.AM--         CD300051.C  -- the C function:  (included below for reference)---- SPECIAL REQUIREMENTS:--      The file CD300051.C must be compiled with a C compiler.--      Implementation dialects of C may require alteration of the C program--      syntax.  The program is included here for reference:----            int _cd30005_1( Value )--            {--               /* int Value */----               return Value + 1;--            }----      Implementations may require special linkage commands to include the--      C code.---- APPLICABILITY CRITERIA:--    This test is not applicable to implementations not providing an interface--    to C language units.  OTHERWISE:----      All implementations must attempt to compile this test.----      For implementations validating against Systems Programming Annex (C):--        this test must execute and report PASSED.----      For implementations not validating against Annex C:--        this test may report compile time errors at one or more points--        indicated by "-- ANX-C RQMT", in which case it may be graded as inapplicable.--        Otherwise, the test must execute and report PASSED.------ CHANGE HISTORY:--      22 JUL 95   SAIC   Initial version--      30 APR 96   SAIC   Added commentary for 2.1--      09 MAY 96   SAIC   Changed reporting for 2.1--      04 NOV 96   SAIC   Added use type System.Address--      16 FEB 98   EDS    Modified documentation.--      29 JUN 98   EDS    Modified main program name.--!----------------------------------------------------------------- CD30005_0with Impdef;package CD30005_0 is--      Check that Address clauses are supported for imported subprograms.  type External_Func_Ref is access function(N:Integer) return Integer;    pragma Convention( C, External_Func_Ref );  function CD30005_1( I: Integer ) return Integer;    pragma Import( C, CD30005_1,                   Impdef.CD30005_1_External_Name );          -- N/A => ERROR.      for CD30005_1'Address use        Impdef.CD30005_1_Foreign_Address;                     -- ANX-C RQMT.  procedure TC_Check_Imports;end CD30005_0;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --with Report;with System.Storage_Elements;with System.Address_To_Access_Conversions;package body CD30005_0 is  use type System.Address;  procedure TC_Check_Imports is    S   : External_Func_Ref := CD30005_1'Access;    I,K : Integer := 99;  begin    K := S.all(I);    if K /= 100 then      Report.Failed("C program returned" & Integer'Image(K));    end if;    I := CD30005_1( I );    if I /= 100 then      Report.Failed("C program returned" & Integer'Image(I));    end if;    if CD30005_1'Address /= Impdef.CD30005_1_Foreign_Address then      Report.Failed("Address not that specified");    end if;  end TC_Check_Imports;end CD30005_0;------------------------------------------------------------------- CD300050with Report;with CD30005_0;procedure CD300050 isbegin  -- Main test procedure.  Report.Test ("CD30005",               "Check that Address clauses are supported for imported " &               "subprograms" );   --      Check that Address clauses are supported for imported subprograms.  CD30005_0.TC_Check_Imports;  Report.Result;end CD300050;

⌨️ 快捷键说明

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