Skip to main content

SA0170: Adresse einer Ausgabevariablen sollte nicht verwendet werden

Ermittelt Codestellen, in denen die Adresse einer Ausgabevariablen (VAR_OUTPUT, VAR_IN_OUT) eines Funktionsbausteins verwendet wird.

Begründung; Es ist nicht erlaubt, in folgender Weise die Adresse eines Funktionsbausteinausgangs zu verwenden:

  • via ADR-Operator

  • via REF=

Ausnahme: Kein Fehler wird gemeldet, wenn die Ausgabevariable innerhalb desselben Funktionsbausteins verwendet wird.

Wichtigkeit: Mittel

Beispiel 128. Beispiel

Funktionsbaustein FB1 hat die VAR_OUTPUT-Variable iOutVal : INT;

Folgende Zugriffe in einem anderen Baustein erzeugen den Fehler SA0170:

//FB1_inst is of type FB1
addr1 := ADR(FB1_inst.iOutVal);    //SA0170
refINT REF= FB1_inst.iOutVal;    //SA0179

Folgender Zugriff direkt innerhalb des Funktionsbausteins FB1 erzeugt ebenfalls den Fehler:

//other is a POINTER TO FB1
ptr := ADR(other^.iOutVal);    //SA0170

Folgende Zugriffe direkt innerhalb des Funktionsbausteins FB1 erzeugen keine Fehler:

//iInputVal is a VAR_INPUT of FB1
iOutVal := iInputVal; 
//ptr is a POINTER TO INT
ptr := ADR(THIS^.iOutVal); 
ptr := ADR(iOutVal);

Ausgabe unter Ansicht Meldungen:

  • sa_icon_message.png SA0170: Sollte nicht die Adresse einer Ausgabevariablen annehmen