Function oriented design breaks a system down into one or morenamed functions which transform their inputs to produce an output,such that the output of one function may be used as input toanother function. In addition, the system also typically provides aglobal state which any function may operate upon.In order for the "system of functions" to operate there has tobe single point of entry which is typically provided by thesystem's global main function. The inputs for this particularfunction are derived from the command line used to invoke thesystem while the output is an integer typically used to indicate asystem-defined error (with the value 0 usually indicating noerror). Typically, the global main function decodes the commandline parameters to determine what work is to be performed (if any)and to delegate that work to an appropriate function.Although a single function can perform a significant amount ofwork, complex systems are much easier to understand when the workis divided amongst many smaller, simpler functions. When thefunctions are appropriately named, code becomes largelyself-documenting, with the low-level implementation details largelyhidden from the user.