WithStatement = "w i t h" RecordVariableList "do" Statement. RecordVariableList = RecordVariable { "," RecordVariable I . 

The scope (see Section 10.2) of each of the field identifiers of the type of a (single) record variable listed in a with statement is extended to include the component statement. Within this extended scope, the field identifier can occur in a field designator without respecifying the record variable, and will denote the appropriate field of the referenced variable. 

The notation 

is an abbreviation for the notation 

Example of with statement: 

with r1, r2, ... , rn do S 

with r1 do with r1 do with rn do S 

with Date do if Month = 12 then begin Month := 1; Year'= succ(Year) end else Month succ(Month) 

This is equivalent to 

if Date.Month = 12 then begin Date.Month := 1; Date.Year:= succ(Date.Year) end else Date.Month := succ(Date.Month) 

## 10. Blocks, Scope, and Activations 

Blocks are the basis for constructing programs (see Section 13) and procedures and functions (see Section 11). The scope rules determine where an identifier spelling that is introduced in a particular place can be used, based on the static (textual) program structure. The activation rules determine what entity (e.g., variable) is denoted by a particular identifier or label, based on the dynamic (execution) program structure. 

## 10.1. Blocks 

A block consists of several definition and declaration parts, any of which may be empty, and a statement part. 

