Monitoring Job Status: ENQUIRY
Initiating and Communicating With Processes
107365 Tandem Computers Incorporated
5–37
Figure 5-14. Retrieving TACL Output (Page 2 of 2)
== Successful open:
== Send our message and get a reply (like a WRITEREAD)
#APPENDV prompt enquiry_message == The WRITE
#EXTRACTV r_rec enquiry_reply == The READ
#SET next [enquiry_reply:next]
#SET last [enquiry_reply:next]
== A zero length at this point means a partial buffer, so
== start processing at the beginning
[#IF ([enquiry_reply:line([next]):length] = 0) |THEN|
#SET next 0
== If we do not have an empty buffer, begin the processing
[#IF ([enquiry_reply:line([next]):length] <> 0) |THEN|
[#LOOP |DO|
== Check the line length and truncate if necessary
[#IF [enquiry_reply:line([next]):length] > [max_chars]
|THEN|
#SET enquiry_reply:line([next]):length [max_chars]
]
== Display it for length characters
#SET length [#COMPUTE &
[enquiry_reply:line([next]):length] - 1]
[#OUTPUT [enquiry_reply:line([next]):text(0:[length])]]
== Compute the position of the next read
#SET next [#COMPUTE [next] + 1]
== Should we wrap around to the beginning yet?
[#IF [next] > [last_line] |THEN|
#SET next 0
]
|UNTIL| [next] = [last]
] == LOOP
|ELSE|
== Nothing to display, the buffer is empty.
#OUTPUT Buffer is empty
] == IF
== Close process.
SINK [#REQUESTER/WAIT/CLOSE r_rec]
#UNFRAME