Нет, не нормальное, глаз сразу задергался. Годный вариант вам предоставил
WapSter выше. Насчет передачи аргументов - это наоборот делает код чище и понятнее, поелику лазать по коду, гадая, в какой области видимости у вас валяется переменная, которую вы неявно модифицируете, ни у кого не будет желания. Передавая же переменную
по значению, вы делаете функцию чище и избавляетесь от неожиданных изменений переменной в глобальном скоупе. Это хорошая практика.
Даже если у вас функция вложена в функцию (типа подпроцедуры, так иногда оч красиво делать), все равно стоит трижды подумать, прежде чем
модифицировать данные из вышестоящего скоупа.