Open PL/I プログラム ブロックは入れ子構造にできます。入れ子になったブロックの名前の指定に関する規則は次のとおりです。
ブロックにデバッガーの現在の評価環境が含まれている場合、参照されたブロックが最初に現在の環境で検索され、参照されたブロックが見つかるまで一連の包含 (親) ブロックが順番に検索されます。
A: proc; /* 1 */ B: proc; /* 8 */ B: proc; /* 2 */ C: proc; /* 9 */ C: proc; /* 3 */ D: proc; /* 10 */ D: proc; /* 4 */ end D; end D; end C; end C; B: proc; /* 11 */ end B; A: proc; /* 12 */ C: proc: /* 5 */ A: proc /* 13 */ B: proc; /* 6 */ B: proc; /* 14 */ C:proc; /* 7 */ end B; end C; end A; end B; end A; end C; end B; end A; end B;
次に、外部プロシージャ %EXTERN.A (ブロック 1) に現在の評価環境がある場合の各ブロックを参照する方法を示します。
ブロック | |
---|---|
参照 | |
1 | A または %EXTERN.A |
2 | A.B、B、または %EXTERN.A.B |
3 | B.C、A.B.C、または %EXTERN.A.B.C |
4 | D、C.D、B.C.D、A.B.C.D、%EXTERN.A.B.C.D、B.D、A.B.D、%EXTERN.A.B.D、A.D、または %EXTERN.A.D |
5 | C、A.C、または %EXTERN.A.C |
6 | C.B、A.C.B、または %EXTERN.A.C.B |
7 | C.C、C.B.C、A.C.C、%EXTERN.A.C.C、A.C.B.C、または %EXTERN.A.C.B.C |
8 | %EXTERN.B |
9 | %EXTERN.B.C |
10 | %EXTERN.B.D または %EXTERN.B.C.D |
11 | B.B または %EXTERN.B.B |
12 | B.B.A または %EXTERN.B.B.A |
13 | B.A.AB.B.A.A、%EXTERN.B.A.A、または %EXTERN.B.B.A.A |
14 | B.B.B B.A.B B.A.A.B、B.B.A.B、%EXTERN.B.B.B、%EXTERN.B.A.B、%EXTERN.B.A.A.B、%EXTERN.B.B.A.B、または %EXTERN.B.B.A.A.B |
現在の評価環境が内部プロシージャ ブロック %EXTERN.A.B.C.D (ブロック 4) にある場合、デバッガーでは次のようになります。
現在の評価環境が外部プロシージャ ブロック %EXTERN.B (ブロック 8) にある場合、デバッガーでは次のようになります。