Features of C++ translation
Arguments of BlockRange constructor are process dimension and extent of range.
Fields of Block define count of local loop and base and step for local subscript and global index.
If distribution directive is changed to:
!HPF$ DISTRIBUTE A(CYCLIC) ONTO P
only change is x declaration becomes:
CyclicRange x(50, p.dim(0));
—apparently making progress toward writing code that works for any distribution.