Написал небольшой тестовый пример:
## Код:
```
MODULE MyTest3;

   IMPORT Log;
   
   VAR x: INTEGER;

   PROCEDURE Do*;
      PROCEDURE Pr;
      BEGIN
         Log.Int(x); Log.Ln;
      END Pr;
      PROCEDURE A(p: INTEGER);
      VAR x: INTEGER;
         PROCEDURE B;
         VAR x: INTEGER;
         BEGIN
            x := 3;
            Pr;
         END B;
      BEGIN
         x := 2;
         IF p = 1 THEN Pr ELSE B END;
      END A;
   BEGIN
      A(2);
      A(1);
      Pr;
   END Do;

BEGIN
   x := 1;
END MyTest3.
```

Ожидалось что выведется:
3
2
1
А выводится:
1
1
1
Можете объяснить почему так?