An F77_LOCAL EXTRINSIC:
SUBROUTINE Calc_u_like(My_P_No,Siz,Tot_Proc,a,b,c) INTEGER A(*), B(*), C(*), My_P_No(1), Siz, Tot_Proc C Find blocksize Blk_Siz = NINT((DBLE(Siz)/DBLE(Tot_Proc))+0.5D0) C How many elements have I got My_Blk_Siz = MIN(Blk_Siz,Siz-(My_P_No(1)-1)*Blk_Siz) My_Blk_Siz = MAX(My_Blk_Siz,0) C Do the Calculation DO 100 i = 1,My_Blk_Siz a(i) = b(i) + c(i) END DO END
and in the calling program unit:
REAL, DIMENSION(Siz) :: A, B = 0, C = 0
INTEGER, DIMENSION(NUMBER_OF_PROCESSORS()) :: P_Nos
!HPF$ PROCESSORS, &
!HPF$ DIMENSION(NUMBER_OF_PROCESSORS()) :: P
!HPF$ DISTRIBUTE (BLOCK) ONTO P :: A, B, C, P_Nos
... Interface from before goes here
NOP = NUMBER_OF_PROCESSORS()
P_Nos = (/ (i, i=1,NOP) /)
CALL Calc_u_like(P_Nos,SIZE(A),NOP,A,B,C)
END