diff options
Diffstat (limited to 'sys/imio/imloop.x')
-rw-r--r-- | sys/imio/imloop.x | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/sys/imio/imloop.x b/sys/imio/imloop.x new file mode 100644 index 00000000..ffae877b --- /dev/null +++ b/sys/imio/imloop.x @@ -0,0 +1,30 @@ +# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc. + +include <imio.h> + +# IMLOOP -- Increment the vector V from VS to VE (nested do loops cannot +# be used because of the variable number of dimensions). Return LOOP_DONE +# when V exceeds VE. + +int procedure imloop (v, vs, ve, vinc, ndim) + +long v[ndim], vs[ndim], ve[ndim], vinc[ndim] +int ndim, dim + +begin + for (dim=2; dim <= ndim; dim=dim+1) { + v[dim] = v[dim] + vinc[dim] + + if ((vinc[dim] > 0 && v[dim] - ve[dim] > 0) || + (vinc[dim] < 0 && ve[dim] - v[dim] > 0)) { + + if (dim < ndim) + v[dim] = vs[dim] # advance to next dim + else + break + } else + return (LOOP_AGAIN) + } + + return (LOOP_DONE) +end |