子类型声明的一般形式是:
    subtype 标识符 is 子类型声明;
  子类型声明包括一个类型名或子类型名,后跟一个任选的限制。这个任选限制既可以是范围限制(如在整数或实数类型中所出现的):也可以是下标限制(如在限定性数组声明中所山现的)。如果一个子类型声明中没有显式限制,则认为这个子类型与类型标记中所命名的子类型具有完全相同的限制。所以,
    subtype ASCII is Character;
仅仅是给Character另起了一个名字而已。


  注意子类型与类型的意义上的区别:
    type date is range 1 to 31;
    type month is range 1 to 12;
    subtype summer is month range 6 to 8;
类型date和month都是整数类型,但它们的值的意义完全不同,因而不能互相进行运算。而子类型summer是month的子类型,其值的意义相同,因而可以进行运算。例:6-1=5,虽然5不在summer的范围内,仍然是允许的,因为还处在month的范围内。
  子类型还可以有子类型。对于类型A的子类型B,A是B的父类型,也是B的基类型。若B又有其子类型C,则C的父类型为B,而C的基类型为A。实际上,在模拟运行时,常常把子类型的数据转换成其基类型,再进行运算。