Yes, to all of the above. A demonstration:
Testing.cfc:
<cfcomponent>
<cfset Variables.Instance = {} />
<cffunction name="checkTheScopeYo" returntype="Struct">
<cfset var LOCAL = {} />
<!--- Call a CFModule --->
<cfmodule template="TestModule.cfm" />
<cfset Variables.theLocal = LOCAL />
<cfreturn Variables />
</cffunction>
</cfcomponent>
TestModule.cfm:
<cfif thisTag.ExecutionMode EQ "end">
<cfset Caller.FromModule = "Set to the Variables scope" />
<cfset Caller.Instance.FromModule = "Set to the Variables.instance variable" />
<cfset Caller.Local.FromModule = "Set to the LOCAL scope" />
</cfif>
Scribble.cfm:
<cfset theResult = CreateObject("component", "Testing").checkTheScopeYo() />
<cfdump var="#theResult#">
The dump shows you that you have access to the local variables within the function, as well as the variables scope of the entire CFC:
struct
CHECKTHESCOPEYO:
[function]
Arguments: none
ReturnType: Struct
Roles:
Access: public
Output:
DisplayName:
Hint:
Description:
FROMMODULE: Set to the Variables scope
INSTANCE:
[struct]
FROMMODULE: Set to the Variables.instance variable
THELOCAL:
[struct]
FROMMODULE: Set to the LOCAL scope
THIS:
[component Testing]
Methods:
CHECKTHESCOPEYO
[function]
Arguments: none
ReturnType: Struct
Roles:
Access: public
Output:
DisplayName:
Hint:
Description:
var q = ""
and use<customTag return="q">
? – Lacrimator