По умолчанию Блэкбокс копирует данные, передаваемые в аргументах, чтобы защитить их от изменения при использовании после вызова.

Чтобы не тратить на это ресурс процессора, мы можете указать IN, и компилятор будет проверять на этапе компиляции, что данные не изменяются. Копирования не будет, программа будет работать быстрее.

Если же вы хотите специально, чтобы передаваемые данные изменились внутри процедуры, чтобы потом это изменённое значение как-то использовать, то тогда указываете VAR.

OUT - для выходных аргументов, чтобы записать в них результат вычислений.