변수 및 상수 선언

변수와 상수는 EGL 프로그램에서 스토리지를 예약합니다. 런타임 시 상수 값을 변경할 수 없습니다.

모든 EGL 변수를 명시적으로 선언해야 합니다. 다른 몇몇 언어에서는 변수를 선언하지 않고 사용할 수 있지만 EGL에서는 그렇지 않습니다.

구문

변수 선언의
구문 다이어그램
varName
스토리지를 예약 중인 변수의 이름입니다.
type
변수의 기반인 사용자 정의 파트 또는 기본 유형입니다.
property
변수의 선택적 특성/값 쌍입니다.
initializer
변수의 초기값을 지정할 수 있습니다.

변수

다음과 같은 방법으로 변수를 선언할 수 있습니다.
  • 다음 예제와 같이 EGL 기본 유형("기본 데이터 유형" 참조) 중 하나를 변수의 기반으로 할 수 있습니다.
      customerBalance DECIMAL(9,2);
  • 다음 예제와 같이 DataItem 파트 또는 레코드 파트를 변수의 기반으로 할 수 있습니다.
      myCustomer CustomerRecord;
  • 다음 사전의 예처럼 사전선언된 파트 중 하나를 변수의 기반으로 할 수 있습니다.
      myDictionary Dictionary 
      {
        empnum=0005,
        lastName="Twain",
        firstName="Mark",
        birthday="021460"
      };
  • 파트를 기반으로 변수를 선언하는 경우 특성(파트 또는 변수에 대한 정보)을 지정할 수 있습니다. 이러한 특성이 파트 자체를 정의할 때 선언한 특성을 대체하는 경우가 있습니다. 자세한 정보는 특성의 내용을 참조하십시오.
  • 다른 레코드에서 선언한 메모리의 영역을 재정의하는 레코드를 선언할 수 있습니다. 자세한 정보는 재정의의 내용을 참조하십시오.
  • 프로그램 또는 기타 기본 파트는 프로그램이나 실행 단위에 글로벌인 변수로 처리되는 DataTable의 필드에 액세스할 수 있습니다. use 문에 DataTable이 나열된 경우 단순한 구문을 사용해서 해당 필드에 액세스할 수 있습니다. use의 내용을 참조하십시오.
  • 프로그램은 텍스트 또는 인쇄 양식의 필드에 액세스할 수 있습니다. 프로그램은 이 양식을 프로그램에 글로벌인 변수로 처리합니다. 프로그램에서 관련 formGroup을 use 문에 포함해야 합니다. use의 내용을 참조하십시오.
  • 프로그램 또는 기타 기본 논리 파트는 라이브러리 함수의 외부에서 선언된 라이브러리 변수에 액세스할 수 있습니다. 해당 변수는 실행 단위에 글로벌입니다. use 문에 라이브러리를 나열하는 경우 단순 구문을 사용해서 해당 필드에 액세스할 수 있습니다. use의 내용을 참조하십시오.
  • 프로그램은 특정 레코드 변수와 연관된 데이터가 세그먼트된 스토리지 관리자의 세그먼트된 상반에서 저장 및 복원되는지 여부를 정의합니다. enableSaveRestore라는 레코드 변수 어노테이션은 변수 데이터의 유지 여부를 제어합니다. 결과는 YES 또는 NO 값의 지정 여부에 따라 달라집니다. 기본값인 YES를 사용하는 경우 레코드 변수와 연관된 데이터가 유지됩니다.

유형 확장 문자

유형이라는 개념은 특정 변수 또는 표현식이 값을 표시하는 방법을 설명합니다. 또한 유형은 호환성을 판별합니다. 예를 들어, 문자열에 숫자의 문자 표시를 추가할 수 있고 문자의 정수 코드 포인트 표시에 숫자를 추가할 수 있지만 문자에 숫자를 추가할 수는 없습니다.

EGL에는 INT와 CHAR 같이 단순한 기본 데이터 유형이 있습니다. 이 언어에는 유형의 역할도 하는 복잡한 파트도 있습니다. 또한 EGL은 다음 표에 설명된 것처럼 변수를 정의할 때 몇몇 특수 문자를 유형 확장기능으로 사용합니다.

표 1. EGL의 유형 확장 문자
문자 예제 의미
  anInt INT; 이 유형의 단일 인스턴스입니다. 이 변수가 값 유형(참조가 아님) 변수인 경우에는 데이터가 들어 있는 스토리지의 이름 지정된 영역입니다.
[] anIntArray INT[]; 이 유형의 배열입니다. 배열의 내용을 참조하십시오.
? aNullableInt INT?; 널값을 포함할 수 있는 변수입니다. 널값 및 널 입력 가능 유형의 내용을 참조하십시오.

변수에 값 지정

변수가 기본 유형을 기반으로 하는 경우 변수를 선언하는 동시에 값을 지정할 수 있습니다. 다음 예제와 같이 지정 명령문의 왼쪽에 전체 선언을 배치하십시오.
customerBalance DECIMAL(9,2) = 1001.22;

변수를 선언한 후 일반 지정 구문을 통해 언제든지 새 값을 지정할 수 있습니다. 이 주제에 대한 자세한 정보는 지정의 내용을 참조하십시오. 지정에서 리터럴을 사용하는 방법에 대한 정보는 리터럴의 내용을 참조하십시오.

상수

상수는 런타임 시 변경할 수 없는 선언된 값입니다. 예약어 const 뒤에 상수 이름, 유형, 등호, 값을 지정하여 상수를 선언하십시오. 예제는 다음과 같습니다.
  const copyrStr String = "Copyright 2007 by CompanyB";
  const myArray  BIN[] = [36, 49, 64];
  const myArray02 BIN[][] = [[1,2,3],[5,6,7]];

레코드 또는 기타 복합 구조에 상수를 포함할 수 없습니다.

예약어 const를 함수 매개변수의 수정자로 포함할 수 있습니다. 자세한 정보는 매개변수 수정자의 내용을 참조하십시오.

하나의 명령문에서 여러 변수 또는 상수를 선언하려면 다음 예제와 같이 쉼표로 한 ID를 다른 ID와 구분하십시오.
  const myString01, myString02 STRING = "INITIAL";
  myVar01, myVar02, myVar03 CHAR(5);
  myRecord01, myRecord02 ExampleRecord;