SA0077: 列挙型が一致しません CASE 表現
aが当てはまるコード位置を検出します CASE ステートメントは列挙値と非列挙型を混在させます。
理由:CASE 構文に列挙値と整数値を混在させると、データ型の安全性が損なわれ、コードの可読性が低下し、保守性に影響します。列挙値によって意味が明確になります。未処理の整数値を使用すると、軽微なエラーが発生するリスクがあり、コードが理解しにくくなります。列挙のデータ型が変更されると、整数ベースの分岐が壊れてしまい、見過ごされてしまうこともあります
重要度:低
例 84. 例
{attribute 'qualified_only'}
{attribute 'strict'}
TYPE DUT_MyEnum :
(
One := 1,
Two := 2,
Three := 3,
Four := 4
);
END_TYPEPROGRAM PRG_Case VAR diVar : DINT; xTemp : BOOL; eMyEnum : DUT_MyEnum; END_VAR
CASE diVar OF
1 :
xTemp := FALSE;
DUT_MyEnum.Two : // SA0077
xTemp := TRUE;
ELSE
xTemp := NOT xTemp;
END_CASE
CASE eMyEnum OF
1 : // SA0077
xTemp := FALSE;
DUT_MyEnum.Two:
xTemp := TRUE;
ELSE
xTemp := NOT xTemp;
END_CASEでの出力 メッセージ ビュー:
SA0077: CASE 式と型が一致しません