This write-up is divided into several major sections: The section "OVERVIEW" presents the philosophy of the package and should eventually be read by a serious user. The section "ROUTINES" describes the various routines in the package and how to call them. The section "PARAMETERS" describes the "control parameters" which govern the behavior of AUTOGRAPH. The section "EXAMPLES" explains how to get a set of graphs produced by AUTOGRAPH and the programs which produced them. The section "MESSAGES" describes messages that accompany the possible error exits.
Each major section is divided into titled paragraphs, which are further divided into untitled paragraphs. In general, phrases like "the preceding paragraph" or "the following paragraph" are to be interpreted to refer to a titled paragraph.
Readers who wish only to quickly draw a simple graph may want to skip to the descriptions of the routines EZY, EZXY, EZMY, and EZMXY, in the section "ROUTINES". Others may wish to look first at the examples.
In the rest of this document, the long phrase "primary control parameter" will usually be shortened to just "parameter".
Group keywords are used to make up names of parameter groups and, ultimately, of individual parameters. This is done by stringing together the group keywords, in descending order, separated by slashes and terminated by a period. For example, the name 'AXIS.' refers to a group of 92 parameters describing the four axes, the name 'AXIS/LEFT.' to a subgroup of 23 parameters describing the left axis, the name 'AXIS/LEFT/NUMERIC.' to a further subgroup of 8 parameters describing the numeric labels on the left axis, and the name 'AXIS/LEFT/NUMERIC/TYPE.' to a single parameter describing the type of numeric labels on the left axis.
Parameter-group names are used as arguments in calls to parameter-access routines to identify the parameter(s) whose values a user program wishes to "set" or "get". For example, the statement
CALL AGSETR ('AXIS/LEFT/NUMERIC/TYPE.',1.)is used to set the value of the parameter specifying the type of numeric labels to be used on the left axis to "1.".
Parameter-group names may be shortened considerably, both by abbreviation of the keywords and by omission of some keywords; for example, the name shown above may be shortened to 'LE/TY.'.
Complete information about the control parameters and their names is given below, in the section "PARAMETERS".
Those parameters which may only have discrete integral values are referenced internally using the FORTRAN function IFIX. For example: The parameter 'X/NICE.' corresponds to a variable in the common block AGCONP named QCEX, which may have any of the values "-1.", "0.", or "+1.". The function IFIX(QCEX) is used by AUTOGRAPH to recover the integer value.
Conceptually, some parameters have character-string values; for example, the parameter 'DASH/PATTERN/1.' may, conceptually, have the value '$$$$$1$$$$$'. Obviously, one must come up with a scheme which will allow any possible character string to be represented as a real number. At one time, the real equivalent of the memory address of the character string was used as the actual value of the parameter. This approach led to portability problems and has been abandoned in favor of the following: A character string which is to become the conceptual value of a parameter is stashed in a character-string array inside AUTOGRAPH and a real identifier which will enable later retrieval of the string is stored as the actual value of the parameter. (As it happens, such identifiers are always negative; positive values may therefore have other uses. For example, if 'DASH/PATTERN/1.' has a negative value, a character-string dash pattern is implied, but, if it has a positive value, a 16-bit binary dash pattern is implied.)
The routine AGSETR is used to store a real number as the value of a single parameter and the routine AGGETR is used to retrieve the real value of a single parameter. (For historical reasons, equivalent routines AGSETF and AGGETF are provided, as well.)
The routine AGSETI is used to store the real equivalent of an integer as the value of a single parameter and the routine AGGETI is used to retrieve the integer equivalent of the value of a single parameter.
The routine AGSETC is used to store a character string as the (conceptual) value of a single parameter and the routine AGGETC is used to retrieve the (conceptual) character-string value of a single parameter.
The graph window is the area in which a graph, including labels, is to be drawn. A user program may limit a graph to any selected portion of the plotter frame. For example, changing the values of the parameters in the group 'GRAPH.' to "0.", ".5", "0.", and ".5", limits a graph to the lower left-hand quarter of the frame.
See example 6.
The grid window is the portion of the graph window along the edges of which the axes are to be drawn and within which curves are to be drawn. Numeric and informational labels are ordinarily placed in the portion of the graph window which is outside the grid window. Various positioning parameters are stated in a "grid coordinate system" based on the grid window and curve-point coordinates are given by the user in a "user coordinate system" which maps into the grid window. If 'WINDOW.' has the value "1.", only those curve portions which lie inside the grid window are drawn. Character sizes and label-offset distances are specified as fractions of the smaller dimension of the grid window, so as to be in scale with the rest of the graph.
The routine AGSTUP calls the SPPS routine SET to define the mapping from a window in "user-coordinate" space to a viewport in "fractional-coordinate" space. AUTOGRAPH's grid window is synonymous with that viewport.
See example 7.
The first seven of the fourteen, named 'X/MINIMUM.', 'X/MAXIMUM.', 'X/LOGARITHMIC.', 'X/ORDER.', 'X/NICE.', 'X/SMALLEST.', and 'X/LARGEST.', specify how user X coordinates are to be mapped onto the horizontal axis of the grid window. The default values of these parameters are such that the routine AGSTUP is forced to:
By changing the values of these fourteen parameters appropriately, a variety of desirable ends may be achieved:
This parameter is of principal interest to the users of EZY, EZXY, EZMY, and EZMXY; those users who call the routines AGSTUP and AGCURV directly should probably leave the parameter zeroed.
See example 8.
The axes are defined by the parameter group named 'AXIS.', which has subgroups 'AXIS/LEFT.', 'AXIS/RIGHT.', 'AXIS/BOTTOM.', and 'AXIS/TOP.'. Each of these subgroups contains 23 parameters defining one of the four axes. These 23 parameters fall into six further subgroups, having the associated keywords "CONTROL", "LINE", "INTERSECTION", "FUNCTION", "TICKS", and "NUMERIC".
The default values of the axis parameters specify a "perimeter" background: All four axes are drawn; each has short, inward-pointing major and minor ticks; the left axis and the bottom axis have numeric labels (placed outside the grid window); the right-axis and top-axis numeric labels are suppressed. See examples 1 through 4.
A "half-axis" background is created by suppressing the right axis and the top axis completely. A "grid" background is created by extending the left-axis and bottom-axis ticks all the way across the grid window and suppressing the ticks on the other two axes. The parameter 'BACKGROUND.' allows the user to create these standard backgrounds easily; whenever its value is changed by a user-program call to AGSETI, AGSETF, AGSETP, or AGSETR, parameters in the group 'AXIS.' are modified to create the desired background.
'AXIS/s/INTERSECTION/GRID.' 'AXIS/s/INTERSECTION/USER.'have the default value "null 1", specifying that the axis "s" is to be drawn in its normal position, along the edge of the grid window. If either parameter is given a non-null value, the axis "s" is moved away from its normal position in such a way as to intersect the sides of the grid which are perpendicular to it at a point specified by that non-null value. To move an X axis, a Y coordinate is specified; to move a Y axis, an X coordinate is specified.
The coordinate may be specified in the grid coordinate system or in the user coordinate system, depending on which parameter is used. If both parameters are given non-null values, the user-system value takes precedence.
No axis may be moved outside the graph window. Attempting to do so moves the axis as far as the edge, but no farther.
See example 8.
Tick marks are positioned at "nice" values in the label coordinate system, mapped to the user coordinate system, and then mapped onto the axis. Numeric labels are associated with major ticks and provide values in the label coordinate system.
The default version of AGUTOL defines the label system on each axis to be identical with the user system; a private version of AGUTOL may be substituted in place of the default one in order to change the label coordinate system for any one or more of the four axes. (Usually, this can be done by simply compiling one's own version, in which case the loader will use it rather than the one inside AUTOGRAPH.)
Example: Suppose that the Y-coordinate data is in miles/hour and it is desired that the left Y axis be tick-marked and labeled in meters/second. The user program must include a subroutine AGUTOL with five arguments (four input, one output), as follows:
It is recommended that the default value of 'AXIS/s/FUNCTION.' (zero) be used to imply that AGUTOL should do the identity mapping for the axis "s"; other values may be used to select desired mappings. This gives a way to "turn off" the use of a special mapping for a given axis.
Note that the tick-marking and labeling of one X (Y) axis of a graph may be completely different from that of the other X (Y) axis of the graph. For example, the left Y axis could be made to indicate "height in kilometers" and the right Y axis "pressure in millibars".
See example 7.
'AXIS/s/TICKS/MAJOR/SPACING.'contains three parameters, with associated keywords TYPE, BASE, and COUNT. These parameters are described in detail in the section "PARAMETERS". Major tick marks may be spaced linearly or logarithmically in the label coordinate system along the axis specified by "s", or suppressed altogether. Each of the TYPE and BASE parameters has the default value "null 1", allowing AUTOGRAPH to position major tick marks as it sees fit.
See examples 7 and 8 and the final example.
'AXIS/s/TICKS/MAJOR/PATTERN.'has an integral value from "0." to "65535." and specifies the dashed-line pattern to be used for major ticks on the axis specified by "s". Each "0" bit in the lower 16 bits of the integral value specifies a gap 3 plotter units long, each "1" bit a solid portion 3 plotter units long. The default value "65535." (216-1) specifies a solid line. The value "0." may be used to suppress major tick marks on the axis "s".
The parameters
'AXIS/s/TICKS/MAJOR/LENGTH/OUTWARD.' 'AXIS/s/TICKS/MAJOR/LENGTH/INWARD.'specify the lengths of the outward-pointing and inward-pointing portions of the major ticks. Each is stated as a fraction of the smaller dimension of the grid window. If either of these values is made greater than or equal to "1.", it specifies a tick-mark portion which extends to the edge of the grid window and a little beyond, the magnitude of the "little beyond" being specified by the fractional portion of the parameter value; this can be used to create grids. The default values give inward-pointing major ticks of length ".015" on all axes.
See example 8.
'AXIS/s/TICKS/MINOR/SPACING.'specifies the number of minor ticks which are to occur between pairs of major ticks on the axis specified by "s". Minor ticks are equidistantly spaced in the label coordinate system for that axis. The default value of this parameter is "null 1", allowing AUTOGRAPH to position minor ticks as it sees fit.
The parameters
'AXIS/s/TICKS/MINOR/PATTERN.' 'AXIS/s/TICKS/MINOR/LENGTH/OUTWARD.' 'AXIS/s/TICKS/MINOR/LENGTH/INWARD.'specify the dashed-line pattern, outward-pointing length, and inward-pointing length of minor ticks. They are defined in the same way as the analogous major-tick parameters, except that the default inward-pointing tick length is ".010".
See the final example.
'AXIS/s/TICKS/MAJOR/SPACING/TYPE.' 'AXIS/s/NUMERIC/EXPONENT.' 'AXIS/s/NUMERIC/FRACTION.'See example 7 and the final example.
'AXIS/s/NUMERIC/ANGLE/1ST.' 'AXIS/s/NUMERIC/ANGLE/2ND.'may have integral values "0.", "90.", "180.", or "270.". They specify the user's first and second choices for the orientation of numeric labels on the axis specified by "s". AUTOGRAPH will attempt to use the first choice (default value: "0." for all axes); if that leads to overlap problems and shrinking the labels either doesn't help or is not permitted and rotation is permitted (by the setting of 'AXIS/s/CONTROL.'), AUTOGRAPH may try the second choice (default value: "90." for all axes).
The values given represent angles measured in degrees counter-clockwise from horizontal.
'AXIS/s/NUMERIC/OFFSET.'specifies on which side of the axis specified by "s" the numeric labels are to lie and the size of the gap to be left between the axis line and the numeric labels:
The default value for all axes is ".015".
'AXIS/s/NUMERIC/WIDTH/MANTISSA.' 'AXIS/s/NUMERIC/WIDTH/EXPONENT.'specify the widths of characters in the mantissa and exponent portions of the numeric labels on the axis specified by "s", stated as fractions of the smaller dimension of the grid window.
The sizes specified are those desired by the user. If an overlap problem arises and 'AXIS/s/CONTROL.' is set so as to allow AUTOGRAPH to shrink the numeric labels, the characters may end up smaller than desired. No character is shrunk to less than the minimum readable size, however.
These parameters have default values ".015" and ".010", respectively, for all axes.
'FLLB(10,8)' => 'FLLB(10,m)' 'QBIM / 8.' => 'QBIM / m.'where "m" is greater than or equal to 5, may be applied to the AUTOGRAPH source file to provide for a maximum of "m" labels. Similarly, the string replacements
'FLLN(6,16)' => 'FLLN(6,n)' 'QNIM / 16.' => 'QNIM / n.'where "n" is greater than or equal to 5, may be applied to the AUTOGRAPH source file to provide for a maximum of "n" lines.
The predefined labels greatly simplify the task of generating labels along the edges of the grid window. For example, if you want a "header label" above the grid window, you need only specify the desired character string to define the text of line number "100." of the label named 'T'.
The default definitions of the predefined labels specify a label reading "X" below the grid window and a label reading "Y" to the left of the grid window.
See examples 5 and 7 and the final example.
See the section "PARAMETERS" for further information about these parameters.
See examples 5 and 7 and the final example.
Once 'LABEL/NAME.' has been set in this manner, the parameter group name 'LABEL/DEFINITION.' and subgroup names of the form 'LABEL/DEFINITION/...' may be used to access the parameters defining the label. These parameters are as follows:
See examples 5 and 7 and the final example.
Once 'LINE/NUMBER.' has been set in this manner, the parameter group name 'LINE/DEFINITION.' and subgroup names of the form 'LINE/DEFINITION/...' may be used to access the parameters defining the line. These parameters are as follows:
Note: As a convenience to the user, an AGSETC call to set 'LINE/DEFINITION/TEXT.' sets both the parameters defining the text of the label ('...TEXT.' and '...LENGTH.') the latter being computed by examining the string. The string must be no longer than the length specified by the value of 'LINE/MAXIMUM.' and, if shorter, it must be followed by the 'LINE/END.' character.
In attempting to keep the numeric labels on a given axis from overlapping each other, AUTOGRAPH may shrink and/or reorient them. Either or both of these actions may be suppressed by the user by resetting 'AXIS/s/CONTROL.'. If a problem still exists, some of the labels may be omitted - perhaps leaving only every second one, every third one, every fourth one, etc.
Informational labels are positioned by the user along the edges of the grid window as if numeric labels did not exist. AUTOGRAPH takes the following actions in attempting to prevent the informational labels from overlapping the numeric labels on any axis:
Note: None of the actions described above modify any of the parameters except 'AXIS/s/NUMERIC/ANGLE/1ST.', which may be negated by subtracting a multiple of "360.". Also, no label is shrunk to less than a readable size.
Each of the routines EZMY and EZMXY, which draw one or more curves per call, calls AGCURV with KDSH equal to ISIGN(I,IDSH), where I is the number of the curve being drawn and IDSH is the integral value of 'DASH/SELECTOR.'. This parameter has the default value "1.", specifying the use of the "user" set of dashed-line patterns (default - solid lines); the value "-1." specifies the use of the "alphabetic" set.
See example 7.
Nevertheless, there is a way to make AUTOGRAPH use PWRITX: On a Unix system, one simply appends a "-agupwrtx" to the "ncargf77" command. This will cause to be loaded an alternate version of AGPWRT that calls PWRITX. (If "ncargf77" is not being used, one must append to the "f77" command the proper name of the library containing the alternate version of AGPWRT; this name may be obtained from an NCAR Graphics consultant.) When the alternate version of AGPWRT is used, a string which is centered relative to a given position (like the "x-axis label", the "y-axis label", or the "graph label") is drawn directly, in its entirety, by PWRITX, and may therefore contain function codes to get Greek characters, subscripts, superscripts, etc. A string which is positioned relative to one end (which includes all numeric labels) is drawn by passing one character at a time to PWRITX, so that the same plotter width will be used for each; function codes must not be included in such strings. The results, while not as pleasing as one would normally expect from PWRITX, are more than just acceptable.
In my opinion, the "duplex" character set of PWRITX is far superior to the "complex" set. At present, one uses it by incorporating the following code at the beginning of one's program, prior to any call to PWRITX (directly or indirectly):
COMMON /PUSER/ MODE : : : MODE = 1
See the descriptions of these routines, in the section "ROUTINES".
See the description of the routine AGCHNL, in the section "ROUTINES" and example 10.
The subroutines EZY, EZXY, EZMY, and EZMXY provide a quick-and-dirty graph-drawing capability. The appearance of a graph drawn by one of these routines may be changed drastically by changing the values of primary control parameters.
The subroutines ANOTAT and DISPLA are provided principally for historical reasons. Each allows the user to provide new values for certain primary control parameters. These parameters may also be set by calls to lower-level routines.
The subroutines AGSETC, AGSETF, AGSETI, AGSETP, and AGSETR allow the user to set the values of parameters.
The subroutines AGGETC, AGGETF, AGGETI, AGGETP, and AGGETR allow the user to get the current values of parameters.
The subroutine AGSTUP must be called prior to calling AGBACK or AGCURV, both initially and after making any change in the primary control parameters. It examines the primary control parameters for consistency and computes the values of required secondary control parameters.
The subroutine AGBACK is called to draw a background.
The subroutine AGCURV is called to draw a single curve.
The subroutines AGSAVE and AGRSTR are called to save/restore the current state (commonly the default state) of AUTOGRAPH.
The function AGBNCH may be used to obtain the 16-character dash pattern which is equivalent to a specified 16-bit integer dash pattern.
The function AGDSHN may be used to obtain the 16-character name of a particular specified dash-pattern parameter.
The subroutine AGUTOL is called by AUTOGRAPH to do the mapping from the user system to the label system (or vice-versa) along the four axes. The default version may be replaced by the user to obtain a desired mapping.
The subroutines AGCHAX, AGCHCU, and AGCHIL are called by AUTOGRAPH just before and just after drawing a particular element of a graph. The default do-nothing versions may be replaced by a user in order to obtain desired effects (color, different line styles, etc.).
The subroutine AGCHNL is called by AUTOGRAPH just after the character representation of a numeric label has been generated and just before it is to be drawn. The default do-nothing version may be replaced by a user in order to change the numeric labels in a desired way (to get names of months, Roman numerals, etc.).
The subroutine AGPWRT is called by AUTOGRAPH to draw a character string. The default version just calls the plot-package routine PWRIT. This routine may be replaced by a user version which calls PWRITX, PWRITY, or some other character-drawer.
Note: User versions of AGUTOL, AGCHAX, AGCHCU, AGCHIL, AGCHNL, and AGPWRT should not call any other AUTOGRAPH routine. No such call will have a useful effect, and, at worst, an infinite loop may result.
See example 1.
The appearance of a graph drawn by EZY may change greatly in response to parameter changes. See the routines ANOTAT, DISPLA, and AGSETP, below, and the section "PARAMETERS".
NPTS (an input expression of type INTEGER) is the number of curve points defined by the array YDRA.
GLAB (an input expression of type CHARACTER) defines a new "graph label". (If the first character of this expression is "CHAR(0)", no new "graph label" is defined; the current one will continue to be used.) A character string defining a new graph label must either be of the exact length specified by the current value of 'LINE/MAXIMUM.' (default: 40 characters), or shorter; if shorter, it must be terminated by the character defined by the current value of 'LINE/END.' (default: a '$'). The string becomes the new text of line number 100 of the label named 'T'.
See example 2.
The appearance of a graph drawn by EZXY may change greatly in response to parameter changes. See the routines ANOTAT, DISPLA, and AGSETP, below, and the section "PARAMETERS".
YDRA (an input array of type REAL, dimensioned NPTS) defines the Y coordinates of points on the curve.
The points on the curve have coordinates (XDRA(I),YDRA(I)), for I from 1 to NPTS. The current value of 'NULL/1.' (default value "1.E36") may be used to signal missing data in these arrays. If either coordinate of a point is missing, the point is considered to be missing; curve segments on either side of a missing point are not drawn. Note: Because all non-missing coordinates are used in figuring the minimum and maximum user values along a given axis, it is safest to mark both coordinates as "missing".
NPTS (an input expression of type INTEGER) is the number of curve points defined by the arrays XDRA and YDRA.
GLAB (an input expression of type CHARACTER) defines a new "graph label". (If the first character of this expression is "CHAR(0)", no new "graph label" is defined; the current one will continue to be used.) A character string defining a new graph label must either be of the exact length specified by the current value of 'LINE/MAXIMUM.' (default: 40 characters), or shorter; if shorter, it must be terminated by the character defined by the current value of 'LINE/END.' (default: a '$'). The string becomes the new text of line number 100 of the label named 'T'.
See example 3.
The appearance of a graph drawn by EZMY may change greatly in response to parameter changes. See the routines ANOTAT, DISPLA, and AGSETP, below, and the section "PARAMETERS".
NPTS (an input expression of type INTEGER) is the number of points defining each curve to be drawn by EZMY.
GLAB (an input expression of type CHARACTER) defines a new "graph label". (If the first character of this expression is "CHAR(0)", no new "graph label" is defined; the current one will continue to be used.) A character string defining a new graph label must either be of the exact length specified by the current value of 'LINE/MAXIMUM.' (default: 40 characters), or shorter; if shorter, it must be terminated by the character defined by the current value of 'LINE/END.' (default: a '$'). The string becomes the new text of line number 100 of the label named 'T'.
See example 4.
The appearance of a graph drawn by EZMXY may change greatly in response to parameter changes. See the routines ANOTAT, DISPLA, and AGSETP, below, and the section "PARAMETERS".
NPTS (an input expression of type INTEGER) is the number of points defining each curve to be drawn by EZMXY.
GLAB (an input expression of type CHARACTER) defines a new "graph label". (If the first character of this expression is "CHAR(0)", no new "graph label" is defined; the current one will continue to be used.) A character string defining a new graph label must either be of the exact length specified by the current value of 'LINE/MAXIMUM.' (default: 40 characters), or shorter; if shorter, it must be terminated by the character defined by the current value of 'LINE/END.' (default: a '$'). The string becomes the new text of line number 100 of the label named 'T'.
See example 8.
YLAB (an input expression of type CHARACTER) defines a new "y-axis label". (If the first character of this expression is "CHAR(0)", no new "y-axis label" is defined; the current one will continue to be used.) A character string defining a new Y-axis label must either be of the exact length specified by the current value of 'LINE/MAXIMUM.' (default: 40 characters), or shorter; if shorter, it must be terminated by the character defined by the current value of 'LINE/END.' (default: a '$'). The string becomes the new text of line number 100 of the label 'L'.
LBAC (an input expression of type INTEGER), if non-zero, must have the integer value 1, 2, 3, or 4, the real equivalent of which is to become the new value of 'BACKGROUND.'. (If LBAC is zero, no change is to be made in the current value.) The value "1" specifies a perimeter background, the value "2" a grid background, the value "3" a half-axis background, and the value "4" no background at all.
See the discussion of 'BACKGROUND.', in the section "PARAMETERS".
LSET (an input expression of type INTEGER), if non-zero, must have the absolute value 1, 2, 3, or 4, the real equivalent of which is to be stored (by means of a call to AGSETI) as the new value of 'SET.'. If LSET is zero, no change is to be made in the current value of 'SET.'.
See the discussion of 'SET.', in the section "PARAMETERS".
NDSH (an input expression of type INTEGER), if zero, specifies that no change is to be made in the parameters which specify the dashed-line patterns to be used for curves.
DSHC (an input array of type CHARACTER, dimensioned NDSH) is meaningful only when NDSH is greater than zero. In this case, it must be an array of NDSH character strings, each of the length specified by the current value of 'DASH/LENGTH.'. Each character string represents a dashed-line pattern; dollar signs mean "pen down", quotes mean "pen up", and other characters mean "draw me".
See the discussion of 'DASH.', in the section "PARAMETERS".
See the final example.
LTYP (an input expression of type INTEGER), if non-zero, is an integer specifying new values for 'X/LOGARITHMIC.' and 'Y/LOGARITHMIC.'. If LTYP is zero, no change is to be made in the current values.
LTYP | 'X/LOGARITHMIC.' | 'Y/LOGARITHMIC.' |
---|---|---|
1 | linear | linear |
2 | linear | logarithmic |
3 | logarithmic | linear |
4 | logarithmic | logarithmic |
If a single parameter is being set, one of the routines AGSETC, AGSETF, AGSETI, or AGSETR (which see, below) may be used instead.
When certain parameters are set individually, AGSETP takes further "special" action. For example, if 'BACKGROUND.' is set, thereby requesting one of the standard types of backgrounds, AGSETP changes a number of other parameters in order to achieve the desired effect. The parameters which imply such special action are as follows:
'SET.' 'BACKGROUND.' 'NULL/1.' and 'NULL/2.' 'LABEL/CONTROL.' 'LABEL/NAME.' 'LABEL/DEFINITION/SUPPRESSION.' 'LINE/NUMBER.' 'LINE/DEFINITION/SUPPRESSION.' 'LINE/DEFINITION/TEXT.'See the section "PARAMETERS" for descriptions of the parameters whose values may be set. Special actions, if any, which accompany the setting of a parameter are detailed there.
For example, 'AXIS.' is the name of a 92-word group of parameters describing the four axes, 'AXIS/RIGHT.' is the name of a 23-word subgroup describing the right Y axis,
'AXIS/RIGHT/INTERSECTION.'is the name of a 2-word further subgroup describing the intersection of the right Y axis with the bottom of the grid window, and
'AXIS/RIGHT/INTERSECTION/USER.'is the name of a single parameter specifying the point of intersection of the right Y axis with the bottom of the grid window as an X coordinate in the user coordinate system.
Obviously, these names can sometimes become rather long. There are various ways in which they may be shortened. First, since the fifth and following characters of each keyword are ignored, they may be omitted; this would shorten
'AXIS/RIGHT/INTERSECTION/USER.'to
'AXIS/RIGH/INTE/USER.'Even fewer characters may be used, as long as no ambiguity of interpretation arises. To be completely safe, use at least the first three characters of the group keyword and at least the first two characters of each subgroup keyword; this would shorten the example above to 'AXI/RI/IN/US.'. Moreover, certain group and subgroup keywords may be omitted entirely; for example, 'AXI/RI/IN/US.' may be shortened to 'RI/IN/US.'. Keywords which may be entirely omitted are enclosed in brackets in the headings in the section "PARAMETERS".
Names may also be lengthened in various ways in order to improve their readability. Blanks may be used as desired on either side of a keyword. Any sequence of characters not including a slash or a period may be inserted after a keyword, separated from it by at least one blank. For example, the name
'DASH PATTERN / CHARACTER WIDTH .'is equivalent to, and considerably more meaningful than,
'DAS/CH.' (or even 'DASH/CHARACTER.')A complete list of the parameters may be found in the section "PARAMETERS", below.
FURA (an input array of type REAL, dimensioned LURA) contains new values for the parameters in the group specified by TPGN, in the same order as they appear in the group. All parameters have real values (because of a portability problem which arose in implementing the routines AGSETF and AGSETR). Those which represent intrinsically integral quantities have a value of the form "FLOAT(n)", where "n" is the integral quantity being represented. Some parameters intrinsically take on character-string values; the real quantity stored as the value of such a parameter is typically an identifier allowing for later retrieval of the character string from a character storage area inside AUTOGRAPH. The routines AGSETC and AGGETC may be used to set/get the character-string values of such parameters.
LURA (an input expression of type INTEGER) is the length of FURA (the number of real elements in it). Its value may be less than, equal to, or greater than, the length of the parameter group specified by TPGN. The number of values transferred from FURA is the minimum of the two (but not less than one). This means that if, for example, you only wish to set the first two parameters of a 100-parameter group, you may do so by using LURA = 2.
CALL AGSETP (TPGN,FURA,1)See the description of AGSETP, above. The "special actions" described there may result from a call to AGSETF or AGSETR.
FUSR (an input expression of type REAL) is the value to be given to the parameter specified by TPGN.
CALL AGSETP (TPGN,FURA,1)See the description of AGSETP, above. The "special actions" described there may result from a call to AGSETI.
IUSR (an input expression of type INTEGER) is the value to be given to the parameter specified by TPGN.
CALL AGSETP (TPGN,FURA,1)See the description of AGSETP, above. The "special actions" described there may result from a call to AGSETC.
CUSR (an input expression of type CHARACTER) is the desired character string.
If a single parameter is being retrieved, one of the routines AGGETC, AGGETF, AGGETI, or AGGETR (which see, below) may be used instead. No "special" action is implied for any single parameter (as is the case for AGSETP).
See the section "PARAMETERS" for descriptions of parameters whose values may be retrieved.
See the AGSETP argument TPGN, above, for an example and additional comments.
FURA (an output array of type REAL, dimensioned LURA) is the user array into which the real values of the parameters in the group specified by TPGN are to be transferred, in the same order as they appear in the group.
See the AGSETP argument FURA, above, for additional comments.
LURA (an input expression of type INTEGER) is the length of FURA. Its value may be less than, equal to, or greater than, the length of the group specified by TPGN. The number of values transferred into FURA is the minimum of the two (but not less than one). You may, for example, get the first two parameters of a 100-parameter group by using LURA = 2.
CALL AGGETP (TPGN,FURA,1)where FURA is a local array, dimensioned 1, and then sets FUSR equal to FURA(1).
See the description of AGGETP, above.
FUSR (an output variable of type REAL) receives the real value of the parameter specified by TPGN.
CALL AGGETP (TPGN,FURA,1)where FURA is a local array, dimensioned 1, and then sets IUSR equal to IFIX(FURA(1)).
See the description of AGGETP, above.
IUSR (an output variable of type INTEGER) receives the integer equivalent of the real value of the parameter specified by TPGN.
CALL AGGETP (TPGN,FURA,1)where FURA is a local array, dimensioned 1. It then retrieves, from AUTOGRAPH's character storage space, the character string identified by FURA(1), and returns that string as the value of CUSR.
See the description of AGGETP, above.
CUSR (an output variable of type CHARACTER) receives the desired character string. If CUSR is too short, only the beginning of the string will be put in it. If CUSR is too long, it will be padded with blanks on the end.
Note that each of the routines EZY, EZXY, EZMY, and EZMXY unconditionally executes a call to AGSTUP (via a routine called AGEZSU) before calling AGBACK and/or AGCURV.
An appropriate call to the plot-package routine SET is executed by AGSTUP. This is important; it allows the user to position things on the graph using X/Y coordinates that are commensurate with his/her data.
XDRA (an input array of type REAL, dimensioned as implied by the next four arguments) contains user X coordinates.
NVIX (an input expression of type INTEGER) is the number of "vectors" of data from XDRA to be considered in computing the minimum and/or maximum X values.
IIVX (an input expression of type INTEGER) is the index increment between two "vectors" in XDRA. The 1st element of the first vector is XDRA(1), the 1st element of the second vector is XDRA(1+IIVX), the 1st element of the third vector is XDRA(1+IIVX*2), etc.
NEVX (an input expression of type INTEGER) is the number of elements of each vector in XDRA to be considered in computing the minimum and/or maximum X values.
IIEX (an input expression of type INTEGER) is the index increment between two consecutive elements of a vector in XDRA. The second element of the 1st vector is XDRA (1+IIEX), the third element of the 1st vector is XDRA(1+IIEX*2), etc. If IIEX has the value 0, the contents of XDRA are ignored completely; the minimum and maximum X values are considered to be "1." and FLOAT(NEVX), respectively.
YDRA, NVIY, IIVY, NEVY, and IIEY are used similarly, but define the user Y coordinates.
Some examples:
X array | Data to use | XDRA | NVIX | IIVX | NEVX | IIEX |
---|---|---|---|---|---|---|
X(100) | all data | X(1) | 1 | - | 100 | 1 |
( X(I), I = 1,99,2 ) | X(1) | 1 | - | 50 | 2 | |
( X(I), I = 51,99,2 ) | X(51) | 1 | - | 25 | 2 | |
X(10,10) | all data | X(1,1) | 10 | 10 | 10 | 1 |
X(1,1) | 1 | - | 100 | 1 | ||
( ( X(I,J), I = 1,10 ), J = 1,6 ) | X(1,1) | 6 | 10 | 10 | 1 | |
X(1,1) | 10 | 1 | 6 | 10 | ||
X(1,1) | 1 | - | 60 | 1 | ||
( ( X(I,J), I = 3,7 ), J = 3,9 ) | X(3,3) | 7 | 10 | 5 | 1 | |
X(3,3) | 5 | 1 | 7 | 10 | ||
( ( X(I,J), I = 3,7,4 ), J = 3,9,3 ) | X(3,3) | 3 | 30 | 2 | 4 | |
none | 1., 2., . . ., 62. | - | - | - | 62 | 0 |
Note: The character "-" is used above to indicate an argument which is ignored and may be given a dummy value.
Normally, the X and Y coordinate data tendered to AGSTUP are the same data which will later be used to draw curves. However, this need not be the case. For example, one could call AGSTUP with a two-word XDRA (setting NVIX=1, IIVX=1, NEVX=2, and IIEX=1) containing a desired minimum and maximum to be used, disregarding the real data.
If 'INVERT.' is given the value "1." (in place of its default value "0."), AGSTUP will behave as if its first five arguments had been interchanged with its last five, so that X-coordinate values refer to vertical distances, and Y-coordinate values to horizontal distances, on the graph. This parameter affects AGCURV in a similar manner, thus allowing one to plot "X as a function of Y".
An appropriate call to the plot-package routine SET is executed by AGBACK. This is the same call that was done by AGSTUP; it is re-executed in case the user has done his/her own call to SET in the interim.
See the section "PARAMETERS" for a description of the parameters which affect the behavior of AGCURV. One parameter of particular interest is 'WINDOW.', which has the default value "0.". If 'WINDOW.' is given the value "1.", any portion of a curve which lies outside the grid window is omitted. No distortion of any curve segment results; the effect is exactly as if the curve were viewed through a window. There is an additional advantage in setting 'WINDOW.' to "1.": if either the X coordinates, or the Y coordinates, or both, are mapped logarithmically into the grid window and zero or negative values occur in the data, AGCURV treats those values as missing-point signals, rather than bombing with an ALOG10 error.
If the value of any X coordinate matches the current value of 'NULL/1.' (default - "1.E36"), the corresponding point is considered to be missing - curve segments on either side of that point are not drawn.
IIEX (an input expression of type INTEGER), if non-zero, is the index increment between one X coordinate in XVEC and the next. If IIEX is zero, the array XVEC is ignored, as described above.
YVEC (a singly-subscripted input array of type REAL) is just like XVEC, but provides Y coordinate data.
IIEY (an input expression of type INTEGER) is just like IIEX, but describes the use (or non-use) of YVEC.
NEXY (an input expression of type INTEGER) is the number of curve points - the number of X/Y coordinate pairs to be used.
Note: If 'INVERT.' is given the value "1." (in place of its default value "0."), AGCURV will behave as if the arguments XVEC and IIEX had been interchanged with the arguments YVEC and IIEY, so that X-coordinate values refer to vertical distances, and Y-coordinate values to horizontal distances, on the graph. This parameter affects AGSTUP in a similar manner, thus allowing one to plot "X as a function of Y".
KDSH (an input expression of type INTEGER) specifies the dashed-line pattern to be used in drawing the curve. (Since the routines DASHD, FRSTD, VECTD, and LASTD, in the package DASHCHAR, are used to draw the curve, it may have its own particular dashed-line pattern.)
CHARACTER*16 AGBNCHThe value of AGBNCH (IDSH), where IDSH is an integer in the range 0 to 65535 (216-1) representing a 16-bit binary dash pattern, is the equivalent character dash pattern.
CHARACTER*16 AGDSHNThe value of AGDSHN (IDSH), where IDSH is an integer "n" in the range 1 to 26, is the name of the nth dash-pattern parameter - that is to say, it is the character string 'DASH/PATTERN/n.'.
Note: A user version of AGUTOL should not call any other AUTOGRAPH routine.
FUNS (an input expression of type REAL) is the value of 'AXIS/s/FUNCTION.', which may be used to select the desired mapping function for the axis IAXS. It is recommended that the default value (zero) be used to specify the identity mapping. The value may be integral ("1.", "2.", etc.) and serve purely to select the code to be executed or it may be the value of an actual parameter in the equations defining the mapping.
IDMA (an input expression of type INTEGER) specifies the direction of the mapping. A value greater than zero indicates that VINP is a value in the user system and that VOTP is to be a value in the label system, a value less than zero the opposite. The mappings in one direction must be the mathematical inverses of the mappings in the other direction.
VINP (an input expression of type REAL) is an input value in one coordinate system.
VOTP (an output variable of type REAL) is an output value in the other coordinate system.
Note: A user version of AGCHAX should not call any other AUTOGRAPH routine.
IAXS (an input expression of type INTEGER) is the number of the axis being drawn. The values 1, 2, 3, and 4 indicate the left, right, bottom, and top axes, respectively.
IPRT (an input expression of type INTEGER) indicates the part of the axis being drawn. Possible values are as follows:
Note: A user version of AGCHCU should not call any other AUTOGRAPH routine.
KDSH (an input expression of type INTEGER) is the value of AGCURV's last argument, as follows:
AGCURV called by | Value of KDSH |
---|---|
EZY | 1 |
EZXY | 1 |
EZMY | "n" or "-n", where "n " is the curve number |
EZMXY | "n" or "-n", where "n" is the curve number |
the user program | a user-specified value |
Note: A user version of AGCHIL should not call any other AUTOGRAPH routine.
LBNM (an input expression of type CHARACTER) is the name of the label being drawn.
LNNO (an input expression of type INTEGER) is the number of the line being drawn.
Provides a way for the user to substitute arbitrary character strings for the numeric labels generated by AUTOGRAPH.
Note: A user version of AGCHNL should not call any other AUTOGRAPH routine.
VILS (an input expression of type REAL) is the value to be represented by the numeric label, in the label system for the axis. The value of VILS must not be altered.
CHRM (an input variable of type CHARACTER), on entry, contains the mantissa of the numeric label, as it will appear if AGCHNL makes no changes. If the numeric label includes a "times" symbol, it is represented by a blank in CHRM. (See IPXM, below.) CHRM may be modified.
MCIM (an input expression of type INTEGER) is the length of CHRM - the maximum number of characters that it will hold. The value of MCIM must not be altered.
NCIM (an input variable of type INTEGER), on entry, is the number of meaningful characters in CHRM. If CHRM is changed, NCIM should be changed accordingly.
IPXM (an input variable of type INTEGER), on entry, is zero if there is no "times" symbol in CHRM; if it is non-zero, it is the index of a character position in CHRM. If AGCHNL changes the position of the "times" symbol in CHRM, removes it, or adds it, the value of IPXM must be changed.
CHRE (an input variable of type CHARACTER), on entry, contains the exponent of the numeric label, as it will appear if AGCHNL makes no changes. CHRE may be modified.
MCIE (an input expression of type INTEGER) is the length of CHRE - the maximum number of characters that it will hold. The value of MCIE must not be altered.
NCIE (an input variable of type INTEGER), on entry, is the number of meaningful characters in CHRE. If CHRE is changed, NCIE should be changed accordingly.
Note: A user version of AGPWRT should not call any other AUTOGRAPH routine.
YPOS (an input expression of type REAL) is the Y coordinate of a point relative to which the text string is to be positioned.
CHRS (an input expression of type CHARACTER) is the text string to be drawn.
NCHS (an input expression of type INTEGER) is the length of CHRS - the number of characters in the text string.
ISIZ (an input expression of type INTEGER) specifies the size of the characters to be used. The values 0, 1, 2, and 3 imply character widths of 8, 12, 16, and 24 plotter units, respectively. Larger values specify the character width directly.
IORI (an input expression of type INTEGER) is the orientation angle of the text string, measured in degrees counter-clockwise from a vector which is horizontal and pointing to the right.
ICEN (an input expression of type INTEGER) is the centering option. The value "-1" implies that the text is to be written with (XPOS,YPOS) in the center of the left edge of the leftmost character, the value "0" that (XPOS,YPOS) is to be in the center of the entire string, and the value "+1" that (XPOS,YPOS) is to be in the center of the right edge of the rightmost character.
User access to these parameters is provided by the routines AGGETC, AGGETF, AGGETI, AGGETP, AGGETR, AGSETC, AGSETF, AGSETI, AGSETP, and AGSETR (all of which are described in the section "ROUTINES", above). The first argument in a call to one of these routines is a character string naming a group of parameters (perhaps containing only a single parameter) which the user wishes to "set" or "get". Each such string has the form 'k1/k2/k3/ . . . kn.', where k1 is a keyword identifying a major group of parameters, k2 is a keyword identifying a subgroup of that major group, k3 is a keyword identifying a further subgroup of that subgroup, and so on. Only the first three characters of k1 and the first two characters of the others need be used; also, certain keywords may be omitted.
Because of certain portability considerations, all of the parameters have real values. The routine AGSETP may be used to set the real values of the parameters in any group, and the routine AGGETP to retrieve those values. Either of the routines AGSETF or AGSETR may be used to set the real value of a single parameter and either of the routines AGGETF or AGGETR may be used to get the real value of a single parameter.
Some parameters may only take on discrete integral values (like "0.", "1.", "-6.", or "65535.") and are used in roles for which integers would normally be used. The routine AGSETI may be used to set the integer value of a single parameter of this type and the routine AGGETI may be used to get the integer value of a single parameter of this type.
Other parameters intrinsically represent character strings; the real value of the parameter is an identifier, generated when the character string is passed to AUTOGRAPH and enabling the character string to be retrieved from AUTOGRAPH's character storage space when it is needed. The routine AGSETC must be used to set the character-string value associated with a single parameter of this type and the routine AGGETC must be used to get the character-string value associated with a single parameter of this type.
Many parameters have a limited range of acceptable values. What generally happens when a parameter is given an out-of-range value is that AUTOGRAPH (usually the routine AGSTUP) resets that value to the value at the nearer end of the acceptable range.
Setting certain parameters (individually, rather than as part of a multi-parameter group) implies, as a side effect, "special action" by the routine AGSETP (which may be called directly by the user or indirectly by way of a user call to AGSETC, AGSETF, AGSETI, or AGSETR). For example, setting the parameter 'BACKGROUND.' to request a particular background type causes a number of other parameters to be changed in order to achieve the desired result.
Each of the named parameter groups is described below. Square brackets are used to mark portions of a name which may be omitted; the notation 'k1/k2/ . . . [ki/]...kn.' indicates that the keyword ki and the following slash may be omitted. In each description, the simplest form of the name is given. If a multi-parameter group is named, its subgroups are listed, in the order in which they occur in the group. If a single parameter is named, the default value of that parameter is given and any "special action" by AGSETP is described.
This group consists of all 336 primary control parameters, in the order in which they appear below. It was originally provided to give users the capability of saving and restoring the state of AUTOGRAPH. The routines AGSAVE and AGRSTR (which see) should now be used for this purpose.
An integral real number specifying when a frame advance is to be done by the routines EZY, EZXY, EZMY, and EZMXY and having one of three possible values:
An integral real number specifying whether or not the arguments of the last call to "SET" are used to determine the linear/log nature of the current graph, the position of the grid window and/or the X/Y minimum/maximum values.
(Note: The routine SET is part of the package called SPPS. Its first four arguments specify a portion of the plotter frame, its next four arguments specify the minimum and maximum X and Y coordinate values to be mapped to that portion, and its ninth argument specifies the linear/log nature of the mapping. The routine GETSET, which is also a part of SPPS, is used to retrieve the arguments of the last call to SET.)
Giving 'SET.' a value (individually, rather than as part of a group) has both an immediate effect and a delayed effect. The immediate effect, which occurs in the routine AGSETP, is to return most of the parameters in the groups 'GRID.', 'X.', and 'Y.' to their default values. (Exceptions are 'X/LOGARITHMIC.' and 'Y/LOGARITHMIC.', which may have values making them immune to such resetting.) The delayed effect, which occurs in the routine AGSTUP, depends on the value given to 'SET.'.
There are eight acceptable values of 'SET.', four of which are just the negatives of the other four. Using a negated value suppresses the drawing of curves by the routines EZY, EZXY, EZMY, and EZMXY. Acceptable absolute values of 'SET.' are as follows:
Special action by AGSETP: As described above, if 'SET.' is set (individually, rather than as part of a group) to any value by an AGSETP call, the parameters in the groups 'GRID.', 'X.', and 'Y.' are reset to their default values. The parameter 'X/LOGARITHMIC.' is reset to its default value ("0.") only if it has the value "+1."; a value of "-1." is not changed; 'Y/LOGARITHMIC.' is treated similarly.
An integral real number specifying the assumed dimensioning of X and Y coordinate data arrays used in calls to the routines EZMY and EZMXY. There are four possibilities:
An integral real number having the value "0." or "1."; giving it the value "1." causes the routines AGSTUP and AGCURV to behave as if arguments defining X-coordinate data had been interchanged with arguments defining Y-coordinate data, thus, in some sense, allowing one to graph "X as a function of Y". This parameter is principally intended for users of the routines EZY, EZXY, EZMY, and EZMXY.
Default value: "0." (no inversion of X and Y arguments).
An integral real number having the value "0." or "1."; giving it the value "1." causes the routine AGCURV to use the subroutine AGQURV, rather than AGKURV, for drawing curves. The result is that curve portions falling outside the grid window are omitted. See the description of the routine AGCURV, above.
Default value: "0." (no windowing of curves).
An integral real number specifying the type of background to be drawn by AGBACK. There are four acceptable values:
Special action by AGSETP: If 'BACKGROUND.' is set (individually, rather than as part of a group) by a call to AGSETP, the desired background is created by changing the following parameters:
'[AXIS/]s/CONTROL.' '[AXIS/]s/[TICKS/]MAJOR/[LENGTH/]INWARD.' '[AXIS/]s/[TICKS/]MINOR/[LENGTH/]INWARD.' 'LABEL/CONTROL.'where "s" stands for "LEFT", "RIGHT", "BOTTOM", and "TOP". This determines which of the axes are plotted, how long the inward-pointing portions of major and minor tick marks are to be, and whether or not informational labels are to be plotted. Values used are as follows:
The value "1." (perimeter background) sets:
's/CONTROL.' to "4." for all s; 's/MAJOR/INWARD.' to ".015" for all s; 's/MINOR/INWARD.' to ".010" for all s; 'LABEL/CONTROL.' to "2.".The value "2." (grid background) sets:
's/CONTROL.' to "4." for "s" = "LEFT" and "BOTTOM", 's/CONTROL.' to "-1." for "s" = "RIGHT" and "TOP"; 's/MAJOR/INWARD.' to "1." for all s; 's/MINOR/INWARD.' to "1." for all s; 'LABEL/CONTROL.' to "2.".The value "3." (half-axis background) sets:
's/CONTROL.' to "4." for "s" = "LEFT" and "BOTTOM", 's/CONTROL.' to "-1." for "s" = "RIGHT" and "TOP"; 's/MAJOR/INWARD.' to ".015" for all s; 's/MINOR/INWARD.' to ".010" for all s; 'LABEL/CONTROL.' to "2.".The value "4." (no background) sets:
's/CONTROL.' to "0." for all s; 's/MAJOR/INWARD.' to ".015 for all s; 's/MINOR/INWARD.' to ".010" for all s; 'LABEL/CONTROL.' to "0.".The default values of these thirteen parameters correspond to the default value of 'BACKGROUND.'. Note that, if they are changed directly, the value of 'BACKGROUND.' may not reflect the actual nature of the background defined by them.
This group contains the two "nulls" (or "special values") 'NULL/1.' and 'NULL/2.'.
A real number "null 1", used in the following ways by AUTOGRAPH:
Special action by AGSETP: If 'NULL/1.' is changed (individually, rather than as part of a group) by an AGSETP call, the entire list of primary parameters is scanned - any value equal to the old "null 1" is replaced by the new one.
A real number "null 2". Certain parameters may be given the value "null 2", specifying that the routine AGSTUP is to choose values for them. The value chosen for a given parameter is back-stored in place of the "null 2"; thus, a unique value may be chosen for the first graph of a series and then used for all remaining graphs in the series.
Default value: "2.E36" (an arbitrary value).
Special action by AGSETP: If 'NULL/2.' is changed (individually, rather than as part of a group) by an AGSETP call, the entire list of primary parameters is scanned - any value equal to the old "null 2" is replaced by the new one.
A group of four parameters describing the position of the "graph window" within the plotter frame. A graph drawn by AUTOGRAPH (including labels) is forced to lie entirely within this window. Subgroups and the number of parameters in each are as follows:
'GRAPH/LEFT.' (1) 'GRAPH/RIGHT.' (1) 'GRAPH/BOTTOM.' (1) 'GRAPH/TOP.' (1)
A real number between "0." and "1." specifying the position of the left edge of the graph window as a fraction of the distance from the left edge to the right edge of the plotter frame.
Default value: "0." (left edge of plotter frame).
A real number between "0." and "1." specifying the position of the right edge of the graph window as a fraction of the distance from the left edge to the right edge of the plotter frame.
Default value: "1." (right edge of plotter frame).
A real number between "0." and "1." specifying the position of the bottom edge of the graph window as a fraction of the distance from the bottom edge to the top edge of the plotter frame.
Default value: "0." (bottom edge of plotter frame).
A real number between "0." and "1." specifying the position of the top edge of the graph window as a fraction of the distance from the bottom edge to the top edge of the plotter frame.
Default value: "0." (top edge of plotter frame).
A group of five parameters describing the position and shape of the "grid window" within the graph window. Subgroups and the number of parameters in each are as follows:
'GRID/LEFT.' (1) 'GRID/RIGHT.' (1) 'GRID/BOTTOM.' (1) 'GRID/TOP.' (1) 'GRID/SHAPE.' (1)
A real number between "0." and "1." specifying the position of the left edge of the area in which the grid window is to be placed, stated as a fraction of the distance from the left edge to the right edge of the graph window.
Default value: ".15".
A real number between "0." and "1." specifying the position of the right edge of the area in which the grid window is to be placed, stated as a fraction of the distance from the left edge to the right edge of the graph window.
Default value: ".95".
A real number between "0." and "1." specifying the position of the bottom edge of the area in which the grid window is to be placed, stated as a fraction of the distance from the bottom edge to the top edge of the graph window.
Default value: ".15".
A real number between "0." and "1." specifying the position of the top edge of the area in which the grid window is to be placed, stated as a fraction of the distance from the bottom edge to the top edge of the graph window.
Default value: ".95".
A real number specifying the shape of the grid window. The grid window, whatever its shape, is centered in, and made as large as possible in, the area specified by the first four parameters in the group 'GRID.'. The value of 'GRID/SHAPE.' falls in one of four possible ranges, as follows:
Note that either "-1." or "+1." produces a square and that "-1.61803398874989" produces a golden rectangle.
Default value: "0.".
A group of seven parameters specifying the mapping of the user's X-coordinate data onto the horizontal axis of the grid window. Subgroups and the number of parameters in each are as follows:
'X/MINIMUM.' (1) 'X/MAXIMUM.' (1) 'X/LOGARITHMIC.' (1) 'X/ORDER.' (1) 'X/NICE.' (1) 'X/SMALLEST.' (1) 'X/LARGEST.' (1)See also 'SET.' and 'INVERT.', above.
A real number specifying the minimum user X coordinate to be considered. This parameter normally has the value "null 1", specifying that the routine AGSTUP should examine the user's X-coordinate data and find the minimum value for itself.
If the value "null 2" is used, it will be replaced, the next time AGSTUP is called, by an actual minimum value computed by AGSTUP.
If a non-null value is used, AGSTUP will not examine the user's X-coordinate data; the given value will be considered to be the minimum.
If both 'X/MINIMUM.' and 'X/MAXIMUM.' are given non-null values, the former should have a lesser value than the latter.
Default value: "1.E36" ("null 1").
Analogous to 'X/MINIMUM.', above; it specifies the way in which the maximum X coordinate is to be determined.
Default value: "1.E36" ("null 1").
An integral real number having one of the values "-1.", "0.", or "+1.":
An integral real number having one of the values "0." or "1.":
An integral real number having one of the values "-1.", "0.", or "+1.":
This parameter comes into play when AGSTUP is called upon to compute the minimum X coordinate (when 'X/MINIMUM.' has a null value); if the value of 'X/SMALLEST.' is non-null, values less than it will not be considered in the computation.
Default value: "1.E36" ("null 1").
This parameter comes into play when AGSTUP is called upon to compute the maximum X coordinate (when 'X/MAXIMUM.' has a null value); if the value of 'X/LARGEST.' is non-null, values greater than it will not be considered in the computation.
Default value: "1.E36" ("null 1").
A group of seven parameters specifying the mapping of the user's Y-coordinate data onto the vertical axis of the grid window. Subgroups and the number of parameters in each are as follows:
'Y/MINIMUM.' (1) 'Y/MAXIMUM.' (1) 'Y/LOGARITHMIC.' (1) 'Y/ORDER.' (1) 'Y/NICE.' (1) 'Y/SMALLEST.' (1) 'Y/LARGEST.' (1)See also 'SET.' and 'INVERT.', above.
Analogous to 'X/MINIMUM.', above; it specifies the way in which the
minimum Y coordinate is to be determined.
Default value: "1.E36" ("null 1").
Analogous to 'X/MAXIMUM.', above; it specifies the way in which the
maximum Y coordinate is to be determined.
Default value: "1.E36" ("null 1").
Analogous to 'X/LOGARITHMIC.', above; it specifies whether the mapping
of Y coordinates is linear or logarithmic.
Default value: "0." (linear Y).
Analogous to 'X/ORDER.', above; it specifies whether Y-coordinates
increase or decrease from bottom to top.
Default value: "0." (increase from bottom to top).
Analogous to 'X/NICE.', above; it specifies whether the left Y axis,
the right Y axis, or neither, is to be "nice".
Default value: "-1." (left axis "nice").
Analogous to 'X/SMALLEST.', above; comes into play when AGSTUP is called
upon to compute the minimum Y coordinate.
Default value: "1.E36" ("null 1").
Analogous to 'X/LARGEST.', above; comes into play when AGSTUP is called
upon to compute the maximum Y coordinate.
Default value: "1.E36" ("null 1").
A group of 92 parameters describing four axes: the left axis, the right
axis, the bottom axis, and the top axis. Subgroups and the number of
parameters in each are as follows:
Simplest form of name: 's.'
A group of 23 parameters describing the axis specified by "s". Subgroups
and the number of parameters in each are as follows:
An integral real number having one of the values "-1.", "0.", "1.", "2.",
"3.", or "4." and controlling certain aspects of the drawing of the axis
specified by "s", as follows:
An integral real number having one of the values "0." or "1.":
A group of two parameters
If the left Y axis or the right Y axis is moved, it remains vertical, but
intersects the bottom of the grid window at a specified X coordinate.
Similarly, if the bottom X axis or the top X axis is moved, it remains
horizontal, but intersects the left edge of the grid at a specified Y
coordinate.
No axis may be moved outside the current graph window; if an attempt is
made to do so, the axis is moved as far as the edge and no farther.
A real number which, if not equal to the current "null 1", specifies, in
the grid coordinate system, the X coordinate (if "s" = "LEFT" or "RIGHT")
or the Y coordinate (if "s" = "BOTTOM" or "TOP") of the point of
intersection of the axis specified by "s" with the perpendicular sides
of the grid window.
Default value: "1.E36" ("null 1") for all "s" (axes lie on the edges of
the grid window).
A real number which, if not equal to the current "null 1", specifies, in
the user coordinate system, the X coordinate (if "s" = "LEFT" or "RIGHT")
or the Y coordinate (if "s" = "BOTTOM" or "TOP") of the point of
intersection of the axis specified by "s" with the perpendicular sides
of the grid window.
Default value: "1.E36" ("null 1") for all "s" (axes lie on the edges of
the grid window).
A real number, passed as an argument to the subroutine AGUTOL; this
subroutine defines the user-system-to-label-system mappings, and thus
the label coordinate systems, for all the axes. The default version of
AGUTOL defines the identity mapping for all axes; a user version may be
substituted to define any desired set of mappings. It is intended that
'AXIS/s/FUNCTION.' be used within a user version of AGUTOL as a function
selector. It is further recommended that the value "0." select the
identity mapping, thus providing a way to re-create the default
situation.
Tick marks on the axis specified by "s" are positioned in the label
coordinate system. Numeric labels on the axis give values in the label
coordinate system.
See the description of AGUTOL in the section
"ROUTINES"; see also
example 7.
Default value: "0." for all "s" (identity mapping for all axes).
A group of ten parameters describing the tick marks, if any, which are
to be a part of the axis specified by "s". Subgroups and the number of
parameters in each are as follows:
A group of six parameters describing the major tick marks, if any, which
are to be a part of the axis specified by "s". Subgroups and the number
of parameters in each are as follows:
A group of three parameters describing the way in which major tick marks,
if any, are to be spaced along the axis specified by "s". Subgroups and
the number of parameters in each are as follows:
A real number specifying where major tick marks are to be placed along
the axis specified by "s" (that is to say, at what values in the label
coordinate system along that axis). Let "b" represent the value of the
parameter '.../BASE.' (described next) and "k" represent an arbitrary
integer. Then, there are six acceptable values of '.../TYPE.':
Default value: "1.E36" ("null 1") for all "s" (AUTOGRAPH spaces major tick
marks as it sees fit).
A real number which, if greater than zero and non-null, specifies the base
value ("b", in the preceding parameter description) used in spacing major
tick marks in the label coordinate system along the axis specified by "s".
A negative or zero value suppresses major tick marks on the axis. A null
value causes AUTOGRAPH to pick an appropriate base value and, if the null
was a "null 2", to backstore that value in place of the "null 2".
Default value: "1.E36" ("null 1") for all "s" (AUTOGRAPH picks the base
values).
A real number, having an integral value "n" greater than or equal to 0.
A negative value is treated as if it were a zero. The value n is only
used when major tick marks are to be spaced linearly and the base value
("b", in the preceding parameter descriptions) is to be chosen by
AUTOGRAPH. In this case, n is a rough estimate of the minimum number of
major tick marks to be placed on the axis specified by "s". The actual
number used may vary between "n+2" and "5n/2+4" (approximately).
Default value: "6." for all "s" (somewhere between 8 and 19 major tick
marks per linear axis).
A real number specifying the dashed-line pattern to be used for major
tick marks on the axis specified by "s". Normally, its integer equivalent
is a 16-bit integer in which "0" bits specify "pen-up" segments (gaps) 3
plotter units long and "1" bits specify "pen-down" segments (solids) 3
plotter units long. The value "0." turns off the major tick marks, the
value "65535." (decimal) = "177777." (octal) makes them solid lines. If
the value "null 1" is used, the next call to AGSTUP resets it to "65535."
(decimal).
Default value: "1.E36" ("null 1") for all "s" (solid-line patterns).
A group of two parameters determining the length of the outward-pointing
and inward-pointing portions of the major tick marks on the axis specified
by "s". Subgroups and the number of parameters in each are as follows:
A real number specifying the length of the outward-pointing portion of
each major tick mark on the axis specified by "s". The value must be of
the form "e", "1.+e", or "-e", where "e" is greater than or equal to "0."
and less than "1." and represents a fraction of the smaller dimension of
the grid window.
Note: "Outward" is defined relative to the normal position of the axis
"s", even when that axis has been moved away from its normal position.
A real number specifying the length of the inward-pointing portion of
each tick mark on the axis specified by "s". The value must be of the
form "e", "1.+e", or "-e", where e is greater than or equal to "0." and
less than "1." and represents a fraction of the smaller dimension of the
grid window.
Note: "Inward" is defined relative to the normal position of the axis
"s", even when that axis has been moved away from its normal position.
A group of four parameters describing the minor tick marks, if any, which
are to be a part of the axis specified by "s". Subgroups and the number
of parameters in each are as follows:
A real number specifying the desired number of minor tick marks to be
distributed between each pair of major tick marks on the axis specified
by "s". Acceptable values are as follows:
Default value: "1.E36" ("null 1") for all "s" (AUTOGRAPH chooses
appropriate values).
A real number specifying the dashed-line pattern to be used for minor
tick marks on the axis specified by "s"; analogous to
'[AXIS/]s/[TICKS/]MAJOR/PATTERN.', described above.
Default value: "1.E36" ("null 1") for all "s" (solid-line patterns).
A group of two parameters determining the length of the outward-pointing
and inward-pointing portions of the minor tick marks on the axis specified
by "s". Subgroups and the number of parameters in each are as follows:
A real number specifying the length of the outward-pointing portion of
each minor tick mark on the axis specified by "s"; analogous to
'...MAJOR/[LENGTH/]OUTWARD.', described above.
Default value: "0." for all "s" (all minor ticks point inward).
A real number specifying the length of the inward-pointing portion of
each minor tick mark on the axis specified by "s"; analogous to
'...MAJOR/[LENGTH/]INWARD.', described above.
Default value: ".010" for all "s" (all minor ticks point inward).
A group of eight parameters describing the numeric labels, if any, which
are to be a part of the axis specified by "s". Subgroups and the number
of parameters in each are as follows:
The three parameters
All four have the default value "null 1" (except for the first, which has
the default value "0." for "s" = "RIGHT" and "TOP"), leaving AUTOGRAPH
free to choose values which are consistent with each other and with other
parameters describing the axis specified by "s". Any one or more of them
may be given the value "null 2" (in which case an actual value chosen by
AUTOGRAPH is backstored over the "null 2") or an actual integral real
value.
Setting 's/TYPE.' to "0.":
This turns off the numeric labels on the axis specified by "s". The other
three parameters are then ignored.
Setting 's/TYPE.' to "1.":
This selects "scientific" notation. Each numeric label is written in the
form
The parameter 's/EXPO.' specifies the length of "i" (the number of
characters), thus also specifying the value of the exponent "e". If
's/EXPO.' has a value less than or equal to zero, "i" is omitted. If
's/EXPO.' is less than zero and has the integral absolute value "n", the
fraction "f" is forced to have "n" leading zeroes.
The parameter 's/FRAC.' specifies the length of "f" (the number of
characters). If 's/FRAC.' is less than or equal to zero, "f" is omitted.
If 's/FRAC.' is less than zero, the decimal point is omitted.
If "[i] [.] [f]" has the value "1.", the first part of the label is
omitted, leaving only "10 e".
If the entire label has the value "0.", the single character "0" is
used.
The value of 's/MAJOR/TYPE.' is immaterial.
Setting 's/TYPE.' to "2.":
This selects "exponential" notation, the exact nature of which depends
on the value of 's/MAJOR/TYPE.', as follows:
This selects "no-exponent" notation, the exact nature of which depends
on the value of 's/MAJOR/TYPE.', as follows:
See the discussion of '[AXIS/]s/[NUMERIC/]TYPE.', above.
See the discussion of '[AXIS/]s/[NUMERIC/]TYPE.', above.
A group of two integral real numbers specifying the orientation angle of
numeric labels on the axis specified by "s". Subgroups and the number of
parameters in each are as follows:
An integral real number having one of the values "0.", "90.", "180.",
or "270." (plus or minus a small multiple of "360."), specifying the
user's first choice for the orientation angle of numeric labels on the
axis specified by "s". The value is stated in degrees counter-clockwise
from a left-to-right horizontal vector.
The routine AGSTUP decides whether the first choice or the second choice
is to be used. The second choice is used only when the first choice leads
to overlap problems and the current value of '[AXIS/]s/CONTROL.' is a "3."
or a "4." and the second choice works out better than the first. If AGSTUP
decides to use the first choice, it leaves the first-choice parameter with
a positive value; if it decides to use the second choice, it leaves the
first-choice parameter with a negative value. Values are made positive or
negative by adding and subtracting multiples of "360.".
Default value: "0." for all "s" (horizontal labels preferred on all
axes).
An integral real number having one of the values "0.", "90.", "180.",
or "270." (plus or minus a small multiple of "360."), specifying the
user's second choice for the orientation angle of numeric labels on the
axis specified by "s". The value is stated in degrees counter-clockwise
from a left-to-right horizontal vector. See the description of the
preceding parameter.
Default value: "90." for all "s" (vertical labels, readable from the
right, on all axes).
A real number specifying the desired position of numeric labels relative
to the axis specified by "s".
If the value is positive, numeric labels are to be placed toward the
outside of the grid. If the value is negative, numeric labels are to be
placed toward the inside of the grid. In either of these two cases, the
magnitude of the value specifies the distance from the line portion of
the axis to the nearest part of any numeric label, stated as a fraction
of the smaller dimension of the grid window. Note: "Inside" and "outside"
are defined relative to the normal position of the axis "s", even when
that axis has been moved away from its normal position.
If the value is exactly zero, each numeric label is centered on the axis.
In this case, the line portion of the axis is suppressed and major and
minor tick marks are moved outward so as not to overlap the numeric
labels.
Default value: ".015" for all "s" (all labels outside the grid).
A group of two real parameters specifying the widths of characters to be
used in numeric labels on the axis specified by "s". Subgroups and the
number of parameters in each are as follows:
A real number specifying the width of characters to be used in the
"mantissa" of each numeric label on the axis specified by "s", expressed
as a fraction of the smaller dimension of the grid window.
Default value: ".015" for all "s".
A real number specifying the width of characters to be used in the
exponent of each numeric label on the axis specified by "s", expressed
as a fraction of the smaller dimension of the grid window.
Default value: ".010" for all "s".
A group of thirty parameters, the first of which determines what
dashed-line patterns are to be used by the routines EZMY and EZMXY and
the rest of which describe the "user" set of dashed-line patterns (as
opposed to the "alphabetic" set, which is defined by code in the subroutine
AGCURV and is not subject to change by the user). Subgroups and the number
of parameters in each are as follows:
The parameter 'DASH/SELECTOR.' is given a negative integral value to
specify that the routines EZMY and EZMXY should use the "alphabetic"
set of 26 dashed-line patterns for the curves they draw and a positive
integral value "n", less than or equal to 26, to specify that EZMY and
EZMXY should use the first "n" patterns in the "user" set of dashed-line
patterns, as defined by the current values of the remaining parameters in
the group 'DASH.'.
Each of the patterns in the "alphabetic" set specifies a solid line
interrupted periodically by a letter of the alphabet. Each of the
patterns in the "user" set is as defined by the user. The default "user"
set produces all solid lines.
The routines EZY and EZXY, which draw but one curve per call, always use
the first of the patterns in the "user" set; they are unaffected by the
value of 'DASH/SELECTOR.'.
The selected pattern set is used in a circular fashion. For example, if
'DASH/SELECTOR.' has the value "3." and EZMY is used to draw nine curves,
pattern 1 is used for curves 1, 4, and 7, pattern 2 for curves 2, 5, and
8, and pattern 3 for curves 3, 6, and 9.
Default value: "+1." (The first element of the "user" set of dashed-line
patterns is to be used by EZMY and EZMXY.)
An integral real number specifying how long character-string dashed-line
patterns are expected to be. In a user call to ANOTAT with a positive
fifth argument (implying that the sixth argument is an array of
character-string dashed-line patterns) or in a user call to AGSETC
setting 'DASH/PATTERN/n.' (in which case the second argument is such
a pattern), the specified character strings must be of the length
specified by the current value of 'DASH/LENGTH.'.
Default value: "8." (dashed-line patterns are expected to be eight
characters long).
A real number specifying the width of each character (other than a
dollar sign or a quote) which is drawn along a curve as directed by a
character-string dashed-line pattern (whether from the "alphabetic" set
or from the "user" set). This width is expressed as a fraction of the
smaller dimension of the grid window.
Default value: ".010"
A real number specifying the line length corresponding to a dollar sign
(solid) or a quote (gap) in a character-string dashed-line pattern,
expressed as a fraction of the smaller dimension of the grid window.
Default value: ".010"
A group of 26 parameters defining the "user" set of dashed-line patterns.
Subgroups and the number of parameters in each are as follows:
(The symbol "n" represents an integer between "1" and "26", inclusive.)
An integral real number defining the "n"th dashed-line pattern in the
"user" set.
If the value is positive, it must be between "0." and "65535.", inclusive,
and is interpreted as a 16-bit binary pattern in which each "0" bit
specifies a "pen-up" gap segment 3 plotter units long and each "1" bit
specifies a "pen-down" solid segment 3 plotter units long. Such a pattern
may be defined by a user call to AGSETF, AGSETI, or AGSETR.
If the value is negative, it serves as an identifier, allowing AUTOGRAPH
to retrieve, from its character storage space, a character string in which
each single quote specifies a "pen-up" gap segment, each dollar sign
specifies a "pen-down" solid segment, and each other character is simply
to be drawn as a part of the line. Such a pattern may be defined by a user
call to AGSETC.
Note that the function "AGDSHN" allows a user to easily generate the name
of the "n"th dash pattern.
Default values: "65535." for all "n" (solid lines).
A group of 3+10n parameters, where "n" is the current value of
'LABEL/BUFFER/LENGTH.' (8, by default) describing up to "n"
informational labels. These labels are a part of the background
drawn by a call to the routine AGBACK. Subgroups and the number
of parameters in each are as follows:
An integral real number having the value "0.", "1.", or "2.". Values
greater than "2." are changed to a "2." by the next AGSTUP call. Values
less than "0." are changed to a "0." by the next AGSTUP call; negative
values have a special use, however (see below).
Special action by AGSETP: An AGSETP call which sets this parameter
(individually, rather than as part of a group) to a negative value
results in the deletion of all currently-defined labels. Note that
the negative value is changed to a zero by the next AGSTUP call; thus,
the drawing of informational labels is disabled until re-enabled by the
user.
A group of 1+10n parameters, where "n" is the current value of
'LABEL/BUFFER/LENGTH.' (8, by default). Subgroups and the number of
parameters in each are as follows:
An integral real number specifying the number of 10-word label definitions
the label buffer will hold. A user program may need to retrieve, but must
not set, the value of this parameter, since its value must match the second
dimension of the label buffer.
Increasing the size of the label buffer requires modifying the AUTOGRAPH
source code. See the paragraph
"INFORMATIONAL LABELS", in the section "OVERVIEW"
.
Default value: "8.".
This parameter group may be thought of as an array FLLB, dimensioned 10 x
n, containing up to n 10-word label definitions. For a second subscript
j,
Default values: The label buffer contains four pre-defined labels,
corresponding to the four edges of the grid window. They are as follows:
The description of 'LINE/BUFFER/CONTENTS.', below, gives the default
values for the definitions of the lines which belong to these labels.
This group is a subset of the previous one. It provides a way of retrieving
the names of all currently-defined labels.
An integral real pointer which, if non-zero, specifies a particular label
in the label buffer - the one which is to be referenced by the parameter
group 'LABEL/DEFINITION.' (which see, below).
Setting 'LABEL/NAME.' is the required first step in accessing a particular
label definition.
Default value: "0." (undefined).
Special action by AGSETP: To access the definition of a particular label,
one must first call AGSETC with 'LABEL/NAME.' as the first argument and
the name of the label one wishes to access as the second argument. This
causes AGSETP (which is called by AGSETC) to search for the definition
of the desired label in the label buffer. If that definition is not found,
a new one is made up and inserted in the label buffer. In either case,
'LABEL/NAME.' is given a real value whose integer equivalent specifies
the second subscript of the label definition in the label buffer.
The definition of a new label has the name specified by the user, a
suppression flag "0.", a basepoint (.5,.5), an offset vector (0.,0.),
a baseline angle "0.", a centering option "0.", a line count "0.", and
a first-line index "0.".
A set of nine parameters defining the label specified by the current
value of 'LABEL/NAME.'. If 'LABEL/NAME.' has the value "0.", referencing
this group or a parameter in it causes an error exit. Subgroups and the
number of parameters in each are as follows:
An integral real "suppression flag" having the value "0." or "1." and
specifying whether drawing of the label specified by 'LABEL/NAME.' is
enabled ("0.") or disabled ("1.").
Default value for a new label: "0." (label enabled).
Special action by AGSETP: If a user program attempts to set this parameter
(individually, rather than as part of a group) to a negative value, the
lines of the label specified by 'LABEL/NAME.' are deleted and
'LINE/NUMBER.' is zeroed. If the negative value is less than "-1.", the
label is deleted as well and 'LABEL/NAME.' is zeroed. (Deleting a label
means that its name cell is set to "0.".)
A set of two parameters specifying the X and Y coordinates of the basepoint
of the label specified by 'LABEL/NAME.', in the grid coordinate system.
The label is positioned relative to this basepoint. Subgroups and the
number of parameters in each are as follows:
The X coordinate of the basepoint of the label specified by 'LABEL/NAME.'.
The value "0." refers to the left edge of the grid window, the value "1."
to the right edge of the grid window.
Default value for a new label: ".5" (centered).
The Y coordinate of the basepoint of the label specified by 'LABEL/NAME.'.
The value "0." refers to the bottom edge of the grid window, the value "1."
to the top edge of the grid window.
Default value for a new label: ".5" (centered).
A set of two parameters specifying the X and Y components of the offset
vector of the label specified by 'LABEL/NAME.', as signed fractions of
the smaller dimension of the grid window. The offset vector has its
basepoint at the label basepoint. Subgroups and the number of parameters
in each are as follows:
The X component of the offset vector of the label specified by
'LABEL/NAME.' - negative toward the left edge, positive toward the
right edge, of the grid window. The magnitude represents a fraction
of the smaller dimension of the grid window.
Default value for a new label: "0." (zero-length vector).
The Y component of the offset vector of the label specified by
'LABEL/NAME.' - negative toward the bottom edge, positive toward
the top edge, of the grid window. The magnitude represents a fraction
of the smaller dimension of the grid window.
Default value for a new label: "0." (zero-length vector).
An integral real number having one of the values "0.", "90.", "180.",
or "270.", and specifying the direction in which the baseline of the
label specified by 'LABEL/NAME.' emanates from the end of its offset
vector, measured counter-clockwise from a left-to-right horizontal
vector. All the lines of a label are written parallel to its baseline
and in the direction of the baseline.
Default value for a new label: "0." (horizontal, left to right).
An integral real number specifying the alignment of the lines of the
label specified by 'LABEL/NAME.' with the end of its offset vector. A
negative value aligns the left ends, a zero value the centers, and a
positive value the right ends, of the lines.
Default value for a new label: "0." (centers aligned).
An integral real number specifying the number of lines in the label
specified by 'LABEL/NAME.'.
This parameter is updated by AUTOGRAPH as lines are added to or deleted
from the label and should not be set by a user program.
Default value for a new label: "0." (no lines).
An integral real number specifying the second subscript (in the line
buffer) of the first line belonging to the label specified by 'LABEL/NAME.'
- a zero if no line belongs to the label.
This parameter is updated by AUTOGRAPH as lines are added to or deleted
from the label and should not be set by a user program.
Default value for a new label: "0." (no lines).
A group of 4+6n parameters, where "n" is the current value of
'LINE/BUFFER/LENGTH.' (16, by default) describing up to "n" lines,
each of which is a part of some informational label. Subgroups and
the number of parameters in each are as follows:
An integral real number specifying the assumed maximum length of a
character string delivered to AUTOGRAPH for use as the text of a label
line. Such a character string may occur as the first argument of a call
to ANOTAT (defining the text of line "100." in the label 'L'), as the
second argument of a call to ANOTAT (defining the text of line "-100."
in the label 'B'), as the last argument of a call to one of the routines
EZY, EZXY, EZMY, or EZMXY (defining the text of line "100." in the label
'T'), or as the second argument of a call to AGSETC whose first argument
is
This parameter may be given any desired non-negative integral value.
Default value: "40.".
A character string whose first character is the one used to mark the end
of a character string defining the text of a label line (in calls to
ANOTAT, EZY, EZXY, EZMY, EZMXY, and AGSETC), when that character string
is shorter than the current maximum specified by 'LINE/MAXIMUM.' (as
described above).
The terminator character does not become a part of the text of the line.
It is stripped off, so that only the preceding characters constitute the
text of the line.
Default value: "'$'".
A group of 1+6n parameters, where "n" is the current value of
'LINE/BUFFER/LENGTH.' (16, by default). Subgroups and the number of
parameters in each are as follows:
An integral real number specifying the number of 6-word line definitions
the line buffer will hold. A user program may need to retrieve, but must
not set, the value of this parameter, since its value must match the
second dimension of the line buffer.
Increasing the size of the line buffer requires modifying the AUTOGRAPH
source code. See the paragraph
"INFORMATIONAL LABELS", in the section "OVERVIEW"
.
Default value: "16.".
This group may be thought of as an array FLLN, dimensioned 6 x n,
containing up to n 6-word line definitions. For a second subscript j,
Default values: The line buffer contains four pre-defined lines, each of
which belongs to one of the four pre-defined labels. They are as follows:
The description of 'LABEL/BUFFER/CONTENTS.', above, gives default values
for the definitions of the four labels which contain these lines.
An integral real pointer which, if non-zero, specifies a particular line
in the line buffer - the one which is to be referenced by the parameter
group 'LINE/DEFINITION.' (which see, below).
Setting this parameter is the required first step in accessing a particular
line definition.
Default value: "0." (undefined).
Special action by AGSETP: To access the definition of a particular line
of a particular label, one must ensure that 'LABEL/NAME.' (which see,
above) is set. Then, one must call AGSETI with 'LINE/NUMBER.' as the first
argument and the number of the line one wishes to access as the second
argument. This causes AGSETP (which is called by AGSETI) to search the
line buffer for the definition of a line belonging to the label specified
by the current value of 'LABEL/NAME.' and having the desired line number.
If no such definition is found, a new one is made up, inserted in the
line buffer, and linked into the proper place in the chain of lines
belonging to the label. In either case, 'LINE/NUMBER.' is given an
integral real value specifying the second subscript of the line definition
in the line buffer.
The definition of a new line has the number specified by the user, a
suppression flag "0.", a character width ".015", a pointer to the text
string "' ' (a single blank)", and a text length of "1.".
Note: The "line numbers" are used to identify the lines of a label and
to specify their positions relative to each other and to the baseline
of the label. Lines having positive line numbers are drawn above the
label baseline, lines having zero line numbers are drawn along the label
baseline, and lines having negative line numbers are drawn below the label
baseline. A line having a greater line number than another line is drawn
above that line. ("Above" and "below" are used here from the viewpoint
of someone reading the label.) The magnitudes of the line numbers in
no way affect inter-line spacing, which is determined by AUTOGRAPH
itself.
A group of five parameters defining the line specified by 'LINE/NUMBER.'.
If 'LINE/NUMBER.' has the value "0.", referencing a parameter in this
group causes an error exit. Subgroups and the number of parameters in
each are as follows:
An integral real number having the value "0." or "1." and specifying
whether drawing of the line specified by 'LINE/NUMBER.' is enabled ("0.")
or disabled ("1.").
Default value for a new line: "0." (line enabled).
Special action by AGSETP: If a user program attempts to set this
parameter (individually, rather than as a part of a group) to a negative
value, the line specified by 'LINE/NUMBER.' is deleted and 'LINE/NUMBER.'
is reset to "0.". (Deleting a line means that it is unlinked from the
chain of lines belonging to its label and that its number cell is set
to "null 1".)
A real number specifying the desired width of each character of the line
specified by 'LINE/NUMBER.', stated as a fraction of the smaller dimension
of the grid window.
Default value for a new line: ".015".
An integral real number serving as an identifier for a character string
stored away in AUTOGRAPH's internal character storage space.
Default value for a new line: "' ' (a single blank)".
Special action by AGSETP: When this parameter is set by a call to AGSETC,
the character string appearing as the second argument of AGSETC is stored
in a character storage array inside AUTOGRAPH, an identifier allowing for
later retrieval of the string is generated, and the value of that
identifier is stored (by AGSETP, which is called by AGSETC) as the
parameter value. At that time, the length of the string is determined
and 'LINE/[DEFINITION/]LENGTH.' is set. See 'LINE/MAXIMUM.' and
'LINE/TERMINATOR.', above.
An integral real count of the number of characters in the text of the
line specified by 'LINE/NUMBER.'. Setting this parameter less than or
equal to zero suppresses the drawing of the line. See also the description
of 'LINE/[DEFINITION/]TEXT.', above.
Default value for a new line: "1." (one character - a blank).
An integral real number specifying the second subscript (in the line
buffer) of the next line of the label - a zero if there is no next line.
This parameter is updated by AUTOGRAPH as lines are added to or deleted
from the label and should not be set by a user program.
A group of 149 "secondary" control parameters. These are not normally set
by a user program, but are computed by AUTOGRAPH itself (the routine
AGSTUP). Their values may be of use in some applications. Subgroups and
the number of parameters in each are as follows:
A group of four real numbers specifying the X coordinates of the left and
right edges of the graph window and the Y coordinates of the bottom and
top edges of the graph window, in the grid coordinate system. These values
are used by AUTOGRAPH to determine whether a point whose coordinates are
expressed in the grid coordinate system lies inside or outside the graph
window.
If the parameters in the group 'GRID.' have their default values (".15",
".95", ".15", ".95", and "0."), these four parameters will be given the
values "-.1875", "1.0625", "-.1875", and "1.0625". Note that -.1875 =
(0.-.15)/(.95-.15) and that 1.0625 = (1.-.15)/(.95-.15).
A set of four real numbers specifying the X coordinates of the left and
right edges of the grid window and the Y coordinates of the bottom and
top edges of the grid window, in the user coordinate system. These values
are used in mapping user curve points into the grid window. The routines
AGSTUP, AGBACK, and AGCURV use these four numbers as arguments 5 through
8 in calls to the system-plot-package routine SET.
A group of four real numbers specifying the X coordinates of the left
and right edges of the grid (curve) window and the Y coordinates of the
bottom and top edges of the grid (curve) window. The X coordinates are
stated as fractions of the distance from left to right, and the Y
coordinates as fractions of the distance from bottom to top, in the
plotter frame. The routines AGSTUP, AGBACK, and AGCURV use these four
numbers as arguments 1 through 4 in calls to the system-plot-package
routine SET. If the parameters in the groups 'GRAPH.' and 'GRID.' have
their default values, these four parameters are given the values ".15",
".95", ".15", and ".95".
A group of three real numbers, the first two of which specify the width
and height of the grid window and the third of which is equal to the
smaller of the first two. Each is stated as a number of plotter units.
If the parameters in the groups 'GRAPH.' and 'GRID.' have their default
values and the plotter being used has 1024x1024 addressable positions,
then each of these three parameters will be given the value 818.4 =
(.95-.15) * 1023.
A group of eighty parameters having to do with the drawing of the four
axes. Subgroups and the number of parameters in each are as follows:
A group of twenty parameters having to do with the drawing of the axis
specified by "s", where "s" is one of the keywords "LEFT", "RIGHT",
"BOTTOM", or "TOP". Subgroups and the number of parameters in each are
as follows:
A group of six real numbers, the first three of which describe a point
at the beginning of axis "s" and the last three of which describe a point
at the end of axis "s". The first two numbers of each triplet are the X
and Y coordinates of the point, in the grid coordinate system. The third
number of each triplet is a user-system X or Y coordinate (an X coordinate
for a horizontal axis, a Y coordinate for a vertical axis) of the point.
A group of three real numbers, specifying the values AUTOGRAPH has chosen
to use for the primary parameters
A group of eleven real numbers having to do with the generation of numeric
labels on the axis specified by "s". The first three of these specify the
values AUTOGRAPH has chosen to use for the primary parameters
The fourth parameter is an integral real count of the number of characters
in the longest numeric-label mantissa on the axis "s".
The fifth parameter is an integral real count of the number of characters
in the longest numeric-label exponent on the axis "s".
The sixth parameter is the necessary multiplicative "reduction factor"
(between "0." and "1.") to be applied to the sizes of numeric labels on
the axis "s" in order to make them fit without overlap problems.
The seventh, eighth, ninth, and tenth parameters are real numbers
specifying the width of the space required by numeric labels to the left
(outward), to the right (inward), at the beginning and at the end of the
axis "s" - each is stated as a fraction of the width or height of the
grid window, depending on the orientation of the axis "s".
The eleventh parameter indicates the linear/log nature of the axis
specified by "s".
A group of fifty-four parameters describing the six "label boxes", each
of which provides a mechanism for moving and/or shrinking a particular
group of labels in attempting to keep any label in that group from
overlapping an axis or extending outside the current graph window.
Subgroups and the number of parameters in each are as follows:
where the keyword "b" specifies the label box, as follows:
The first parameter in the group is a "reduction factor" for the widths
of characters in the labels in box "b". This parameter may have the
interim value "0.", specifying that no actual value has yet been computed,
or "1.", specifying that the user has prohibited shrinkage of labels in
box "b" (by giving 'LABEL/CONTROL.' the value "1."). The final value of
the reduction factor may be "-1.", specifying that minimum-sized labels
were used, but even they led to overlap problems, or a value between "0."
and "1.", specifying the actual reduction factor applied when the labels
were drawn.
The next four parameters in the group specify the grid-system X coordinates
of the left and right edges, and the grid-system Y coordinates of the
bottom and top edges, of label box "b". The interim values specify the
box in which the labels must be made to fit in order to avoid overlap,
the final values the box in which the labels were actually made to fit.
The last four parameters in the group specify the grid-system X coordinates
of the left and right edges, and the grid-system Y coordinates of the
bottom and top edges, of the label box "b" which would result if all the
labels were reduced to minimum size. The interim values specify an unmoved
box, the final values a (possibly) moved box.
See the document "Using NCAR Graphics in a Unix Environment" for additional
details.
Many of the example programs use a subroutine called BNDARY to draw a
boundary line indicating where the edge of the plotter frame is. This
subroutine is not a part of AUTOGRAPH or of the NCAR plot package. It is
written as follows:
'Y/MAXIMUM.'
Simplest form of name: 'Y/MA.'
'Y/LOGARITHMIC.'
Simplest form of name: 'Y/LO.'
'Y/ORDER.'
Simplest form of name: 'Y/OR.'
'Y/NICE.'
Simplest form of name: 'Y/NI.'
'Y/SMALLEST.'
Simplest form of name: 'Y/SM.'
'Y/LARGEST.'
Simplest form of name: 'Y/LA.'
'AXIS.'
Simplest form of name: 'AXI.'
'[AXIS/]LEFT.' (23)
'[AXIS/]RIGHT.' (23)
'[AXIS/]BOTTOM.' (23)
'[AXIS/]TOP.' (23)
The elements of the subgroups are interleaved in the group; that is to
say, the first elements of the four subgroups constitute elements 1
through 4 of the group, the second elements of the four subgroups
constitute elements 5 through 8 of the group, and so on.
'[AXIS/]s.'
(where "s" means "any one of the keywords LEFT, RIGHT, BOTTOM, or TOP".)
'[AXIS/]s/CONTROL.' (1)
'[AXIS/]s/LINE.' (1)
'[AXIS/]s/INTERSECTION.' (2)
'[AXIS/]s/FUNCTION.' (1)
'[AXIS/]s/TICKS.' (10)
'[AXIS/]s/NUMERIC.' (8)
'[AXIS/]s/CONTROL.'
Simplest form of name: 's/CO.'
Default value: "4." for all "s" (all axes drawn, numeric labels may be
shrunk and/or rotated).
'[AXIS/]s/LINE.'
Simplest form of name: 's/LI.'
Default value: "0." for all "s" (line portions of all axes may be drawn).
'[AXIS/]s/INTERSECTION.'
Simplest form of name: 's/IN.'
'[AXIS/]s/INTERSECTION/GRID.'
'[AXIS/]s/INTERSECTION/USER.'
each having the default value "1.E36" ("null 1"). Giving either of them
a non-null value causes the axis specified by "s" to be moved away from
its normal position on one edge of the grid window. If both are given
non-null values, '.../USER.' takes precedence over '.../GRID.'.
'[AXIS/]s/INTERSECTION/GRID.'
Simplest form of name: 's/IN/GR.'
'[AXIS/]s/INTERSECTION/USER.'
Simplest form of name: 's/IN/US.'
'[AXIS/]s/FUNCTION.'
Simplest form of name: 's/FU.'
'[AXIS/]s/TICKS.'
Simplest form of name: 's/TI.'
'[AXIS/]s/[TICKS/]MAJOR.' (6)
'[AXIS/]s/[TICKS/]MINOR.' (4)
'[AXIS/]s/[TICKS/]MAJOR.'
Simplest form of name: 's/MA.'
'[AXIS/]s/[TICKS/]MAJOR/SPACING.' (3)
'[AXIS/]s/[TICKS/]MAJOR/PATTERN.' (1)
'[AXIS/]s/[TICKS/]MAJOR/LENGTH.' (2)
'[AXIS/]s/[TICKS/]MAJOR/SPACING.'
Simplest form of name: 's/MA/SP.'
'[AXIS/]s/[TICKS/]MAJOR/[SPACING/]TYPE.' (1)
'[AXIS/]s/[TICKS/]MAJOR/[SPACING/]BASE.' (1)
'[AXIS/]s/[TICKS/]MAJOR/[SPACING/]COUNT.' (1)
'[AXIS/]s/[TICKS/]MAJOR/[SPACING/]TYPE.'
Simplest form of name: 's/MA/TY.'
Notice that major tick marks on a linear axis may be spaced logarithmically
and that major tick marks on a logarithmic axis may be spaced linearly;
this is sometimes useful.
'[AXIS/]s/[TICKS/]MAJOR/[SPACING/]BASE.'
Simplest form of name: 's/MA/BA.'
'[AXIS/]s/[TICKS/]MAJOR/[SPACING/]COUNT.'
Simplest form of name: 's/MA/CO.'
'[AXIS/]s/[TICKS/]MAJOR/PATTERN.'
Simplest form of name: 's/MA/PA.'
'[AXIS/]s/[TICKS/]MAJOR/LENGTH.'
Simplest form of name: 's/MA/LE.'
'[AXIS/]s/[TICKS/]MAJOR/[LENGTH/]OUTWARD.' (1)
'[AXIS/]s/[TICKS/]MAJOR/[LENGTH/]INWARD.' (1)
'[AXIS/]s/[TICKS/]MAJOR/[LENGTH/]OUTWARD.'
Simplest form of name: 's/MA/OU.'
Default value: "0." for all "s" (all major ticks point inward).
'[AXIS/]s/[TICKS/]MAJOR/[LENGTH/]INWARD.'
Simplest form of name: 's/MA/IN.'
Default value: ".015" for all "s" (all major ticks point inward).
'[AXIS/]s/[TICKS/]MINOR.'
Simplest form of name: 's/MI.'
'[AXIS/]s/[TICKS/]MINOR/SPACING.' (1)
'[AXIS/]s/[TICKS/]MINOR/PATTERN.' (1)
'[AXIS/]s/[TICKS/]MINOR/LENGTH.' (2)
'[AXIS/]s/[TICKS/]MINOR/SPACING.'
Simplest form of name: 's/MI/SP.'
The minor tick marks, if any, are spaced linearly in the label coordinate
system along the axis specified by "s". Note that the appropriate value
for the usual sort of logarithmic axis is "8."; this causes the minor
tick marks between two major tick marks at label-system values
10n and 10n+1 to be placed at the label-system
values 2x10n, 3x10n, 4x10n, . . .,
9x10n.
'[AXIS/]s/[TICKS/]MINOR/PATTERN.'
Simplest form of name: 's/MI/PA.'
'[AXIS/]s/[TICKS/]MINOR/LENGTH.'
Simplest form of name: 's/MI/LE.'
'[AXIS/]s/[TICKS/]MINOR/[LENGTH/]OUTWARD.' (1)
'[AXIS/]s/[TICKS/]MINOR/[LENGTH/]INWARD.' (1)
'[AXIS/]s/[TICKS/]MINOR/[LENGTH/]OUTWARD.'
Simplest form of name: 's/MI/OU.'
'[AXIS/]s/[TICKS/]MINOR/[LENGTH/]INWARD.'
Simplest form of name: 's/MI/IN.'
'[AXIS/]s/NUMERIC.'
Simplest form of name: 's/NU.'
'[AXIS/]s/[NUMERIC/]TYPE.' (1)
'[AXIS/]s/[NUMERIC/]EXPONENT.' (1)
'[AXIS/]s/[NUMERIC/]FRACTION.' (1)
'[AXIS/]s/[NUMERIC/]ANGLE.' (2)
'[AXIS/]s/[NUMERIC/]OFFSET.' (1)
'[AXIS/]s/[NUMERIC/]WIDTH.' (2)
'[AXIS/]s/[NUMERIC/]TYPE.'
Simplest form of name: 's/TY.'
'[AXIS/]s/[NUMERIC/]TYPE.'
'[AXIS/]s/[NUMERIC/]EXPONENT.'
'[AXIS/]s/[NUMERIC/]FRACTION.'
will be described together, because they are so closely interdependent.
They specify the type of numeric labels to be used (at major-tick
positions) on the axis specified by "s". A fourth parameter,
'[AXIS/]s/[TICKS/]MAJOR/[SPACING/]TYPE.',
described above, also affects the type of numeric labels to be used. I
shall refer to these four parameters in the ensuing discussion using short
forms of their names ('s/TYPE.', 's/EXPO.', 's/FRAC.', and 's/MAJOR/TYPE.',
respectively).
[-] [i] [.] [f] x 10 e
where brackets enclose portions which may be independently present or
absent and "e" is a superscript exponent.
[-] [i] [.] [f] x 10 e
[-] [i] [.] [f] x 10 e
[-] [i] [.] [f] e
Setting 's/TYPE.' to "3.":
[-] [i] [.] [f]
[-] [i] [.] [f]
MAX('s/FRAC.',0) - k
MIN('s/FRAC.',0)
.0036, .036, .36, 3.6, 36., 360., and 3600.
[-] [i] [.] [f]
[-] 1/ [i] [.] [f]
's/FRAC.' * ABS(k)
MIN('s/FRAC.',0)
1/1.331, 1/1.21, 1/1.1, 1., 1.1, 1.21, and 1.331
1/16, 1/8, 1/4, 1/2, 1, 2, 4, 8, and 16
Default value: "1.E36" ("null 1") for all three for all "s" (AUTOGRAPH
chooses values to use), except for
'RIGHT/[NUMERIC/]TYPE.' and
'TOP/[NUMERIC/]TYPE.',
which are zeroed to suppress the numeric labels on the right and top
axes.
'[AXIS/]s/[NUMERIC/]EXPONENT.'
Simplest form of name: 's/EX.'
'[AXIS/]s/[NUMERIC/]FRACTION.'
Simplest form of name: 's/FR.'
'[AXIS/]s/[NUMERIC/]ANGLE.'
Simplest form of name: 's/AN.'
'[AXIS/]s/[NUMERIC/]ANGLE/1ST.' (1)
'[AXIS/]s/[NUMERIC/]ANGLE/2ND.' (1)
'[AXIS/]s/[NUMERIC/]ANGLE/1ST.'
Simplest form of name: 's/AN/1S.'
'[AXIS/]s/[NUMERIC/]ANGLE/2ND.'
Simplest form of name: 's/AN/2N.'
'[AXIS/]s/[NUMERIC/]OFFSET.'
Simplest form of name: 's/OF.'
'[AXIS/]s/[NUMERIC/]WIDTH.'
Simplest form of name: 's/WI.'
'[AXIS/]s/[NUMERIC/]WIDTH/MANTISSA.' (1)
'[AXIS/]s/[NUMERIC/]WIDTH/EXPONENT.' (1)
'[AXIS/]s/[NUMERIC/]WIDTH/MANTISSA.'
Simplest form of name: 's/WI/MA.'
'[AXIS/]s/[NUMERIC/]WIDTH/EXPONENT.'
Simplest form of name: 's/WI/EX.'
'DASH.'
Simplest form of name: 'DAS.'
'DASH/SELECTOR.' (1)
'DASH/LENGTH.' (1)
'DASH/CHARACTER.' (1)
'DASH/DOLLAR-QUOTE.' (1)
'DASH/PATTERNS.' (26)
'DASH/SELECTOR.'
Simplest form of name: 'DAS/SE.'
'DASH/LENGTH.'
Simplest form of name: 'DAS/LE.'
'DASH/CHARACTER.'
Simplest form of name: 'DAS/CH.'
'DASH/DOLLAR-QUOTE.'
Simplest form of name: 'DAS/DO.'
'DASH/PATTERNS.'
Simplest form of name: 'DAS/PA.'
'DASH/PATTERNS/1.' (1)
'DASH/PATTERNS/2.' (1)
.
.
.
'DASH/PATTERNS/26.' (1)
'DASH/PATTERNS/n.'
Simplest form of name: 'DAS/PA/n.'
'LABEL.'
Simplest form of name: 'LAB.'
'LABEL/CONTROL.' (1)
'LABEL/BUFFER/LENGTH.' (1)
'LABEL/BUFFER/CONTENTS.' (10n)
'LABEL/NAME.' (1)
'LABEL/CONTROL.'
Simplest form of name: 'LAB/CO.'
Default value: "2." (labels enabled, shrinkable).
'LABEL/BUFFER.'
Simplest form of name: 'LAB/BU.'
'LABEL/BUFFER/LENGTH.' (1)
'LABEL/BUFFER/CONTENTS.' (10n)
'LABEL/BUFFER/LENGTH.'
Simplest form of name: 'LAB/BU/LE.'
'LABEL/BUFFER/CONTENTS.'
Simplest form of name: 'LAB/BU/CO.'
It is not recommended that a user program change the contents of this
buffer directly. Label definitions should be accessed indirectly by
means of the parameters 'LABEL/NAME.' and 'LABEL/[DEFINITION/]...'.Label name: 'L' 'R' 'B' 'T'
Suppression flag: 0. 0. 0. 0.
Basepoint X: 0. 1. .5 .5
Basepoint Y: .5 .5 0. 1.
Offset X: -.015 +.015 0. 0.
Offset Y: 0. 0. -.015 +.015
Baseline angle: 90. 90. 0. 0.
Centering option: 0. 0. 0. 0.
Line count: 1. 1. 1. 1.
First-line index: 1. 2. 3. 4.
'LABEL/BUFFER/NAMES.'
Simplest form of name: 'LAB/BU/NA.'
'LABEL/NAME.'
Simplest form of name: 'LAB/NA.'
'LABEL/DEFINITION.'
Simplest form of name: 'LAB/DE.'
'LABEL/[DEFINITION/]SUPPRESSION.' (1)
'LABEL/[DEFINITION/]BASEPOINT.' (2)
'LABEL/[DEFINITION/]OFFSET.' (2)
'LABEL/[DEFINITION/]ANGLE.' (1)
'LABEL/[DEFINITION/]CENTERING.' (1)
'LABEL/[DEFINITION/]LINES.' (1)
'LABEL/[DEFINITION/]INDEX.' (1)
'LABEL/[DEFINITION/]SUPPRESSION.'
Simplest form of name: 'LAB/SU.'
'LABEL/[DEFINITION/]BASEPOINT.'
Simplest form of name: 'LAB/BA.'
'LABEL/[DEFINITION/]BASEPOINT/X.' (1)
'LABEL/[DEFINITION/]BASEPOINT/Y.' (1)
'LABEL/[DEFINITION/]BASEPOINT/X.'
Simplest form of name: 'LAB/BA/X.'
'LABEL/[DEFINITION/]BASEPOINT/Y.'
Simplest form of name: 'LAB/BA/Y.'
'LABEL/[DEFINITION/]OFFSET.'
Simplest form of name: 'LAB/OF.'
'LABEL/[DEFINITION/]OFFSET/X.' (1)
'LABEL/[DEFINITION/]OFFSET/Y.' (1)
'LABEL/[DEFINITION/]OFFSET/X.'
Simplest form of name: 'LAB/OF/X.'
'LABEL/[DEFINITION/]OFFSET/Y.'
Simplest form of name: 'LAB/OF/Y.'
'LABEL/[DEFINITION/]ANGLE.'
Simplest form of name: 'LAB/AN.'
'LABEL/[DEFINITION/]CENTERING.'
Simplest form of name: 'LAB/CE.'
'LABEL/[DEFINITION/]LINES.'
Simplest form of name: 'LAB/LI.'
'LABEL/[DEFINITION/]INDEX.'
Simplest form of name: 'LAB/IN.'
'LINE.'
Simplest form of name: 'LIN.'
'LINE/MAXIMUM.' (1)
'LINE/END.' (1)
'LINE/BUFFER/LENGTH.' (1)
'LINE/BUFFER/CONTENTS.' (6n)
'LINE/NUMBER.' (1)
'LINE/MAXIMUM.'
Simplest form of name: 'LIN/MA.'
'LINE/[DEFINITION/]TEXT.'
(defining the text of any line). In each of these cases, the character
string must be of the length specified by 'LINE/MAXIMUM.' or shorter. If
it is shorter, its last character must be the character specified by
'LINE/END.', described below.
'LINE/END.'
Simplest form of name: 'LIN/EN.'
'LINE/BUFFER.'
Simplest form of name: 'LIN/BU.'
'LINE/BUFFER/LENGTH.' (1)
'LINE/BUFFER/CONTENTS.' (6n)
'LINE/BUFFER/LENGTH.'
Simplest form of name: 'LIN/BU/LE.'
'LINE/BUFFER/CONTENTS.'
Simplest form of name: 'LIN/BU/CO.'
It is not recommended that a user program change the contents of this
buffer directly. Line definitions should be accessed indirectly by means
of the parameters 'LINE/NUMBER.' and 'LINE/[DEFINITION/]...'.Label name 'L' 'R' 'B' 'T'
Line number +100. -100. -100. +100.
Suppression flag 0. 0. 0. 0.
Character width .015 .015 .015 .020
Text pointed to 'Y' ' ' (a blank) 'X' ' ' (a blank)
Text length 1. 0. 1. 0.
Next-line index 0. 0. 0. 0.
'LINE/NUMBER.'
Simplest form of name: 'LIN/NU.'
'LINE/DEFINITION.'
Simplest form of name: 'LIN/DE.'
'LINE/[DEFINITION/]SUPPRESSION.' (1)
'LINE/[DEFINITION/]CHARACTER.' (1)
'LINE/[DEFINITION/]TEXT.' (1)
'LINE/[DEFINITION/]LENGTH.' (1)
'LINE/[DEFINITION/]INDEX.' (1)
'LINE/[DEFINITION/]SUPPRESSION.'
Simplest form of name: 'LIN/SU.'
'LINE/[DEFINITION/]CHARACTER.'
Simplest form of name: 'LIN/CH.'
'LINE/[DEFINITION/]TEXT.'
Simplest form of name: 'LIN/TE.'
'LINE/[DEFINITION/]LENGTH.'
Simplest form of name: 'LIN/LE.'
'LINE/[DEFINITION/]INDEX.'
Simplest form of name: 'LIN/IN.'
'SECONDARY.'
Simplest form of name: 'SEC.'
'SECONDARY/GRAPH.' (4)
'SECONDARY/USER.' (4)
'SECONDARY/CURVE.' (4)
'SECONDARY/DIMENSIONS.' (3)
'SECONDARY/AXIS.' (80)
'SECONDARY/LABEL.' (54)
'SECONDARY/GRAPH.'
Simplest form of name: 'SEC/GR.'
'SECONDARY/USER.'
Simplest form of name: 'SEC/US.'
'SECONDARY/CURVE.'
Simplest form of name: 'SEC/CU.'
'SECONDARY/DIMENSIONS.'
Simplest form of name: 'SEC/DI.'
'SECONDARY/AXIS.'
Simplest form of name: 'SEC/AX.'
'SECONDARY/[AXIS/]LEFT.' (20)
'SECONDARY/[AXIS/]RIGHT.' (20)
'SECONDARY/[AXIS/]BOTTOM.' (20)
'SECONDARY/[AXIS/]TOP.' (20)
The parameters from the subgroups are interleaved in the group; that is
to say, the first elements of the subgroups comprise elements 1 through
4 of the group, the second elements of the subgroups comprise elements
5 through 8 of the group, and so on.
'SECONDARY/[AXIS/]s.'
Simplest form of name: 'SEC/s.'
'SECONDARY/[AXIS/]s/POSITION.' (6)
'SECONDARY/[AXIS/]s/TICKS.' (3)
'SECONDARY/[AXIS/]s/NUMERIC.' (11)
'SECONDARY/[AXIS/]s/POSITION.'
Simplest form of name: 'SEC/s/PO.'
'SECONDARY/[AXIS/]s/TICKS.'
Simplest form of name: 'SEC/s/TI.'
'[AXIS/]s/[TICKS/]MAJOR/[SPACING/]TYPE.'
'[AXIS/]s/[TICKS/]MAJOR/[SPACING/]BASE.'
'[AXIS/]s/[TICKS/]MINOR/SPACING.'
(which see, above). These secondary parameters are used to hold the values
AUTOGRAPH chooses for the corresponding primary parameters so as not to
disturb "null 1" values of those primary parameters.
'SECONDARY/[AXIS/]s/NUMERIC.'
Simplest form of name: 'SEC/s/NU.'
'[AXIS/]s/[NUMERIC/]TYPE.'
'[AXIS/]s/[NUMERIC/]EXPONENT.'
'[AXIS/]s/[NUMERIC/]FRACTION.'
(which see, above). The secondary parameters are used so as not to disturb
"null 1" values of the primary parameters.
'SECONDARY/LABEL.'
Simplest form of name: 'SEC/LA.'
'SECONDARY/LABEL/LEFT.' (9)
'SECONDARY/LABEL/RIGHT.' (9)
'SECONDARY/LABEL/BOTTOM.' (9)
'SECONDARY/LABEL/TOP.' (9)
'SECONDARY/LABEL/CENTER.' (9)
'SECONDARY/LABEL/GRAPH.' (9)
The parameters of the subgroups are interleaved in the group. The first
elements of the subgroups form elements 1 through 6 of the group, the
second elements of the subgroups form elements 7 through 12 of the group,
and so on.
'SECONDARY/LABEL/b.'
Simplest form of name: 'SEC/LA/b.'
Prior to a call to AGSTUP, the nine parameters in this group are
undefined. Following an AGSTUP call, but preceding an AGBACK call,
they have what I shall call "interim" values. Following an AGBACK call,
they have what I shall call "final" values.
EXAMPLES
Fourteen examples are available for AUTOGRAPH, illustrating many of its
capabilities. On a Unix system on which NCAR Graphics has been installed,
one may obtain the code for an example and run it by executing the command
ncargex example_name
where "example_name" is one of the following:
tautog tagupw agex01 agex02 agex03 agex04 agex05 agex06 agex07 agex08
agex09 agex10 agex11 agex12 agex13
To obtain the code for an example without running it, one uses the command
ncargex -n example_name
Then, after the code has been examined and, perhaps, modified, it can be
compiled and executed using the commands
ncargf77 *.f
a.out
The metafile created by executing an example can be viewed using the
command
ctrans metafile_name
(It may be necessary to set some environment variables and/or to set other
options on the "ctrans" command line.)
SUBROUTINE BNDARY
CALL PLOTIT ( 0, 0,0)
CALL PLOTIT (32767, 0,1)
CALL PLOTIT (32767,32767,1)
CALL PLOTIT ( 0,32767,1)
CALL PLOTIT ( 0, 0,1)
RETURN
END
The Example "tautog"
This example is used to demonstrate minimal functioning of AUTOGRAPH. It
produces four very simple graphs - one by calling EZY, another by calling
EZXY, another by calling EZMY, and a fourth by calling EZMXY.
The Example "tagupw"
This example produces the same plots as does "tautog", but labels them
using PWRITX.
The Example "agex01"
This example illustrates a simple use of EZY. Note that AUTOGRAPH chose
to use exponential left-axis numeric labels, since non-exponential labels
would have required more characters.
The Example "agex02"
This example illustrates a simple use of EZXY. Note that X coordinates
used need not be monotonically increasing.
The Example "agex03"
This example illustrates a simple use of EZMY.
The Example "agex04"
This example illustrates a simple use of EZMXY - nested ellipses.
The Example "agex05"
This example illustrates a relatively simple use of EZMXY; generating
the data requires using some really fascinating numeric constants.
Essentially, six circles are drawn; two small portions of each are
blanked out by salting in some "null 1's" (1.E36's). The result is a
possibly recognizable commercial logo.
The Example "agex06"
This example illustrates the use of the graph window and the four
principal types of backgrounds one can use: perimeter, grid, half-axis,
and "none". Note that I have cheated a bit and turned the labels back on
for the last of these. This example also illustrates the use of linear
and logarithmic X and Y mappings.
The Example "agex07"
This example illustrates several features. It shows how to define
informational labels. It shows how label coordinate systems along
an axis are defined. Windowing is used to prevent the curves from
running wild. The "user" set of dashed-line patterns is employed.
("Incrudescence" is just a silly word that I invented, by the way.)
The Example "agex08"
This example demonstrates that one can plot "X as a function of Y",
that label values can run "backwards" along an axis, and that axes
need not have major tick marks at their ends. The "alphabetic" set
of dashed-line patterns is used. Major tick marks on the X axis are
extended in both directions.
The Example "agex09"
This example shows how to create a hybrid logarithmic axis with positive
values on one end and negative values on the other; a line of discontinuity
separates the two. The routine AGCHNL is replaced by a version which forces
the numeric label in the middle of the left axis to be blank.
The Example "agex10"
This example shows how to create non-standard numeric labels on the axes.
The bottom X axis is labelled with the names of the months, and the left
Y axis with Roman numerals.
The Example "agex11"
This example shows how to create a scattergram.
The Example "agex12"
This example shows how to create the effect of a histogram. Shading is
done by the NCAR Graphics utility SOFTFILL.
A Final Example - The Example "agex13"
The final example conveys an appropriate message. It demonstrates two
of the peculiar types of numeric labels which may be generated. (There
are others.) It also demonstrates the use of dashed ticks which have
been extended to create grid lines (a rather time-consuming business
which produces a nice effect).
MESSAGES
AUTOGRAPH routines detect certain errors and, in response, call the routine
SETER, which is an adapted version of a PORT error handler. Currently, all
such errors are treated as being fatal and cause termination of the job. An
error message is logged before the job is terminated. Each such message
includes the name of the routine which detected the error and may be
accompanied by supplementary information aimed at allowing the user to
easily identify the call that caused the error. The possible error messages
are as follows (in alphabetical order):
AGEXAX (CALLED BY AGSTUP) - USER-SYSTEM-TO-LABEL-SYSTEM MAPPING IS NOT MONOTONIC
This probably means that you have replaced the default routine AGUTOL with
a version of your own, and you've blown it.
AGGETC - PARAMETER TO GET IS NOT INTRINSICALLY OF TYPE CHARACTER
The argument TPGN specifies a parameter which is not intrinsically of type
character. See the description of AGGETC, in the section
"ROUTINES".
AGGETP OR AGSETP - ATTEMPT TO ACCESS LABEL ATTRIBUTES BEFORE SETTING LABEL NAME
The parameter 'LABEL/NAME.' must be set prior to the call which gave the
error message, specifying which label's attributes are being referenced.
AGGETP OR AGSETP - ATTEMPT TO ACCESS LINE ATTRIBUTES BEFORE SETTING LINE NUMBER
The parameter 'LINE/NUMBER.' must be set prior to the call which gave the
error message, specifying which label line's attributes are being
referenced.
AGGETP OR AGSETP - ILLEGAL KEYWORD USED IN PARAMETER IDENTIFIER
The argument TPGN contains an unrecognizable keyword.
AGKURV - NUMBER OF POINTS IS .LE. 0
The argument NEXY, in a call to AGCURV, is less than or equal to zero. The
routine AGKURV is called by AGCURV to draw un-windowed curves.
AGNUMB - MANTISSA TOO LONG
AGNUMB - EXPONENT TOO LARGE
AGNUMB - ZERO-LENGTH MANTISSA
AGNUMB is called by AGAXIS to generate a character string expressing the
value of a real number. You should not be able to generate any of AGNUMB's
error messages. If you do, see the AUTOGRAPH specialist.
AGQURV - NUMBER OF POINTS IS .LE. 0
The argument NEXY, in a call to AGCURV, is less than or equal to zero. The
routine AGQURV is called by AGCURV to draw windowed curves.
AGRSTR - ERROR ON READ
AGRSTR - END-OF-FILE ON READ
Probably the unit specified by IFNO was not positioned properly.
AGSAVE - ERROR ON WRITE
A system error has occurred as a result of the attempted "WRITE".
AGSETC - PARAMETER TO SET IS NOT INTRINSICALLY OF TYPE CHARACTER
This means that the argument TPGN specifies some parameter other than one
of the acceptable possibilities. See the description of AGSETC in the section
"ROUTINES".
AGSETP - ATTEMPT TO DEFINE LINE OF NON-EXISTENT LABEL
The user has attempted to define a line of a label without first specifying
which label; 'LABEL/NAME.' must be set prior to the call which gave the
error message.
AGSETP - LABEL LIST OVERFLOW - SEE AUTOGRAPH SPECIALIST
The user has attempted to define more labels than AUTOGRAPH can handle; a
modification of AUTOGRAPH is required. See the paragraph
"INFORMATIONAL LABELS", in the
section "OVERVIEW", or talk to the AUTOGRAPH
specialist.
AGSETP - LINE LIST OVERFLOW - SEE AUTOGRAPH SPECIALIST
The user has attempted to define more label lines than AUTOGRAPH can handle;
a modification of AUTOGRAPH is required. See the paragraph
"INFORMATIONAL LABELS", in the
section "OVERVIEW", or talk to the AUTOGRAPH
specialist.
AGSTCH - CHARACTER-STRING BUFFER OVERFLOW - SEE CONSULTANT
The routine AGSTCH is called by AGSETC to stash the character string in
AUTOGRAPH's character storage space. The available storage space has been
exhausted. See the consultant.
AGSTCH - CHARACTER-STRING INDEX OVERFLOW - SEE CONSULTANT
The routine AGSTCH is called by AGSETC to stash the character string in
AUTOGRAPH's character storage space. Too many such strings have been stored.
See the consultant.
AGSTUP - GRAPH WINDOW IMPROPERLY SPECIFIED
The parameters in the group named 'GRAPH.' have improper values.
AGSTUP - GRID WINDOW IMPROPERLY SPECIFIED
The parameters in the group named 'GRID.' have improper values. This is most
likely to occur when 'SET.' has the value "2." or "4.", specifying that the
edges of the grid window are to be as implied by the last call to the plot
package routine SET. Check to make sure that the portion of the plotter
frame specified by the last SET call is within the current graph window.
AGSTUP - s LABELS IMPROPERLY SPECIFIED
(where "s" = "LEFT", "RIGHT", "BOTTOM", "TOP", or "INTERIOR"). Re-read the
paragraph "THE LABEL BOXES", in the section "OVERVIEW"
. You have defined a label with a basepoint on one edge of the grid
window and an offset vector pointing outward, some part of which extends
inside the grid window (or vice-versa). This is not allowed.