1-- C58004G.ADA 2 3-- Grant of Unlimited Rights 4-- 5-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687, 6-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained 7-- unlimited rights in the software and documentation contained herein. 8-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making 9-- this public release, the Government intends to confer upon all 10-- recipients unlimited rights equal to those held by the Government. 11-- These rights include rights to use, duplicate, release or disclose the 12-- released technical data and computer software in whole or in part, in 13-- any manner and for any purpose whatsoever, and to have or permit others 14-- to do so. 15-- 16-- DISCLAIMER 17-- 18-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR 19-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED 20-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE 21-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE 22-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A 23-- PARTICULAR PURPOSE OF SAID MATERIAL. 24--* 25-- CHECK THAT THE RETURN STATEMENT WORKS FOR RECURSIVE SUBPROGRAMS, 26-- BOTH FUNCTIONS AND PROCEDURES. 27 28-- CHECK GENERIC SUBPROGRAMS. 29 30-- SPS 3/7/83 31-- JBG 9/13/83 32 33WITH REPORT; 34PROCEDURE C58004G IS 35 36 USE REPORT; 37 38 I1, I2 : INTEGER := 0; 39 40 GENERIC 41 PROCEDURE FACTORIALP (IP1 : IN INTEGER; IP2 : IN OUT INTEGER); 42 43 GENERIC 44 FUNCTION FACTORIALF (IF1: INTEGER) RETURN INTEGER; 45 46 PROCEDURE FACTORIALP (IP1 : IN INTEGER; IP2 : IN OUT INTEGER) IS 47 BEGIN 48 IF IP1 = 1 THEN 49 IP2 := 1; 50 RETURN; 51 ELSE FACTORIALP (IP1 - 1, IP2); 52 IP2 := IP1 * IP2; 53 RETURN; 54 END IF; 55 56 IP2 := 0; 57 58 END FACTORIALP; 59 60 FUNCTION FACTORIALF (IF1 : INTEGER) RETURN INTEGER IS 61 62 BEGIN 63 IF IF1 = 1 THEN RETURN (1); 64 END IF; 65 66 RETURN (IF1 * FACTORIALF(IF1 - 1) ); 67 68 END FACTORIALF; 69 70 PROCEDURE FACTP IS NEW FACTORIALP; 71 FUNCTION FACTF IS NEW FACTORIALF; 72 73BEGIN 74 TEST ("C58004G", "CHECK THAT THE RETURN STATEMENT WORKS FOR" & 75 " RECURSIVE GENERIC FUNCTIONS AND PROCEDURES"); 76 77 I1 := FACTF (5); 78 79 IF I1 /= 120 THEN 80 FAILED ("RETURN STATEMENT IN RECURSIVE FUNCTION NOT " & 81 "WORKING"); 82 END IF; 83 84 FACTP (5, I2); 85 86 IF I2 = 0 THEN 87 FAILED ("RETURN STATEMENT IN RECURSIVE PROCEDURE NOT " & 88 "WORKING"); 89 ELSIF I2 /= 120 THEN 90 FAILED 91 ("RETURN STMT IN RECURSIVE PROCEDURE NOT WORKING CORRECTLY"); 92 END IF; 93 94 RESULT; 95END C58004G; 96