A slightly later language for the Connection Machine, C* was a
data-parallel dialect of C. This language was first announced in 1987,
and overhauled considerably for 1990.
The discussion here is based on section 4.3 of [9].

C* introduced the idea of a shape, which was used to specify
how parallel data was organized.

shape [128] [128] grid ;
real:grid a, b, c ;

This fragment would create a
shape called grid,
and declare two parallel arrays a and b having this shape.

Parallel operations usually occur within the context of a with
statement. This construct activates the positions of the shape, and
sets the context for the parallel variables manipulated within its
body. For example:

with(grid) {
a = b + c ;
}

C* also had a builtin syntax for reduction operations, overloading the
+=, etc, accumulating assignments of C. It had a where construct
similar to Fortran 90:

with(grid) {
where(a > 0.0) {
...
}
}

A function pcoord(d) returned the logical coordinate in the
dth dimension of the currently active shape.