*DECK WAIT
USETEXT COMCBEG 
USETEXT COMRAPL 
USETEXT COMRMEM 
USETEXT COMRNET 
USETEXT COMRQUE 
PROC WAIT(WAITWORD);
# TITLE WAIT - WAIT FOR COMPLETE BIT TO BE SET. # 
  
      BEGIN  # WAIT # 
  
# 
**    WAIT - WAIT FOR COMPLETE BIT TO BE SET. 
* 
*     WAIT FOR COMPLETE BIT TO BE SET IN WORD POINTED TO BY WAITWORD. 
* 
*     PROC WAIT(WAITWORD).
* 
*     ENTRY   -  WAITWORD POINTS TO WORD CONTAINING COMPLETE BIT. 
* 
*     EXIT    -  COMPLETE BIT HAS BEEN SET. 
*                A NUMBER OF BASED ARRAY POINTERS ARE PRESERVED ACROSS
*                CALLS TO WAIT:  APPLICATION, CONNECTION,QUADDRESS, 
*                PATH,NAD, NETWORK HEADER, REMOTE NAD ENTRY.
* 
*     PROCESS -  SAVE BASED ARRAY POINTERS
*                WHILE COMPLETE BIT REMAINS UNSET:  
*                  PERFORM RECALL 
*                  INITIATE EVENT SCANNER.
*                RESTORE BASED ARRAY POINTERS 
*                RETURN 
* 
* 
# 
  
      DEF RALDR #O"67"#; # LDV COMPLETE BIT IS BIT 29 OF RA+67 #
  
      BASED ARRAY WAITWORD [0:0] S(1);
        BEGIN 
        ITEM COMPLTLDV B(00,30,01); 
        ITEM COMPLTBIT B(00,59,01); 
        END 
  
# 
****  PROC WAIT - XREF LIST BEGIN.
# 
  
      XREF
        BEGIN 
        PROC EVNTSCN;                # INITIATE EVENT SCANNER # 
        PROC CALLSYS;                # MAKE RA+1 CALL # 
        END 
  
# 
****  PROC WAIT - XREF LIST END.
# 
  
  
      ITEM APLADR I;                 # PERSERVES APPLICATION BASED ARRY#
      ITEM CONADR I;                 # PRESERVES CONNECTION BASED ARRAY#
      ITEM NADADR I;                 # PERSERVES NAD ENTRY BASED ARRAY# 
      ITEM NETADR I;                 # PERSERVES NET HEADER BASED ARRAY#
      ITEM NSTADR I;                 # PRESERVES NAD STATE BASED ARRAY #
      ITEM PTHADR I;                 # PERSERVES PATH ENTRY BASED ARRAY#
      ITEM QUEADR I;                 # PRESERVES QUADDRESS BASED ARRAY #
      ITEM RMTADR I;                 # PRESERVES REMOTE NAD BASED ARRAY#
  
      ARRAY [0:0] S(1); 
        BEGIN 
        ITEM RCLCALL    U(00,00,60) = [0];
        ITEM RCL        C(00,00,03) = ["RCL"];
        ITEM RCLTIME    U(00,48,12) = [0];
        END 
  
CONTROL EJECT;
  
      QUEADR = P<QU$ADDRESS>; 
      CONADR = P<CONNECTION>; 
      APLADR = P<APL$HEADER>; 
      NETADR = P<NET$HEADER>; 
      PTHADR = P<PTH$ENTRY>;
      NADADR = P<NAD$ENTRY>;
      NSTADR = P<NST$ENTRY>;
      RMTADR = P<RMT$ENTRY>;
  
      ASLONGAS (P<WAITWORD> NE RALDR AND NOT COMPLTBIT) 
            OR (P<WAITWORD> EQ RALDR AND NOT COMPLTLDV) 
      DO
        BEGIN  # WAIT FOR COMPLETE #
        CALLSYS(RCLCALL); 
        RECALLS = RECALLS + 1;
        EVNTSCN;
        END 
  
      P<QU$ADDRESS> = QUEADR; 
      P<CONNECTION> = CONADR; 
      P<APL$HEADER> = APLADR; 
      P<NET$HEADER> = NETADR; 
      P<PTH$ENTRY>  = PTHADR; 
      P<NAD$ENTRY>  = NADADR; 
      P<NST$ENTRY>  = NSTADR; 
      P<RMT$ENTRY>  = RMTADR; 
  
      RETURN; 
      END  # WAIT # 
  
      TERM
  
