By putting quotes around the value you passed to the macro you confused SAS into thinking you meant to create two datasets.
See this example:
237 data _'First';
238 set sashelp.class;
239 run;
NOTE: There were 19 observations read from the data set SASHELP.CLASS.
NOTE: The data set WORK._ has 19 observations and 5 variables.
NOTE: The data set First has 19 observations and 5 variables.
So it made one dataset named WORK._ and it made the other dataset in the current working directory of the process that is running the SAS code since the quoted physical name did not include any other directory information.
To the macro processor quotes are just part of the value. Remove them in your call.
%macro tock (seg,dset);
...
if segment eq &seg;
...
data _&dset.;
...
%mend;
%tock('5-Day',fiveday);
Note that the value of SEG needs the quotes because the quotes are important in the SAS code that the macro is generating. SAS needs the quotes to be able to distinguish between a string constant and a variable name or number. The macro processor does not need quotes for this. To the macro processor everything is just text. It only needs to look for & or % triggers to see if it needs to process the strings.