*DECK NETRR
USETEXT AIPDEF
USETEXT NP$MODE
USETEXT NP$DB
USETEXT NP$NWL
USETEXT NP$ONAM
USETEXT NP$STAT
USETEXT NP$ZHDR
PROC NETRR;
*IF DEF,IMS
#
*1DC NETRR
*
* 1. PROC NAME AUTHOR DATE
* NETRR NGUYEN, L.T. 88/04/12
*
* 2. FUNCTIONAL DESCRIPTION
* PROCESSES THE NETRR CALL FROM AN APPLICATION.
*
* 3. METHOD USED
* IF DEBUG DEFINED, LOG NETRR ENTRY IN ZZZZZDN FILE.
* SEND NETRR WORKLIST TO NIP.
*
* 4. ENTRY CONDITIONS
* NONE.
*
* 5. EXIT CONDITIONS
* NONE.
*
* 6. COMDECKS CALLED AND SYMPL TEXTS USED.
* AIPDEF NP$CRT
* NP$DB NP$DBA NP$MODE NP$NWL
*
* 7. PROCEDURES/FUNCTIONS CALLED
* NP$PIOE - PROCESS I/O ERROR ON DEBUG LOG FILE
* NP$RTIM - RETURNS CURRENT TIME FROM DEADSTART IN SECONDS
* AND MILLISECONDS
* NP$SEND - SEND WORKLIST TO NIP.
* NP$WRTO - WRITE ONE WORD TO FILE.
* NP$WRTW - WRITES WORDS TO FILE - NOS DATA TRANSFER MACRO
* NP$ERR - DAYFILE ERROR MESSAGE AND ABORT.
*
* 8. DAYFILE/DIAGNOSTIC MESSAGES
* NONE.
#
*ENDIF
#
AIP RESET
#
XREF
BEGIN
PROC NP$CLK ;
PROC NP$DATE ;
PROC NP$ERR ;
PROC NP$PIOE ;
PROC NP$RTIM ;
PROC NP$SEND ;
PROC NP$WRTO ;
PROC NP$WRTR ;
PROC NP$WRTW ;
END
ITEM TIMEWD U ;
*IF DEF,DEBUG
# DEBUG OPTION ARRAY DEFINITIONS #
ARRAY RSTLINE P(2); # LOGS NETRR ENTRY #
BEGIN
ITEM RST$TIM U(0,0,60); # TIME OF CALL TO NETRR #
ITEM RST$CAL U(1,24,AL); # NETRR CALLING ADDRESS #
ITEM RST$OPC I(1,54,6); # NETRR OPCODE (=12) #
END
*ENDIF
BEGIN # NETRR #
IF NOT ACCEPTED
THEN
NP$ERR("34") ;
*IF DEF,DEBUG
# FORMAT LOG ENTRY FOR NETRR CALL #
P<CALLADR> = LOC(NETRR) ; # GET CALL ADDRESS #
NP$RTIM(TIMEWD); # GET REAL TIME SINCE DEADSTART #
RST$TIM[0] = TIMEWD;
RST$CAL[0] = CALLADDR[0];
RST$OPC[0] = OP$RR ;
NP$WRTW(DB$FET,RSTLINE,2); # WRITE NETRR TO DEBUG LOG #
#
UPDATE MSGCNT IN NSUP COMMUNICATION WORD.
#
MSGCNT[0] = MSGCNT[0] + 1;
#
CHECK FOR I/O ERROR IN DEBUG LOG FILE
#
IF FET$AT[0] NQ 0
THEN # I/O ERROR HAS OCCURRED ON FILE#
BEGIN
NP$PIOE(DB$FET); # PROCESS I/O ERROR #
END
*ENDIF
#
RESET VARIABLES IN AIP
#
NEXT = NHDR + 1; # SET NWL COUNTER #
SPACE$LEFT=LWL; # SET NWL POINTER #
N$AWL[0] = 0; # CLEAR AWL RESPONSE INDICATORS#
#
RESET POINTERS FOR SUPERVISORY MESSAGE BUFFER - SMB
#
HEAD = FIRST; # FIRST IS START OF SMB #
FOOT = HEAD; # SMB IS EMPTY: NO MESSAGES #
NEXTSMLEN = 0; # NO SUPERVISORY MSGS IN NIP #
#
RESET POINTERS FOR AIP UPLINE DATA MESSAGE BUFFER - GMB
#
GMBHEAD = 1; # INITIAL INDX FOR FWA TO WRITE#
GMBFOOT = 1; # INITIAL INDX FOR LWA TO WRITE#
GMBUSE = FALSE; # INIT GMB NOT IN USE FLAG #
GMBTRUNC = FALSE; # INIT NO TRUNCATION OF DATA #
GMBLAST = 1; # INITIAL INDEX FOR END OF BUF #
GMBCN = 0; # INIT CON NUMBER FOR GMB #
GMBLN = 0; # INIT LIST NUMBER FOR GMB #
GMMESIZE = 0; # INIT FOR NO GMM ENTRY NEEDED #
#
SET UP NWL HEADER
#
HDR[NHDR] = LOC(HDR[NHDR]) + 1;#RETURN AWL AFTER CONTROL WDS#
HDR$P[NHDR] = PN ; # APPLICATION NUMBER #
HDR$N[NHDR] = 1; #ONLY 1 ENTRY, I.E. THE NETRR #
HDR$W[NHDR] = 1 + NONBSIZE;
#
FORMAT NETRR NWL ENTRY
#
NWL[NEXT] = 0 ; #CLEAR AND BUILD OP WORD #
NWL$OP[NEXT] = OP$RR;
NWL$ID[NEXT] = AWLID; #UNPROCESSED WORKLIST ID = AWLID (=11) #
NWL$BS[NEXT] = NRRBSIZE;
#
SEND NETRR NWL TO NIP
#
SENDGETMM = FALSE;
SENDGETSM = FALSE;
NP$SEND;
SENDGETMM = TRUE;
SENDGETSM = TRUE;
RETURN;
END #NETRR #
TERM