Skip to main content

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érateur

  • Au moyen de REF=

Exception : Aucune erreur n'est signalée si la sortie est utilisée dans le même bloc fonction.

Importance : Moyenne

Exemple 128. Exemple

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:

  • sa_icon_message.png SA0170 : Ne doit pas prendre l'adresse d'une variable de sortie