/* Copyright (c) 1995, 1996 by R. A. Vowels, from "Introduction to PL/I, Algorithms, and */ /* Structured Programming". Permission is given to reproduce and to use these procedures */ /* as part of a program, and to include them as part of a larger work to be sold for profit. */ /* However, the user is not permitted to sell the procedures separately. Provided always */ /* that these procedures and this copyright notice are reproduced in full. */ DECLARE SOME GENERIC (SOME_varying WHEN (BIT VARYING), SOME_fixed WHEN ( * ) ); SOME_fixed: PROCEDURE (String) RETURNS ( BIT (1) ); DECLARE String BIT (*); RETURN (String ^= '0'B); END SOME_fixed; SOME_varying: PROCEDURE (String) RETURNS ( BIT (1) ); DECLARE String BIT (*) VARYING; RETURN (String ^= '0'B); END SOME_varying; DECLARE EVERY GENERIC (EVERY_varying WHEN (BIT VARYING), EVERY_fixed WHEN ( * ) ); EVERY_fixed: PROCEDURE (B) RETURNS (BIT(1) ); DECLARE B BIT(*); DECLARE Ones BIT(LENGTH (B)); IF LENGTH(B) = 0 THEN RETURN ( '0'B); Ones = REPEAT( '1'B, LENGTH(B)-1); RETURN (B = Ones); END EVERY_fixed; EVERY_varying: PROCEDURE (B) RETURNS (BIT(1) ); DECLARE B BIT(*) VARYING; DECLARE Ones BIT(LENGTH (B)); IF LENGTH(B) = 0 THEN RETURN ( '0'B); Ones = REPEAT( '1'B, LENGTH(B)-1); RETURN (B = Ones); END EVERY_varying;