Семантика присваивания, как отмечалось, распространяется еще на одну операцию - передачу аргумента при вызове подпрограмм. Предположим, существует подпрограмма (процедура или функция) в форме:
r (..., x: SOME_TYPE, ...)
Здесь сущность x это один из формальных аргументов r. Рассмотрим теперь некоторый вызов r в любой из двух возможных форм - квалифицированный или неквалифицированный вызов:
r (..., y, ...) t.r (..., y, ...)
Выражение y является фактическим аргументом, передаваемым формальному аргументу x.
Выполнение r при любом из этих вызовов начинается с инициализации формальных аргументов значениями соответствующих фактических аргументов. Для простоты и согласованности правила, определяющие передачу аргументов, те же, что и правила присваивания. Другими словами, инициализация формального аргумента эквивалентна выполнению присваивания:
x := y
Это правило приводит к определению:
Определение: Присоединение
Присоединение y к x является результатом выполнения следующих двух операций:
Присваивания в форме x := y
Инициализации x при вызове подпрограммы, где x - формальный аргумент, а y - фактический аргумент вызова.
В обоих случаях x является целью присоединения, а y - источником.
Одни и те же правила действуют в обоих случаях для определения корректности присоединения (в зависимости от типов цели и источника). При условии корректности одни и те же правила определяют, каков будет эффект присоединения в период выполнения.