A process has the same syntax as a subroutine, except that the keyword PROCESS is substituted for SUBROUTINE , INTENT declarations can be provided for dummy arguments , and a process cannot take an assumed size array as a dummy argument.
A process call can occur anywhere that a subroutine call can occur. It has the same syntax as a subroutine call, except that the keyword PROCESSCALL is substituted for CALL . In addition, process calls can occur in process blocks and process do-loops, and recursive process calls are permitted. A process block is a set of statements preceded by a PROCESSES statement and followed by a ENDPROCESSES statement. A block includes zero or one subroutine calls, zero or more process calls, and zero or more process do-loops. A process do-loop has the same syntax as a do-loop, except that the PROCESSDO keyword is used in place of DO , the body of the do-loop can contain only a process do-loop or a process call, and the ENDPROCESSDO keyword is used in place of ENDDO .
A port variable or port array element can be passed as an argument to only a single process in a process block or process do-loop, and then cannot be accessed in a subroutine called in that block.