레코드 읽기 및 쓰기
약어 CRUD는 일반적으로 파일 내에서 레코드에 대해 수행하는 기본 I/O 기능을 참조합니다. 다음 표는 해당 기능을 제공하는 CRUD 기능 및 EGL 키워드를 표시합니다.
| CRUD 기능 | EGL 키워드 |
|---|---|
| 작성 | add |
| 읽기 | get |
| 업데이트 | replace |
| 삭제 | delete |
또한 EGL은 사용자가 작업 중인 특정한 유형의 파일에 기반하여 이러한 기능 각각을 실행하는 방법을 사용자 조정합니다. 예를 들어, SQL 데이터베이스에 대해 get next 명령문을 쓰는 경우 EGL이 일련의 SQL 명령문을 생성하여 SQL 결과 세트에서 적합한 행을 찾아서 검색합니다. 순차 파일에 대해 생성된 동일한 EGL 명령문은 간단히 파일에서 다음 레코드를 읽습니다.
EGL은 스테레오타이핑을 통해 이러한 태스크를 수행합니다. 일상 용도에서 스테레오타입은 각각을 특성화하는 데 사용할 수 있는 공통 패턴입니다. 거의 동일한 방법에서 사용자는 레코드에 스테레오타입을 적용하는 경우 해당 레코드와 관련된 I/O 기능을 수행하는 방법에 대해 EGL에 알립니다. 스테레오타입에 대한 자세한 내용은 레코드 파트 소개 및 EGL 언어 참조의 특정 스테레오타입에 초점을 맞춘 추제를 참조하십시오.
I/O 처리 주기
기존 데이터베이스의 경우(일반적으로 데이터베이스 관리자가 작성함), 일반 처리는 대개 작성, 읽기, 업데이트 및 삭제(CRUD) 기능을 포함합니다. 더 구체적인 예제가 특정 데이터 액세스 기술을 다루는 주제에 있습니다. 다음 일반 시나리오가 가능한 유일한 이유는 EGL이 구현 세부사항에서 사용자를 보호하는 데 매우 효율적이기 때문입니다.
package com.companyb.customer
Record CustomerRecord type Stereotype
customerNumber INT;
customerName STRING;
customerBalance MONEY;
end
레코드 및 해당 특성의 세부사항은 계획하는 사용 방법에 따라 다릅니다.
myCustomer CustomerRecord;
myCustomer.customerNumber = getCustomer();
get myCustomer forUpdate;
EGL은 파일 또는 데이터베이스에서 데이터를 읽는 데 적합한 코드를 생성하고 레코드 변수에 정보를 배치합니다. forUpdate 키워드가 데이터에 대해 보류를 배치하도록 EGL에 알리므로 이를 대체하거나 삭제할 옵션이 있습니다.
case (showCustomer(myCustomer))
when (-1)
delete myCustomer;
when (1)
replace myCustomer;
end
set myCustomer empty; // all fields blank or 0
myCustomer.customerNumber = getCustomer(); // sets cust #
try
get myCustomer forUpdate;
onException (ex AnyException) // couldn't get the record
if(myCustomer is noRecordFound) // because customer # not on file
if(getReply("Do you want to add this customer? (y/n)") == TRUE)
showCustomer(myCustomer); // let user fill in remaining fields
add myCustomer;
end else
myErrorHandler(ex);
end
이러한 몇몇 코드 행을 통해 사용자 고유의 VSAM 색인화된 파일 또는 SQL 데이터베이스와 함께 사용할 수 있는 고객 파일 서비스 프로그램의 핵심을 포함합니다. VSAM 및 SQL의 유일한 차이는 CustomerRecord 정의에 적용하는 스테레오타입입니다.