?? SET (LISTCTS := OFF) ??
?? LEFT := 1, RIGHT := 110 ??
?? FMT (FORMAT := ON, keyw := upper, ident := lower) ??
?? NEWTITLE := 'NOS/VE: Program Control - Job Local Queues' ??
?? NEWTITLE := '  Global System Declarations' ??
MODULE pmm$receive_from_queue;
{   PURPOSE:
{    The purpose of this module is to support pmp$receive_from_queue.  The
{    module serves as screen in the processing of interactive conditions.

{   DESIGN:
{     The procedure contained in this module has an execution bracket of 1, 13.
?? EJECT ??
?? SET (LIST := OFF) ??
*copyc OST$STATUS
*copyc OST$WAIT
*copyc PMK$KEYPOINTS

?? SET (LIST := ON) ??

*copyc PMD$LOCAL_QUEUES
?? TITLE := '  Global External Procedures' ??
?? EJECT ??

*copyc PMH$RECEIVE_QUEUE_MESSAGE
*copyc PMP$RECEIVE_QUEUE_MESSAGE
?? TITLE := '  [XDCL, #gate] pmp$receive_from_queue' ??
?? EJECT ??

  PROCEDURE [XDCL, #GATE] pmp$receive_from_queue (qid: pmt$queue_connection;
        wait: ost$wait;
    VAR message: pmt$message;
    VAR status: ost$status);
*copyc PMH$RECEIVE_FROM_QUEUE

    VAR
      receive_complete: boolean;

    status.normal := TRUE;
    #INLINE ('keypoint', osk$entry, 0, pmk$receive_from_queue);
    receive_complete := FALSE;
    REPEAT
      pmp$receive_queue_message (qid, wait, message, receive_complete, status);
    UNTIL receive_complete OR NOT status.normal;
    #INLINE ('keypoint', osk$exit, 0, pmk$receive_from_queue);
  PROCEND pmp$receive_from_queue;
MODEND pmm$receive_from_queue;
