*DECK NPISM 
USETEXT NIPDEF
USETEXT AHEADER 
USETEXT ACB 
USETEXT ACNB
USETEXT AT
USETEXT PT
USETEXT PWL 
USETEXT PCNB
USETEXT OVERLAY 
USETEXT PARAMP
USETEXT SUPMSG
 PRGM NPISM;                 # PROCESS AN ILLOGICAL SM FROM APPLICATION#
 STARTIMS;
 #
*1DC  NPISM 
* 
*     1. PROC NAME           AUTHOR              DATE 
*        NPISM               J.C. LEE            80/04/01 
* 
*     2. FUNCTIONAL DESCRIPTION.
*          PROCESS AN ILLOGICAL PRU SUPERVISORY MESSAGE FROM APPLICATION
* 
*     3. METHOD USED. 
*          CHECK IF LOGICAL ERROR LIMIT FOR THE APPLICATION IS REACHED, 
*          GET BUFFER AND FORMAT THE ERR/LGL/SM 
*          SEND LOGICAL ERROR SUPERVISORY MESSAGE TO APPLICATION
* 
*     4. ENTRY PARAMETERS.
*          PARAMP1           PRU WORKLIST ADDRESS 
*          PARAMP2           PCBN ADDRESS 
* 
*     5. EXIT PARAMETERS. 
*          PARAMP1           NONZERO SPECIFIES ERROR CODE FOR PWL 
* 
*     6. COMDECKS CALLED AND SYMPL TEXTS USED 
*        ACB       ACNB      AHEADER   AT 
*        NIPDEF     OPSIZE     PARAMP 
*        PCNB      PT        PWL       SUPMSG 
* 
*     7. ROUTINES AND OVERLAYS CALLED 
*          BLINK             LINK MESSAGE TO DATA RING
*          XTRACE            TRACE CALLS
* 
*     8. DAYFILE MESSAGES.
*          NONE 
* 
*        THIS PROGRAM IS A PRIMARY OVERLAY LOADED BY SUBROUTINE OVLCALL.
*        WHEN EXECUTION HAS COMPLETED, A JUMP IS MADE TO LOCATION RJMAIN
*        TO RETURN TO THE CALLING PROGRAM.
* 
*        W A R N I N G - THIS PROGRAM CANNOT EXCEED THE PRIMARY 
*CALL OPSIZE
* 
*        THIS OVERLAY IS CALLED BY NPPWL. 
* 
 #
 STOPIMS; 
# 
      EXTERNAL VARIABLES
# 
 XREF 
   BEGIN
   PROC BLINK;                         # LINK MESSAGE TO DATA RING     #
   PROC OSCHAPP;                       # SCHEDULE APPLICATION          #
   PROC XTRACE;                        # TRACE CALLS                   #
   LABEL RJMAIN;                       # RETURN ADDRESS                #
   END
# 
      LOCAL VARIABLES 
# 
 ITEM REASON;                # REASON CODE FOR ERR/LGL SUP MSG #
 ITEM DEBUGINFO;             # DEBUG INFORMATION FROM PIP              #
  
# ******************************************************************** #
      BEGIN 
  
      CONTROL IFEQ DEBUG,1; 
        XTRACE("NPISM") ; 
      CONTROL FI; 
  
      P<PWLHDR> = PARAMP1;             # PWL ADDRESS                   #
      P<PCNB> = PARAMP2;               # PCNB ADDRESS                  #
      P<ACNB> = PCNBACNB[0];           # ACNB ADDRESS                  #
      P<ACB> = ATACBA[ACNBAN[0]]; # ACB ADDRESS                        #
      PARAMP1 = 0;                     # PRESET TO NORMAL EXIT         #
# 
      CHECK IF LOGICAL ERROR LIMIT IS REACHED 
# 
      IF ACBERCNT[0] LQ MAXLGERR AND   # LOGICAL ERROR LIMIT NOT REACH #
        NOT ATNVFN[0]              # APPLICATION NOT NETOFFED  YET     #
          AND NOT ATNVFF[0]              # APPLICATION NOT FAILED YET  #
      THEN
        BEGIN 
  
        IF ACBERCNT[0] EQ MAXLGERR
        THEN                           # LOGICAL ERROR LIMIT REACHED   #
          REASON = RLG"IAL";
        ELSE                           # REASON CODE SPECIFIED BY PIP  #
          REASON = PWLRC[0];
  
        DEBUGINFO = PWLPARAM[0]; # SAVED DEBUG INFO SUPPLIED BY PIP    #
        PWLCC[0] = O"5555"; # INDICATE ERROR LOGICAL FROM PIP          #
        ACBERCNT[0] = ACBERCNT[0] + 1; # INCREMENT LOGICAL ERROR COUNT #
        P<AHEADER> = P<PWLHDR> + BLKHSIZE;  # REUSE PWL # 
        ABHWORD[0] = 0;      # CLEAR ABH WORD # 
        ABHABT[0] = APPCMD;  # BLOCK TYPE # 
        ABHACT[0] = CT60TRANS;  # CHARACTER TYPE #
        ABHTLC[0] = PWLBS[0] - BLKHSIZE - PWLHSIZE;  # SM TEXT LENGTH # 
  
        P<SUPMSG> = P<AHEADER> + ABHSIZE; 
        ERRWD[0] = 0; 
        PFCSFC[0] = ERRLGL;  # PFC/SFC FUNCTION CODE #
        ERRRLG[0] = REASON;  # REASON CODE FROM PIP # 
        SPMSG1[0] = DEBUGINFO;         # RESTORE DEBUG INFO FOR RBF    #
  
        BLINK(P<PWLHDR>,P<ACB>);
        OSCHAPP(P<ACB>); # SCHEDULE APPLICATION                        #
        END 
  
      GOTO RJMAIN;
      END 
TERM
