There are many many different ways how you can handle this, but depends a lot on your scripts.
How is todaydate defined in your other scripts? What type of scripts are jsl1, jsl2...? Could you create functions/expressions and call them in main jsl file?
When you are using include it should work also in the other scripts unless you overwrite it those as inclusions will overwrite variables like Jim said, but you can "protect" them by using << New Context and << Names Default To Here in Include(). This of course will then prevent you from easily using the same variable in those scripts and using namespaces is fairly easy solution to fix this.
Names Default To Here(1);
Clear Log();
todaydate = Format Date(Today(), "ddmonyyyy");
jsl1_str = "\[Names Default To Here(1);
Show(todaydate);
]\";
jsl2_str = "\[Names Default To Here(1);
todaydate = 1;
Show(todaydate);
]\";
Save Text File("$TEMP/661243_jsl1.jsl", jsl1_str);
Save Text File("$TEMP/661243_jsl2.jsl", jsl2_str);
Include("$TEMP/661243_jsl1.jsl");
Include("$TEMP/661243_jsl1.jsl", << New Context);
Include("$TEMP/661243_jsl1.jsl", << New Context, << Names Default To Here);
Include("$TEMP/661243_jsl2.jsl", << New Context);
show(todaydate); // not overwritten
Include("$TEMP/661243_jsl2.jsl", << New Context, << Names Default To Here);
show(todaydate); // not overwritten
Include("$TEMP/661243_jsl2.jsl");
show(todaydate); // overwritten
Try(Delete File("$TEMP/661243_jsl1.jsl"));
Try(Delete File("$TEMP/661243_jsl2.jsl"));
Scripting Guide has a lot of information regarding JMP Scripting, below are few links related to this topic
Scripting Guide > Programming Methods > Advanced Programming Concepts > Include a Script
Scripting Guide > Programming Methods > Advanced Scoping and Namespaces
Scripting Guide > Programming Methods > Advanced Programming Concepts > Advanced Functions
Scripting Guide > JSL Building Blocks > Rules for Name Resolution
Also remember to see more topics by pressing arrow in the help page
or using left side menu
-Jarmo