*DECK IPPABOS USETEXT TEXTIPL PROC IPPABOS (SOCKID, SOCKSTATUS); *CALL COPYRITE CDCNET - COPYRIGHT CONTROL DATA. 1992. # TITLE IPPABOS - ABORT SOCKET # BEGIN # IPPABOS # # **** IPPABOS ABORT SOCKET * * THIS PROCEDURE CLOSES AN OPEN SOCKET. * * PROC IPPABOS * * ENTRY SOCKID = INTEGER VALUE OF SOCKET * * EXIT SOCKSTATUS = COMPLETION STATUS * * METHOD IF THE SOCKET IS NOT CONNECTED THEN RETURN WITH AN * APPROPRIATE STATUS INDICATION BASED ON THE CURRENT * STATE. ISSUE THE CON/END/R SM TO INITIATE THE SOCKET * CLOSING. THE SOCKSET STATE IS SET TO *CLOSING*. * THIS PROCEDURE MUST BE CALLED TO COMPLETE SOCKET * CLOSURE AND IS TO BE CALLED ANYTIME AN *ABORT* STATUS * HAS BEEN OBTAINED FROM AN IP CALL. # # **** PROC IPPABOS - XREF LIST # XREF BEGIN PROC NETPUT; # OUTPUT A MESSAGE TO THE NETWORK # PROC IPIDOSM; # DISPATCH OUTPUT SUPERVISORY MESSATE # END # ** # ITEM SOCKID I; # SOCKET IDENTIFIER # ITEM SOCKSTATUS S:SOCKSTAT; # RETURNED SOCKET STATUS # ITEM BUFPOS I; # CURRENT POSITION IN BUFFER # CONTROL EJECT; # **** START MAIN PROCEDURE # IF (NOT ACN$CONNECT [SOCKID]) THEN BEGIN SOCKSTATUS = S"INVALIDST"; RETURN; END P = LOC (SABH); # BASE ABH POINTER # ABHABN [0] = 0; # CLEAR APPL BLOCK NUMBER # P = LOC (OUTBUF); # BASE SUPERVISORY MESSAGE PTR # SPMSG0 [0] = 0; SPMSG1 [0] = 0; CONACN [0] = SOCKID; # STORE CONNECTION NUMBER # IPIDOSM (CONEND, LCONEN); # SEND CON/END/R SM # ACN$STATE [SOCKID] = S"CLOSING"; ACN$ABORT [SOCKID] = FALSE; ACN$CONNECT [SOCKID] = FALSE; SOCKSTATUS = S"OK"; RETURN; # RETURN TO CALLER # END # IPPABOS # TERM