*DECK NETOFFR 
USETEXT COMCBEG 
USETEXT COMRAPL 
USETEXT COMRQUE 
USETEXT COMRSFC 
PROC NETOFFR; 
# TITLE NETOFFR - GIVE NETOFF REPLY TO UCP. # 
  
      BEGIN  # NETOFFR #
  
# 
**    NETOFFR - GIVE NETOFF REPLY TO UCP. 
* 
*     NETOFFR GIVES THE UCP A METOFF DAYFILE MESSAGE, COMPLETES THE 
*     NETOFF REQUEST AND TERMINATES ALL CONNECTIONS WITH THE UCP. 
* 
*     PROC NETOFFR. 
* 
*     ENTRY   -  QU$ADDRESS IS BASED ARRAY CONTAINING NETOFF REQUEST. 
*                QPL$HEADER IS BASED ARRAY FOR APPLICATION TABLE. 
* 
*     EXIT    -  NETOFF REPLY GIVEN.
*                NETOFF QUEUE ENTRY FREED.
*                ALL CONNECTIONS WITH UCP TERMINATED. 
* 
*     PROCESS -  SAVE UCP REPLY ADDRESS 
*                SAVE REQUEST-FROM-OPERATING-SYSTEM FLAG
*                BUILD NETOFF DAYFILE MESSAGE 
*                OBTAIN FREE QUEUE ENTRY
*                IF NETOFF REQUEST FROM OPERATING SYSTEM
*                THEN:  
*                  BUILD QUEUE ENTRY AS FOLLOWS:  
*                    SF.LIST
*                    SF.ENDT (UCPA = -1) TERMINATE ALL UCP CONNECTIONS. 
*                ELSE:  
*                  BUILD QUEUE ENTRY AS FOLLOWS:  
*                    SF.LIST
*                    SF.ENDT - SET NETOFF REQUEST COMPLETE
*                    SF.ENDT (UCPA = -1) TERMINATE ALL UCP CONNECTIONS
*                ISSUE SSF CALL 
*                RETURN 
* 
* 
****  PROC NETOFFR - XREF LIST BEGIN. 
# 
  
      XREF
        BEGIN 
        LABEL ACCNT2;                # HIGHER CHARGE ACCOUNTING LABEL#
        PROC FREE;                   # RELEASE QUEUE ENTRY #
        PROC GETFREE;                # OBTAIN FREE QUEUE ENTRY #
        PROC RHFMSGJ;                # ISSUE RHF DAYFILE MESSAGE #
        PROC SSFCALL;                # ISSUE SSF CALL # 
        END 
  
# 
****  PROC NETOFFR - XREF LIST END. 
# 
  
  
      ITEM UCPREQSTAT I;             # NETOFF FROM O.S. IF NON-ZERO # 
      ITEM REPLYADDR  I;             # NETOFF REPLY ADDRESS # 
  
      ARRAY MSGNETOFF [0:0] S(2); 
        BEGIN 
        ITEM MSGNFNAME  C(00,00,10) = ["NETOFF AS "]; 
        ITEM MSGNFAPPL  C(01,00,07);
        END 
  
CONTROL EJECT;
  
      UCPREQSTAT = QU$STAT; 
      REPLYADDR  = QU$UCPA; 
      FREE; 
  
      CONTROL IFEQ OS$NOS;
      IF UCPREQSTAT NE STATOVRIDE 
      THEN
        BEGIN 
  
      CONTROL ENDIF;
  
      MSGNFAPPL  = APL$NAME;
      RHFMSGJ(APL$JOBID,LOC(MSGNETOFF),17); 
  
      GETFREE;
      QU$TYPE   = QT$UCPSSFC;        # BUILD SSF CALL FOR NETOFF REPLY #
      QU$SFJOBID = APL$JOBID; 
      QU$WD1    = 0;
      QU$WD3    = 0;
      QU$WD4    = 0;
      QU$WD5    = 0;
  
      QU$SFFC1  = SF$LIST;           # SF.LIST REQUEST #
      QU$SFFP1   = 1;                # COUNT OF LIST ENTRIES #
      QU$SFSCPA1 = LOC(QU$SFFC2); 
  
      QU$SFFC2   = SF$ENDT;          # TERMINATE ALL CONNECTIONS #
      QU$SFUCPA2 = -1;
      QU$SFSCPA2 = LOC(ACCNT2); 
  
      IF UCPREQSTAT EQ 0
      THEN
        BEGIN  # NORMAL NETOFF #
        QU$WD4   = QU$WD3;           # MOVE TERM.-ALL-CONS TO 3RD PLACE#
  
        QU$SFFC2   = SF$ENDT;        # COMPLETE NETOFF REQUEST #
        QU$SFUCPA2 = REPLYADDR; 
        QU$SFSCPA2 = 0; 
  
        QU$SFFP1   = 2;              # MODIFY COUNT OF LIST ENTRIES # 
        END 
  
      SSFCALL;
  
      CONTROL IFEQ OS$NOS;
        END 
  
      CONTROL ENDIF;
  
      RETURN; 
      END  # NETOFFR #
  
      TERM
