My company has 18 restaurants, all running 3700 4.1 hf3. I've found that this is generally due to the posting procedures embedded in the reports. Employee reports that hang like that are usually due to checks carried over or employees who have been on the same shift for a long time. I haven't seen this happen yet in 4.1, but 3.0/3.1 had an indexing problem in the posting procedures that caused reports to hang like this.
If you don't have employee totals posting in your incremental posting procedures, add them in. This way the reports won't have too much info to post.
Either before you open or after you close, try clocking everybody out, incrementing all shifts and running a current shift employee detail from the PC. Also, keep an eye on the carried over section on your system detail. If there are checks that have been open for a long time they'll have to be closed.
The 3700 was introduced around 1995/6, not 1980, and almost all of the programmers from the original version are gone. The basic ideology is about the same, but that's because it works. The system does have some problems, and I get as aggravated with Micros as any other users sometimes, but to imply that the code is 30 years old and that the same programmers are still working on it the same way is misleading at best. The newer 3700 versions are .Net based and use mostly IIS, XML and Http Requests to communicate, none of which were available on that scale 14 years ago, let alone 30. Many of the COM components have been retired. Also, compare the stored procedures in a Res 2.x database to one of the current versions. In most cases they're almost unrecognizable.