When a synchronous process is initiated, control is transferred from the initiating process to the new process. In other words, the initiating process stops executing and the new process begins executing. The initiating process is still considered active during this period and its process stack still exists. When the new process terminates, the initiating process begins executing again, starting with the first statement after the process initiation statement.
Examples of statements that initiate synchronous processes are the CALL statement in ALGOL or COBOL and the RUN statement in Work Flow Language (WFL). Synchronous processes are sometimes referred to as coroutines, but more properly the term coroutine has a different use. (Refer to Coroutines in this section for details.)
The initiating process can set the attributes of a synchronous process only at initiation time and can interrogate the attributes only after the synchronous process has terminated.
Synchronous processes can be simpler to design than coroutines or asynchronous processes because you do not have to deal with certain complexities of timing that arise for these other types of processes.

