안녕하세요.
스페이스 관련 질문입니다.
△ = 스페이스
질문) ALV화면 출력
변수 A = '안녕하세요'
CONCATENATE `△△` A
INTO C
SEPARATED BY space.
원하는 결과값 변수 C = '△△안녕하세요'
원하는 화면표시 -> △△안녕하세요.
이렇게 맨앞 스페이스가 들어가도록 하려고 하는데 안됩니다.
어떻게 해야 할까요?
댓글 6
-
초보아밥퍼
2010.12.18 00:11
-
고구마
2010.12.18 00:17
답변 감사합니다.
1byte인 스페이스를 굳이 쓰고싶다면.. 방법이 없을까요?
-
특정단어
2010.12.18 01:02
^^ 굳이 쓰고 싶으시다면..
고구마님 소스 중에, concatenate 부분을
CONCATENATE space A INTO b SEPARATED BY space.
이렇게 써주시기만 해도 ' 안녕하세요'가 됩니다.
물론 CONCATENATE space space A INTO b SEPARATED BY space.
이렇게 하면 ' 안녕하세요'가 되지요.
아니면.. 이것도 함 테스트 해보세요.
C 언어의 shift 연산 비스무레한 건데요..
특히 변수 a와 b가 어떻게 바뀌는 지 잘 관찰하셔야 됩니다. 원래 선언된 변수의 사이즈가 다르거든요.
DATA a(6) VALUE 'AAAAA'.
DATA b(5) VALUE 'AAAAA'.
SHIFT a BY 1 PLACES RIGHT IN CHARACTER MODE.
SHIFT b BY 1 PLACES RIGHT IN CHARACTER MODE. -
특정단어
2010.12.18 01:05
아. 요즘 대개 유니코드 환경이기 때문에 한 글자 = 1 byte 라는 고정관념은 버리셔야 될 듯 하네요.
그래서 SHIFT 키워드도 그런 이유로 IN CHARACTER MODE/IN BYTE MODE 두 가지 옵션을 제공하고 있습니다.
-
맑은하늘
2010.12.18 01:46
이유를 정확히 모르겠지만, ALV 셀에서 선행 공백을 모두 없애는 것 같아요.
이리저리 해봐도 잘 안되네요. ^^; 방법을 찾으면 댓글 다시 드리겠습니다.
-
고구마
2010.12.21 19:31
감사합니다. 다른 방법이 안되어서 초보아밥퍼님 말씀대로 특수문자 사용했습니다.
정 스페이스가 필요 하시다면
`△△` -> ' ' 부분에 ㄱ + 한자키 -> 1번의 빈데이터를 넣어서 처리하시면 되겠네요.