type My_Modular is mod 256;
みたいなやつ。この場合、取り得る値の範囲は0..255。ただし、
type My_Signed is range 0..255;
と書くのとはちょっと違う。
N:My_Signed:=256;
はエラーになるが、
N:My_Modular:=256;
はエラーにならず、Nには0が代入される。
要するに、代入時にmod演算が適用される。名前のまんま。
なお、modular integerには以下の属性がある:(signed integerには無い。)
- S'Modulus
- ようするにtype Foo is mod Bar;のBar。多分generic用。
- S'Mod
- 引数(型はuniversal-integer)をSに代入した時の値。型はS。