あるブロック上の PRIVATE、FIRSTPRIVATE、LASTPRIVATE、または REDUCTION の節で変数を使用するとき、その変数は、ブロック内で再宣言することで、並列領域にプライベートになります。しかし、スレッドコード内では、SHARED データは宣言されません。代わりに、ルーチンレベルで宣言します。マシン・コード・レベルでは、これらの共有変数は、スレッドのエントリポイント (___PADD_6__par_loop0 など) への受信関数呼び出しの引数になります。
例 2 では、エントリポイント ___PADD_6_par_loop0 には、6 つの受信パラメータがあります。対応する OpenMP* の並列領域には、4 つの共有変数があります。最初の 2 つのパラメータ (parameter 1 と 2) は、コンパイラの使用に予約されています。そして、残りの 4 つの各パラメータは、1 つの共有変数に対応しています。これら 4 つのパラメータは、PADD 関数のマシンコードにある __kmpc_fork_call() への最後の 4 つのパラメータと一致します。
注
FIRSTPRIVATE、LASTPRIVATE、 および REDUCTION 変数もまた、並列領域への値を受け渡しするために共有変数を必要とします。
デバッガが未対応のために、共有変数 (オリジナルの名前) とその内容間の対応は、スレッドのエントリ・ポイント・レベルでは、表示することができません。しかし、関数のコールスタックへ移動し、そのレベルで変数の内容を検証することは可能です。この手法は、共有変数の内容を検証するのに使用できます。例 2 では、PARALLEL() 関数のコールスタックへ移動したら、共有変数 A、B、C、および N の内容を検証することができます。