1-- C58004C.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-- DCB 2/8/80 29-- SPS 3/7/83 30-- JBG 5/17/83 31 32WITH REPORT; 33PROCEDURE C58004C IS 34 35 USE REPORT; 36 37 I1, I2 : INTEGER := 0; -- INITIAL VALUE IS IMMATERIAL 38 39 PROCEDURE FACTORIALP (IP1 : IN INTEGER; IP2 : IN OUT INTEGER) IS 40 41 BEGIN 42 IF IP1 = 1 THEN 43 IP2 := 1; 44 RETURN; 45 ELSE FACTORIALP (IP1 - 1, IP2); 46 IP2 := IP1 * IP2; 47 RETURN; 48 END IF; 49 50 IP2 := 0; 51 52 END FACTORIALP; 53 54 FUNCTION FACTORIALF (IF1 : INTEGER) RETURN INTEGER IS 55 56 BEGIN 57 IF IF1 = 1 THEN RETURN (1); 58 END IF; 59 60 RETURN (IF1 * FACTORIALF(IF1 - 1) ); 61 62 END FACTORIALF; 63 64BEGIN 65 TEST ("C58004C", "CHECK THAT THE RETURN STATEMENT WORKS FOR" & 66 " RECURSIVE FUNCTIONS AND PROCEDURES"); 67 68 I1 := FACTORIALF (5); 69 70 IF I1 /= 120 THEN 71 FAILED ("RETURN STATEMENT IN RECURSIVE FUNCTION NOT " & 72 "WORKING"); 73 END IF; 74 75 FACTORIALP (5, I2); 76 77 IF I2 = 0 THEN 78 FAILED ("RETURN STATEMENT IN RECURSIVE PROCEDURE NOT " & 79 "WORKING"); 80 ELSIF I2 /= 120 THEN 81 FAILED 82 ("RETURN STMT IN RECURSIVE PROCEDURE NOT WORKING CORRECTLY"); 83 END IF; 84 85 RESULT; 86END C58004C; 87