<SYNC TEAM Example Program>

Program sync_team_example
  Use iso_fortran_env
  Implicit None
  Integer :: a[*],b[*]
  Integer i,me,myteamid
  Integer,Parameter :: redteam = 1, greenteam = 2, blackteam = 3
  Type(team_type) redgreenblack,initialteam
  If (Num_Images()<4) Error Stop 'Need at least four images'
  me = This_Image()
  myteamid = Merge(redteam,Merge(greenteam,blackteam,me<5),me<3)
  initialteam = Get_Team()
  Form Team(myteamid,redgreenblack)
  Change Team(redgreenblack)
    If (myteamid==redteam) Then
      a = me*100
    Else If (myteamid==greenteam) Then
      a = me**3
    Else ! blackteam
      a = 0
    End If
    ! Need to sync the initial team, as we will reference their values.
    Sync Team (initialteam)
    b = 0
    Do i=1,4
      b = b + a[i,Team=initialteam]
    End Do
  End Team
  Sync All
  If (This_Image()==1) Then
    Do i = 2, Num_Images()
      If (b[i]/=b) Error Stop 'FAIL value check'
    End Do
    Print *,'Value confirmed as',b
  End If
End Program

■ Execution Results

 Value confirmed as 391