/* Copyright (C) 1992 by Thomas Glen Smith. All Rights Reserved. */ /* rotatesb APL2 V1.0.0 ************************************************ * Called from rotate to complete processing after error checking is * * complete and initial values set. * ***********************************************************************/ #define INCLUDES APLCB #include "includes.h" Aplcb rotatesb(left,rite,out,axis,axicnt,botcnt,topcnt,lincr) Aplcb left,rite,out; int axis,axicnt,botcnt,topcnt,lincr; { Dtacopy; Errstop; Imod; extern int aplerr; int a,b,c,datatyp,*ep,i,j,k,l,*lp,m,n,p,size; char *ip,*op; datatyp = rite->aplflags & (APLMASK + APLAPL); size = rite->aplsize; /* item size */ op = out->aplptr.aplchar; m = size*botcnt; /* Bump amount. */ lp = left->aplptr.aplint; /* addr(rotate amount) */ ep = left->aplptr.aplint + left->aplcount; /* end check */ for (i=0; iaplptr.aplchar + i * axicnt * m; for (j=0; japlrank) { lp += lincr; /* bump rotate amt ptr */ if (lp == ep) lp = left->aplptr.aplint; } } } if (axis == rite->aplrank) { lp += lincr; /* bump rotate amt ptr */ if (lp == ep) lp = left->aplptr.aplint; } } return(errstop(0,left,rite,out)); }