I've found a technique to efficiently exchange information between a script component and the host SSIS package. I always use package level variables as I have not seen nor heard of any reason to use component level variables. I don't use the readonly/writeonly variables in the script task editor. Instead I use the following VB code:
Short circuit works in sql much like any other logical system. Given a sequence of expressions, connected by an OR operator, the first expressions to evaluate as true, from left to right, exits the group as true.
As an example:
Where (@var1>2 or @var2<=15 or s.column=@var3)
The above statement will return true since @var1 is true regardless of the values of @var2 and @var3. This is important to realize since sql will not adjust the order of your expressions if they are part of an OR operation. Above you would prefer to make sure @var1 or @var2 fails before running the compare with the table, which is why I put them first.
This is a quick example of how to take the output of a sql query and email it to someone.