If I understand you correctly you want to have a pure 'hourly' program, meaning the sequence would for each hour be:
1. Top-Of-The-Hour-Jingle
2. News
3. Song1
4. Song2
... SongX...until the next hour starts.
To achieve this you can create a single Script exactly line this with the following lines:
1. LoadTrack, Top-Of-The-Hour-Jingle, Count=1, Option=SupressHistoryCheck, SupressAddHistory
2. LoadTrack, News, Count=1, Option=SupressHistoryCheck, SupressAddHistory
3. Random, MediaLib, Count=1
4. Random, MediaLib, Count=1
...
Set the LoopLine parameter in the script to 3!
No FTEs etc. needed!
Now you might create (within the Program Scheduler) a program entry for each hour!
E.g. a single entry with the recurrence pattern "Hourly, every 1 hour" would also do its job.
Now assign the above script to that program.
As the StartType of the program you might either define:
Fixed: When a 'Fixed' start is specified the program will start at exactly this time and any currently playing track will be stopped immediately.
Soft: In case of 'Soft' start, the remaining playtime of a currently playing track will be evaluated. If the remaining playtime is less than the given Maximum Delay the track will play til the end until this program is started. If the remaining time is bigger than the Maximum Delay the track is stopped immediately and the program starts on time.
Fixed/Soft TimeUpdateSync: Instead of starting the program in a new playlist window any existing scheduler playlist window will be reused and a TimeUpdateSync entry is used to change the running script.
(see here for details:
viewtopic.php?f=9&t=10)
What now happens is the following:
At each hour a new program is started (actually the same script in this simple example).
This will now execute the script, starting with the Top-Of-The-Hour-Jingle, followed by the News and followed by the Songs.
Note, that a script is (within this hour) being looped, once all script-lines have been used.
That's why you should set the LoopLine value to 3 - so that the first 2 lines are not repeated (Jingle and News).
I also noticed, that you have defined a Song-History value with your script.
Don't do so. Leave that to 0. Same for the Media Lib History (if set). So that 'only' the global song history is used.
That gives you much more predictable results.