From fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Wed, 8 Jul 2015 20:46:52 -0400 Subject: Initial commit --- sys/imio/imloop.x | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 sys/imio/imloop.x (limited to 'sys/imio/imloop.x') 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 + +# 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 -- cgit