SA0170 : L'adresse d'une variable de sortie ne doit pas être utilisée
Détecte les emplacements de code où l'adresse d'une variable de sortie (VAR_OUTPUT
, VAR_IN_OUT
) d'un bloc fonctionnel est utilisé.
Justification : Il n'est pas permis d'utiliser l'adresse d'une sortie d'un bloc fonction de la manière suivante :
passant par
ADR
-OpérateurAu moyen de
REF=
Exception : Aucune erreur n'est signalée si la sortie est utilisée dans le même bloc fonction.
Importance : Moyenne
Bloc fonctionnel FB1
a la VAR_OUTPUT
variable iOutVal : INT;
Les accès suivants dans un autre bloc génèrent l'erreur SA0170 :
//FB1_inst is of type FB1 addr1 := ADR(FB1_inst.iOutVal); //SA0170 refINT REF= FB1_inst.iOutVal; //SA0179
Accès ultérieur directement dans le bloc fonctionnel FB1
produit également l'erreur :
//other is a POINTER TO FB1 ptr := ADR(other^.iOutVal); //SA0170
Les accès suivants directement dans le bloc fonction FB1
produire aucune erreur :
//iInputVal is a VAR_INPUT of FB1 iOutVal := iInputVal; //ptr is a POINTER TO INT ptr := ADR(THIS^.iOutVal); ptr := ADR(iOutVal);
Sortie dans le messages voir:
SA0170 : Ne doit pas prendre l'adresse d'une variable de sortie