SA0077: 列挙型が一致しません CASE
表現
aが当てはまるコード位置を検出します CASE
ステートメントは列挙値と非列挙型を混在させます。
理由:CASE 構文に列挙値と整数値を混在させると、データ型の安全性が損なわれ、コードの可読性が低下し、保守性に影響します。列挙値によって意味が明確になります。未処理の整数値を使用すると、軽微なエラーが発生するリスクがあり、コードが理解しにくくなります。列挙のデータ型が変更されると、整数ベースの分岐が壊れてしまい、見過ごされてしまうこともあります
重要度:低
例 84. 例
{attribute 'qualified_only'} {attribute 'strict'} TYPE DUT_MyEnum : ( One := 1, Two := 2, Three := 3, Four := 4 ); END_TYPE
PROGRAM 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 式と型が一致しません