0
첫 번째 코드는 작동하는 것처럼 보이지만 두 번째 코드는 로그에 배열에 대한 잘못된 참조가 있다는 것입니다. 이전 분기 값을 재정의하지 않고 별도의 변수 인 특정 분기에 새 값을 할당하려고합니다. 따라서 두 번째 예는 특정 ID
에 대한 값을 변경하지만 QR3
~ QR10
에 대해서만 값을 변경합니다. 둘째배열에 대한 잘못된 참조
data comb_new;
set comb_new;
array DQR(10) QR1-QR10;
do i = 1 to 10;
if id = "071800" then DQR(i) = 6;
end;
drop i;
run;
:
data comb_new;
set comb_new;
array p3t (8) QR3-QR10;
do i = 1 to 8;
if id = "141956" then p3t(i) = 6;
end;
if id = "461818" then p3t(i) = 6;
end;
if id = "261808" then p3t(i) = 6;
end;
if id = "261893" then p3t(i) = 6;
end;
if id = "261894" then p3t(i) = 6;
end;
if id = "011936" then p3t(i) = 6;
end;
if id = "141854" then p3t(i) = 6;
end;
if id = "061883" then p3t(i) = 6;
end;
drop i;
run;
코드에는 많은 오류가 있지만 그 오류는 없어야합니다. END가 너무 많아 마지막 항목을 제외한 모든 항목을 제거하십시오. 'end'는'do' 루프를 종료합니다. if 문과는 아무런 관련이 없습니다. – Joe
그 오류가 발생하는 이유는 첫 번째 끝에서 do 루프가 종료되기 때문입니다. 루프의 끝에서 'i'는 배열 외부의 9와 동일합니다. 그런 다음 값을'p3t [9]'에 할당하려고 시도하는데, 이것은 나쁘다. @ 조이 맞습니다. 'end;'문제를 고쳤습니다. – DomPazz
잘못된 참조는 배열이 올바르게 사용되지 않았 음을 의미합니다 (대개 괄호 선택을 생략 함). 그럴 경우 Array Subscript Out of Bounds 오류가 발생합니다. 'data _null_; 배열 x [5]; x [6] = 3; 예를 들어, 실행; 이 에러는'data _null_; 배열 x [5]; x = 3; 실행; – Joe