What is Subroutine ?

Subroutines begin with subroutine name (arg1, arg2,…), then the types of all arguments and local variables should be declared. Subroutines end with the statements return and end. Subroutines are called from another routine with the command call name (arg1, arg2,…).
Where it used:
If more than one value is to be returned to the main program then a subprogram called a subroutine is used.
When no value is returned to the main program but specific operations are performed like arranging a list of numbers in ascending order to transpose a matrix then subroutines are used.
Let us consider a program which have frequently requirement of the solution of a quadric equation. This program will return four values, the two are real parts and other two are imaginary parts of the roots. In this case a function subprogram cannot be used so here subroutine is required to write this program.
The general form of a quadratic equation is:
                         ax2 + bx + c = 0
Here if a = 0 then the above equation is not a quadratic and it becomes a linear equation.
The value of x is:
                         x real 1 = -b/c
If a is not equal to zero then discriminant = ( b2 – 4ac )
If discriminant is greater than or equal to zero then the roots are real as:
                        x real 1 =( – b + root(b2 – 4ac ))/ 2a
                        x real 1 =( – b – root(b2 – 4ac ))/ 2a
If the discriminant is less than zero then the roots will have real and imaginary parts both which are as:
                        x real 1 = x real 2 = -b/2a
                        x imaginary 1 = ( root( b2 – 4ac))/2a
                        and x imaginary 2 = – x imaginary 1
CALL statement
A subroutine is referenced by a CALL statement.
The form of a CALL statement is:
CALL sub (list)
list is an actual argument
Execution of a CALL statement results in
· association of actual arguments with the corresponding dummy arguments, and
· association of actual arguments with the corresponding dummy arguments, and
· the actions specified by the referenced subroutine.
When a CALL statement is executed, the referenced subroutine must be one of the subroutines specified in subroutine subprograms or by other means in the executable program.