Ada рассматривает параметры OUT как неинициализированные. Если им не присвоено значение в процедуре, их значениям нельзя доверять.
Вы можете запустить SPARK-анализ процедур. Анализаторы SPARK будут определять неустановленные параметры OUT как неинициализированные переменные.
В качестве альтернативы, если вы используете Ada 2012, вы можете определить постусловия для каждой процедуры. Если вы используете более раннюю версию Ada, вы можете использовать PRAGMA ASSERT для создания аналогичных постусловий.
Установка параметров в NULL перед вызовом процедуры не влияет на параметры OUT. Вы, кажется, путаете параметры OUT с параметрами IN OUT.