파일 I/O에 대한 add 고려사항

데이터베이스를 포함하지 않는 파일 I/O의 컨텍스트에서 EGL add 문은 레코드를 파일에 배치합니다.

명령의 정확한 동작과 새 레코드가 배치되는 위치는 명령과 함께 사용하는 레코드의 스테레오타입에 따라 다릅니다. 자세한 정보는 이 주제의 개별 절을 참조하십시오.

구문

파일 I/O을 사용하는 add 문의 구문 다이어그램
recordVariable
색인화, 상대 또는 직렬 파일에 추가할 레코드 데이터를 포함하는 변수입니다.

CSV 레코드

CSVRecord 스테레오타입의 레코드를 추가하는 경우, 해당 레코드는 파일의 끝에 배치됩니다.

현재 레코드가 파일에 처음 쓰여지는 레코드인 경우, EGL은 해당 레코드의 labels 특성을 확인합니다. 이 특성이 널이 아니면 EGL은 delimiter 특성의 문자로 구분하여 열 헤더를 씁니다.

각 데이터 행에 대해 EGL은 기존 변환 규칙을 사용하여 값을 문자열로 변환합니다. 한 가지 예외는 BOOLEAN 값의 경우입니다. 이 경우 EGL은 문자열 "true" 또는 문자열 "false"로 적절하게 변환합니다. 그런 다음 EGL은 문자열 사이에 구분 문자를 넣어서 한 행의 데이터로 연결합니다. 끝으로, EGL은 파일의 끝에 해당 행을 쓴 다음 시스템에 맞는 행 끝 문자("\n", "\r" 또는 "\r\n")를 씁니다.

add 문으로 레코드의 배열을 지정할 수 있습니다. 널 배열은 NullValueException을 유발합니다. 그렇지 않으면 EGL은 배열의 각 멤버를 추가하여 배열을 통해 루프를 수행합니다. 파일은 추가 쓰기를 위해 열려 있는 채로 남아 있습니다. CSV 레코드에 대해 close 문을 사용할 수 있습니다.

색인화 레코드

IndexedRecord 스테레오타입의 레코드를 추가하는 경우, 레코드의 키는 파일에서 레코드의 논리 위치를 판별합니다. 이미 사용 중인 파일 위치에 레코드를 추가하면 하드 I/O 오류 unique 또는 중복이 허용되는 경우 소프트 I/O 오류 duplicate가 발생합니다.

상대 레코드

RelativeRecord 스테레오타입의 레코드를 추가하는 경우, recordNumberItem 특성으로 지정된 레코드 번호 필드의 값은 파일에서 레코드의 위치를 판별합니다. 이미 사용 중인 파일 위치에 레코드를 추가하면 하드 I/O 오류 unique가 발생합니다.

레코드 번호 필드는 해당 레코드를 사용하는 모든 함수에서 사용 가능해야 하며 다음과 같은 필드가 될 수 있습니다.
  • 동일한 레코드 내의 필드
  • 프로그램에 대해 글로벌이거나 add 문을 실행하는 함수에 대해 로컬인 레코드의 필드
  • 프로그램에 대해 글로벌이거나 add 문을 실행하는 함수에 대해 로컬인 변수

직렬 레코드

SerialRecord 스테레오타입의 레코드를 추가하는 경우, 해당 레코드는 파일의 끝에 배치됩니다.

EGL은 프로그램이 파일의 쓰기에서 읽기로 또는 읽기에서 쓰기로 변경될 때마다 파일을 닫았다가 다시 엽니다. 예를 들어, add 문을 사용하여 직렬 레코드에 쓴 후 get next 문을 사용하여 동일한 파일에서 데이터를 읽는 경우 EGL은 해당 파일을 닫습니다. get next 문 다음의 add는 파일의 시작 부분에 레코드를 추가합니다. add 문 다음의 get next 문은 파일에서 첫 번째 레코드를 읽습니다. 이 동작은 get next 문과 add 문이 다른 프로그램에 있고 한 프로그램이 다른 프로그램을 호출하는 경우에도 발생합니다.

둘 이상의 프로그램에서 동시에 동일한 파일을 열지 마십시오.

예제

	if (userRequest == "A")
		try 
			add record1;
		onException(fileErr FileIOException)
			myErrorHandler(fileErr);
		end	end

호환성

표 1. 파일 I/O add 문에 대한 호환성 고려사항
플랫폼 문제
VSAM 프로그램에서 add 문을 사용하여 항목 시퀀스 데이터 세트에 쓰고 get next 문을 실행하여 동일한 파일에서 데이터를 읽는 경우, EGL은 파일의 쓰기에서 읽기로 또는 파일의 읽기에서 쓰기로 변경될 때마다 파일을 닫았다가 다시 엽니다. 그러므로 add 문 다음의 get next 문은 파일에서 첫 번째 레코드를 읽습니다. 마찬가지로, get next 문 다음의 add는 파일의 시작 부분에 레코드를 추가합니다. 이 동작은 get next 문과 add 문이 다른 프로그램에 있고 한 프로그램이 다른 프로그램을 호출하는 경우에도 발생합니다.