v60NumWithCharBehavior

v60NumWithCharBehavior 빌드 디스크립터 옵션은 EGL이 지정 및 비교에서 NUM 유형을 처리하는 방법에 영향을 미칩니다.

버전 7부터 EGL은 CHAR에 대한 지정 또는 비교에서 다른 숫자 유형을 처리하는 것과 동일한 방식으로 NUM 유형을 처리합니다.

v60NumWithCharBehavior 빌드 디스크립터 옵션이 YES로 설정되면 EGL은 이전 버전 및 VisualAge® Generator에서 수행한 방식으로 NUM 유형 변수를 처리합니다. 동작 차이는 미묘하고 복잡하므로 VisualAge Generator를 에뮬레이트해야 하는 경우에만 이 옵션을 YES로 설정해야 합니다. 자세한 정보는 이 주제에 있는 예제를 참조하십시오.

VisualAge Generator와 버전 6.0은 데이터 이동 및 지정 시 생성된 COBOL 프로그램에 대한 동작이 다릅니다. VisualAge Generator는 숫자 값의 부호를 이동하거나 지정하기 전에 해당 부호를 변경하지 않았지만 버전 6.0에서는 변경했습니다. 다시 말하면 VisualAge Generator는 수정 없이 바이트 이동을 수행했지만 버전 6.0은 해당 부호를 표시 가능한 NUM 값으로 설정한 후에만 바이트 이동을 수행합니다. 대부분의 경우 이 차이는 인지되지 않지만 높은 순위의 니블에 16진 C(x'Cx')가 포함된 바이트가 NUM 필드에 포함되어 있으면 이동에 영향을 미칠 수 있습니다. 따라서 원하는 결과가 VisualAge Generator의 동작을 완전히 에뮬레이트하는 것일 경우에는 추가적인 기호 매개변수 VAGNUMWITHCHARBEHAVIOR의 값도 YES로 설정해야 합니다.

v60NumWithCharBehavior 옵션은 spacesZeroblanksAsZero 등의 다른 빌드 디스크립터 옵션의 동작에 영향을 미칠 수 있습니다. 자세한 정보는 spacesZeroblanksAsZero의 내용을 참조하십시오.

NO
EGL은 다른 숫자 유형과 동일한 방식으로 NUM 유형을 처리해야 합니다.
YES
EGL은 VisualAge Generator에서 처리한 방식으로 NUM 유형을 처리해야 합니다.

기본값

v60NumWithCharBehavior의 기본값은 vagCompatibility 빌드 디스크립터 옵션에 따라 다릅니다.
  • vagCompatibility가 YES로 설정되면 v60NumWithCharBehavior의 기본값이 YES입니다.
  • vagCompatibility가 NO로 설정되면 v60NumWithCharBehavior의 기본값이 NO입니다.

수동으로 옵션 설정

대부분의 경우에는 v60NumWithCharBehavior 빌드 디스크립터 옵션을 수동으로 설정할 필요가 없습니다.

  • VisualAge Generator에서 마이그레이션한 경우에는 vagCompatibility가 YES로 설정되면 v60NumWithCharBehavior 옵션이 자동으로 YES로 설정되므로 이 옵션을 수동으로 설정하지 않아도 됩니다.
  • VisualAge Generator에서 마이그레이션하지 않은 경우에는 vagCompatibility가 NO로 설정되면 v60NumWithCharBehavior 옵션이 자동으로 NO로 설정되므로 이 옵션을 수동으로 설정하지 않아도 됩니다.
  • vagCompatibility 작업공간 환경 설정이 YES로 설정되는 새 애플리케이션을 작성하지만 기본 VisualAge Generator 동작을 상속하지 않으려는 경우에는 v60NumWithCharBehaviorvagCompatibility 빌드 디스크립터 옵션을 NO로 명시적으로 설정해야 합니다.

예제

v60NumWithCharBehavior가 YES로 설정되는 경우에는 다음과 같은 비교를 작성할 수 있습니다.
if( "2009-03-26" > 0)
  ...
end

비교를 위해 0이 "0"으로 변환됩니다. 버전 7 동작에서는 0이 숫자이므로 "2009-03-26"이 올바르지 않은 숫자이기 때문에 비교에 실패합니다.

v60NumWithCharBehavior가 YES로 설정되면 EGL은 바이트 이동을 사용하여 NUM을 CHAR에 지정합니다.
num_var NUM = -4;
char_var CHAR(1);

char_var = num_var; // value of char_var is 't'
char_var의 값은 다음과 같습니다.
  • + 't' (x'74')(디버거 및 Java™ 생성에서)
  • + 'M'(x'D4')(생성된 COBOL에서)
이 값은 ASCII 및 EBCDIC에서 음수가 표시되는 방식의 차이를 반영합니다.

버전 7 동작에서 char_var의 값은 -4입니다.