
  PROCEDURE [INLINE] iip$set_lock (VAR lock: ost$signature_lock;
    wait: ost$wait;
    VAR status: ost$status);

?? EJECT ??

VAR
   locked: boolean;

    status.normal := TRUE;

  /lock_loop/
    WHILE TRUE DO
      osp$test_set_job_sig_lock (lock, locked);
      IF locked THEN
        RETURN;
      ELSE

{ osc$wait - wait for lock until available

        IF wait = osc$wait THEN
          pmp$long_term_wait (750, 750);
          CYCLE /lock_loop/;
        IFEND;

{ osc$nowait - return if break in progress, else wait

        IF NOT pmp$ts_task_io_enabled () THEN
          CASE iiv$break_reason OF
          = iic$user_break_1 =
            osp$set_status_abnormal (ifc$interactive_facility_id,
                  ife$pause_break_received, '', status);
          = iic$user_break_2 =
            osp$set_status_abnormal (ifc$interactive_facility_id,
                  ife$terminate_break_received, '', status);
          ELSE
            osp$set_status_abnormal (ifc$interactive_facility_id,
                  ife$connection_break_disconnect, '', status);
          CASEND;
          RETURN;
        ELSE
          pmp$long_term_wait (750, 750);
          CYCLE /lock_loop/;
        IFEND;
      IFEND;
    WHILEND /lock_loop/;
  PROCEND iip$set_lock;

?? PUSH (LISTEXT := ON) ??
*copyc OST$WAIT
*copyc OST$SIGNATURE_LOCK
*copyc OSP$SET_JOB_SIGNATURE_LOCK
*copyc pmp$ts_task_io_enabled
*copyc OSP$SET_STATUS_ABNORMAL
*copyc OSP$TEST_SET_JOB_SIG_LOCK
*copyc PMP$LONG_TERM_WAIT
*copyc IFE$ERROR_CODES
*copyc IIT$CONNECTION_DESCRIPTION
*copyc IIV$INTERACTIVE_TERMINATED
*copyc IIV$INT_TASK_OPEN_FILE_COUNT
*copyc IIV$CONNECTION_DESC_PTR
?? POP ??
