Это известное поведение. Выдержка из руководства по поддержке вызовов:
Проблема при попытке сослаться на присвоенное SYMPUT значение до того, как оно станет доступным
Одна из самых распространенных проблем в использовании SYMPUT - попытка сослаться на назначенное значение макропеременнойпо SYMPUT до создания этой переменной. Обычно ошибка возникает из-за того, что оператор, ссылающийся на макропеременную, компилируется перед выполнением оператора CALL SYMPUT, который присваивает значение переменной. Наиболее важный факт, который следует помнить при использовании SYMPUT, - это то, что он присваивает значение макропеременной во время выполнения программы. Ссылки на макропеременные разрешаются во время компиляции шага, глобального оператора, используемого вне шага, или программы SCL. В результате:
Нельзя использовать ссылку на макропеременную для получения значения макропеременной в той же программе (или шаге), в котором SYMPUT создает эту макропеременную и присваивает ей значение.
Необходимо указать оператор границы шага, чтобы принудительно выполнить шаг DATA, прежде чем ссылаться на значение в глобальном операторе, следующем за программой (например, оператор TITLE). Граница может быть оператором RUN или другим оператором DATA или PROC.