*DECK HFASTQ
USETEXT NIPDEF
USETEXT PT
USETEXT AT
USETEXT ACB 
USETEXT SYSTIME 
USETEXT ACNB
USETEXT AHEADER 
USETEXT NHEADER 
PROC HFASTQ ( BLKPTR,ACNBAD) ;
STARTIMS ;
 #
*1DC  HFASTQ
* 
*     1. PROC NAME           AUTHOR              DATE 
*        HFASTQ              A. BEN-ARTZI        82/09/15 
* 
*     2. FUNCTIONAL DESCRIPTION 
*        QUEUE UPLINE MESSAGES TO ACNB
* 
*     3. METHOD USED
*        CHANGE THE HEADER
*        LINK TO THE APPLICATION AND CALL FOR SWAPIN
* 
*     4. ENTRY PARAMETERS 
*        BLKPTR - MESSAGE TO QUEUE
*        ACNBAD - ADDRESS OF THE ACNB TO QUEUE TO 
* 
*     5. EXIT PARAMETERS
*        NONE 
* 
*     6. COMDECKS CALLED AND SYMPL TEXTS USED 
*        NIPDEF     AT     PT     ACB     ACNB
*        AHEADER     NHEADER     SYSTIME
* 
*     7. ROUTINES AND OVERLAYS CALLED 
*        XTRACE - TRACE PROCEDURE CALL
*        BLINK - LINK MESSAGE TO APPLICATION
*        OSCHAPP - SWAPIN REQUEST FOR APPLICATION 
* 
*     8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION 
*        NORMALLY IT WILL BE CALLED BY HBSTTP.
*        WHEN ALL DATA IS ALLOWED ON CONNECTION IT WILL 
*        BE CALLED FOR FAST QUEUING DIRECTLY FROM NEIB1.
* 
 #
STOPIMS ; 
# 
      INPUT PARAMETERS
# 
      ITEM BLKPTR ; 
      ITEM ACNBAD ; 
# 
      INTERNAL PARAMETERS 
# 
      ITEM AN ; 
      ITEM NHWORD1 ;
# 
      EXTERNAL REFERENCES 
# 
   XREF 
      BEGIN 
      PROC XTRACE  ;
      PROC BLINK   ;
      PROC OSCHAPP ;
      END 
  
      BEGIN 
  
      CONTROL IFEQ DEBUG,1 ;
        XTRACE("FASTQ")    ;
      CONTROL FI           ;
  
      P<ACNB> = ACNBAD  ; 
# 
      GET ACB OF APPLICATION
# 
      AN = ACNBAN[0] ;
      P<ACB>= ATACBA[AN] ;
  
#     SET UP APPLICATION BLOCK HEADER                                  #
  
      P<AHEADER> = BLKPTR + BLKHSIZE;  # BASE ABH                    #
      NHWORD1 = ABHWORD[0];  # SAVE NETWORK HEADER                   #
      P<NHEADER> = LOC(NHWORD1);  # LOCATION OF NETWORK  HEADER      #
      ABHWORD[0] = 0;  # CLEAR ABH WORD                              #
      ABHABN[0] = NHBSN[0];  # SAVE NETW BSN IN ABH WORD             #
  
      IF DN[0] NQ 0 AND SN[0] NQ 0
      THEN                   # NOT A-A MESSAGE                         #
        ABHACT[0] = CT8ASCII;  # APPLICATION CHAR TYPE                 #
      ELSE                   # A-A MESSAGE                             #
        ABHACT[0] = NHACT[0]; 
      ABHTLC[0] = CC[0];  # TEXT LENGTH IN CHARACTER                # 
      IF BT[0] LQ NETMSG
        OR BT[0] EQ NETQBLK 
        OR BT[0] EQ NETQMSG 
      THEN
        ABHDBC[0] = NHDBC[0]; 
      IF BT[0] NQ NETCMD
      THEN
        ABHABT[0] = BT[0];
      ELSE
        ABHABT[0] = APPCMD; 
      ABHADR[0] = ACNBACN[0];  # APPLICATION CONNECTION NUMBER       #
  
#     SET INACTIVITY TIMER           #
      ACNBINACT[0] = RTSECS[0] + INACTVAL;
  
      BLINK(BLKPTR,P<ACNB>) ;# LINK IT TO ACNB                         #
      OSCHAPP(P<ACB>) ;                     # CALL SCHEDULER           #
  
      RETURN ;
      END 
TERM
