Finally diving into Subroutines - Is this how it works?

I found the Wiki's page on subroutines quite confusing but the concept is very simple.

To tie together some posts, here are a couple of mine on the subject of subroutines. I've added some headers so you can see at a glance what they are about.

Q: What does a subroutine offer that you can't do just by having one macro call another?

A: A subroutine is a type of macro that provides an easy way to receive and return values with another macro directly, without always needing to use variables.

I also touch upon the general concept of subroutines beyond KM.

Q: Could you give a simple example of a subroutine in use with a macro?

A: Yes....