Dizin değişkeninin bir dizi dizinine erişmek için kullanıldığı ve dizi dizininin aralığını aştığı FOR deyimlerini algılar
Gerekçe: Diziler tipik olarak FOR döngülerinde işlenir. Sayaç değişkeninin başlangıç ve bitiş değerleri tipik olarak
dizinin üst ve alt sınırlarıyla eşleşmelidir (veya en azından bu sınırları aşmamalıdır).
Burada tipik bir hata nedeni, dizi sınırları değiştirildiğinde ve sabitler dikkatli
kullanılmadığında veya FOR döngüsünde yanlışlıkla dizi bildirimindekinden farklı bir değer kullanıldığında tespit
edilir.
Önemliymiş: Yüksek
Örnek
PROGRAM PLC_PRG VAR iIndex1,iIndex2,iIndex3 : INT; arWord : ARRAY[1..100] OF WORD; arararINT : ARRAY[1..9,1..9,1..9] OF INT; arUSINT : ARRAY[0..99] OF USINT; END_VAR //1 violation of the rule(lower range is exeeded): SA0080 FOR iIndex1 := INT#0 TO INT#100 DO arWord[iIndex1] := INT_TO_WORD(iIndex1); END_FOR //6 violations (lower and upper range is exceeded for each array dimension): 3SA0080 FOR iIndex2 := INT#0 TO INT#10 DO arararINT[iIndex2, iIndex2, iIndex2] := iIndex2; END_FOR //1 violation (upper range is exceeded by the end result of the index), previous expressions on index are not evaluated -> OK FOR iIndex3 := INT#0 TO INT#50 DO arUSINT[iIndex3 * INT#2] := INT_TO_USINT(iIndex3); END_FOR --> SA0080: Loop index range of 'Index1' exceeds array range --> SA0080: Loop index range of 'Index2' exceeds array range
Ayrıca bakınız