*DECK HPRUONX 
USETEXT ACB 
USETEXT NIPDEF
USETEXT PARAMS
USETEXT AHEADER 
USETEXT APPSTAT 
USETEXT SUPMSG
 PRGM HPRUONX;
      STARTIMS; 
 #
*1DC  HPRUONX 
* 
*     1. PROC NAME           AUTHOR              DATE 
*        HPRUONX             A.BEN-ARTZI         82/03/01 
* 
*     2. FUNCTIONAL DESCRIPTION.
*        THIS ROUTINE IS RESPONSIBLE FOR FORMATTING A PRU/ON/N OR 
*                                                PRU/ON/A 
*        MESSAGE AND SENDING IT TO THE APPROPRIATE APPLICATION. 
* 
*     3. METHOD USED. 
*        FORM THE APPROPRIATE MESSAGE WITH ERROR CODE TO THE
*        APPLICATION BY LINKING TO THE PROPER ACB.(ZERO RC FOR N) 
* 
*     4. ENTRY PARAMETERS.
*          PARAMS1           REASON CODE FOR THE ERROR(OR 0 ) 
*          PARAMS2           PRU CONNECTION NUMBER
* 
*     5. EXIT PARAMETERS. 
*          BUFADDR           LOCATION OF PRU/ON/N(OR A) MESSAGE 
* 
*     6. COMDECKS CALLED AND SYMPL TEXTS USED.
*          AHEADER   APPSTAT
*               NIPDEF     OSSIZE 
*        ACB                 APPLICATION CONTROL BLOCK TEMPLATE 
*        PARAMS              PARAMETERS FOR PASSING TO/FROM SEC OVERLAYS
*        SUPMSG              SUPERVISORY MESSAGE TEMPLATE 
* 
*     7. ROUTINES CALLED. 
*          BLINK             LINK DATA BLOCK INTO DATA RING 
*          MGETS             ALLOCATE EMPTY BUFFER
*          OSCHAPP           SCHEDULE APPLICATION 
*          XTRACE            RECORD CALL
* 
*     8. DAYFILE MESSAGES.
*          NONE 
* 
*        THIS PROGRAM IS A SECONDARY OVERLAY LOADED BY OVLCALL. 
*        WHEN EXECUTION HAS COMPLETED, A JUMP IS MADE TO LOCATION 
*        RJMAIN TO RETURN TO THE CALLING PROGRAM. 
* 
* 
*        THIS OVERLAY IS CALLED BY HPRUON AND HBSTTP
*        W A R N I N G - THIS PROGRAM CANNOT EXCEED THE SECONDARY 
*CALL OSSIZE
* 
 #
      STOPIMS;
 XREF BEGIN 
       PROC MGETS;    # GET A FREE BUFFER                              #
       PROC BLINK;    # SEND THE BUFFER TO THE APPLICATION             #
       PROC OSCHAPP;  #                                                #
       PROC XTRACE;   # TRACE CALLS                                    #
       LABEL RJMAIN;  # TO EXIT TO CALLING PROGRAM                     #
       END
# 
      INTERNAL VARIABLES
# 
      ITEM BUFADDR;    # STORE NEW BUFFER ADDRESS                      #
#                                                                      #
      BEGIN 
      CONTROL IFEQ DEBUG,1; 
         XTRACE("HPRUX") ;
      CONTROL FI; 
# 
      GET A BUFFER TO FORMAT MESSAGE
# 
      MGETS(LPRUA+BLKHSIZE+ABHSIZE,BUFADDR,TRUE) ;
      P<SUPMSG> = BUFADDR+BLKHSIZE+ABHSIZE ;
      P<AHEADER>= BUFADDR+BLKHSIZE ;
# 
      FORMAT APPLICATIN HEADER FIELDS 
# 
      ABHTLC[0] = LPRUA ; 
      ABHABT[0] = APPCMD  ; 
      ABHACT[0] = CT60TRANS ; 
      ABHABN[0] = 0 ; 
      ABHADR[0] = 0 ; 
# 
      FORMAT THE MESSAGE
# 
      PRUACN[0] = PARAMS2 ; 
      PRURC[0] =  PARAMS1 ; 
      IF PARAMS1 EQ 0 
      THEN
        PFCSFC[0] = PRUONN ;
      ELSE
        BEGIN 
        P<ACB> = ACBADDR;              # ADRESS OF ACB                 #
        ACBERCNT[0] = ACBERCNT[0] + 1; # INCRE CNT OF QUEUED PRU/ON/A  #
        PFCSFC[0] = PRUONA ;
        END 
# 
      AND SEND IT TO APPLICATION
# 
      BLINK(BUFADDR,ACBADDR) ;
      OSCHAPP(ACBADDR) ;
      GOTO RJMAIN ;  # RETURN TO CALLING PROGRAM                       #
      END 
TERM
