4 subroutines, P. 188) – Campbell Scientific CR800 and CR850 Measurement and Control Systems User Manual
Page 188

Section 7. Installation
188
7.8.4 Subroutines
A subroutine is a group of programming instructions that is called by, but runs 
outside of, the main program. Subroutines are used for the following reasons: 
• To reduce program length. Subroutine code can be executed multiple times in
a program scan.
• To ease integration of proven code segments into new programs. 
• To compartmentalize programs to improve organization. 
By executing the Call() instruction, the main program can call a subroutines from 
anywhere in the program. 
A subroutine has access to all global variables
(p. 433).
Variables local to a
subroutine (local variables
(p. 435)
) are declared within the subroutine instruction.
Local variables can be aliased (as of 4-13; OS 26) but are not displayed in the 
Public table. Global and local variables can share the same name and not 
conflict. If global variables are passed to local variables of different type, the 
same type conversion rules apply as apply to conversions among variables 
declared as Public or Dim. See Expressions with Numeric Data Types
(p. 143)
for
conversion types.
Note To avoid programming conflicts, pass information into local variables and / 
or define global variables to be used exclusively by a subroutine. 
CRBasic example Subroutine with Global and Local Variables
(p. 189)
shows the
use of global and local variables within a simple subroutine. Variables counter() 
and 
pi_product
are global. Variable
i_sub
is global but used exclusively by
subroutine
process
. Variables j() and
OutVar
are local since they are declared as
parameters in the Sub() instruction,
Sub process(j(4) AS Long,OutVar).
Variable j() is a four-element array and variable OutVar is a single-element 
array. The call statement, 
Call ProcessSub (counter(1),pi_product)
passes five values into the subroutine: pi_product and four elements of array 
counter(). Array counter() is used to pass values into, and extract values from, 
the subroutine. The variable pi_product is used to extract a value from the 
subroutine. 
Call() passes the values of all listed variables into the subroutine. Values are 
passed back to the main scan at the end of the subroutine. 
