In this chapter you have learned what subroutines and functions are. More importantly, you should now understand why they are different from one another. The primary difference is that functions can return values to the caller using the stack, but subroutines cannot.
In this chapter you have also learned the difference between ByVal and ByRef parameters. It is imperative that you understand the difference between these two parameter types. You have also learned that a variable definition is not the same thing as a variable "declaration. Understanding these concepts will help you to better understand the topics in Chapter 8, "Scope and Lifetime of Variables."
You should spend enough time on this chapter so that you know the topics well enough to teach them to someone else. If you can argue convincingly that definitions and declarations are different and the person agrees with you, you're ready for the next chapter. You should work the exercises at the end of this chapter, too.