커뮤니티

도데체 뭐가 잘못된건지???

프로필 이미지
트래블점퍼
2011-07-14 14:54:54
665
글번호 40896
답변완료

첨부 이미지

안녕하십니까? 이해가 잘 안가는 현상이 생겨서 문의 드립니다. 너무 간단한 부분이라 본문에 code와 결과를 같이 담습니다. 스크린 캡쳐 화면은 첨부화일로 보냅니다. if R01<>0 and R02==0 then { if date==20090115 then messagelog("RefCount1_1 %.2f, R01T[RefCount1] %.2f, R01T[13] %.2f", RefCount1,R01T[RefCount1],R01T[13]); RefCount1=abs(R01-int(R01))*100; if date==20090115 then messagelog("RefCount1_2 %.2f, R01T[RefCount1] %.2f, R01T[13] %.2f", RefCount1,R01T[RefCount1],R01T[13]); Ref03=R01T[RefCount1]; if date==20090115 then messagelog("RefCount1_3 %.2f, R01T[RefCount1] %.2f, R01T[13] %.2f", RefCount1,R01T[RefCount1],R01T[13]); } 위에서 RefCount1이라는 변수를 Check Point 1,2,3 세군데서 확인하고 이에 따른 array 변수의 값을 봤습니다. Check Point 1에서는 RefCount1=0, RT01[13]=-1.00의 값을 갖습니다. 그런데 Check Point 2 이하에서는 RefCount1=13 이어도 RT01[RefCount1]=-0.82가 나옵니다. 이 때 RT01[13]의 값은 여전히 -1.00 입니다. RefCount1 값에 int 함수를 씌워보기도 했지만 마찬가지였고, 또 RefCount1 값이 1에서 12까지는 정상적으로 작동했습니다. 뭐가 문제일 수 있을까요? 다른 부분도 확인해봤는데 같은 증상이 또 있습니다. 결국 문제는 var1=수식에 의한 13 일때 R01T[var1] 과 R01T[13] 이 다른 값을 갖는다는 것입니다. 스샷3,4는 비슷한 증상을 보이는 것입니다. Ref_ANum이라는 변수는 배열값이 variable로 13일때와 상수로 13일때와 다릅니다.
검색
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2011-07-14 15:43:28

안녕하세요 예스스탁입니다. 해당 내용은 RefCount1=abs(R01-int(R01))*100; 계산값을 살펴보셔야 할 것 같습니다. 예스랭귀지는 소숫점이 거의 제한없이 있으므로 굉장히 낮은 수숫자리에 0이 아닌값이 있고 int로 쒸우셔도 이런 내용이 발생할 수 있습니다. RefCount1= Round(abs(R01-int(R01))*100,0); 과 같이 수숫점 1자리에 반올림하여 정수값으로만 이용하는식으로 변경하셔도 됩니다. 위 내용으로 하셔도 해당 사항이 발생하시면 02-3453-1060으로 전화주시기 바랍니다. 즐거운 하루되세요 > 트래블점퍼 님이 쓴 글입니다. > 제목 : 도데체 뭐가 잘못된건지??? > 안녕하십니까? 이해가 잘 안가는 현상이 생겨서 문의 드립니다. 너무 간단한 부분이라 본문에 code와 결과를 같이 담습니다. 스크린 캡쳐 화면은 첨부화일로 보냅니다. if R01<>0 and R02==0 then { if date==20090115 then messagelog("RefCount1_1 %.2f, R01T[RefCount1] %.2f, R01T[13] %.2f", RefCount1,R01T[RefCount1],R01T[13]); RefCount1=abs(R01-int(R01))*100; if date==20090115 then messagelog("RefCount1_2 %.2f, R01T[RefCount1] %.2f, R01T[13] %.2f", RefCount1,R01T[RefCount1],R01T[13]); Ref03=R01T[RefCount1]; if date==20090115 then messagelog("RefCount1_3 %.2f, R01T[RefCount1] %.2f, R01T[13] %.2f", RefCount1,R01T[RefCount1],R01T[13]); } 위에서 RefCount1이라는 변수를 Check Point 1,2,3 세군데서 확인하고 이에 따른 array 변수의 값을 봤습니다. Check Point 1에서는 RefCount1=0, RT01[13]=-1.00의 값을 갖습니다. 그런데 Check Point 2 이하에서는 RefCount1=13 이어도 RT01[RefCount1]=-0.82가 나옵니다. 이 때 RT01[13]의 값은 여전히 -1.00 입니다. RefCount1 값에 int 함수를 씌워보기도 했지만 마찬가지였고, 또 RefCount1 값이 1에서 12까지는 정상적으로 작동했습니다. 뭐가 문제일 수 있을까요? 다른 부분도 확인해봤는데 같은 증상이 또 있습니다. 결국 문제는 var1=수식에 의한 13 일때 R01T[var1] 과 R01T[13] 이 다른 값을 갖는다는 것입니다. 스샷3,4는 비슷한 증상을 보이는 것입니다. Ref_ANum이라는 변수는 배열값이 variable로 13일때와 상수로 13일때와 다릅니다.