def _access(self, subs, acc_type, val):
        """_access(subs, acc_type, val) accesses the array element specified by
           the tuple of subscript values, subs.  If acc_type == _GET_ it 
           returns the value of this element; else it sets this element to the
           value of the argument val."""
        if isinstance(subs, int):  
        # if subs is just an integer, take it to be an index value.
            subs = (subs,)

        if len(subs) == 0:
            raise For2PyError("Zero-length arrays currently not handled.")

        bounds = self._bounds
        sub_arr = self._values
        ndims = len(subs)
        for i in range(ndims):
            this_pos = self._posn(bounds[i], subs[i])

            if i == ndims-1:
                if acc_type == _GET_:
                    return sub_arr[this_pos]
                else:
                    sub_arr[this_pos] = val
            else:
                sub_arr = sub_arr[this_pos]