If you read the previous posts, the issue with the time order of
the messages was not the only issue. More important was the
problem, that the trace messages from C appeared on the screen
in the IMS/DC sessions, because the PL/1 modules had already opened
SYSPRINT, and so C used SYS00001 ... this way the messages
could not be redirected to a dataset. By replacing the printf calls
in C by a function called CPUT which had the same signature as
printf (but called a PL/1 function issuing PL/1-PUT under the cover),
we redirected the C output to SYSPRINT and solved two problems:
a) the redirection problem ... trace output going to a dataset instead
of appearing on the screen
b) the time order of the messages was correct
This was in the first half of the 1990s. PL/1 had its own runtime,
and the C runtime was that what later should become LE.
When PL/1 later switched to LE, things got different, and we removed
CPUT, because printf now worked. The redirection problem disappeared,
but the time order problem remained. But this was considered no big
problem.
Kind regards
Bernd
Am 04.04.2014 01:00, schrieb zMan:
Just curious: why not just put granular timestamps on the messages?
Wouldn't that have been simpler?
On Thu, Apr 3, 2014 at 5:37 PM, Bernd Oppolzer
<[email protected]>wrote:
The problem is that the physical writes to the output streams
are deferred, and you don't have full control about the flushing of
the buffers, at least it does not work in the way we expect it.
This is no problem of the legacy data sets; it's only a problem of
the two RTLs, both writing to SYSPRINT (for example) and both
doing their own buffering. When we moved all the C printf work
to PL/1-PUT in the past (by our own printf replacement), all worked
well, of course.
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN