/* Copyright (C) 1996 by Thomas Glen Smith. All Rights Reserved. */ /* matchokt APL2 V1.0.0 ************************************************ * Called by matchoks when conversion is necessary, and the desired * * output data is numeric. * ***********************************************************************/ #define INCLUDES APLCB #include "includes.h" int matchokt(pleft,prite,datatyp,ltype,rtype) Aplcb *pleft, *prite; int datatyp,ltype,rtype; { Complex; Integer; Real; extern int aplerr; Aplcb left, rite; left = *pleft; rite = *prite; if (((ltype | rtype) & APLCPLX) && (datatyp & APLCPLX)) { if (ltype != APLCPLX) *pleft = complex(left); if (rtype != APLCPLX) *prite = complex(rite); } else if (((ltype | rtype) & APLNUMB) && (datatyp & APLNUMB)) { if (ltype != APLNUMB) *pleft = real(left); if (rtype != APLNUMB) *prite = real(rite); } else if (((ltype | rtype) & APLINT) && (datatyp & APLINT)) { if (ltype != APLINT) *pleft = integer(left); if (rtype != APLINT) *prite = integer(rite); } else if (datatyp & APLINT) { if (ltype != APLINT) *pleft = integer(left); if (rtype != APLINT) *prite = integer(rite); } else if (datatyp & APLNUMB) { if (ltype != APLNUMB) *pleft = real(left); if (rtype != APLNUMB) *prite = real(rite); } else if (datatyp & APLCPLX) { if (ltype != APLCPLX) *pleft = complex(left); if (rtype != APLCPLX) *prite = complex(rite); } else return(0); /* data not ok */ return(aplerr == 0); }