Metropoli BBS
VIEWER: axesok.c MODE: TEXT (ASCII)
/* Copyright (C) 1994 by Thomas Glen Smith.	All Rights Reserved. */
/* axesok APL2 V1.0.0 **************************************************
* Called from disclosf, scalax, to test axes for valid values.		 *
***********************************************************************/
#define INCLUDES APLCB
#include "includes.h"
Aplcb axesok(axes,rank,maxv)
Aplcb axes;
int rank; /* required rank for axes */
int maxv; /* maximum value in axes */
{
	Endoper; Integer;
	extern int indxorg;
	extern int aplerr;
	int *ip,k;

	if (!(axes->aplflags & APLINT)) axes = integer(axes);
     if (axes == NULL) return(NULL);
	maxv -= (indxorg == 0);
	if (axes->aplcount != rank) {
     	aplerr = 123;
          endoper(axes);
     	return(NULL); /* axes bad */
     }
	ip = axes->aplptr.aplint;
	while(rank--) {
		k = *ip++; /* next axes index */
		if (k < indxorg || k > maxv) {
          	aplerr = 123;
               endoper(axes);
			return(NULL); /* axes bad */
          }
	}
	return(axes); /* axes ok */
}
[ RETURN TO DIRECTORY ]