*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 = 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 = BUFADR+DBHSIZE+ABHSIZE; PFCSFC[0] = REGCP; P = P; 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