Name: BARS    10,20
BARS plots bar graphs.
The call is:  CALL BARS (XRAY, Y1RAY, Y2RAY, N)       level 2, 3
         or:  void bars (float *xray, float *y1ray, 
                                           float *y2ray, int n); 
XRAY          is an array  of user coordinates  defining the po-
              sition of the bars on the X-axis.
Y1RAY         is an array  of user  coordinates  containing  the
              start points of the bars on the Y-axis.
Y2RAY         is an array  of user  coordinates  containing  the
              end points of the bars on the Y-axis.
N             is the number of bars.
Notes:      - Shading patterns of bars can be selected with SHD-
              PAT or MYPAT. Shading numbers will be  incremented
              by 1 after every call to BARS.
            - Legends can be plotted for bar graphs.
Name: FBARS   10,20
FBARS plots financial bars for open, high, low and close prices.
The bars are displayed  as line bars or candlestick bars.
The call is:  CALL FBARS (XRAY,  Y1RAY, Y2RAY, Y3RAY, Y4RAY,  N)
                                                      level 2, 3
         or:  void fbars (const float *xray, const float *y1ray, 
                         const float *y2ray, const float *y3ray, 
                         const float *y4ray, int n); 
XRAY          is an array  of user coordinates  defining the po-
              sition of the bars on the X-axis.
Y1RAY         is  an array  of user  coordinates  containing the 
              open prices.
Y2RAY         is  an array  of user  coordinates  containing the
              high prices.
Y3RAY         is  an array  of user  coordinates  containing the
              low prices.
Y4RAY         is  an array  of user  coordinates  containing the
              close prices.
N             is the number of bars.
Notes:     -  The  type  of the  financial bars  can be selected
              with the routine BARTYP.
           -  BARCLR sets colours for finacial bars.
Name: BARTYP  20
The routine BARTYP defines vertical or horizontal bars.
The call is:  CALL BARTYP (CTYP)                   level 1, 2, 3
         or:  void bartyp (const char *ctyp);
CTYP          is a character string defining the bar type.
  = 'VERT'    means that vertical bars will be plotted.
  = 'HORI'    means  that  horizontal  bars will be plotted.  If
              this parameter is used,  XRAY defines the position
              of the bars  on the Y-axis while  Y1RAY  and Y2RAY
              define the position of the bars on the X-axis.
  = '3DVERT'  defines vertical 3-D bars.
  = '3DHORI'  defines horizontal 3-D bars.
   = 'CANDLE' defines candlestick bars for financial bars.
   = 'TICKS'  defines financial line bars with tick marks.
                              Defaults: CTYP = 'VERT', 'CANDLE'.
Name: CHNBAR  20
CHNBAR modifies colours and shading patterns for single bars.
The call is:  CALL CHNBAR (CATT)                   level 1, 2, 3
         or:  void chnbar (const char *catt);
CATT          is a character string defining bar attributes.
 = 'NONE'     means that all bars will  be plotted with the cur-
              rent colour and shading pattern.
 = 'COLOR'    means that the colour is changed for each bar.
 = 'PATTERN'  means that  the  shading  pattern  is changed  for
              each bar.
 = 'BOTH'     means that the colour and shading pattern is chan-
              ged for each bar.
                                         Default: CATT = 'NONE'.
Notes:      - The sequence  of colours is:    WHITE/BLACK,  RED,
              GREEN, YELLOW, BLUE, ORANGE, CYAN, MAGENTA.
              The sequence of shading patterns is 0 - 17.
              Colour  and  pattern cycles  can  be changed  with
              CLRCYC and PATCYC.
            - If the routine BARCLR is used, the changing of co-
              lours will be ignored.  
Name: BARMOD  20
BARMOD modifies the width of bars.
The call is:  CALL BARMOD (CMOD, COPT)             level 1, 2, 3
         or:  void barmod (const char *cmod, const char *copt);
CMOD          is a character  string  that  can have  the values 
              'FIXED' and 'VARIABLE'.  If CMOD = 'VARIABLE', the 
              width of bars plotted by  the routine BARS will be
              variable. In that case, XWTH should have a positi-
              ve value in BARWTH since the width of bars is cal-
              culated in a similar way as described in BARWTH.
COPT          is a  character string that must contain the value
              'WIDTH'.              Default: ('FIXED', 'WIDTH').
Name: BARPOS  20
The position of the bars is determined  by the parameters  XRAY,
Y1RAY and Y2RAY. The routine BARPOS can be used to select prede-
fined positions. The parameters  XRAY, Y1RAY and Y2RAY will con-
tain the calculated positions.
The call is:  CALL BARPOS (COPT)                   level 1, 2, 3
         or:  void barpos (const char *copt);
COPT          is a character string that defines the position of
              the bars.
  = 'NONE'    means that the  positions are defined  only by the
              parameters in BARS.
  = 'TICKS'   means  that  the bars  will  be centred  at  major
              ticks. XRAY must be a dummy vector.
  = 'AXIS'    means that vertical bars start  at the  X-axis and
              horizontal bars  at the  Y-axis.  Y1RAY must  be a
              dummy vector.
  = 'BOTH'    activates the options 'TICKS' and 'AXIS'. XRAY and
              Y1RAY must be dummy arrays.
                                         Default: COPT = 'NONE'.
Name: BARGRP  20
The routine  BARGRP  puts bars with the same axis position  into
groups.  The number of group elements  should be the same as the
number of calls to the routine BARS.
The call is:  CALL BARGRP (NGRP, GAP)              level 1, 2, 3
         or:  void bargrp (int ngrp, float gap);
NGRP          is the number of bars defining one group.
GAP           defines the spacing between group bars.  If GAP is
              positive, the value GAP * W is used where W is the
              width of a single bar. If GAP is negative, the po-
              sitive value of GAP is used where GAP must be spe-
              cified in plot coordinates.
Name: BARCLR  20
The routine  BARCLR  defines the colours of bars. Different col-
ours can be defined for the sides of 3-D bars.
The call is:  CALL BARCLR (IC1, IC2, IC3)          level 1, 2, 3
         or:  void barclr (int ic1, int ic2, int ic3);
IC1, IC2, IC3 are  colour  values  for  the front, side and  top 
              planes of 3-D bars.  The value -1 means  that  the
              corresponding  plane  is  plotted with the current
              colour.
              For financial bars, IC1 is  the colour of the line
              bars, IC2 the colour of the open ticks and IC3 the
              colour of the close ticks. 
                                          Default: (-1, -1, -1).
Name: BARBOR  20
The routine  BARBOR defines the colour of borders plotted around
the bars.  By default, a border in the current colour is plotted
around 2-D bars,  and borders in the foreground colour are plot-
ted around 3-D bars.
The call is:  CALL BARBOR (IC)                     level 1, 2, 3
         or:  void barbor (int ic);
IC            is a colour value.  If IC = -1, the current colour
              is used.
                                                Default: IC = -1
Name: BAROPT  20
The routine BAROPT modifies the appearance of 3-D bars.
The call is:  CALL BAROPT (XF, ANG)                level 1, 2, 3
         or:  void baropt (float xf, float ang);
XF            is a floating point number  that defines the depth
              of bars.  IF XF = -1.,  the bar width is  used for
              the  bar depth.  IF XF > 0.,  XF is interpreted as
              the bar depth specified in plot coordinates.
ANG           defines an angle measured  in degrees between  the
              front and side planes of 3-D bars.
                                            Default: (-1., 45.).
Name: PIEGRF  21
PIEGRF plots pie charts.
The call is:  CALL PIEGRF (CBUF, N, XRAY, NSEG)          level 1
         or:  void piegrf (const char *cbuf, int n, 
                                   const float *xray, int nseg);
CBUF          is a  character string  containing  text lines for
              segment labels. More than one line can be  defined
              for labels. CBUF must be created with LEGLIN after
              calling LEGINI. If N is 0 in the  parameter  list,
              CBUF can be a dummy variable.
N             is the number of  text lines used  for one segment
              label.
XRAY          is an array of user coordinates.
NSEG          is the dimension of XRAY.
Notes:      - The centre  and the size of pies  is defined  by a
              region  that can be changed with the routines AXS-
              POS and AXSLEN.
            - PIEGRF sets the level to 2. Titles and legends can
              be plotted after PIEGRF is called.
            - Segment  labels can contain  several lines of text
              and the data values specified in PIEGRF.  Data va-
              lues can also be converted to percent values.
            - Segment labels are contained  within  a box  where
              the  thickness  of the border  can be changed with
              FRAME.
Name: PIETYP  21
The routine PIETYP defines 2-D or 3-D pie charts.
The call is:  CALL PIETYP (CTYP)                   level 1, 2, 3
         or:  void pietyp (const char *ctyp);
CTYP          is a character string defining the pie type.
  = '2D'      defines a 2-D pie chart.
  = '3D'      defines a 3-D pie chart.
                                           Default: CTYP = '2D'.
Name: CHNPIE  21
CHNPIE defines colours and shading patterns for pie graphs.
The call is:  CALL CHNPIE (CATT)                   level 1, 2, 3
         or:  void chnpie (const char *catt);
CATT          is a character string defining segment attributes.
  = 'NONE'    means that all pie  segments will be  plotted with
              the current colour and shading pattern.
  = 'COLOR'   means that every segment will have a different co-
              lour.
  = 'PATTERN' means  that  every  segment will have  a different
              shading pattern.
  = 'BOTH'    means  that every  segment will have both a diffe-
              rent colour and shading pattern.
                                      Default: CATT = 'PATTERN'.
Note:         The sequence  of colours is:    WHITE/BLACK,  RED,
              GREEN, YELLOW, BLUE, ORANGE, CYAN, MAGENTA.
              The sequence of shading patterns is 0 - 17.
              Colour  and  pattern cycles  can  be changed  with
              CLRCYC and PATCYC.
Name: PIECLR  21
The routine  PIECLR  defines colours for single pies.  Different
colours can be defined for the top  and front sides of 3-D pies.
PIECLR has no effect  if the  routine  CHNPIE is called with the
parameters 'COLOR' or 'BOTH'.
The call is:  CALL PIECLR (NC1RAY, NC2RAY, N)      level 1, 2, 3
         or:  void pieclr (const int *nc1ray, const int *nc2ray,
                                                         int n);
NC1RAY,       are integer  arrays containing  colour values  for 
  NC2RAY      the top  and  front sides of pies.  The  value  -1
              means that the current colour is used.
N             is the dimension of NC1RAY and NC2RAY.
Name: PIEBOR  21
The routine  PIEBOR defines the colour of borders plotted around
the pies.  By default, a border in the current colour is plotted
around 2-D pies,  and borders in the foreground colour are plot-
ted around 3-D pies.
The call is:  CALL PIEBOR (IC)                     level 1, 2, 3
         or:  void piebor (int ic);
IC            is a colour value.  If IC = -1, the current colour
              is used.
                                                Default: IC = -1
Name: PIEOPT  21
The routine PIEOPT modifies the appearance of 3-D pies.
The call is:  CALL PIEOPT (XF, ANG)                level 1, 2, 3
         or:  void pieopt (float xf, float ang);
XF            is a scaling number  that defines the thickness of
              pies. The thickness is set to XF * radius.
ANG           defines an view angle measured in degrees.
                                            Default: (0.2, 45.).
Name: PIELAB  21
The routine PIELAB defines character strings that can be plotted
on the left or right side of data values within segment labels.
The call is:  CALL PIELAB (CLAB, CPOS)             level 1, 2, 3
         or:  void pielab (const char *clab, const char *cpos);
CLAB          is a character string displayed in segment labels.
CPOS          is a character string that defines the position of
              CLAB.
  = 'LEFT'    means that  CLAB will be plotted  on the left side
              of data values.
  = 'RIGHT'   means that CLAB will be plotted on the  right side
              of data values.
Note:         If percent and data values are plotted in  segment
              labels, PIELAB is only used for data values.
Name: PIEEXP  21
Pie segments  will be  offset by  8%  of the radius if PIEEXP is
called.
The call is:  CALL PIEEXP
         or:  void pieexp ();
Note:         Single segments  will be offset  if the correspon-
              ding values in PIEGRF are negative.
Name: PIEROT  21
The routine PIEROT defines a rotation angle for 2-D pies.
The call is:  CALL PIEROT (ANGLE)                  level 1, 2, 3
         or:  void pierot (float angle);
ANGLE         is the rotation angle in degrees.  The 2-D pie  is
              rotated  in a counter-clockwise direction.
Name: PIEVAL  21
The routine  PIEVAL  affects the distance of external labels for
the pie.
The call is:  CALL PIEVAL (X, CKEY)                level 1, 2, 3
         or:  void pieval (float x, const char *ckey);
X             is a floating point variable containing the value.
COPT = 'CKEY' is a character  string  that  can have  the values
              'GAP' and 'DISTANCE'. The keyword 'GAP'  means the
              gap in plot coordinates between the arrows and the
              pie. The keyword 'DISTANCE' defines a scaling fac-
              tor for the  distance of  the label boxes from the
              pie.
                                          Default: (20., 'GAP'),
                                              (1.0, 'DISTANCE').
Name: PIEVEC  21
PIEVEC modifies  the arrows plotted between segments  and labels
that lie outside of segments.
The call is:    CALL PIEVEC (IVEC, COPT)           level 1, 2, 3
         or:    void pievec (int ivec, const char *copt);
IVEC            defines the arrow head (see VECTOR).
COPT            is a  character string  that defines  the vector
                plotted between segments and labels.
  = 'NONE'      suppresses vectors.
  = 'STRAIGHT'  means that straight vectors will be plotted.
  = 'BROKEN'    means that broken vectors will be plotted.
                                      Default: (2301, 'BROKEN').
Name: PIECBK  21 
The routine  PIECBK  defines  a user  written  callback  routine
that is called by  PIEGRF for each segment. The callback routine
allows  the  modification  of pie  charts  such  as  suppressing 
certain labels.
The call is:  CALL PIECBK (Routine)                level 1, 2, 3
ROUTINE       is the name of a routine  defined by the user.  In 
              Fortran, the routine must be declared as EXTERNAL. 
The syntax of the callback routine is:

SUBROUTINE    Routine (ISEG,  XDAT,  XPER,  NRAD,  NOFF,  ANGLE,
                       NVX,  NVY,  IDRW,  IANN)      
         or:  void Routine (int iseg, float xdat, float xp, 
                      int *nrad, int *noff, float *ang, 
                      int *nvx, int *nvy, int *idrw, int *iann); 
where:
ISEG          is the segment index (starting with 1).
XDAT          is the data value  of the segment  as specified in
              PIEGRF.
XP            is the percent value of XDAT.
NRAD          is the segment radius in plot coordinates.
NOFF          is the segment  offset  in  plot coordinates  (de-
              fault: 0).
ANG           is the  offset  angle  measured  in  degrees  in a
              counter-clockwise direction. The default  value is
              the angle which bisects the segment.
NVX           shifts the segment label in the X-direction by NVX
              plot coordinates.
NVY           shifts the segment label in the Y-direction by NVY
              plot coordinates.
IDRW          defines  the plotting  of segments.  If  IDRW = 0,
              plotting will be suppressed (default: 1).
IANN          defines  the plotting of labels.  If IANN = 0, la-
              bels will be suppressed (default: 1).
Notes:     -  The first  3 parameters of  USRPIE  are only given
              for information and cannot be changed by the user.
           -  The callback routine is a replacement for the user
              written routine  USRPIE  that  can still  be used,
              but  is not working for shareable and DISLIN wrap-
              per libraries.  USRPIE has the same syntax  as the
              callback routine, but without the parameter NVX.
Name: USRPIE  21
USRPIE is a user-defined  subroutine  that can modify pie charts
such as suppressing certain labels.  USRPIE is called by  PIEGRF
for each segment.
The call is:  CALL USRPIE (ISEG, XDAT, XP, NRAD, NOFF, ANG, NVY,
                                                     IDRW, IANN)
         or:  void usrpie (int iseg, float xdat, float xp, 
                      int *nrad, int *noff, float *ang,
                      int *nvy, int *idrw, int *iann); 
ISEG          is the segment index (starting with 1).
XDAT          is the data value  of the segment  as specified in
              PIEGRF.
XP            is the percent value of XDAT.
NRAD          is the segment radius in plot coordinates.
NOFF          is the segment  offset  in  plot coordinates  (de-
              fault: 0).
ANG           is the  offset  angle  measured  in  degrees  in a
              counter-clockwise direction. The default  value is
              the angle which bisects the segment.
NVY           shifts the segment label in the Y-direction by NVY
              plot coordinates.
IDRW          defines  the plotting  of segments.  If  IDRW = 0,
              plotting will be suppressed (default: 1).
IANN          defines  the plotting of labels.  If IANN = 0, la-
              bels will be suppressed (default: 1).
Note:         The first  3 parameters of  USRPIE  are only given
              for information and cannot be changed by the user.
