5.6. ОПЕРАТОРЫ БЛОКА

Оператор блока содержит последовательность операторов, которой может предшествовать раздел описаний и за которой могут следовать обработчики исключений.

оператор-блока ::=   [простое - имя - блока:]      [declare          раздел - описаний]      begin          последовательность-операторов       [exception          обработчик - исключения          {обработчик - исключения}]      end [простое- имя -блока];

Если в операторе блока используется простое имя блока, то оно должно задаваться как в начале, так и в конце.

Выполнение оператора блока заключается в предвыполнении раздела описаний (при его наличии) и последующем выполнении последовательности операторов. Если оператор блока содержит обработчики исключений, то они выполняются при возбуждении соответствующих исключений во время выполнения последовательности операторов (см. 11.2).

Пример:

SWAP:   declare      TEMP : INTEGER;    begin       TEMP := V;       V := U;       U :== TEMP;   end SWAP;

Примечание. Если в операторе блока, выполнение последовательности операторов которого окончено, описаны объекты задачного типа, то оператор блока не заканчивается до техпор, пока не будут завершены все его подчиненные задачи (см. 9.4). Это правило применяется также при окончании из-за выполнения операторов выхода, возврата или перехода или из-за возбуждения исключения.

Внутри оператора блока его имя может использоваться в расширенных именах локальных понятий, таких как в приведенном выше примере (см. 4.1.3, п. е).

Ссылки: возбуждение исключений 11, задачный объект 9.2, обработчик исключений 11.2, оператор возврата 5.8, оператор выхода 5.7, оператор перехода 5.9, подчиненная задача 9.4, последовательность операторов 5.1, простое имя 4.1, раздел описаний 3.9, расширенное имя 4.1.3.