We have outlined a set of usage rules that HPspmd programs must follow to ensure that only locally available array elements are accessed directly. Special control constructs and other syntax in HPJava are designed to ensure that these rules can be enforced by a combination of static semantic checks, compile-time analysis and compiler-generated run-time checks. We showed how the language can be set up to ensure that the cost of any run-time checks required should not be prohibitive, even taking into account the complex index spaces of HPF-like distributed arrays.
The discussion has been in the context of a Java-based HPspmd language called HPJava. In  we have outlined possible syntax extensions to Fortran to provide similar semantics to HPJava. One feature of the HPJava language that was not discussed in this article is the at construct. This is very similar to the overall construct except that it specifies execution for a single location. For the purposes of this article it can be regarded as a special case of overall.
Two recent languages that have some similarities to our HPspmd languages are F- - and ZPL. F- -  is an extended Fortran dialect for SPMD programming. It does not incorporate the HPF-like idea of a global index space, so most of the issues discussed in the this article do not arise in F- -. ZPL  is an array parallel programming language for scientific computations. ZPL uses pure array syntax for accessing its parallel arrays, and does not allow them to subscripted directly. So the range-checking issues are unlikely to be directly comparable to those in HPJava.