% flowdoc.tex - a fairly plain LaTeX file, documentation for 'flow'
% created 15 Nov 1992, by Terry Brown
% last revised 2004-2-18

\documentstyle{article}

\setlength{\unitlength}{2em} % for the picture environment

\setlength{\parindent}{0pt}
\setlength{\parskip}{2ex}
\addtolength{\topmargin}{-1cm}
\addtolength{\textheight}{2cm}
\addtolength{\evensidemargin}{-1cm}
\addtolength{\oddsidemargin}{-1cm}
\addtolength{\textwidth}{2cm}
% 4 levels of headings
\newcommand{\headA}[1]{{\huge \vspace{1ex} \bf \hfill #1 \vspace{1ex}\hfill}}
\newcommand{\headB}[1]{{\Large \vspace{1ex} \bf #1 \vspace{1ex} }}
\newcommand{\headC}[1]{{\large \vspace{1ex} \bf #1 \vspace{1ex} }}
\newcommand{\headD}[1]{{\bf \vspace{1ex} #1 \vspace{1ex} }}

\newcommand{\pushin}{\hspace*{1em}}

\begin{document}

\title{Flow -- a program to generate flowcharts in the \LaTeX\
       picture environment}
\author{Terry Brown}
\date{November 25, 1992 --- September 22, 2005}
\maketitle

\headB{Summary}

{\em Flow\/} is a small program which parses the flowchart description
explained in this document and translates it to the \LaTeX\ picture
environment.

Flow acts as a filter, so a typical execution would be...

\verb+flow +$<$\verb+myprog.flo +$>$\verb+myprog.pic+

...where \verb+myprog.flo+ is a plain text file containing a description of a
flowchart, and \verb+myprog.pic+ will be a plain text file containing the
body of a \LaTeX\ picture environment to draw the flowchart.  Alternatively

\verb+flow inputFile   + or \verb+   flow inputFile outputFile+

may be used.  VMS users see notes at end.

\verb+myprog.pic+ could either be inserted into a picture environment in a
\LaTeX\ file with a text editor, or pulled in by the \verb+\input+ command as
\LaTeX\ is run.

\headB{System requirements}

Nothing in particular.  Flow is in very plain C and should be portable to
pretty much anything without alteration.  Check beginning of file for defines
if it gives trouble.

\headB{Distribution and Bug Reports}

Flow is free software covered by the GPL.  See the file \verb+COPYING+
for details.  Email to \verb+terry_n_brown@yahoo.com+ with bug reports
etc.

\newpage
\headB{Flowchart description syntax}

\verb+[indented text]+ indicates the command accepts zero or more line of
text, these lines are identified by indentation.  All lines after the command
starting with either a space or a tab are assumed to be text for that
command.  The first line not starting with one of these characters is assumed
to be the next command.  Distributed code / executeables are case
insensitive, but local compilations may vary.

The flowchart is always ``going'' either up, down, left or right.  The
initial direction is down.

The flowchart description file is terminated either by an invalid command,
a blank line, or the end of the file.  Keywords are case sensitive.

% This bit became redundant with v 0.99
%
%% The output from flow should appear inside a \LaTeX\ picture environment.
%% Use
%% 
%% \pushin\verb+\begin{picture}(x,y)(0,-y)+
%% 
%% to start the environment (as the flow
%% chart starts at 0,0 and normally goes down, this put the pictures origin at
%% the top left corner).  10 and 10 are ok as initial values for x and y.  The
%% positioning of the picture can be adjusted with the second pair as usual for
%% the picture environment.

The output from flow will appear inside a \LaTeX\ picture environment.
The positioning of the picture can be adjusted with the second pair as usual
for the picture environment.

\verb+\unitlength+ should be set for use with the picture environment, all
the examples in this document use \verb+2em+ (ie. put
\verb+\setlength{\unitlength}{2em}+ at the top of the \LaTeX\ file).
Smaller values make the boxes tighter around the text, larger values make
them more open.

\headC{The commands}

\verb_% comment to end of line_

If the first thing on a line is a '\verb_%_' symbol the line is
treated as a comment.  Thanks to Joost Bruynooghe for adding this command.

\begin{verbatim}
Box [x y]
  [indented text]
\end{verbatim}

Draws a text at the current position, including a line or arrow leading to it
if appropriate.  If x and y are specified, the size of the box (in
\verb+\unitlength+s), and all subsequent boxes, is set to these.  The
default size of a box is 4 by 2 \verb+\unitlength+s.

{\small
\begin{verbatim}
Right
Box
  This is
  the first
  box.
Box 8 1
  And this is the second
\end{verbatim}
}

\begin{picture}(10,2)(0,-2)
% picture environment flowchart generated by flow 0.95
\put(0.0000,-2.0000){\framebox(4.0000,2.0000)[c]{\shortstack[c]{
This is   \\
the first \\
box.
}}}
\put(4.0000,-1.0000){\vector(1,0){1.0000}}
\put(5.0000,-1.5000){\framebox(8.0000,1.0000)[c]{\shortstack[c]{
And this is the second
}}}
\end{picture}

\newpage
\begin{verbatim}
Oval [x y]
  [indented text]

Tilt [x y]
  [indented text]

Text [x y]
  [indented text]
\end{verbatim}

\verb+Oval+, \verb+Tilt+ and \verb+Text+ are identical to \verb+Box+, except
for the shape of the frame.  (\verb+Text+ is an invisible frame.)

{\small
\begin{verbatim}
Right
Oval
  This is
  an Oval
Tilt
  And this
  is a
  Tilt
Text
  And this
  is a
  Text
\end{verbatim}
}

\begin{picture}(10,3)(0,-3)
% picture environment flowchart generated by flow 0.95
\put(2.0000,-1.0000){\oval(4.0000,2.0000)}
\put(0.0000,-2.0000){\makebox(4.0000,2.0000)[c]{\shortstack[c]{
This is   \\
an Oval
}}}
\put(4.0000,-1.0000){\vector(1,0){1.0000}}
\put(5.0000,-2.0000){\makebox(4.0000,2.0000)[c]{\shortstack[c]{
And this \\
is a     \\
Tilt
}}}
\put(5.3333,0.0000){\line(1,0){4.0000}}
\put(4.6667,-2.0000){\line(1,0){4.0000}}
\put(4.6667,-2.0000){\line(1,3){0.6667}}
\put(8.6667,-2.0000){\line(1,3){0.6667}}
\put(9.0000,-1.0000){\vector(1,0){1.0000}}
\put(10.0000,-2.0000){\makebox(4.0000,2.0000)[c]{\shortstack[c]{
And this \\
is a     \\
Text
}}}
\end{picture}

\begin{verbatim}
Choice A B C D [x y]
  [indented text]
\end{verbatim}

Draws a choice diamond, with the corners labeled as illustrated by the left
diamond in the example.  Periods (.) are not printed.  The optional x an y
parameters alter the size of the choice.  The default size is 4 by 4
\verb+\unitlengh+s.  Flow will report an error for non-square choice boxes
whose aspect ratio doesn't match one of the line slopes supported by \LaTeX\
(-6 -- 6 : -6 -- 6, integers only).

{\small
\begin{verbatim}
Right
Choice A B C D
  Label
  any
  corner
Choice Yes . No .
  Normally
  only two.
\end{verbatim}
}

\begin{picture}(10,5)(0,-5)
% picture environment flowchart generated by flow 0.95
\put(0.0000,-2.0000){\line(1,1){2.0000}}
\put(0.0000,-2.0000){\line(1,-1){2.0000}}
\put(4.0000,-2.0000){\line(-1,-1){2.0000}}
\put(4.0000,-2.0000){\line(-1,1){2.0000}}
\put(0.0000,-4.0000){\makebox(4.0000,4.0000)[c]{\shortstack[c]{
Label\\
any\\
corner
}}}
\put(2.6000,0.0000){\makebox(0,0)[lt]{A}}
\put(0.0000,-1.4000){\makebox(0,0)[rt]{B}}
\put(4.0000,-1.4000){\makebox(0,0)[lt]{C}}
\put(2.6000,-4.0000){\makebox(0,0)[lb]{D}}
\put(4.0000,-2.0000){\vector(1,0){1.0000}}
\put(5.0000,-2.0000){\line(1,1){2.0000}}
\put(5.0000,-2.0000){\line(1,-1){2.0000}}
\put(9.0000,-2.0000){\line(-1,-1){2.0000}}
\put(9.0000,-2.0000){\line(-1,1){2.0000}}
\put(5.0000,-4.0000){\makebox(4.0000,4.0000)[c]{\shortstack[c]{
Normally\\
only two.
}}}
\put(7.6000,0.0000){\makebox(0,0)[lt]{Yes}}
\put(9.0000,-1.4000){\makebox(0,0)[lt]{No}}
\end{picture}

\verb+SetTrack none | arrow | line+

Use arrows, lines, or nothing for drawing connections between boxes.

\verb+TxtPos P1 P2 [B [A]]+

\verb+P1+ is the \LaTeX\ position specification (eg. [c] or [l]) for the
lines of text that makes up the blocks of text in the boxes, \verb+P2+ is
the \LaTeX\ position specification for the whole block of text within the
box.  \verb+B+ is the string (no white space) to be placed before each line
of text, \verb+A+ is the string to be placed after each line of text.  The
example shows the use of \verb+B+ to keep text off the edge of the box.

{\small
\begin{verbatim}
Right
SetTrack arrow
TxtPos [l] [l]
Box 3.5 2
  Needs some
  space on the
  left
TxtPos [l] [l] ~
Box
  Left justified
  text with
  space
SetTrack line
TxtPos [c] [c]
Box
  Centred
  Text
SetTrack none
TxtPos [r] [r] ~ \hspace*{1ex}
Box
  Right justified
  Text
\end{verbatim}
}

\begin{picture}(10,3)(0,-2.5)
% picture environment flowchart generated by flow 0.95
\put(0.0000,-2.0000){\framebox(3.5000,2.0000)[l]{\shortstack[l]{
Needs some\\
space on the\\
left
}}}
\put(3.5000,-1.0000){\vector(1,0){1.0000}}
\put(4.5000,-2.0000){\framebox(3.5000,2.0000)[l]{\shortstack[l]{
~Left justified\\
~text with\\
~space
}}}
\put(8.0000,-1.0000){\line(1,0){1.0000}}
\put(9.0000,-2.0000){\framebox(3.5000,2.0000)[c]{\shortstack[c]{
Centred\\
Text
}}}
\put(13.5000,-2.0000){\framebox(3.5000,2.0000)[r]{\shortstack[r]{
~Right justified\hspace*{1ex}\\
~Text\hspace*{1ex}
}}}
\end{picture}

\newpage
\verb+Tag+

\verb+ToTag+

\verb+Tag+ stores the location and size of the last object drawn on a stack,
\verb+ToTag+ returns to that position (removing the item from the stack).  This is
particularly useful with \verb+Choice+s, allowing a second chain to be built
from the diamond, but it can be used with any other item.  Flow will complain
if it encounters more \verb+ToTag+s the \verb+Tag+s, but won't mention
\verb+Tag+s left on the stack when it finishes.

{\small
\begin{verbatim}
Right 0
Choice . . N Y
  Ready to
  stop?
Tag
Choice . . Right Down
  Go right
  or Down?
Tag
Right 1
Box
  To the
  right
ToTag
Down
Box
  Down here
ToTag
Down
Oval
  STOP
\end{verbatim}
}

\begin{picture}(10,7)(0,-5)
% picture environment flowchart generated by flow 0.95
\put(0.0000,0.0000){\line(1,0){0.0000}}
\put(0.0000,0.0000){\vector(1,0){1.0000}}
\put(1.0000,0.0000){\line(1,1){2.0000}}
\put(1.0000,0.0000){\line(1,-1){2.0000}}
\put(5.0000,0.0000){\line(-1,-1){2.0000}}
\put(5.0000,0.0000){\line(-1,1){2.0000}}
\put(1.0000,-2.0000){\makebox(4.0000,4.0000)[c]{\shortstack[c]{
Ready to\\
stop?
}}}
\put(5.0000,0.6000){\makebox(0,0)[lt]{N}}
\put(3.6000,-2.0000){\makebox(0,0)[lb]{Y}}
\put(5.0000,0.0000){\vector(1,0){1.0000}}
\put(6.0000,0.0000){\line(1,1){2.0000}}
\put(6.0000,0.0000){\line(1,-1){2.0000}}
\put(10.0000,0.0000){\line(-1,-1){2.0000}}
\put(10.0000,0.0000){\line(-1,1){2.0000}}
\put(6.0000,-2.0000){\makebox(4.0000,4.0000)[c]{\shortstack[c]{
Go right\\
or Down?
}}}
\put(10.0000,0.6000){\makebox(0,0)[lt]{Right}}
\put(8.6000,-2.0000){\makebox(0,0)[lb]{Down}}
\put(10.0000,0.0000){\line(1,0){1.0000}}
\put(11.0000,0.0000){\vector(1,0){1.0000}}
\put(12.0000,-1.0000){\framebox(4.0000,2.0000)[c]{\shortstack[c]{
To the\\
right
}}}
\put(8.0000,-2.0000){\vector(0,-1){1.0000}}
\put(6.0000,-5.0000){\framebox(4.0000,2.0000)[c]{\shortstack[c]{
Down here
}}}
\put(3.0000,-2.0000){\vector(0,-1){1.0000}}
\put(3.0000,-4.0000){\oval(4.0000,2.0000)}
\put(1.0000,-5.0000){\makebox(4.0000,2.0000)[c]{\shortstack[c]{
STOP
}}}
\end{picture}

\newpage
\begin{verbatim}
Up    [d [*]]
Down  [d [*]]
Left  [d [*]]
Right [d [*]]
\end{verbatim}

With or without the optional parameter, these command change the current
direction of the flowchart.  With the optional parameter, they draw a line,
if \verb+SetTrack+ is \verb+line+ {\em or\/} \verb+arrow+, or leave a gap, if
\verb+SetTrack+ in \verb+none+.  The length of the line (or gap) is $d$.  By
default \verb+Box+es, \verb+Oval+s, \verb+Tilt+s and \verb+Text+s are 4 units
wide and 2 units high.  A \verb+Choice+ is 4 by 4 units.  The arrows that
connect things together are 1 unit.  So a box drawn while the current
direction is down would occupy 2 + 1 = 3 vertical units.

To force the line to end in a arrow head, use the ``*'', which must be
separated from the ``d'' by a space.

{\small
\begin{verbatim}
Right 1
Box
  Flowing
  along.
Right 1
Tag
Down 2
Left 6
Up 2 *
ToTag
Right 3
Down
Oval
  STOP
\end{verbatim}
}

\begin{picture}(10,4)(0,-3)
% picture environment flowchart generated by flow 0.95
\put(0.0000,0.0000){\line(1,0){1.0000}}
\put(1.0000,0.0000){\vector(1,0){1.0000}}
\put(2.0000,-1.0000){\framebox(4.0000,2.0000)[c]{\shortstack[c]{
Flowing \\
along.
}}}
\put(6.0000,0.0000){\line(1,0){1.0000}}
\put(7.0000,0.0000){\line(0,-1){2.0000}}
\put(7.0000,-2.0000){\line(-1,0){6.0000}}
\put(1.0000,-2.0000){\vector(0,1){2.0000}}
\put(7.0000,0.0000){\line(1,0){3.0000}}
\put(10.0000,0.0000){\vector(0,-1){1.0000}}
\put(10.0000,-2.0000){\oval(4.0000,2.0000)}
\put(8.0000,-3.0000){\makebox(4.0000,2.0000)[c]{\shortstack[c]{
STOP
}}}
\end{picture}

\verb+Scale x y+

Scale the {\em next\/} item by the specified values

{\small
\begin{verbatim}
Right
Oval
  Normal
  Oval
Scale 2 1
Box
  A smaller oval is a better stop
Scale 0.5 0.5
Oval
  STOP
\end{verbatim}
}

\begin{picture}(10,3)(0,-3)
% picture environment flowchart generated by flow 0.95
\put(2.0000,-1.0000){\oval(4.0000,2.0000)}
\put(0.0000,-2.0000){\makebox(4.0000,2.0000)[c]{\shortstack[c]{
Normal\\
Oval
}}}
\put(4.0000,-1.0000){\vector(1,0){1.0000}}
\put(5.0000,-2.0000){\framebox(8.0000,2.0000)[c]{\shortstack[c]{
A smaller oval is a better stop
}}}
\put(13.0000,-1.0000){\vector(1,0){1.0000}}
\put(15.0000,-1.0000){\oval(2.0000,1.0000)}
\put(14.0000,-1.5000){\makebox(2.0000,1.0000)[c]{\shortstack[c]{
STOP
}}}
\end{picture}

\begin{verbatim}
Skip x0 y0 x1 x1
\end{verbatim}

\begin{tabular}{r@{~~}p{4in}}
\tt x0 & Horizontal separation between boxes, default 1 \verb+\unitlength+ \\
\tt y0 & Vertical separation between boxes, default 1 \verb+\unitlength+ \\
\tt x1 & Multiplier for \verb+Left+ and \verb+Right+ commands, default 1 \\
\tt y1 & Multiplier for \verb+Up+ and \verb+Down+ commands, default 1 \\
\end{tabular}

{\small
\begin{verbatim}
Skip 0 0 1 1
SetTrack none
Box
  After this
  Box
Box
  Is another
  with no
  gap
SetTrack arrow
Right 5
Up 1 *
Left 1 *
Down 1 *
Right 1 *
Skip 0 0 3 3
Up 1 *
Left 1 *
Down 1 *
Right 1 *
\end{verbatim}
}

\begin{picture}(10,5)(0,-5)
% picture environment flowchart generated by flow 0.95
\put(0.0000,-2.0000){\framebox(4.0000,2.0000)[c]{\shortstack[c]{
After this\\
Box
}}}
\put(0.0000,-4.0000){\framebox(4.0000,2.0000)[c]{\shortstack[c]{
Is another\\
with no\\
gap
}}}
\put(4.0000,-3.0000){\line(1,0){5.0000}}
\put(9.0000,-3.0000){\vector(0,1){1.0000}}
\put(9.0000,-2.0000){\vector(-1,0){1.0000}}
\put(8.0000,-2.0000){\vector(0,-1){1.0000}}
\put(8.0000,-3.0000){\vector(1,0){1.0000}}
\put(9.0000,-3.0000){\vector(0,1){3.0000}}
\put(9.0000,0.0000){\vector(-1,0){3.0000}}
\put(6.0000,0.0000){\vector(0,-1){3.0000}}
\put(6.0000,-3.0000){\vector(1,0){3.0000}}
\end{picture}

\newpage
\headB{VMS notes}

I don't know much VMS, but this is one way of getting it to work.  Compile
and link as normal, then

{\tt flow :== \$\fbox{\$1\$DIA3:}[brownt1.usr.flow]flow.exe}

where the bit in the box is the name of the drive you're working on, and
\verb+[brownt1.usr.flow]+ is the appropriate path.  Then use the 

\verb+flow infile outfile+

form, as the redirection form doesn't seem to work.

\newpage
\headB{An example}

The instructions that generated this flow chart are included in
a commented section in \verb+flowdoc.tex+.  Note the block of text is part of
the picture environment (a \verb+Text+).

% THIS IS THE FLOW DATA FOR THE EXAMPLE AT THE END
% Box
%   Initialise
%   st
% Oval
%   Begin
%   RootParse
% Tag
% Box
%   Initialise
%   A \& B
% Down 1
% Box
%   Call client
%   with A, B \& st
% Choice . . Y N
%   Is B a
%   New-Root
%   Node?
% Tag
% Down 1
% Choice . . Y N
%   Is B a
%   Fungi
%   Node?
% Tag
% Down 1
% Choice . N . Y
%   Is B the
%   Current-End
%   Node?
% Tag
% Oval
%   Return
% ToTag
% Left 3
% Up 2
% Box
%   Update
%   direction
%   data in st
% Box
%   A = B
%   B = B.next
% Up 10
% Right 5 *
% ToTag
% Right 1
% Box
%   Adjust fungi
%   values in st
% Down 2
% Left 6 *
% ToTag
% Right
% Box
%   Increment
%   st order
% Tilt
%   Recursively
%   call RootParse
% Box
%   Decrement
%   st order
% Down 2
% Left 15 *
% ToTag
% SetTrack none
% Down 2
% Right 8
% TxtPos [l] [c]
% Text
%   A and B are the node records at the
%   start and end of the internode being
%   processed.  `st' is a record containing
%   information about the current fungal
%   population, position in 3-space, root 
%   order etc.  It is cloned during the 
%   recursive descent.

\scriptsize
\setlength{\unitlength}{1.8em}
%% start of flow output
\begin{picture}(24.000000,32.000000)(-5.000000,-32.000000)
% picture environment flowchart generated by flow 0.99e
\put(0.0000,-2.0000){\framebox(4.0000,2.0000)[c]{\shortstack[c]{
Initialise\\
st
}}}
\put(2.0000,-2.0000){\vector(0,-1){1.0000}}
\put(2.0000,-4.0000){\oval(4.0000,2.0000)}
\put(0.0000,-5.0000){\makebox(4.0000,2.0000)[c]{\shortstack[c]{
Begin\\
RootParse
}}}
\put(2.0000,-5.0000){\vector(0,-1){1.0000}}
\put(0.0000,-8.0000){\framebox(4.0000,2.0000)[c]{\shortstack[c]{
Initialise\\
A \& B
}}}
\put(2.0000,-8.0000){\line(0,-1){1.0000}}
\put(2.0000,-9.0000){\vector(0,-1){1.0000}}
\put(0.0000,-12.0000){\framebox(4.0000,2.0000)[c]{\shortstack[c]{
Call client\\
with A, B \& st
}}}
\put(2.0000,-12.0000){\vector(0,-1){1.0000}}
\put(0.0000,-15.0000){\line(1,1){2.0000}}
\put(0.0000,-15.0000){\line(1,-1){2.0000}}
\put(4.0000,-15.0000){\line(-1,-1){2.0000}}
\put(4.0000,-15.0000){\line(-1,1){2.0000}}
\put(0.0000,-17.0000){\makebox(4.0000,4.0000)[c]{\shortstack[c]{
Is B a\\
New-Root\\
Node?
}}}
\put(4.0000,-14.4000){\makebox(0,0)[lt]{Y}}
\put(2.6000,-17.0000){\makebox(0,0)[lb]{N}}
\put(2.0000,-17.0000){\line(0,-1){1.0000}}
\put(2.0000,-18.0000){\vector(0,-1){1.0000}}
\put(0.0000,-21.0000){\line(1,1){2.0000}}
\put(0.0000,-21.0000){\line(1,-1){2.0000}}
\put(4.0000,-21.0000){\line(-1,-1){2.0000}}
\put(4.0000,-21.0000){\line(-1,1){2.0000}}
\put(0.0000,-23.0000){\makebox(4.0000,4.0000)[c]{\shortstack[c]{
Is B a\\
Fungi\\
Node?
}}}
\put(4.0000,-20.4000){\makebox(0,0)[lt]{Y}}
\put(2.6000,-23.0000){\makebox(0,0)[lb]{N}}
\put(2.0000,-23.0000){\line(0,-1){1.0000}}
\put(2.0000,-24.0000){\vector(0,-1){1.0000}}
\put(0.0000,-27.0000){\line(1,1){2.0000}}
\put(0.0000,-27.0000){\line(1,-1){2.0000}}
\put(4.0000,-27.0000){\line(-1,-1){2.0000}}
\put(4.0000,-27.0000){\line(-1,1){2.0000}}
\put(0.0000,-29.0000){\makebox(4.0000,4.0000)[c]{\shortstack[c]{
Is B the\\
Current-End\\
Node?
}}}
\put(0.0000,-26.4000){\makebox(0,0)[rt]{N}}
\put(2.6000,-29.0000){\makebox(0,0)[lb]{Y}}
\put(2.0000,-29.0000){\vector(0,-1){1.0000}}
\put(2.0000,-31.0000){\oval(4.0000,2.0000)}
\put(0.0000,-32.0000){\makebox(4.0000,2.0000)[c]{\shortstack[c]{
Return
}}}
\put(0.0000,-27.0000){\line(-1,0){3.0000}}
\put(-3.0000,-27.0000){\line(0,1){2.0000}}
\put(-3.0000,-25.0000){\vector(0,1){1.0000}}
\put(-5.0000,-24.0000){\framebox(4.0000,2.0000)[c]{\shortstack[c]{
Update\\
direction\\
data in st
}}}
\put(-3.0000,-22.0000){\vector(0,1){1.0000}}
\put(-5.0000,-21.0000){\framebox(4.0000,2.0000)[c]{\shortstack[c]{
A = B\\
B = B.next
}}}
\put(-3.0000,-19.0000){\line(0,1){10.0000}}
\put(-3.0000,-9.0000){\vector(1,0){5.0000}}
\put(4.0000,-21.0000){\line(1,0){1.0000}}
\put(5.0000,-21.0000){\vector(1,0){1.0000}}
\put(6.0000,-22.0000){\framebox(4.0000,2.0000)[c]{\shortstack[c]{
Adjust fungi\\
values in st
}}}
\put(8.0000,-22.0000){\line(0,-1){2.0000}}
\put(8.0000,-24.0000){\vector(-1,0){6.0000}}
\put(4.0000,-15.0000){\vector(1,0){1.0000}}
\put(5.0000,-16.0000){\framebox(4.0000,2.0000)[c]{\shortstack[c]{
Increment\\
st order
}}}
\put(9.0000,-15.0000){\vector(1,0){1.0000}}
\put(10.0000,-16.0000){\makebox(4.0000,2.0000)[c]{\shortstack[c]{
Recursively\\
call RootParse
}}}
\put(10.3333,-14.0000){\line(1,0){4.0000}}
\put(9.6667,-16.0000){\line(1,0){4.0000}}
\put(9.6667,-16.0000){\line(1,3){0.6667}}
\put(13.6667,-16.0000){\line(1,3){0.6667}}
\put(14.0000,-15.0000){\vector(1,0){1.0000}}
\put(15.0000,-16.0000){\framebox(4.0000,2.0000)[c]{\shortstack[c]{
Decrement\\
st order
}}}
\put(17.0000,-16.0000){\line(0,-1){2.0000}}
\put(17.0000,-18.0000){\vector(-1,0){15.0000}}
\put(11.0000,-8.0000){\makebox(4.0000,2.0000)[c]{\shortstack[l]{
A and B are the node records at the\\
start and end of the internode being\\
processed.  `st' is a record containing\\
information about the current fungal\\
population, position in 3-space, root \\
order etc.  It is cloned during the \\
recursive descent.
}}}
\end{picture}

%% end of flow output

\end{document}

.
