논리식

논리식은 사용자 프로그램 논리가 if, while, for, case와 같은 조건문과 루핑 명령문에서 선택하는 경로를 판별합니다.

다음 표에 기본 논리식의 연산자와 피연산자가 요약되어 있습니다. 기본 표현식은 피연산자, 비교 연산자, 두 번째 피연산자로 구성됩니다.

표 1. 기본 논리식
첫 번째 피연산자 비교 연산자 두 번째 피연산자
날짜/시간 표현식 ==, != , <, >, <=, >= 날짜/시간 표현식

첫 번째 표현식과 두 번째 표현식은 호환 가능한 유형이어야 합니다. EGL의 지정 호환성을 참조하십시오.

날짜/시간 비교의 경우 초과 부호(>)는 시간상 나중임을 의미하고 미만(<) 부호는 시간상 이전임을 의미합니다.

숫자 표현식 ==, != , <, >, <=, >= 숫자 표현식
문자열 표현식 ==, != , <, >, <=, >= 문자열 표현식

EGL의 지정 호환성을 참조하십시오.

문자열 표현식 like 정규식

문자열 표현식이 왼쪽에서 오른쪽으로 문자 위치별로 차례로 비교되는 리터럴 또는 문자 필드입니다. 정규식은 와일드카드와 이스케이프 문자를 포함할 수 있습니다.

문자열 표현식 matches 정규식

문자열 표현식이 왼쪽에서 오른쪽으로 문자 위치별로 차례로 비교되는 리터럴 또는 문자 필드입니다. 정규식은 와일드카드와 이스케이프 문자를 포함할 수 있습니다. 정규식 규칙은 like 연산자와 matches 연산자 간에 다릅니다.

NUM 또는 CHAR 값 ==, != , <, >, <=, >= NUM 또는 CHAR 값
searchValue in arrayName

자세한 정보는 in 연산자의 내용을 참조하십시오.

기본 레코드의 변수
  • is
  • not
다음 중 하나입니다.
  • 공백. 문자 변수의 값이 공백인지 여부만 테스트하는 키워드입니다.
  • 숫자. 문자 변수(DBCHAR 유형 제외)의 값이 숫자인지 여부를 테스트하는 키워드입니다.
sysVar.systemType
  • is
  • not
자세한 정보는 systemType의 내용을 참조하십시오.
레코드 이름
  • is
  • not
레코드 조직에 적합한 입출력(I/O) 오류 값입니다. 입출력(I/O) 오류 값을 참조하십시오.

복합 논리식

"and"(&&) 연산자와 "or" 연산자(||)를 사용해서 기본 표현식의 쌍을 결합해서 복합 표현식을 빌드할 수 있습니다. 또한 "not" 연산자(!)를 사용하여 표현식의 값을 되돌릴 수 있습니다(TRUE를 FALSE로, FALSE를 TRUE로 변경).

논리식에 "or" 연산자 하나 이상의 피연산자인 기본 논리식이 포함되어 있는 경우 EGL은 우선순위 규칙에 따라 표현식을 평가합니다. 기본 논리식 중 하나가 TRUE로 해석되면 평가가 중지됩니다. 다음 예제를 검토합니다.
  var01 == var02 || 3 in array03 || x == y

var01var02와 같지 않으면 평가를 진행합니다. 값 3이 array03에 있는 경우 전체 표현식은 TRUE이고 EGL은 마지막 기본 논리식(x == y)을 평가할 필요가 없습니다.

마찬가지로 기본 논리식이 "and" 연산자로 결합된 경우 기본 논리식 중 하나가 FALSE로 해석되는 즉시 EGL이 평가를 중지합니다. 다음 예제에서는 var01이 var02와 같지 않음을 발견하는 즉시 평가를 중지합니다.

  var01 == var02 && 3 in array03 && x == y
논리실에서 다음 용도로 소괄호 쌍을 사용할 수 있습니다.
  • 평가의 순서 변경
  • 의미의 명확화
  • "not" 연산자(!)를 사용 가능하게 함. 이 연산자는 바로 뒤 소괄호 안에 표시되는 논리식의 값에 반대되는 부울 값(TRUE 또는 FALSE)으로 평가됩니다.

호환성

표 2. 논리식의 호환성 고려사항
플랫폼 문제
COBOL 생성 COBOL에서는 MBCHAR 또는 DBCHAR을 UNICODE 또는 STRING과 비교하는 방법을 제공하지 않습니다.
JavaScript 생성 is 연산자와 not 연산자의 변형인 blanksnumeric의 레코드 특정 테스트, sysVar.systemType의 사용만 지원됩니다.

다음 유형은 지원되지 않습니다. ArrayDictionary, BIN(소수 자리가 있음), BLOB, CHAR, CLOB, DBCHAR, HEX, INTERVAL, MBCHAR, NUMC, STRING(크기 제한이 있음), PACF, UNICODE, 구조화 레코드 파트.

VisualAge® Generator 호환 모드 is 또는 not을 사용하여 vgLib.getVAGSysType()에서 리턴한 값을 테스트할 수 없습니다.