*DECK HSCAND
USETEXT NIPDEF
USETEXT ACB 
USETEXT ACNB
USETEXT ACNT
USETEXT APPSTAT 
USETEXT DUMPFLG 
USETEXT MSGIDX
USETEXT OVERLAY 
USETEXT PARAMS
 PROC HSCAND(ACNALN,LIST,FOUND,ACNBADR);  # SCAN FOR DATA              #
 STARTIMS;
 #
*1DC  HSCAND
* 
*     1. PROC NAME           AUTHOR              DATE 
*        HSCAND              E. GEE              85/04/10 
* 
*     2. FUNCTIONAL DESCRIPTION.
*          SCAN FOR UPLINE DATA QUEUED FOR APPLICATION. 
* 
*     3. METHOD USED. 
*          IF GETTING DATA FROM LIST, 
*            SCAN CONNECTION DATA RING FOR ACNB WITH MATCHING LIST
*              NUMBER.
*          ELSE (GETTING DATA FOR A SPECIFIC CONNECTION), 
*            CHECK FOR DATA RING IN CORRESPONDING ACNB. 
* 
*     4. ENTRY PARAMETERS.
*          ACBADDR           ADDRESS OF APPLICATION CONTROL BLOCK 
*          ACNALN            APPLICATION LIST OR CONNECTION NUMBER
*          LIST              TYPE OF CALL 
*                            TRUE  = SCAN FOR DATA ON LIST ACNALN 
*                            FALSE = SCAN FOR DATA ON CONNECTION ACNALN 
* 
*     5. EXIT PARAMETERS. 
*          FOUND             RESULT OF SEARCH 
*                            TRUE  = FOUND MSG TO DELIVER 
*                            FALSE = NO MSG FOUND TO DELIVER
*          ACNBADR           ADDRESS OF ACNB CONTAINING DATA TO DELIVER 
* 
*     6. COMDECKS CALLED AND SYMPL TEXTS USED.
*        ACB                 APPLICATION CONTROL BLOCK
*        ACNB                APPLICATION CONNECTION BLOCK 
*        ACNT                APPLICATION CONNECTION TABLE 
*        APPSTAT             NETWORK WORKLIST PROCESSING TABLE
*        DUMPFLG             REASON CODES FOR DUMPING NIP-S FIELD LENGTH
*        MSGIDX              DAYFILE MESSAGE CODES
*        NIPDEF              CONSTANT DEFINITIONS 
*        OVERLAY             OVERLAY PROCESSING COMMON BLOCK
*        PARAMS              OVERLAY PARAMETER PASSING COMMON BLOCK 
* 
*     7. ROUTINES CALLED. 
*          NONE 
* 
*     8. DAYFILE MESSAGES.
*          NONE 
 #
 STOPIMS; 
# 
      INPUT VARIABLES 
# 
      ITEM ACNALN;                     # APPLICATION LIST/CONNECTION NO#
      ITEM LIST B;                     # LIST OR CONNECTION TYPE CALL  #
# 
      OUTPUT VARIABLES
# 
      ITEM FOUND B;                    # RESULT OF SEARCH              #
      ITEM ACNBADR;                    # ADDRESS OF ACNB IF FOUND MSG  #
  
      XREF
        BEGIN 
        PROC OVLCALL;                  # LOAD AND EXECUTE OVERLAY      #
        PROC XTRACE;                   # TRACE PROCEDURE CALL          #
        END 
  
# 
      LOCAL VARIABLES 
# 
      ITEM ENDSEARCH B;                # SEARCH ACNB LOOP TERMINATOR   #
      ITEM I;                          # LOOP INDUCTION VARIABLE       #
  
      CONTROL IFEQ DEBUG,1 ;
      ITEM PNAME C(10) = "HSCA";
      CONTROL FI; 
  
#**********************************************************************#
CONTROL EJECT;
  
      BEGIN 
  
      CONTROL IFEQ DEBUG,1 ;
       XTRACE("HSCND") ;
      CONTROL FI; 
  
      P<ACB> = ACBADDR;                # ADDRESS OF ACB                #
      FOUND = FALSE;                   # ASSUME NO MSG WILL BE FOUND   #
      IF LIST 
      THEN                             # GET FROM LIST TYPE CALL       #
        BEGIN 
        IF ACBLSTBLKS[0] NQ 0 
        THEN                           # MAY BE DELIVERABLE DATA       #
          BEGIN 
          P<ACNB> = ACBCDRP[0];        # ACNB IN CONNECTION DATA RING  #
          ENDSEARCH = FALSE;           # INITIALIZE LOOP TERMINATOR    #
          FOR I = I WHILE NOT ENDSEARCH 
          DO                           # SCAN FOR DATA ON LIST         #
            BEGIN 
            IF (ACNALN EQ ACNBALN[0]) AND  # LIST NUMBERS MATCH        #
               (NOT ACNBLO[0]) AND     # NOT LIST OFF                  #
               (NOT ACNBTLO[0])        # NOT TEMPORARY LIST OFF        #
            THEN                       # FOUND ACNB WITH DATA          #
              BEGIN 
  
              CONTROL IFEQ DEBUG,1; 
              IF ACNBDRFP[0] EQ 0 
              THEN                     # NO DATA QUEUED TO THIS ACNB   #
                BEGIN 
                DMPFLG = DHSCAN1;      # REASON CODE FOR DUMPING FL    #
                PARAMS1 = DFMSG01;     # NIP FATAL ERROR PROC=XXXX.    #
                PARAMS6 = PNAME;       # PROC NAME = HSCA              #
                OVLNAME = XERRMSGP; 
                OVLCALL;
                END 
              CONTROL FI; 
  
              FOUND = TRUE;            # HAVE DATA TO DELIVER TO APP   #
              ENDSEARCH = TRUE;        # TERMINATE FOR LOOP            #
              END 
            ELSE                       # ACNB IS ON DIFFERENT LIST     #
              BEGIN 
              P<ACNB> = ACNBCDRFP[0];  # NEXT ACNB IN CON DATA RING    #
              IF P<ACNB> EQ ACBCDRP[0]
              THEN                     # CHECKED EVERY ACNB IN CDR     #
                BEGIN 
                ENDSEARCH = TRUE;      # TERMINATE FOR LOOP            #
                END 
              END 
            END 
          END 
        END 
      ELSE                             # SEARCH FOR DATA ON CONNECTION #
        BEGIN 
        P<ACNT> = ACBACNT[0];          # ADDR OF APP CONNECTION TABLE  #
        P<ACNB> = ACNTACNB[ACNALN+ACNTHSIZE-ACNTMINACN[0]]; 
        IF ACNBDRFP[0] NQ 0 
        THEN                           # DATA AVAIL ON THIS CONNECTION #
          BEGIN 
          FOUND = TRUE; 
          END 
        END 
      ACNBADR = P<ACNB>;
      RETURN; 
      END 
TERM
