タスク構文で参照され、暗黙に決まるか事前定義されたスコープを持たないスカラー変数を自動スコープ宣言する場合、コンパイラは、変数の使用を次の規則 TS1 - TS5 に対して順番に確認します。
TS1: task 構文内で変数が読み取り専用として使用され、その task 構文を包含する並列構文内でも読み取り専用である場合、その変数は FIRSTPRIVATE として自動スコープ宣言されます。
TS2: 変数を使用してもデータ競合が発生せず、タスクの実行中にその変数にアクセスできる場合、その変数は SHARED と自動スコープ宣言されます。
TS3: 変数を使用してもデータ競合が発生せず、タスク構文で読み取り専用であり、かつ、タスクの実行中には変数にアクセスできない場合は、その変数は FIRSTPRIVATE と自動スコープ宣言されます。
TS4: 変数を使用するとデータ競合が発生し、タスク領域を実行する各スレッドで、その変数が同じスレッドによる読み取りの前に常に書き込まれる場合、その変数は PRIVATE と自動スコープ宣言されます。
TS5: 変数を使用するとデータ競合が発生し、タスク領域内で読み取り専用ではなく、かつ、タスク領域で行われる読み取りの中で、タスク外で定義された値が取得されることがある場合は、その変数は FIRSTPRIVATE と自動スコープ宣言されます。