st: looping over local macros with multiple items

I am attempting to create (via -outsheet-) a set of .csv files with
filenames generated from a combination of "category names" stored in
local macros. I am trying to use looping to create filenames from
all the possible combinations of the "category names" but I'm not sure
how to get Stata to move past the first item in each of the "category
names" local macros. (I am using Stata 10 , 64-bit for Mac)

When I run the code below, I get the folder "test" with only one .csv
named with all the items in each of the "category names" macros. So,
I get the file:

registration none_cshsn othermch_ap ac ag an.csv

but, I'd like for this to create all the combinations of file names
from the items in the "category names" macros:

local sf "/users/p/desktop/part/" //<--change this filepath to your
local directory

cd "`sf'"
pwd
//1. empty dataset with 100 obs
set obs 100
gen temp = [_n]
//2. category names
local reporttype "registration none"
local populationtype "cshsn othermch"
local sessiontype "ap ac ag an"
**NOTE: I've tried this part with and without the quotes, ///
as well as with quotes on each individual item**
//3. generate some variables that will be filled in later
local cols name phone address city county zip email
foreach c in `cols' {
gen str40 `c' = ""
}
**generates a blank dataset with variables from `cols'

save "`sf'master.dta", replace //will be used later for joining (-
joinby-) some data