*DECK NCREGCP
USETEXT AHEADER
USETEXT NBT
USETEXT FREETAB
USETEXT NIPDEF
USETEXT PARAMS
USETEXT SUPMSG
USETEXT PT
PRGM NCREGCP;
# CREATE AND SEND SUPERVISORY MESSAGE REG/CP TO PIP #
STARTIMS;
#
*1DC NCREGCP
*
* 1. PROC NAME AUTHOR DATE
* NCREGCP E.T. WAN 81/05/26
* L.T.NGUYEN 81/09/30
*
* 2. FUNCTIONAL DESCRIPTION
* CREATE AND SEND SUPEVISORY MESSAGE REG/CP TO PIP
*
* 3. METHOD USED
* CALL MGETS TO GET BUFFER FOR REG/CP
* CREATE REG/CP SUPERVISORY MESSAGE, THE DATA BLOCK
* HEADER, AND THE APPLICATION HEADER.
* SEND REG/CP SM TO THE SPECIFIC COUPLER IF PARAMS1 IS NON-ZERO,
* OTHERWISE, TO ALL ACTIVE COUPLERS.
*
* 4. ENTRY PARAMETERS
* PARAMS1 COUPLER NODE
* FOR ALL ACTIVE COUPLERS, PARAMS1 IS ZERO.
* PARAMS2 NETWORK BLOCK HEADER ADDRESS
*
* 5. EXIT PARAMETERS
* PARAMS1 SET TO 1 IF NETWORK HEADER IS GARBLED.
*
* 6. COMDECKS CALLED
* AHEADER
* NBT
* NIPDEF
* PARAMS
* SUPMSG
*
* 7. ROUTINES AND OVERLAYS CALLED
* MGETS GET BUFFER SPACE
* NLOBCH LINK MESSAGE TO PIP OUTBOUND CHAIN
* MRELS RELEASE BUFFER
* XTRACE TRACE CALLS
*
* 8. DAYFILE MESSAGES
* NONE
*
* THIS PROGRAM IS A SECONDARY 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 SECONDARY
*CALL OSSIZE
*
* THIS OVERLAY IS CALLED BY HPNONSA,NPREGCP,NPREGST.
*
#
STOPIMS;
#
**** EXTERNAL ENTRY POINTS
#
XREF
BEGIN
PROC MGETS; # GET BUFFER SPACE #
PROC NLOBCH; # LINK MESSAGE TO PIP OUTBOUND CHAIN #
PROC MRELS ;
PROC XTRACE; # TRACE CALLS #
LABEL RJMAIN; # RETURN ADDRESS IN OVLCALL #
END
#
* LOCAL VARIABLES
#
ITEM BUFADR; # BUFFER ADDRESS #
ITEM RESPONSE; # RESPONSE INDICATOR #
ITEM ERROR; # ERROR INDICATOR #
ITEM HNODE; # COUPLER NODE NUMBER #
ITEM CNODE; # COUPLER NODE #
ITEM I; # LOOP CONTROL VARIABLE #
LABEL EXIT; # EXIT FROM PROGRAM #
#*********************************************************************#
BEGIN # NCREGCP #
CONTROL IFEQ DEBUG,1;
XTRACE("NCRCP") ;
CONTROL FI;
CNODE = PARAMS1; # COUPLER NODE #
RESPONSE = PARAMS2; # REG/CP RESPONSE INDICATOR #
FOR I = 0 STEP NBTFETNO UNTIL NBTMAXID
DO # SEND REG/CP(S) TO COUPLER(S) #
BEGIN
IF CNODE NQ 0
THEN # SEND REG/CP TO SPECIFIC COUPLER #
BEGIN
HNODE = CNODE; # NODE NUMBER OF COUPLER #
I = NBTMAXID; # SEND ONLY ONE REG/CP #
END
ELSE # SEND REG/CP TO ALL ACTIVE COUPLERS #
BEGIN
IF NBTIUF[I]
THEN # NBT IN USE, COUPLER IS ACTIVE #
HNODE = NBTHN[I];
ELSE # NBT NOT IN USE, CONTINUE SCAN #
TEST I; # SKIP FOLLOWING EXECUTABLE CODE #
END
# GET BUFFER FOR REG/CP #
MGETS(DBHSIZE+ABHSIZE+LREG,BUFADR,TRUE);
# FORMAT ABH FOR REG/CP #
P<AHEADER> = BUFADR+DBHSIZE;
ABHABT[0] = APPSUP;
ABHDN[0] = HNODE;
ABHSN[0] = HNODE;
ABHBT[0] = NETCMD;
ABHACT[0] = CT8ASCII;
ABHTLC[0] = NREGCP;
# FORMAT REG/CP SM TEXT #
P<SUPMSG> = BUFADR+DBHSIZE+ABHSIZE;
PFCSFC[0] = REGCP;
P<SMNIP> = P<SUPMSG>;
IF RESPONSE NQ 0
THEN # SEND REG/CP RESPONSE TO PIP #
REGR[0] = TRUE;
ELSE # SEND UNSOLICITED REG/CP TO INFORM NS/CS/BUFL #
BEGIN
IF PROCAN[NSORD] NQ 0
THEN # NS IS AVAILABLE IN THIS HOST #
REGN[0] = TRUE;
IF PROCAN[CSORD] NQ 0
THEN # CS IS AVAILABLE IN THIS HOST #
REGC[0] = TRUE;
REGB[0] = HRL; # RETURN HOST REGULATION LEVEL #
END
NLOBCH(BUFADR,ERROR); # SEND REG/CP TO PIP #
IF ERROR NQ 0
THEN # REG/CP CANNOT BE SENT #
MRELS(BUFADR); # RELEASE REG/CP BUFFER #
END # END I FOR LOOP #
EXIT:
GOTO RJMAIN; # RETURN TO CALLING PROGRAM #
END # NCREGCP #
TERM