Pascal Report  177  10.  Blocks, Scope, and Activations  This is equivalent to  Example of with statement:  The notation  with r1, r2,  ... ,  rn do S  is an abbreviation for the notation  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.  WithStatement  =  "w  i  t  h"  RecordVariableList  "do"  Statement.  RecordVariableList  =  RecordVariable  { ","  RecordVariable  I .  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.  A block consists of several definition and declaration parts, any of  which may be empty, and a statement part.  10.1. Blocks  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)  if Date.Month =  12 then  begin  Date.Month  := 1;  Date.Year:= succ(Date.Year)  end else Date.Month  := succ(Date.Month) 