This section describes the behavior when an HPF_CRAFT routine is called from HPF.
The calling convention and argument passing rules for HPF_CRAFT are a hybrid of those for HPF calling HPF_LOCAL and HPF calling HPF. Explicit interfaces are required. Where dummy arguments are private (default) storage, the HPF calling HPF_LOCAL conventions are used. Where dummy arguments are explicitly mapped, the calling convention matches HPF calling HPF.
There are a number of constraints on HPF_CRAFT routines that are called from HPF. The following is a list of restrictions placed on HPF_CRAFT routines called from HPF:
If a dummy argument of an EXTRINSIC(`HPF_CRAFT') routine interface block is an array and the dummy argument of the HPF_CRAFT supprogram has the default private mapping, then the corresponding dummy argument in the specification of the HPF_CRAFT procedure must be an array of the same rank, type, and type parameters. When the extrinsic procedure is invoked, the dummy argument is associated with the local array that consists of the subgrid of the global array that is stored locally.
If the dummy argument of the HPF_CRAFT supprogram is explicitly mapped, it must have the same mapping as the dummy argument of the EXTRINSIC(`HPF_CRAFT') supprogram. Note that this restriction does not require actual and dummy arguments to match and is no more stringent than saying that mappings of dummy arguments in interface blocks must match those in the actual routine.