비교식과 같이 논리식은 처리될 때 1(true) 또는
0(false)을 리턴합니다. 논리 연산자는 두 개의 비교를 결합시키고, 비교의 결과에 따라 1 또는 0을
리턴합니다.
논리 연산자
연산자
의미
&
AND
양쪽 비교가 true이면 1을 리턴합니다. 예를 들면, 다음과 같습니다.
(4 > 2) & (a = a) /* true, so result is 1 */
(2 > 4) & (a = a) /* false, so result is 0 */
|
포함적 OR
한 개 이상의 비교가 true이면 1을 리턴합니다. 예를 들면, 다음과 같습니다.
(4 > 2) | (5 = 3) /* at least one is true, so result is 1 */
(2 > 4) | (5 = 3) /* neither one is true, so result is 0 */
&&
배타적 OR
양쪽 모두가 아닌 단 하나의 비교가 true이면 1을 리턴합니다. 예를 들면, 다음과 같습니다.
(4 > 2) && (5 = 3) /* only one is true, so result is 1 */
(4 > 2) && (5 = 5) /* both are true, so result is 0 */
(2 > 4) && (5 = 3) /* neither one is true, so result is 0
*/
접두부 \,¬
논리 NOT
부정-반대 응답을 리턴합니다. 예를 들면, 다음과 같습니다.
\ 0 /* opposite of 0, so result is 1 */
\ (4 > 2) /* opposite of true, so result is 0 */
논리식 사용
원하지 않는 조건을 차단하기 위해 복합 조건부 명령어에서 체크포인트로 논리식을 사용할 수 있습니다. 일련의
논리식을 가지고 있는 경우 설명을 위해 한 개 이상의
괄호 세트를 사용하여 각 표현식을 묶습니다.
IF ((A < B) | (J < D)) & ((M = Q) | (M = D)) THEN ....
다음 예는 논리 연산자를 사용하여 의사결정합니다.그림 1. 논리식 사용 예
/****************************** REXX ********************************/
/* This program receives arguments for a complex logical expression */
/* that determines whether a person should go skiing. The first */
/* argument is a season and the other two can be 'yes' or 'no'. */
/********************************************************************/
PARSE ARG season snowing broken_leg
IF ((season = 'WINTER') | (snowing ='YES')) & (broken_leg ='NO')
THEN SAY 'Go skiing.'
ELSE
SAY 'Stay home.'
이 예제에 전달된 인수가 SPRING YES NO 인 경우 IF절은 다음과 같이 변환됩니다.