1. Определение констант и переменных написано в теле архитектуры.
2. shared variables изменились в последних версиях VHDL. Сейчас они обязаны быть только protected типов. Если можете обойтись без них - обходитесь, они зло: и фактически плохо стандартизованы, и разрушают идеологию VHDL.
3. to_integer numeric_std (подключен именно он?) нужно указать, знаковый или беззнаковый вектор подается на вход. Для этого 'a' нужно привести к подтипу signed или unsigned.