Name: NXPOSN  18
The function  NXPOSN converts X user coordinates to plot coordi-
nates.
The call is:  IXP = NXPOSN (X)                        level 2, 3
         or:  int   nxposn ();
IXP           is the plot coordinate returned by NXPOSN.
X             is the user coordinate to be converted.
Name: NYPOSN  18
The function  NYPOSN converts Y user coordinates to plot coordi-
nates.
The call is:  IYP = NYPOSN (Y)                        level 2, 3
         or:  int   nyposn ();
IYP           is the plot coordinate returned by NYPOSN.
Y             is the user coordinate to be converted.
Name: XPOSN   18
The function XPOSN converts X user coordinates to plot coordina-
tes.
The call is:  XP  = XPOSN (X)                         level 2, 3
         or:  float xposn ();
XP            is the plot coordinate returned by XPOSN.
X             is the user coordinate to be converted.
Name: YPOSN   18
The function YPOSN converts Y user coordinates to plot coordina-
tes.
The call is:  YP  = YPOSN (Y)                         level 2, 3
         or:  float ypson ();
YP            is the plot coordinate returned by YPOSN.
Y             is the user coordinate to be converted.
Name: XINVRS  18
The function  XINVRS converts X plot coordinates to user coordi-
nates.
The call is:  X  =  XINVRS (NXP)                      level 2, 3
         or:  float xinvrs (nxp);
X             is the user coordinate returned by XINVRS.
NXP           is the plot coordinate to be converted.
Name: YINVRS  18
The function  YINVRS converts Y plot coordinates to user coordi-
nates.
The call is:  Y  =  YINVRS (NYP)                      level 2, 3
         or:  float yinvrs (nyp);
Y             is the user coordinate returned by YINVRS.
NYP           is the plot coordinate to be converted.
Name: TRFREL  18
TRFREL converts user coordinates to plot coordinates.
The call is:  CALL TRFREL (XRAY, YRAY, N)             level 2, 3
         or:  void trfrel (float *xray, float *yray, int n);
XRAY, YRAY    are arrays containing the user coordinates.  After
              the call, they contain the calculated plot coordi-
              nates.
N             is the number of points.
Name: TRFCO1  18
The routine TRFCO1 converts one-dimensional coordinates.
The call is:  CALL TRFCO1 (XRAY, N, CFROM, CTO) level 0, 1, 2, 3
XRAY          is an array containing angles expressed in radians
              or degrees.  After a call to TRFCO1, XRAY contains
              the converted coordinates.
N             is the number of coordinates.
CFROM, CTO    are  character strings  that  can have  the values 
              'DEGREES' and 'RADIANS'.
Name: TRFCO2  18
The routine TRFCO2 converts two-dimensional coordinates.
The call is:  CALL TRFCO2 (XRAY, YRAY, N, CFROM, CTO)
                                                level 0, 1, 2, 3
XRAY, YRAY    are arrays containing rectangular or polar coordi-
              nates.  For  polar coordinates,  XRAY contains the
              angles measured in degrees and YRAY the radii.
N             is the number of coordinates.
CFROM, CTO    are  character strings  that  can  have the values
              'RECT' and 'POLAR'. 
Name: TRFCO3  18
The routine TRFCO3 converts three-dimensional coordinates.
The call is:  CALL TRFCO3 (XRAY, YRAY, ZRAY, N, CFROM, CTO)
                                                level 0, 1, 2, 3
XRAY, YRAY,   are arrays  containing rectangular,  spherical  or
    ZRAY      cylindrical  coordinates.   Spherical  coordinates
              must be in the form  (longitude, latitude, radius)
              where
                       0 <= longitude <= 360   and
                     -90 <= latitude  <=  90.
              Cylindrical  coordinates  must  be in  the  form
              (angle, radius, z).
N             is the number of coordinates.
CFROM, CTO    are  character strings  that can  have  the values
              'RECT','SPHER' and 'CYLI'. 

Name: NLMESS  19
The function  NLMESS returns the length  of text in plot coordi-
nates.
The call is:  NL = NLMESS (CSTR)                   level 1, 2, 3
         or:  int  nlmess (cstr);
CSTR          is a character string (<= 256 characters).
NL            is the length in plot coordinates.
Name: TRMLEN  19
The function TRMLEN  returns the number of  characters in a cha-
racter string.
The call is:  NL = TRMLEN (CSTR)                level 0, 1, 2, 3
         or:  int  trmlen (cstr);
CSTR          is a character string.
NL            is the number of characters.
Name: UPSTR   19
UPSTR converts a character string to uppercase letters.
The call is:  CALL UPSTR (CSTR)                 level 0, 1, 2, 3
         or:  void upstr (char *cstr);
CSTR          is a character string to be converted.
Name: NLNUMB  19
NLNUMB calculates the length of numbers in plot coordinates.
The call is:  NL = NLNUMB (X, NDIG)                level 1, 2, 3
         or:  int  nlnumb (float x, int ndig);
X             is a real number.
NDIG          is the number of decimal places (>= -1).
NL            is the length in plot coordinates.
Name: INTLEN  19
INTLEN calculates the number of digits in integers.
The call is:  CALL INTLEN (NX, NL)              level 0, 1, 2, 3
         or:  int  intlen (int nx);
NX            is an integer.
NL            is the number of digits.
Name: FLEN    19
FLEN calculates the number of digits in real numbers.
The call is:  CALL FLEN (X, NDIG, NL)           level 0, 1, 2, 3
         or:  int  flen (float x, int ndig);
X             is a real number.
NDIG          is the number of decimal places (>= -1).
NL            is the  number  of digits  including  the  decimal
              point.
              For negative numbers, it includes the minus sign.
Name: INTCHA  19
INTCHA converts integers to character strings.
The call is:  CALL INTCHA (NX, NL, CSTR)        level 0, 1, 2, 3
         or:  int  intcha (int nx, char *cstr);
NX            is the integer to be converted.
NL            is the number of digits in NX returned by INTCHA.
CSTR          is the character string containing the integer.
Name: FCHA    19
FCHA converts real numbers to character strings.
The call is:  CALL FCHA (X, NDIG, NL, CSTR)     level 0, 1, 2, 3
         or:  int  fcha (float x, int ndig, char *cstr);
X             is the real number to be converted.
NDIG          is the number of decimal places to  be  considered
              (>= -1). The last digit will be rounded up.
NL            is the number of digits returned by FCHA.
CSTR          is  the character string  containing the real num-
              ber.
Name: SORTR1  19
SORTR1 sorts real numbers.
The call is:  CALL SORTR1 (XRAY, N, COPT)       level 0, 1, 2, 3
         or:  void sortr1 (float *xray, int n, char *copt);
XRAY          is an array containing real numbers.
N             is the dimension of XRAY.
COPT          defines the sorting  direction. IF COPT = 'A', the
              numbers will be sorted in ascending order; if COPT
              = 'D', they will be sorted in descending order.
Name: SORTR2  19
SORTR2 sorts two-dimensional points in the X-direction.
The call is:  CALL SORTR2 (XRAY, YRAY, N, COPT) level 0, 1, 2, 3
         or:  void sortr2 (float *xray, float *yray, int n, 
                                                    char *copt);
XRAY, YRAY    are arrays containing the coordinates.
N             is the number of points.
COPT          defines the sorting direction.  IF COPT = 'A', the
              numbers will be sorted in ascending order; if COPT
              = 'D', they will be sorted in descending order.
Note:         The Shell-algorithm is used for sorting.
Name: SPLINE  19
SPLINE calculates splined points used in CURVE to plot a spline.
The call is:  CALL SPLINE (XRAY, YRAY, N, XSRAY, XSRAY, NSPL)
                                                   level 1, 2, 3
         or:  void spline (float *xray,  float *yray,  int n,
                          float *xsray, float *ysray, int *nspl)
XRAY, YRAY    are arrays containing points of the curve.
N             is the dimension of XRAY and YRAY.
XSRAY, YSRAY  are the splined points returned by SPLINE.
NSPL          is  the number  of calculated  splined points  re-
              turned by SPLINE.  By default,  NSPL has the value
              201.
Note:         The number of interpolated points and the order of
              the polynomials can be modified with SPLMOD.
Name: BEZIER  19
The routine BEZIER calculates a Bezier interpolation.
The call is:  CALL BEZIER (XRAY, YRAY, N, XPRAY, YPRAY, NP) 
                                                   level 1, 2, 3
         or:  void bezier (float *xray,  float *yray,  int n,
                            float *xpray, float *ypray, int np);   
XRAY, YRAY    are arrays containing points of the curve.
N             is the dimension of XRAY and YRAY (1 < N < 21).
XPRAY, YPRAY  are the Bezier points returned by BEZIER.
NP            is the number of calculated  points defined by the
              user.
Name: HISTOG  19
The routine HISTOG calculates a histogram.
The call is:  CALL HISTOG (XRAY, N, XHRAY, YHRAY, NH)
                                                level 0, 1, 2, 3
         or:  void histog (float *xray, int n,
                           float *xhray, float *yhray, int *nh);  
XRAY          is an array containing floatingpoint numbers.
N             is the dimension of XRAY.
XHRAY, YHRAY  are arrays containing the calculated histogram.  
              XHRAY contains distinct values from XRAY sorted in
              ascending order.  YHRAY contains the  frequency of
              points.
NH            is the  number of  points in  XHRAY  and YHRAY re-
              turned by HISTOG.
Name: TRIANG  19
The routine  TRIANG calculates the  Delaunay triangulation of an
arbitrary collection of points in the plane. The Delaunay trian-
gulation can  directly  be used to display  surfaces and contour
lines of irregularily distributed data points.
The call is:  CALL TRIANG (XRAY, YRAY, N, I1RAY, I2RAY, I3RAY, 
                           NMAX, NTRI)          level 0, 1, 2, 3
         or:  int  triang (float *xray, float *yray, 
                   float *zray, int n, int *i1ray, int *i2ray,
                   int *i3ray, int nmax); 
XRAY, YRAY    are arrays containing  floatingpoint numbers.  The 
              dimension of  XRAY  and  YRAY  must be  greater or 
              equal N + 3.                         
N             is the number of points in XRAY and YRAY.
I1RAY, I2RAY, are the  returned  vertices  for each  triangle in 
  I3RAY       anticlockwise order.
NMAX          is the dimension of  I1RAY, I2RAY and I3RAY.  NMAX
              must be greater of equal 2 * N + 1.
NTRI          is the returned number of triangles.
Name: CIRC3P  19
The routine  CIRC3P  calculates  a  circle  specified  by  three 
points.
The call is: CALL CIRC3P (X1, Y1, X2, Y2, X3, Y3, XM, YM, R)
                                                level 0, 1, 2, 3
         or: void circ3p (float x1, float y1, float x2, 
                          float y2, float x3, float y3,
                          float *xm, float *ym, float *r);
X1, Y1       are  the X- and Y-coordinates  of the first  point.
X2, Y3       are  the X- and Y-coordinates of the second  point.
X3, Y3       are  the X- and Y-coordinates of the third  point.
XM, YM       are the calculated coordinates of the centre point.
R            is the calculated radius of the circle.
Name: BASDAT  19
The routine BASDAT defines the base date. This routine is neces-
sary for plotting date labels and data containing date coordina-
tes.
The call is:  CALL BASDAT (IDAY, IMONTH, IYEAR) 
                                                level 0, 1, 2, 3
         or:  void basdat (int iday, int imonth, int iyear);
IDAY          is the day number  of the date  between 1 and 31.
IMONTH        is the month number of the date between 1 and 12.
IYEAR         is the four digit year number of the date.
Name: INCDAT  19
The function  INCDAT returns the number of days between a speci-
fied date and the base date.  This calculated days can be passed
as parameters  to the routine  GRAF  and as  coordinates to data
plotting routines such as CURVE. 
The call is:  N = INCDAT (IDAY, IMONTH, IYEAR)
                                                level 0, 1, 2, 3
         or:  int incdat (int iday, int imonth, int iyear); 
N             is the returned number of calculated days.
IDAY          is the day number  of the date  between 1 and 31.
IMONTH        is the month number of the date between 1 and 12.
IYEAR         is the four digit year number of the date.
Name: TRFDAT  19
The routine  TRFDAT  calculates for a number of days the corres-
ponding date.
The call is:  CALL TRFDAT (N, IDAY, IMONTH, IYEAR)
                                                level 0, 1, 2, 3
         or:  void trfdat (int n, int *iday, int *imonth, 
                                                    int *iyear);
N             is the number of days.
IDAY          is the returned day number.
IMONTH        is the returned month number.
IYEAR         is the returned four digit year number.
Name: NWKDAY  19
The function NWKDAY returns the weekday for a given date.
The call is:  N =  NWKDAY (IDAY, IMONTH, IYEAR) 
                                             level 0, 1, 2, 3
         or:  int nwkday (int iday, int imonth, int iyear);
N             is the returned weekday between 1 and 7 
              (1 = Monday, 2 = Tuesday, ...).
IDAY          is the day number  of the date  between 1 and 31.
IMONTH        is the month number of the date between 1 and 12.
IYEAR         is the four digit year number of the date.
Name: BITSI2  19
The routine BITSI2 allows bit manipulation on 16 bit variables.
The call is:  CALL BITSI2 (NBITS, NINP, IINP, NOUT, IOUT, IOPT)
                                               level 0, 1, 2, 3
         or:  short bitsi2 (int nbits, short ninp, int iinp,
                            short nout, int iout);
NBITS         is the number of bits to be shifted.
NINP          is a 16 bit variable from which to extract the bit
              field.
IINP          is the bit position of the leftmost bit of the bit
              field. The bits are numbered 0 - 15 where 0 is the
              most significant bit.
NOUT          is a 16 bit variable  into which the bit  field is
              placed (is returned for C).        
IOUT          is the bit  position where  to  put the bit field.
IOPT          controls whether the bits outside of the field are
              set to zero or not. If IOPT equal 0,  the bits are
              set to zero.  If IOPT  not equal 0,  the  bits are
              left as they are.
Name: BITSI4  19
The routine BITSI4 allows bit manipulation on 32 bit variables.
The call is:  CALL BITSI4 (NBITS, NINP, IINP, NOUT, IOUT, IOPT)
                                                level 0, 1, 2, 3
         or:  short bitsi4 (int nbits, int ninp, int iinp,
                            int nout, int iout);
NBITS         is the number of bits to be shifted.
NINP          is a 32 bit variable from which to extract the bit
              field.
IINP          is the bit position of the leftmost bit of the bit
              field. The bits are numbered 0 - 31 where 0 is the
              most significant bit.
NOUT          is a 32 bit variable  into which the bit  field is
              placed (is returned for C).        
IOUT          is the bit  position where  to  put the bit field.
IOPT          controls whether the bits outside of the field are
              set to zero or not. If IOPT equal 0,  the bits are
              set to zero.  If IOPT  not equal 0,  the  bits are
              left as they are.
Name: SWAPI2  19        
The routine SWAPI2 swaps the bytes of 16 bit integer variables.
The call is:  CALL SWAPI2 (IRAY, N)             level 0, 1, 2, 3 
         or:  void swapi2 (short *iray, int n);
IRAY          is an array containing the 16 bit variables.
N             is the number of variables.
Name: SWAPI4  19        
The routine SWAPI4 swaps the bytes of 32 bit integer variables.
The call is:  CALL SWAPI4 (IRAY, N)             level 0, 1, 2, 3 
         or:  void swapi4 (int *iray, int n);
IRAY          is an array containing the 32 bit variables.
N             is the number of variables.
Name: CSRPT1  19
The routine  CSRPT1 returns the position of the mouse pointer if
the  mouse button 1 is pressed. The mouse pointer  is changed to
a cross hair pointer in the graphics window if CSRPT1 is active.
The call is:  CALL CSRPT1 (NX, NY)                 level 1, 2, 3
         or:  void csrpt1 (int *nx, int *ny);
NX, NY        are the returned  coordinates of the pressed mouse
              pointer.
Name: CSRPTS  19
The routine CSRPTS returns an array of mouse positions. The rou-
tine  is waiting  for mouse button 1  clicks  and  terminates if
mouse button 2  is pressed.  The  mouse pointer  is changed to a
cross hair pointer in the graphics window.
The call is:  CALL CSRPTS (NXRAY, NYRAY, NMAX, N, IRET) 
                                                   level 1, 2, 3
         or:  void csrpts (int *nxray, int *nyray, int nmax,
                                             int *n, int *iret);
NXRAY, NYRAY  are  the  returned  coordinates  of the  collected
              mouse positions.
NMAX          is  the dimension of  NXRAY  and NYRAY and defines
              the maximal number of points  that will  be stored
              in NXRAY and NYRAY.
N             is the number of points that are returned in NXRAY
              and NYRAY.
IRET          is a returned status.  IRET not equal 0 means that
              not all mouse movements  could be stored  in NXRAY
              and NYRAY. 
Name: CSRMOV  19
The routine CSRMOV returns an array of mouse movements. The rou-
tine collects the mouse movements  of mouse button 1  and termi-
nates if mouse button 2 is pressed. The mouse pointer is changed
to a cross hair pointer in the graphics window.
The call is:  CALL CSRMOV (NXRAY, NYRAY, NMAX, N, IRET)
                                                   level 1, 2, 3
         or:  void csrmov (int *nxray, int *nyray, int nmax,
                                             int *n, int *iret);
NXRAY, NYRAY  are  the  returned  coordinates  of the  collected
              mouse movements.
NMAX          is the dimension of  NXRAY  and  NYRAY and defines
              the maximal number of points that  will  be stored
              in NXRAY and NYRAY.
N             is the number of points that are returned in NXRAY
              and NYRAY.
IRET          is a returned status. IRET not equal  0 means that
              not all  mouse positions  could be stored in NXRAY
              and NYRAY. 
Name: CSRUNI  19
The routine CSRUNI defines if pixels or plot coordinates are re-
turned by the cursor routines.
The call is:  CALL CSRUNI (COPT)                   level 1, 2, 3
         or:  void csruni (char *copt);
COPT          is a character  string  that  can have  the values
              'PIXEL' and 'PLOT'.    Default: COPT = 'PLOT'.
Note:         Plot  coordinates can be converted to user coordi-
              nates with the routines XINVRS and YINVRS.
Name: OPENFL  19
The routine OPENFL opens a file for binary I/O.
The call is:  CALL OPENFL (CFILE, NLU, IRW, ISTAT)
                                                level 0, 1, 2, 3
         or:  int openfl  (char *cfile, int nlu, int nrw);
CFILE         is a character string  containing the filename.
NLU           is the logical unit for the I/O  (0 <= NLU <= 99).
              The units 15 and 16 are reserved for DISLIN. 
IRW           defines  the  file access mode (0: READ, 1: WRITE,
              2: APPEND).
ISTAT         is the returned status (0: no errors). 
Name: CLOSFL  19
The routine CLOSFL closes a file.
The call is:  CALL CLOSFL (NLU)                 level 0, 1, 2, 3  
         or:  int  closfl (int nlu);
NLU           is the logical unit.
Name: READFL  19
The routine READFL reads a given number of bytes.
The call is:  CALL READFL (NLU, IBUF, NBYT, ISTAT) 
                                                level 0, 1, 2, 3  
         or:  int  readfl (int *nlu, char *ibuf, int nbyt);
NLU           is the logical unit.
IBUF          is an array where to read the bytes.
NBYT          is the number of bytes. 
ISTAT         is the number of bytes read (0 means end of file). 
Name: WRITFL  19    
The routine WRITFL writes a number of bytes.
The call is:  CALL WRITFL (NLU, IBUF, NBYT, ISTAT) 
                                                level 0, 1, 2, 3  
         or:  int writfl  (int nlu, char *ibuf, int nbyt);
NLU           is the logical unit.
IBUF          is an array containing the bytes.
NBYT          is the number of bytes. 
ISTAT         is the number of bytes written (0 means an error). 
Name: SKIPFL  19
The routine  SKIPFL skips a number of bytes from the current po-
sition.
The call is:  CALL SKIPFL (NLU, NBYT, ISTAT)
                                                level 0, 1, 2, 3  
         or:  int  skipfl (int nlu, int nbyt);
NLU           is the logical unit.
NBYT          is the number of bytes. 
ISTAT         is the returned status (0: OK).
Name: TELLFL  19
The routine TELLFL returns the current position in bytes.
The call is:  CALL TELLFL (NLU, NBYT)           level 0, 1, 2, 3  
         or:  int  tellfl (int nlu);
NLU           is the logical unit.
NBYT          is the  returned position in bytes where byte num-
              bering  begins with zero.  NBYT = -1, if an  error
              occurs. 
Name: POSIFL  19
The routine  POSIFL  skips to a certain position relative to the
start.
The call is:  CALL POSIFL (NLU, NBYT, ISTAT)    level 0, 1, 2, 3
         or:  int  posifl (int nlu, int nbyt);  
NLU           is the logical unit.
NBYT          defines  the position. Byte numbering begins  with
              zero. 
ISTAT         is the returned status (0: OK).


