The document discusses subroutines in scientific programming. Subroutines are similar to functions but can return multiple values or no value at all via arguments, while functions return a single value via their name. A subroutine has a heading specifying its name and arguments, a specification part declaring argument types and intents, an execution part containing the code, and an END statement. Subroutines are called using the CALL statement with actual arguments associated with formal arguments. Arguments can be declared as INTENT(IN), INTENT(OUT), or INTENT(INOUT). Optional and keyword arguments allow fewer actual arguments than formal arguments in a subroutine call.