V7.0 마이그레이션 도구에서 작성된 변경

EGL V7.0 마이그레이션 도구가 이 주제에 나열된 변경을 작성합니다. 마이그레이션 도구 환경 설정을 설정하여 이러한 변경 중 일부를 제어할 수 있습니다. 자세한 정보는 “EGL 마이그레이션 도구 환경 설정 설정”을 참조하십시오.

V7.0 마이그레이션 도구에서 작성된 변경에 대해 알아보려면 다음 섹션을 참조하십시오.

일반 변경

프로젝트의 변경
전체 프로젝트에서 마이그레이션 도구를 실행하고 해당 프로젝트에 서비스 파트 도는 서비스 바인딩 라이브러리가 포함된 경우, 마이그레이션 도구가 EGL 배치 디스크립터 파일을 프로젝트에 추가합니다. 자세한 정보는 이 주제에서 "서비스"를 참조하십시오.

환경 설정이 Java™ 파일을 삭제할 수 있도록 하면, 마이그레이션 도구가 해당 프로젝트에서 Java 파일을 삭제하여 Java 파일이 EGL 소스에서 다시 생성될 수 있습니다. 이 변경은 마이그레이션 중인 EGL 코드와 동일한 프로젝트에 있는 Java 파일에만 영향을 줍니다. EGL 코드를 다른 프로젝트에 생성하는 경우 해당 Java 파일을 수동으로 삭제하십시오.

마이그레이션 도구가 프로젝트 클래스 경로를 업데이트하여 JAR 팡리의 새 이름 및 위치를 반영합니다. 이 업데이트에는 이제 사용되지 않는 JAR 파일 제거가 포함됩니다.

새 예약어
환경 설정 설정에 따라, 마이그레이션 도구가 새 예약어와 충돌하는 기존 이름에 접두부 또는 접미부를 추가합니다.

특성

기존 특성의 변경
더 이상 인용된 문자열이 아닌 특성의 값을 변경합니다. 이 변경에는 마이그레이션 도구가 비어 있는 문자열("")을 널로 변경하는 pcbParms 특성이 포함됩니다.

relativeRecord 스테레오타입이 포함된 레코드의 keyItem 특성을 recordNumItem 특성으로 변경합니다.

isNullable 특성을 isSQLNullable로 변경합니다.

텍스트 UI 양식 필드의 protectoutline 특성의 값을 ProtectKindOutlineKind 열거로 변경합니다. outline 특성이 현재 어레이이므로 마이그레이션 도구가 outline의 값을 대괄호에 둡니다. 마이그레이션 도구는 ConsoleForm 레코드에서 필드의 protect 값을 변경하지 않습니다.
표 1. 텍스트 UI 양식 필드의 protectoutline 특성 변경
이전 특성 및 값 새 특성 및 값
protect = yes protect = ProtectKind.protect
protect = no protect = ProtectKind.noProtect
protect = skip protect = ProtectKind.skipProtect
outline = box outline = [OutlineKind.box]
outline = noOutline outline = [OutlineKind.noOutline]
예외 호환성
마이그레이션 도구가 다음 논리 파트에서 v60ExceptionCompatibility를 YES로 설정합니다.
  • 프로그램
  • 라이브러리
  • 핸들러
  • 서비스
텍스트 리터럴
이전 버전에서 동작을 유지하기 위해 마이그레이션 도구가 환경 설정에 따라 코드 textLiteralDefaultIsString = NO를 다음 파트에 추가합니다.
  • 프로그램
  • 라이브러리
  • 핸들러
  • 서비스
  • 레코드

빌드 디스크립터 옵션

wrapperCompatibility
.eglbld 파일에 wrapperCompatibility 빌드 디스크립터 옵션이 포함되지 않은 경우 마이그레이션 프로세스가 enableJavaWrapperGen 빌드 디스크립터 옵션의 값을 확인합니다. enableJavaWrapperGen이 YES 또는 ONLY로 설정된 경우 마이그레이션으로 wrapperCompatibility 빌드 디스크립터 옵션이 추가되어 V6로 설정됩니다.
wrapperCompatibility에 대한 자세한 정보는 “wrapperCompatibility”를 참조하십시오.

변수

코드 블록 내의 변수 범위
변수가 현재 해당 선언 이후(이전 아님)의 범위에 있습니다. 자세한 정보는 “V7.0 마이그레이션 도구에서 작성된 변경”의 "함수 내의 변수 범위"를 참조하십시오. 마이그레이션 도구는 모든 로컬 변수 선언을 코드 블록의 시작으로 옮깁니다. 해당 변수가 초기화된 경우 마이그레이션 도구가 초기자(initializer)를 대입 명령문으로 변환하여 변수 선언의 기존 위치에 둡니다. 변수가 코드 블록의 시작에 이미 있는 경우 마이그레이션 도구가 해당 초기자(initializer)를 대입 명령문으로 옮기고 해당 대입 명령문을 변수 선언의 끝에 둡니다.
INTERVAL 변수의 기본 지정자
마이그레이션 도구가 지정된 형식 없이 INTERVAL 변수에 기본 형식 지정자를 추가합니다.
표 2. INTERVAL 변수 선언의 변경
이전 코드 마이그레이션된 코드
intval1 interval; intval1 interval("yyyyMM");

시스템 함수 및 변수

일반 변경
  • 마이그레이션 도구가 이름을 변경한 시스템 함수 및 변수의 사용을 변경합니다.
  • 마이그레이션 도구가 sysLib.convert() 시스템 함수의 사용을 변경하여 다음 예제의 경우와 같이 ConvertDirection 열거를 합니다.
    sysLib.convert(myOrderRec, ConvertDirection.local, myConvTable);
    "L" 및 "R" 값이 각각 ConvertDirection.localConvertDirection.remote로 변경됩니다.
  • SqlLib.Connect(이전의 SysLib.Connect) 시스템 함수의 4번째 매개변수인 commitScope이 이제 필요하지 않아서 마이그레이션 도구가 이를 제거합니다.
  • 다음 인수가 지정되지 않으면 마이그레이션 도구가 이를 다음과 같이 지정합니다.
    표 3. SqlLib.Connect에 대한 호출의 변경
    이전 코드 마이그레이션된 코드
    isolationLevel serializableTransaction
    disconnectOption explicit
  • 다음 표는 마이그레이션 도구가 SqlLib.Connect의 호출을 처리하는 방법에 대한 예제를 포함합니다.
    표 4. SqlLib.Connect에 대한 호출의 변경
    이전 코드 마이그레이션된 코드
    SysLib.connect( a, b, c );
    SQLLib.connect( a, b, c, 
        explicit, 
        serializableTransaction );
    SysLib.connect( a, b, c, d );
    SQLLib.connect( a, b, c, 
        explicit, 
        serializableTransaction );
    SysLib.connect( a, b, c, d, e );
    SQLLib.connect( a, b, c, e, 
        serializableTransaction );
    SysLib.connect( a, b, c, d, e, f );
    SQLLib.connect( a, b, c, e, f );
    SysLib.connect( a, b, c, d, e, f, g );
    SQLLib.connect( a, b, c, e, f, g );
  • 이전 버전에서 반올림 규칙과의 호환성을 유지보수하기 위해 하나의 인수만 포함된 MathLib.round()의 사용이 변경되어 MathLib.assign()을 사용합니다. 두 개의 인수가 포함된 MathLib.round()의 사용은 변경되지 않습니다.
    표 5. MathLib.round() 사용의 변경
    이전 코드 마이그레이션된 코드
    result = round(x); assign(x, result);
    result = round(x, powerOfTen); 변경이 없습니다.
    또한 이전 버전에서 반올림 규칙과의 호환성을 유지보수하기 위해 마이그레이션 도구가 MathLib.assign() 내에서 MathLib의 함수에 대한 호출을 보호합니다.
    표 6. MathLib의 함수 사용의 변경
    이전 코드 마이그레이션된 코드
    result = abs(x); assign(abs(x), result);
    result = pow(x, y); assign(pow(x, y), result);
    이 변경은 다음 함수에 영향을 줍니다.
    • MathLib.abs()
    • MathLib.acos()
    • MathLib.asin()
    • MathLib.atan()
    • MathLib.atan2()
    • MathLib.cos()
    • MathLib.cosh()
    • MathLib.exp()
    • VGLib.floatingDifference()
    • VGLib.floatingMod()
    • VGLib.floatingProduct()
    • VGLib.floatingQuotient()
    • VGLib.floatingSum()
    • MathLib.frexp()
    • MathLib.ldexp()
    • MathLib.log()
    • MathLib.log10()
    • MathLib.max()
    • MathLib.min()
    • MathLib.modf()
    • MathLib.pow()
    • MathLib.sin()
    • MathLib.sinh()
    • MathLib.sqrt()
    • MathLib.tan()
    • MathLib.tanh()
JavaLib 시스템 라이브러리로 캐스팅
이전 버전에서 특정한 JavaLib 함수의 특정한 인수가 소괄호 안의 캐스팅 연산자를 승인할 수 있습니다. 마이그레이션 도구가 이 캐스팅을 변경하여 구문 variable을 "type"으로 사용합니다.
표 7. JavaLib 함수에 있는 캐스트의 변경
이전 코드 마이그레이션된 코드
(byte)myVar myVar as "java:byte"
(objId)myVar myVar as "objId:java"
(null)"java.lang.Integer" null as "java.lang.Integer"
불필요한 변환 함수
마이그레이션 도구가 제거된 변환 함수를 정정합니다. 변환 함수가 수학적 표현식의 파트인 경우 이 도구가 필요한 대로 캐스트를 추가합니다.
표 8. 마이그레이션된 변환 함수
이전 코드 마이그레이션된 코드
result = stringAsInt(x); result = x;
result = stringAsInt(x) + 5; result = x as Int + 5;
result = stringAsFloat(x); result = x;
result = stringAsFloat(x) + 5; result = x as Float + 5;
result = stringAsDecimal(x); result = x;
result = stringAsDecimal(x) + 5; result = x as Decimal() + 5;
stringAsDecimal의 경우, 결과 DECIMAL 유형의 길이를 수동으로 입력해야 합니다.

참조 유형

참조 유형의 초기화
마이그레이션 도구가 초기 크기를 새 어레이로 추가합니다.
표 9. 어레이 초기자(initializer)의 변경
이전 코드 마이그레이션된 코드
newArray string[]; newArray string[0];
또한 마이그레이션 도구가 초기자(initializer) 없이 참조 변수 선언에 초기자(initializer)를 추가합니다.
표 10. 콘솔 양식 초기자(initializer)의 변경
이전 코드 마이그레이션된 코드
newForm consoleFormType; newForm consoleFormType{};
마이그레이션 도구가 이 방법으로 다음 참조 변수를 초기화합니다.
  • ArrayDictionary
  • BLOB
  • CLOB
  • 스테레오타입 consoleForm의 레코드 파트
  • Dictionary
out 수정자와 함께 어레이를 포함하는 함수 정의에서 마이그레이션 도구가 함수의 첫 번째 행에서 new 명령문을 추가하여 어레이를 초기화합니다. 예를 들어, 다음 함수 정의를 가정하십시오.
function doSomething (myParam int[] out)
  ...
end
마이그레이션 도구가 이 함수 정의를 다음 정의로 변경합니다.
function doSomething (myParam int[] out)
  myParam = new int[];
  ...
end
마이그레이션 도구가 out 수정자가 있는 어레이에 대해서만 이 변경을 작성합니다.
참조 유형의 대입 명령문
하나의 참조 변수가 다른 참조 변수에 지정되면 마이그레이션 도구가 대입 명령문 move 명령문으로 변경하여 이전 버전과 일치하는 동작을 유지합니다. 다음 예제에서 array1array2 변수가 어레이입니다.
표 11. 참조 유형에 대한 대입 명령문의 변경
이전 코드 마이그레이션된 코드
array1 = array2;
move array2 to array1;
마이그레이션 도구가 다음 유형의 변수에 대해 이 변경을 작성합니다.
  • Array
  • Dictionary
  • ArrayDictionary
  • Any
  • ConsoleForm 스테레오타입의 레코드 파트
논리 파트 내에 없는 함수인 독립형 함수 파트의 대입 명령문의 경우 마이그레이션 도구가 다음 조건에서 대입 명령문을 move 명령문으로 변경하려고 합니다.
  • 마이그레이션 도구가 대입 명령문의 양쪽을 해석할 수 있는 경우(즉, 대입 명령문의 양쪽에서 변수가 참조 유형에서 작성되는지 판별할 수 있음), 임의의 함수에서 수행한 대로 대입 명령문을 move 명령문으로 변경합니다.
  • 마이그레이션 도구가 대입 명령문의 양쪽을 해석할 수 없는 경우 연관된 마이그레이션 환경 설정이 적용됩니다. 이 경우 마이그레이션 환경 설정이 사용으로 설정되면 이 도구가 위와 같이 대입 명령문을 move 명령문으로 변경합니다. 마이그레이션 환경 설정이 사용 안함으로 설정되면 이 도구가 대입 명령문을 변경하지 않습니다.

널 입력 가능 변수

널값이 포함된 표현식
마이그레이션 도구가 널값이 포함된 표현식을 널값을 허용하는 새 규칙으로 변경합니다. 자세한 정보는 “EGL V7.0에서 시스템 라이브러리 및 변수의 변경”을 참조하십시오.
표 12. 널값이 포함된 표현식의 마이그레이션
이전 코드 마이그레이션된 코드
set myVar NULL; myVar = NULL;
myVar is NULL myVar == NULL
nullable 수정자
마이그레이션 도구가 함수 매개변수의 nullable 수정자의 사용을 sqlNullable로 변경합니다.
itemsNullable 빌드 디스크립터 옵션
환경 설정에 따라, 마이그레이션 도구가 I4GLItemsNullable 특성을 다음 파트에 추가하여 itemsNullable 빌드 디스크립터 옵션을 바꿉니다.
  • 프로그램
  • 핸들러
  • 라이브러리
  • 레코드

기타 명령문

move 명령문
이전 버전에서 move 명령문의 기본 동작을 유지하려면 마이그레이션 도구가 byName 옵션을 두 레코드 또는 양식 변수 간의 move 명령문에 추가합니다.
독립형 함수 내에 있는 명령문의 경우 마이그레이션 도구가 변경을 작성하기 전에 move 명령문의 양쪽에서 변수를 해석합니다.
  • 마이그레이션 도구가 move 명령문의 양쪽을 해석할 수 있는 경우(즉, 명령문 양쪽의 변수가 레코드 또는 양식인지 판별할 수 있음), 임의의 함수에서 수행한 대로 byName을 추가합니다.
  • 마이그레이션 도구가 move 명령문의 양쪽을 해석할 수 없는 경우, withV60Compat을 추가하여 이전 버전과의 호환성을 유지보수합니다.
마이그레이션 도구는 다음 두 가지 경우에만 이 변경을 작성할 수 있습니다.
  • 대입 명령문의 양쪽을 해석할 수 있습니다.
  • 연관된 마이그레이션 환경 설정이 사용으로 설정된 경우입니다.
call, transfershow 구문의 변경
마이그레이션 도구가 이러한 명령문의 사용을 변경하여 해당 새 구문을 준수합니다.
표 13. calltransfer의 변경
이전 코드 마이그레이션된 코드
call xxx 1, 2 
    norefresh 
    externallyDefined;
call "xxx" (1, 2) 
   {IsNoRefresh = yes,
    IsExternal = yes};
transfer to program xxx 
    passing yyy 
    externallyDefined;
transfer to program "xxx" 
    passing yyy 
   {IsExternal = yes};
마이그레이션 도구가 show 명령문과 유사한 변경을 작성합니다.
in 어레이 표현식
마이그레이션 도구가 from을 사용하는 데 어레이와 함께 in을 사용하는 명령문을 변환합니다.
표 14. 어레이가 포함된 in의 변경
이전 코드 마이그레이션된 코드
if ( a in myArray[4] ) if ( a in myArray from 4 )
exit 명령문 변경
프로그램 및 독립형 함수 이외의 논리 파트에서 마이그레이션 도구가 exit program 명령문을 exit rununit으로 변경합니다. 이 도구는 프로그램 또는 독립형 함수 내에서 exit 명령문을 변경하지 않습니다.

서비스

@WSDL@XSD 특성
마이그레이션 도구가 @WSDL 특성을 @XML 특성으로 변환하고 @XSD 특성을 제거합니다. 프로세스에서 도구가 @WSDL 특성의 elementName 특성 필드를 @XML 특성의 name property 특성 필드로 변환합니다. @WSDL 특성의 isLastParamReturnValue 특성 필드를 버립니다.
서비스 및 서비스 바인딩 라이브러리
마이그레이션 도구가 라이브러리 파트에서 serviceBindingLibrary 스테레오타입을 제거합니다.

배치 디스크립터에 웹 서비스 요소를 추가하기 위한 환경 설정이 사용으로 설정되면 마이그레이션 도구가 프로젝트의 EGLSource 폴더에서 EGL 배치 디스크립터를 작성하고 서비스 바인딩 라이브러이의 인터페이스에서 @EGLBinding@WebBinding 특성을 해당 배치 디스크립터의 서비스 바인딩 정보로 변환합니다. 이 도구는 @WebBinding 특성에 지정된 WSDL 파일을 현재 프로젝트의 EGLSource 폴더로 복사합니다.

배치 디스크립터를 프로젝트의 빌드 디스크립터에 추가하기 위한 환경 설정이 사용으로 설정되면 마이그레이션 도구가 deploymentDescriptor 빌드 디스크립터 옵션을 새 배치 디스크립터의 이름으로 설정하는데, 해당 이름이 기본적으로 프로젝트와 동일합니다.

J2EE 배치 디스크립터에서 웹 서비스 참조를 제거하기 위한 환경 설정이 사용으로 설정된 경우 마이그레이션 도구가 해당 참조를 제거합니다.

이 도구는 ServiceLib.getWebEndPointServiceLib.setWebEndPointServiceLib.setWebServiceLocation으로 업데이트합니다.

PageHandler 파트

JSFHandler 파트로 변환
  • 마이그레이션 도구가 JSFHandler 스테레오타입을 사용하여 pageHandler 파트를 Handler 파트로 변경합니다.
  • 이 도구는 pageHandler onPageLoadFunction 특성을 JSF 핸들러 onConstructionFunction 특성으로 변환합니다.
  • 이 도구는 cancelOnPageTransition = YES를 이 특성이 정의되어 있지 않는 모든 pageHandler 파트에 추가합니다.
  • forward to URL 명령문 및 action 특성에서, 이 도구는 확장자가 .jsp인 페이지의 링크를 .faces로 변경합니다. forward to URL 명령문에서, 이 도구는 forward to URL 명령문의 대상이 .jsp로 끝나는 인용 문자열인 경우에만 이 변경을 작성합니다. action 특성의 사용에서, 이 도구는 displayUse 특성이 hyperlink로 설정되고 action 특성이 .jsp로 끝나는 인용 문자열인 경우에만 이 변경을 작성합니다. JSP 파일의 자세한 정보 파일 확장자는 “서버에서 웹 페이지 실행”을 참조하십시오. 다음 표는 이러한 변경의 예제를 포함합니다.
    표 15. pageHandlers에 있는 링크의 변경
    이전 코드 마이그레이션된 코드
    myLink string
     {displayUse = hyperlink,
      action="myPage.jsp"};
    myLink string
     {displayUse = hyperlink,
      action="myPage.faces"};
    forward to URL "myPage.jsp";
    forward to URL "myPage.faces";
  • 이 도구는 value 특성을 초기화 명령문으로 변환합니다. 변수에 value 특성 및 초기화 명령문이 둘 다 있는 경우 마이그레이션 도구가 다음 예제의 경우와 같이 value 특성의 값을 사용합니다.
    표 16. PageHandler 파트의 변수에서 value 특성의 변경
    이전 코드 마이그레이션된 코드
    item1 string 
        { value = "item1ValueProp" } 
        = "item1Initializer";
    item1 string 
        {} = "item1ValueProp";
    item2 string 
        { value = "item3ValueProp" };    
    item2 string 
        {} = "item3ValueProp";
  • 일부의 경우 마이그레이션 도구가 변수 또는 핸들러 이름의 밑줄 문자를 _005f로 변환합니다.
JSP 파일
마이그레이션 도구가 pageHandler 파트와 연관된 JSP 파일을 변경하여 JSF 핸들러에서 변수에 대한 참조를 업데이트합니다. 이 도구는 JSP 파일을 마이그레이션하는 동시에 pageHandler 파트를 마이그레이션하는 경우에만 이러한 변경을 작성합니다. 이러한 변경은 마이그레이션 도구가 pageHandler 파트를 JSF 핸들러로 마이그레이션할 때 발생하는 변경에 추가됩니다.
  • <h:selectOneMenu> 등의 JSF 태그 및 해당 태그 내부에서 임의의 <h:selectItems> 또는 <h:selectItem> 태그의 경우, 마이그레이션 도구가 value 속성을 업데이트하여 EGL 접두부 및 임의의 접미부(예: AsBoolean)를 제거합니다. 결과 값 속성이 JSF 핸들러에서 변수를 올바르게 참조하는 경우 이 도구가 변경사항을 저장합니다.
    예를 들어, 이 <h:selectOneMenu> 태그를 가정하십시오.
    <h:selectOneMenu styleClass="selectOneMenu" id="menu1" 
      value="#{myPage.EGLmyComboBoxValue}">
      <f:selectItems value="#{myPage.EGLmyComboBoxChoicesAsBoolean}"/>
    </h:selectOneMenu>
    마이그레이션 도구가 이 태그를 변환합니다.
    <h:selectOneMenu styleClass="selectOneMenu" id="menu1" 
      value="#{myPage.myComboBoxValue}">
      <f:selectItems value="#{myPage.myComboBoxChoices}"/>
    </h:selectOneMenu>
    마이그레이션 도구가 이러한 태그에 대해 이 변경을 작성합니다.
    • <h:selectManyCheckboxlist>
    • <h:selectManyListbox>
    • <h:selectManyMenu>
    • <h:selectOneListbox>
    • <h:selectOneMenu>
    • <h:selectOneRadio>
    또한 이러한 태그 내에서 <f:selectItems><f:selectItem>에 대해 변경을 작성합니다.
    마이그레이션 도구가 이러한 접미부를 제거합니다.
    • AsBoolean
    • AsInteger
    • AsIntegerArray
    • AsReader
    • AsSelectItemsList
    • AsStream
    연관된 EGL 변수가 어레이 또는 데이터 테이블 열이고 selectFromListItemselectType 특성이 설정된 경우 마이그레이션 도구가 value 필드를 추가로 변경합니다.
    • selectType 특성이 index로 설정되면, 마이그레이션 도구가 접미부 _exeIdx.toArray를 추가합니다.
    • selectType 특성이 value로 설정되면, 마이그레이션 도구가 접미부 .toArray를 추가합니다.
  • 마찬가지로, 마이그레이션 도구는 value 속성이 JSF 핸들러의 EGL 변수에 대해 표준 표현식 양식에 있는 경우 페이지에서 기타 태그의 value 속성에서 AsBoolean 등의 EGL 접두부 및 접미부를 제거합니다. #{beanName.variableName}. 또한, 이러한 경우 이 도구는 다음 값을 사용하여 binding 속성을 추가합니다.
    #{beanName.variableName_Ref}
    여기서 beanName은 페이지 Bean의 이름이고(기본적으로 JSF 핸들러와 동일한 이름) variableNamevalue 속성에서 참조되는 변수의 이름입니다.
  • 마이그레이션 도구는 JSF 명령 단추의 해당 항목 등 actionListener 속성이 포함된 모든 태그를 업데이트합니다. 이는 #{beanName.commandActionListener}#{beanName._commandActionListener}로 변경합니다.
  • #{beanName.variableName}의 양식에서 표현식을 포함하는 기타 JSF 속성의 경우 마이그레이션 도구가 이전 목록에서 AsBoolean 또는 AsInteger 등의 EGL 접두부 및 접미부를 제거합니다.

기타 파트

ConsoleForms
ConsoleForm 파트가 현재 생성 가능한 파트이므로 마이그레이션 도구가 각 ConsoleForm에서 해당 이름이 해당 파일의 이름과 일치하는지 확인합니다. 파일 이름이 일치하지 않고 파일 이름이 사용되고 있지 않으면, 이 도구가 ConsoleForm의 이름으로 새 파일을 작성하고 모든 필요한 import 명령문과 함께 ConsoleForm 파트를 해당 새 파일로 옮깁니다. 파일 이름이 사용되고 있는 경우, 마이그레이션 도구가 변경을 작성하지 않고 사용자는 그에 따라 ConsoleForm 파트를 정정해야 합니다.
인터페이스 파트
마이그레이션 도구가 인터페이스 파트에서 BasicInterface 스테레오타입을 제거합니다. 이는 또한 JavaObject 스테레오타입이 포함된 모든 인터페이스 파트를 ExternalType 파트로 변환합니다.
VGUIRecord 파트
마이그레이션 도구가 VGUIRecords에서 다음 특성을 설정합니다.
v60ExceptionCompatibility = YES, 
HandleHardIOErrors = NO, 
ThrowNrfEofExceptions = YES

피드백