*DECK,QTFWAIT 
USETEXT COMCBEG 
USETEXT COMQDEF 
    PROC QTFWAIT( (WAITTIME) ); 
      BEGIN # QTFWAIT # 
# 
**    QTFWAIT    WAIT FOR NEXT EVENT OR TIMER.
* 
*     CONDITIONALLY CALLS NETWAIT TO WAIT FOR SOMETHING TO HAPPEN.
* 
*     PROC QTFWAIT( (WAITTIME) )
* 
*     ENTRY      WAITTIME = MAXIMUM DELAY TIME IN SECONDS.
* 
*     EXIT       NONE.
* 
*     PROCESS    IF K DISPLAY ASSIGNED: 
*                  ENSURE NO ROLLOUT
*                ELSE:  
*                  IF AT LEAST ONE CONNECTION ACTIVE: 
*                    IF SHORT TIME SINCE LAST MESSAGE RECEIVED: 
*                      INCREMENT COUNTER (RESET BY NMSG)
*                      ENSURE NO ROLLOUT
*                  ELSE:  
*                    ISSUE STATUS MESSAGE TO B DISPLAY. 
*                CALL NETWAIT.
# 
  
      ITEM WAITTIME   U;           # DELAY TIME IN SECONDS #
  
# 
****  XREF
# 
      XREF
        BEGIN 
        PROC CALLSYS;              # MAKE RA+1 REQUEST #
        PROC FTUWAIT;              # INTERFACE TO NETWAIT # 
        PROC MESSAGE;              # SEND MESSAGE TO B-DISPLAY #
        PROC NAME;                 # DEBUG CODE # 
        END 
# 
****  XREF END
# 
  
      DEF MAXNOMSG  #10#;          # CYCLES TO WAIT BEFORE ROLLOUT #
  
    CONTROL IFEQ OS$NOS;
      DEF WCLNAME   #"WCL"#;       # CALL *WCL* ON NOS #
    CONTROL ENDIF;
  
    CONTROL IFEQ OS$NOSBE;
      DEF WCLNAME   #"RCL"#;       # CALL *RCL* ON NOS/BE # 
    CONTROL ENDIF;
  
      ARRAY WCLCALL S(1);          # WCL/RCL SYSTEM REQUEST # 
        BEGIN 
        ITEM WCLWD     U(00,00,60) = [0]; 
        ITEM WCLNAM    C(00,00,03) = [WCLNAME]; 
        ITEM WCLRECALL B(00,18,01) = [FALSE]; 
        ITEM WCLPERIOD U(00,48,12) = [O"3777"]; 
        END 
  
        $BEGIN
        NAME("QTFWAIT");           # DEBUG CODE # 
        $END
  
      IF KDSPASSIGN                # IF K DISPLAY ASSIGNED #
        OR SHUTDOWN 
      THEN
        BEGIN 
        WAITTIME = 1;              # SHORT WAIT, NO ROLLOUT # 
        IF ACNNO EQ 0              # IF NO CONNECTIONS ACTIVE # 
        THEN
          BEGIN 
          CALLSYS(WCLCALL);        # REDUCE CPU OVERHEAD #
          END 
  
        END 
  
      ELSE
        BEGIN 
        IF ACNNO GT 0              # IF CONNECTIONS ARE ACTIVE #
        THEN
          BEGIN 
          IF (NOMSGCNT LT MAXNOMSG)  # AND BELOW SHORT WAIT LIMIT # 
          THEN
            BEGIN 
            NOMSGCNT = NOMSGCNT + 1; # INCREMENT SHORT WAIT COUNT # 
            WAITTIME = 1;            # SHORT WAIT, NO ROLLOUT # 
            END 
  
          END 
  
        END 
  
      IF ACNNO NE MSGWFALAST       # IF NUMBER OF ACTIVE #
      THEN                         # CONNECTIONS HAS CHANGED #
        BEGIN 
        IF ACNNO EQ 0 
        THEN
          BEGIN 
          MSGWFANO = "NO";         # NO ACTIVITY #
          END 
  
        ELSE
          BEGIN 
          MSGWFAACN1 = " "; 
          MSGWFAACN2 = ACNNO + O"33";  # CURRENT ACTIVE CONNECTIONS # 
          END 
  
        MSGWFALAST = ACNNO;        # SAVE COUNT # 
        MESSAGE(MSGWFA,1);         # UPDATE B DISPLAY#
        END 
  
      FTUWAIT (WAITTIME, 0);       # NETWAIT #
  
      END      # QTFWAIT #
    TERM
