Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
elemental function count_substring(s,substring)result(No)!< Count the number of occurences of a substring into a string.!<!<```fortran!< print "(L1)", count('hello', substring='ll')==1!<```!=> T <<<character(*),intent(in)::s!< String.character(*),intent(in)::substring!< Substring.integer(I4P)::No!< Number of occurrences.integer(I4P)::c1!< Counters.integer(I4P)::c2!< Counters.No=0if(len(substring)>len(s))returnc1=1doc2=index(string=s(c1:),substring=substring)if(c2==0)returnNo=No+1c1=c1+c2+len(substring)enddo endfunction count_substring