밑에 글 썻던 사람인데, 감사하게도 도와주셔서 어찌저찌 해결은 됬는데 다음이 또문제네요. 교재 예시대로 했는데 왜 자꾸만 오류가 뜨는지....
DATA: gv_val1 TYPE i value 6,
gv_val2 TYPE i VALUE 5,
gv_lo TYPE i VALUE 1,
gv_hi TYPE i VALUE 1.
data : gv_str type string,
abs TYPE i VALUE 1.
IF abs( gv_val1 ) > gv_val2.
WRITE: '크다'.
ELSEIF charlen( gv_str ) BETWEEN gv_lo AND gv_hi.
WRITE: '모르겠다'.
ENDIF.
IF gv_val1 * -2 >= ( gv_val2 - 3 ) * 6.
WRITE: '크거나 같다'.
ELSEIF sqrt( abs( gv_val1 ) ) / 3 + 7 GT
ipow( base = 2 exp = 3 ).
WRITE: '비슷해'.
ENDIF.
IF 'lit1' && gv_str CA 'abc'.
WRITE: 'abc'.
ENDIF.
위와 같이 코드 작성했고, 수정을 30번은 했는데 모르겠어요.
오류는 없는데 실행하면 if 맨위에만 실행이 됩니다...
댓글 6
-
DDe8Lc
2024.04.04 21:18
-
대생힘들다
2024.04.05 03:07
게산 됬을때 크다는 나오는데 그 밑에것들이 좀 헷갈려요...
-
대생힘들다
2024.04.05 04:37
그 너무너무 죄송합니다. 글 수정이 안돼서 댓글로 말씀 드리자면 마지막 if문이 실행이 되지 않아서요,,,
어떻게 해도 되지를 않아서 조금만 알려주시면 안될까요?? 정말 죄송합니다
-
대생힘들다
2024.04.05 05:11
이렇게 작성했는데 마지막 if조건문이 어떻게 해야 수행되는지 모르겠어요..
-
전통주막
2024.04.05 16:49
마지막 if 문에서 && 연산자는 "lit1" 문자열과 gv_str 변수의 값을 연걸합니다.
그리고 CA 연산자는 Contains Any로 'abc' 중 하나라도 포함하면 true 입니다.
if 문을 다시 보면 'lit1' && gv_str의 결과값에는 'abc' 중 포함되는 문자가 하나도 없습니다.
그래서 마지막 if 문을 실행하지 않는 것이구요.
아래 소스처럼 실행해 보시죠. 그리고 키워드에 F1 키를 누르면 관련된 설명을 찾을 수 있으니 참고해보시는 것도 좋을 것 같습니다.
gv_str = 'a'.
IF 'lit1' && gv_str CA 'abc'.
write: 'abc'.
endif.
-
eugene
2024.04.05 22:13
data : gv_str type string,
abs TYPE i VALUE 1.IF 'lit1' && gv_str CA 'abc'.
WRITE: 'abc'.
ENDIF.만 본다면
우선, gv_str 은 선언시 VALUE 를 지정해주지 않았기때문에 초기값이 initial(빈값) 입니다
따라서 조건문의 > 'lit1' && gv_str < 이 부분의 결과 값은 lit1 이 됩니다
윗 분 말씀대로 CA 는 문자 중 하나라도 포함하는 연산자이고,
따라서 lit1 문자에선 abc 중 포함하는 문자가 없기 때문에 해당 조건을 만족하지 않습니다.
if 조건에 있는 수식이 계산 됐을 때 어떤 값이 나올지를 생각해 보세요