HPF can call procedures written in other languages or other parallel programming styles. These are called EXTRINSIC procedures.
An INTERFACE including mapping information must be given:
INTERFACE EXTRINSIC (C) SUBROUTINE Job(a) REAL, DIMENSION(:) :: a !HPF$ DISTRIBUTE a(BLOCK) END SUBROUTINE Job END INTERFACE
this would correspond to a C void function with a single array argument.
It is up to the compiler to decide which languages are supported.
For more information, click here