It is used to conditionally or unconditionally execute program code in another file.
It may or may not have parameters (Values) passed into the code to execute, if it does, you need to start the subroutine with an SBR instruction identifying the parameters passed in.
It may or may not return a value from the executed code, if it does, you need to have a RTN statement with a valid return value at all exit points of the subroutine.
What alternative do you want? The PLC5 series has a sort of alternative, with the capability of running several separate main programs. The Logix 5000 platform has the capability of running multiple tasks, cyclically, periodically, or by interrupt.
Seriously, Manual. Read it.
OP Question rating on a scale of 1 to 10:
Horrible 1 2 3 4 5 6 7 8 9 10 Excellent