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.
Source Code
subroutine make_c_string(txt,buf,pos,ptr,len_out)character(*),intent(in)::txtcharacter(kind=c_char),intent(inout),target::buf(:)integer,intent(inout)::postype(c_ptr),intent(out)::ptrinteger(c_int),intent(out)::len_outinteger::L,i,startL=len(txt)start=posif(start+L>size(buf))then error stop'make_c_string: buffer too small'end if do i=1,Lbuf(start+i-1)=txt(i:i)end dobuf(start+L)=c_null_charptr=c_loc(buf(start))len_out=L+1pos=start+L+1end subroutine make_c_string