/*Copyright (C) 1992, 1995 by Thomas Glen Smith. All Rights Reserved.*/ /* outrprdx APL2 V1.0.0 ************************************************ * Called by execjotd. This is outer product for the special case when * * one of the two operands is character and the other isn't. The only * * operators will be equal and not-equal. * ***********************************************************************/ #define INCLUDES APLCB #include "includes.h" Aplcb outrprdx(ival,left,rite) int ival; Aplcb left,rite; { Errstop; Getcb; Intcopy; Aplcb out; int datacnt,datatyp,*ip,rank; datacnt = left->aplcount * rite->aplcount; datatyp = APLINT; rank = left->aplrank + rite->aplrank; out = getcb(NULL, datacnt, datatyp+APLTEMP, rank, NULL); if (out != NULL) { if (rank > 1) { /* set dimensions */ ip = intcopy(out->apldim, left->apldim, left->aplrank, 1); ip = intcopy(ip, rite->apldim, rite->aplrank, 1); } ip = out->aplptr.aplint; while (datacnt--) *ip++ = ival; } return(errstop(0,left,rite,out)); }