program kadaiCritical
  implicit none
  integer,parameter :: N = 10000
  integer i, totalParallel, totalSerial
  !逐次計算で合計を求める
  totalSerial = 0
  do i=1, N
    totalSerial = totalSerial + i
  end do
  totalParallel = 0
  !並列計算で合計を求める
!$omp parallel
!$omp do
  do i=1, N
!$omp critical
    totalParallel = totalParallel + i
!$omp end critical
  end do
!$omp end do
!$omp end parallel
  print *, "Total(serial)   :", totalSerial
  print *, "Total(parallel) :", totalParallel
end program