ID Number: Q62627
5.10 6.00 6.00a 6.00ax 7.00
MS-DOS
Summary:
SYMPTOMS
In Microsoft C versions 5.1, 6.0, 6.0a, 6.0ax, and C/C++ version 7.0
if you turn autoscaling off in any presentation graphics scatter
chart, you will receive the following run-time error:
M6101 -- invalid math operation
when the _pg_chartscatter() run-time function is called.
CAUSE
This error is occurring because if autoscaling is turned off, there
are several variables that need to be set. These variables are
automatically determined when autoscale is set to true. The
variables are scalefactor, scalemax, scalemin, scaletitle,
ticdecimals, ticformat, and ticinterval. (See page 267 of the
"Microsoft C Advanced Programming Techniques" manual.)
More Information:
The following code is from the SCAT.C sample program, which is the
sample program found in the online Help for the _pg_chartscatter and
_pg_chartscatterms routines. Note the added lines, which turn off
autoscaling. Compile the program, then link with the GRAPHICS.LIB and
PGCHART.LIB files. Running the application will duplicate the M6101
run-time error.
Sample Code
-----------
/* SCAT.C illustrates presentation graphics scatter chart functions
* including:
* _pg_chartscatter _pg_chartscatterms
*/
#include <conio.h>
#include <graph.h>
#include <string.h>
#include <stdlib.h>
#include <pgchart.h>
#define ITEMS 5
#define SERIES 2
float _far people[SERIES][ITEMS] = { { 235.F, 423.F, 596.F, 729.F,
963.F },
{ 285.F, 392.F, 634.F, 801.F, 895.F }
};
float _far profits[SERIES][ITEMS] = { { 0.9F, 2.3F, 5.4F, 8.0F,
9.3F },
{ 4.2F, 3.4F, 3.6F, 2.9F, 2.7F }
};
char _far *companies[SERIES] = { "Goodstuff,Inc.", "Badjunk & Co." };
void main()
{
chartenv env;
if( !_setvideomode( _MAXRESMODE ) ) /* Find a valid graphics
mode */
exit( 1 );
_pg_initchart(); /* Initialize chart system */
/* Show single-series scatter chart. */
_pg_defaultchart (&env, _PG_SCATTERCHART, _PG_POINTONLY );
strcpy( env.maintitle.title, "Goodstuff, Inc." );
strcpy( env.xaxis.axistitle.title, "Employees" );
strcpy( env.yaxis.axistitle.title, "Profitability" );
/****** Note : Turn one of these two to '0' or off, or uncomment
this section to cause problem. */
/* env.xaxis.autoscale=1; */
/* env.yaxis.autoscale=0; */
/********************************************************************/
/****** To eliminate the error, initialize the following ************/
/* env.yaxis.scalefactor=1000; */
/* env.yaxis.scalemax=1.0; */
/* env.yaxis.scalemin=0.0; */
/* env.yaxis.ticdecimals=0x0001; */
/* env.yaxis.ticformat=0x0001; */
/* env.yaxis.ticinterval= 0.5; */
/********************************************************************/
_pg_chartscatter( &env, people[0], profits[0], ITEMS );
getch();
_clearscreen( _GCLEARSCREEN );
/* Show multiseries scatter chart. */
_pg_defaultchart (&env, _PG_SCATTERCHART, _PG_POINTONLY );
strcpy( env.xaxis.axistitle.title, "Employees" );
strcpy( env.yaxis.axistitle.title, "Profitability" );
_pg_chartscatterms( &env, (float _far *)people,
(float _far *)profits, SERIES, ITEMS, ITEMS, companies );
getch();
_setvideomode( _DEFAULTMODE );
}
Additional reference words: 5.10 6.00 6.00a 6.00ax 7.00