<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