Early FORTRAN compilers supported no recursion in subroutines. Macros can also contain sub-macros which are similar to subroutines. Most programming environments with recursive subroutines use a stack for control flow. Macros can be nested and their subroutines also edited. C functions are akin to the subroutines of Fortran or the procedures of Pascal. Unit tests exercise individual functions, subroutines, or object methods. This allowed module authors to make subroutines that behaved like Perl builtins. Subroutines or functions are the simplest form of reuse. The CORDIC subroutines for trigonometric and hyperbolic functions could share most of their code. These include subroutines, modules, polymorphism, and software components. These kernel operations became defined subroutines that math libraries could call. The Disk Utility Program (DUP) provided commands for transferring programs, subroutines and data. However, increasing the number of parameters passed to subroutines can affect code readability. It supports conditional branching, loop structures, and subroutines for event handling. Characters were built of line segments specified by display list subroutines.