*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