Ved behov for å aksessere en variabel via flere datatyper kan strukturtypen UNION være nyttig. I motsetning til strukturtypen STRUCT, der hvert strukturmedlem okkuperer sin egen/separate minneplass, okkuperer UNION medlemmene samme/felles minneplass. I eksempelet nedenfor okkuperer altså UNION strukturen totalt 4 byte, ettersom den største strukturmedlemmen er 4 byte stor:
-----------------------------------------------------------------
typ unMixType :
UNION
{
dwVar: DWORD;
rVar: REAL;
awVar: ARRAY[1..2] OF WORD;
abVar: ARRAY[1..4] OF BYTE;
}
END_UNION
END_TYPE
-----------------------------------------------------------------
VAR
unDatapoint: unMixType;
wTmpVar: WORD;
rDatapoint: REAL;
dwMobusDatapoint: DWORD;
END_VAR
-----------------------------------------------------------------
(* Eksempel på omorganisering av byte plasseringen i en UNION instans *)
unDatapoint.dwVar := dwMobusDatapoint;
wTmpVar := unDatapoint.awVar[1];
unDatapoint.awVar[1] := unDatapoint.awVar[2];
unDatapoint.awVar[2] := wTmpVar;
rDatapoint := unDatapoint.rVar;
-----------------------------------------------------------------
Comments