The main documentation of the Assemble Procedure contains additional explanation of this code listing.
define([ASSEMBLE_ROUTINE],[ ifelse([$1], [character], [pushdef([TYPE], [character,*])], [pushdef([TYPE], [$1])]) pushdef([DIM], [$2]) pushdef([Assemble_TYPE_DIM], expand(Assemble_$1_DIM)) subroutine Assemble_TYPE_DIM (Output, Input) ! Input variables. type(TYPE,DIM,np), intent(in) :: Input ! Variable to be assembled. ! Output variable. type(TYPE,1,np), intent(out) :: Output ! Assembled variable. !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! Verify requirements - none. ! Do the global assemble. ifdef([USE_PGSLIB],[ ! PGSLib parallel assemble. call PGSLib_Collate (Output, Input) ],[ ! Serial assemble. Output = Input ]) ! Verify guarantees - none. return end subroutine Assemble_TYPE_DIM popdef([TYPE]) popdef([DIM]) popdef([Assemble_TYPE_DIM]) ]) forloop([Dim],[0],[1],[ fortext([Type],[real integer logical character],[ ASSEMBLE_ROUTINE(Type, Dim) ]) ])