/* 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;