2017-03-08 2 views
0

저는 RedHat6에서 COBOL을 사용하고 있습니다. 반 폭이라면 변수의 모든 자릿수를 확인하고 싶습니다. -> 계속, 기타 -> 디스플레이 오류. 기본적으로 EVALUATE 문의 WHEN 절에 모든 반자 문자를 나열합니다. 이렇게 :COBOL에서 반각 가타카나 문자 확인

PERFORM VARYING WK-IX FROM 1 BY 1 UNTIL WK-IX > WK-LENGTH 
    EVALUATE WK-FORMAT-CHK-VALUE(WK-IX:1) 
     WHEN 'A' 
     WHEN 'B' 
     WHEN 'C' 
      CONTINUE 
     WHEN OTHER 
      DISPLAY 'ERROR' 
    END-EVALUATE 
END-PERFORM. 

모든 것이 정상이지만 컴파일 할 때 나는 반자 가형 문자에 문제가 있습니다. 그것은 말했다 : "리터럴의 끝 인용 부호가 누락되었습니다. 영역 B의 끝에있는 문자는 리터럴로 간주됩니다"모든 문자는 다음 문자를 검사합니다.

툴 테니 니누 네노 하히フ ヘ ホ マ ミ モ メ モ ヤ ユ ヨ ラ ル ル レ ロ ワ ヲ ン

코드 줄이없는 것은 분명하지만 끝 인용 부호가 누락되었습니다. 이처럼 :

WHEN 'ツ' 
WHEN 'テ' 
WHEN 'ト' 

그러나이 문자는 OK 내가 모르는 이유 :

ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ

사람이 할 수있는 도와주세요? 부디! 나쁜 영어로 죄송합니다!

+1

해당 문자는 "멀티 바이트"입니다. 당신은 당신의 문서를 보았습니까? 확인하려는 필드의 정의는 무엇입니까? –

+0

내가 조사하고있는 필드는 X 타입이고, 내 문서에는 X : 半角 英 数 文字라고되어 있습니다. 일본어는 모릅니다. 따라서 Google에서 번역을 사용합니다. 의미 : 반각 영숫자. 문자가 반각인지 확인하려면 영문자, 숫자 및 히라가나, 가타 카나 (일본어 알파벳)를 확인해야합니다 – tieuquynd

+1

사용하는 컴파일러에 대해 언급하지 않았습니다. 동료가 있습니까? 그들은 무엇을 말합니까? "작동하지 않음"목록이 "작업"목록에서 동일하게 보입니다. Typo? –

답변

1

가타카나 문자 집합이 멀티 바이트 문자 집합으로 간주되므로 (Bill Woodger에서 언급 한 바와 같이) NSYMBOL 및 DBCS 컴파일 옵션이 활성화되어 있어야합니다. 그 후, 당신은 다음과 같이 리터럴을 정의 할 수 있어야한다 : 같은 멀티 바이트로

EVALUATE WK-FORMAT-CHK-VALUE(WK-IX:1)  
    WHEN N'ツ' 
    WHEN N'テ' 
    WHEN N'ト' 
     do something 
    WHEN OTHER 
     do something else 
END-EVALUATE 

N이 국민 문자 프로그램을 말할 것이다.

평가 절 입력은 PIC X 대신 PIC N으로 정의해야합니다. PIC X 필드는 2 바이트 문자를 인식하지 못합니다.

+0

1 바이트 문자는 1 바이트이고 멀티 구매 문자는 2 바이트입니다. 맞습니까? 일본어로 문자를 입력하는 두 가지 방법 (반자와 전각)이 있기 때문입니다. 내가 검사 한 문자는 1 바이트 문자입니다. 1 바이트 : 아이오와 오카키 쿠코 사스 세쏘 타치 츠 테토 나니 누 노노 히 히프 헤 호마 미모 메 모야 유라 릴 레로와ヲ ン ......... 2 바이트 : 아이 우오 오카 키쿠 케코 사 시스 세쏘 타치 츠 테토 나니 누 노노 히 히프 헤 호마 미모 메 모야 유라 릴 레로와ヲ ン – tieuquynd

+0

멀티 바이트는 하나 이상을 의미합니다. 내 경험상, 그들은 일반적으로 2 바이트이지만 2 바이트가 넘지 않도록 막는 것이 없습니다. 이 문자는 EBCDIC 코드 시트 외부에 있기 때문에 여전히 국가 문자를 사용해야 할 것입니다. 그것들이 싱글 바이트 문자인지 어떻게 알 수 있습니까? UTF-16에서 예를 들어 é 문자는 2 바이트입니다. PIC N 시도해보기 나는 그것이 작동 할 것이라고 확신한다. – SaggingRufus