cc3605a.ada

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

ADA
382
字号
-- CC3605A.ADA--                             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 SOME DIFFERENCES BETWEEN THE FORMAL AND THE--     ACTUAL SUBPROGRAMS DO NOT INVALIDATE A MATCH.--          1)  CHECK DIFFERENT PARAMETER NAMES.--          2)  CHECK DIFFERENT PARAMETER CONSTRAINTS.--          3)  CHECK ONE PARAMETER CONSTRAINED AND THE OTHER--               UNCONSTRAINED (WITH ARRAY, RECORD, ACCESS, AND--               PRIVATE TYPES).--          4)  CHECK PRESENCE OR ABSENCE OF AN EXPLICIT "IN" MODE--               INDICATOR.--          5)  DIFFERENT TYPE MARKS USED TO SPECIFY THE TYPE OF--               PARAMETERS.-- HISTORY:--     LDC 10/04/88  CREATED ORIGINAL TEST.PACKAGE CC3605A_PACK IS     SUBTYPE INT IS INTEGER RANGE -100 .. 100;     TYPE PRI_TYPE (SIZE : INT) IS PRIVATE;     SUBTYPE PRI_CONST IS PRI_TYPE (2);PRIVATE     TYPE ARR_TYPE IS ARRAY (INTEGER RANGE <>) OF BOOLEAN;     TYPE PRI_TYPE (SIZE : INT) IS          RECORD               SUB_A : ARR_TYPE (1 .. SIZE);          END RECORD;END CC3605A_PACK;WITH REPORT;USE  REPORT;WITH CC3605A_PACK;USE  CC3605A_PACK;PROCEDURE CC3605A IS     SUBTYPE ZERO_TO_TEN IS INTEGER          RANGE IDENT_INT (0) .. IDENT_INT (10);     SUBTYPE ONE_TO_FIVE IS INTEGER          RANGE IDENT_INT (1) .. IDENT_INT (5);     SUBPRG_ACT : BOOLEAN := FALSE;BEGIN     TEST          ("CC3605A", "CHECK THAT SOME DIFFERENCES BETWEEN THE " &                      "FORMAL AND THE ACTUAL PARAMETERS DO NOT " &                      "INVALIDATE A MATCH");------------------------------------------------------------------------ DIFFERENT PARAMETER NAMES----------------------------------------------------------------------     DECLARE          PROCEDURE ACT_PROC (DIFF_NAME_PARM : ONE_TO_FIVE) IS          BEGIN               SUBPRG_ACT := TRUE;          END ACT_PROC;          GENERIC               WITH PROCEDURE PASSED_PROC (PARM : ONE_TO_FIVE);          PROCEDURE GEN_PROC;          PROCEDURE GEN_PROC IS          BEGIN               PASSED_PROC (ONE_TO_FIVE'FIRST);          END GEN_PROC;          PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);     BEGIN          INST_PROC;          IF NOT SUBPRG_ACT THEN               FAILED                    ("DIFFERENT PARAMETER NAMES MADE MATCH INVALID");          END IF;     END;------------------------------------------------------------------------ DIFFERENT PARAMETER CONSTRAINTS----------------------------------------------------------------------     DECLARE          PROCEDURE ACT_PROC (PARM : ONE_TO_FIVE) IS          BEGIN               SUBPRG_ACT := TRUE;          END ACT_PROC;          GENERIC               WITH PROCEDURE PASSED_PROC (PARM : ZERO_TO_TEN);          PROCEDURE GEN_PROC;          PROCEDURE GEN_PROC IS          BEGIN               PASSED_PROC (ONE_TO_FIVE'FIRST);          END GEN_PROC;          PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);     BEGIN          SUBPRG_ACT := FALSE;          INST_PROC;          IF NOT SUBPRG_ACT THEN               FAILED                    ("DIFFERENT PARAMETER CONSTRAINTS MADE MATCH " &                     "INVALID");          END IF;     END;------------------------------------------------------------------------ ONE PARAMETER CONSTRAINED (ARRAY)----------------------------------------------------------------------     DECLARE          TYPE ARR_TYPE IS ARRAY (INTEGER RANGE <>) OF BOOLEAN;          SUBTYPE ARR_CONST IS ARR_TYPE (ONE_TO_FIVE'FIRST ..               ONE_TO_FIVE'LAST);          PASSED_PARM : ARR_CONST := (OTHERS => TRUE);          PROCEDURE ACT_PROC (PARM : ARR_CONST) IS          BEGIN               SUBPRG_ACT := TRUE;          END ACT_PROC;          GENERIC               WITH PROCEDURE PASSED_PROC (PARM : ARR_TYPE);          PROCEDURE GEN_PROC;          PROCEDURE GEN_PROC IS          BEGIN               PASSED_PROC (PASSED_PARM);          END GEN_PROC;          PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);     BEGIN          SUBPRG_ACT := FALSE;          INST_PROC;          IF NOT SUBPRG_ACT THEN               FAILED                    ("ONE ARRAY PARAMETER CONSTRAINED MADE MATCH " &                     "INVALID");          END IF;     END;------------------------------------------------------------------------ ONE PARAMETER CONSTRAINED (RECORDS)----------------------------------------------------------------------     DECLARE          TYPE REC_TYPE (BOL : BOOLEAN) IS               RECORD                    SUB_A : INTEGER;                    CASE BOL IS                         WHEN TRUE =>                              DSCR_A : INTEGER;                         WHEN FALSE =>                              DSCR_B : BOOLEAN;                    END CASE;               END RECORD;          SUBTYPE REC_CONST IS REC_TYPE (TRUE);          PASSED_PARM : REC_CONST := (TRUE, 1, 2);          PROCEDURE ACT_PROC (PARM : REC_CONST) IS          BEGIN               SUBPRG_ACT := TRUE;          END ACT_PROC;          GENERIC               WITH PROCEDURE PASSED_PROC (PARM : REC_TYPE);          PROCEDURE GEN_PROC;          PROCEDURE GEN_PROC IS          BEGIN               PASSED_PROC (PASSED_PARM);          END GEN_PROC;          PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);     BEGIN          SUBPRG_ACT := FALSE;          INST_PROC;          IF NOT SUBPRG_ACT THEN               FAILED                    ("ONE RECORD PARAMETER CONSTRAINED MADE MATCH " &                     "INVALID");          END IF;     END;------------------------------------------------------------------------ ONE PARAMETER CONSTRAINED (ACCESS)----------------------------------------------------------------------     DECLARE          TYPE ARR_TYPE IS ARRAY (INTEGER RANGE <>) OF BOOLEAN;          SUBTYPE ARR_CONST     IS ARR_TYPE (ONE_TO_FIVE'FIRST ..               ONE_TO_FIVE'LAST);          TYPE ARR_ACC_TYPE IS ACCESS ARR_TYPE;          SUBTYPE ARR_ACC_CONST IS ARR_ACC_TYPE (1 .. 3);          PASSED_PARM : ARR_ACC_TYPE := NULL;          PROCEDURE ACT_PROC (PARM : ARR_ACC_CONST) IS          BEGIN               SUBPRG_ACT := TRUE;          END ACT_PROC;          GENERIC               WITH PROCEDURE PASSED_PROC (PARM : ARR_ACC_TYPE);          PROCEDURE GEN_PROC;          PROCEDURE GEN_PROC IS          BEGIN               PASSED_PROC (PASSED_PARM);          END GEN_PROC;          PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);     BEGIN          SUBPRG_ACT := FALSE;          INST_PROC;          IF NOT SUBPRG_ACT THEN               FAILED                    ("ONE ACCESS PARAMETER CONSTRAINED MADE MATCH " &                     "INVALID");          END IF;     END;------------------------------------------------------------------------ ONE PARAMETER CONSTRAINED (PRIVATE)----------------------------------------------------------------------     DECLARE          PASSED_PARM : PRI_CONST;          PROCEDURE ACT_PROC (PARM : PRI_CONST) IS          BEGIN               SUBPRG_ACT := TRUE;          END ACT_PROC;          GENERIC               WITH PROCEDURE PASSED_PROC (PARM : PRI_TYPE);          PROCEDURE GEN_PROC;          PROCEDURE GEN_PROC IS          BEGIN               PASSED_PROC (PASSED_PARM);          END GEN_PROC;          PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);     BEGIN          SUBPRG_ACT := FALSE;          INST_PROC;          IF NOT SUBPRG_ACT THEN               FAILED                    ("ONE PRIVATE PARAMETER CONSTRAINED MADE MATCH " &                     "INVALID");          END IF;     END;------------------------------------------------------------------------ PRESENCE (OR ABSENCE) OF AN EXPLICIT "IN" MODE----------------------------------------------------------------------     DECLARE          PROCEDURE ACT_PROC (PARM : INTEGER) IS          BEGIN               SUBPRG_ACT := TRUE;          END ACT_PROC;          GENERIC               WITH PROCEDURE PASSED_PROC (PARM : IN INTEGER);          PROCEDURE GEN_PROC;          PROCEDURE GEN_PROC IS          BEGIN               PASSED_PROC (1);          END GEN_PROC;          PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);     BEGIN          SUBPRG_ACT := FALSE;          INST_PROC;          IF NOT SUBPRG_ACT THEN               FAILED                     ("PRESENCE OF AN EXPLICIT 'IN' MODE MADE MATCH " &                     "INVALID");          END IF;     END;------------------------------------------------------------------------ DIFFERENT TYPE MARKS----------------------------------------------------------------------     DECLARE          SUBTYPE MARK_1_TYPE IS INTEGER;          SUBTYPE MARK_2_TYPE IS INTEGER;          PROCEDURE ACT_PROC (PARM1 : IN MARK_1_TYPE) IS          BEGIN               SUBPRG_ACT := TRUE;          END ACT_PROC;          GENERIC               WITH PROCEDURE PASSED_PROC (PARM2 : MARK_2_TYPE);          PROCEDURE GEN_PROC;          PROCEDURE GEN_PROC IS          BEGIN               PASSED_PROC (1);          END GEN_PROC;          PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);     BEGIN          SUBPRG_ACT := FALSE;          INST_PROC;          IF NOT SUBPRG_ACT THEN               FAILED ("DIFFERENT TYPE MARKS MADE MATCH INVALID");          END IF;     END;     RESULT;END CC3605A;

⌨️ 快捷键说明

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