I've recently done some flow-charting and struggled with the same issue, how to present subroutine calls, or perhaps method- and function -calls as you might call them these days.
I settled on a convention that I separate subroutine CALLS from subroutine REFERENCES. For the former I use an ordinary rectangle showing the call with arguments being made, using whatever variables that are in effect at that point in program execution.
I use the doubly sided "predefined process" rectangle simply as a reference to another flowchart which contains the definition of that function or sub-routine. The sub-routine rectangle need not show the arguments of the sub-routine since that is part of the defining flow-chart of the sub-routine in question, but it may be helpful to add them in the reference already so whoever reads it can see the meaning of the actual arguments used in a call.
This increases the number of rectangles but it makes it clearer that those other flowcharts exist to look up the definition of some of the called functions from. Often if a function is simple I will not create a separate diagram for it but just document it verbally.
I also use the "document" symbol to say that details should be looked up from the code-listing.
The point of a flowchart to me is not to create a program, but to make it easier for others to understand a program. I think the help as a birds-eye view and that purpose of them should be kept in mind. They are not for visually describing EVERY detail of your program,details are visible from the code when needed. The flow-chart is just one picture of your program from the high-level view-point.
Keeping flowcharts high-level also means there is less need to keep them up-to-date as code is modified.
They are pictures. Like any good story software documentation should have pictures too which give an alternative viewpoint to the code.