*DECK NSUPR 
USETEXT COMCBEG 
USETEXT COMRAPL 
USETEXT COMRQUE 
USETEXT COMRSFC 
PROC NSUPR; 
# TITLE NSUPR - PERFORM NSUP REPLY.  #
  
      BEGIN  # NSUPR #
  
# 
**    NSUPR   - PERFORM NSUP REPLY. 
* 
*     PERFORM NSUP REPLY. 
* 
*     PROC NSUPR. 
* 
*     ENTRY   - APL$HEADER IS BASED ARRAY CONTAINING APPLICATION TABLE. 
*               QU$ADDRESS IS BASED ARRAY CONTAINING UCP NSUP REPLY.
* 
*     EXIT    - NSUP PERFORMED. 
* 
*     PROCESS - CALL TO GENERATE NSUP WORD. 
*               INITIALIZE SPECIAL FUNCTION CALL AREA TO WRITE NSUP 
*               AND TO END UCP REQUEST. 
*               MAKE SSF REQUEST. 
*               IF RETURN CODE IS SWAPPED 
*               THEN: 
*                 CALL SWAPIN TO REQUEST SWAP IN. 
*               ELSE: 
*                 DEQUEUE UCP REQUEST.
*                 IF RETURN CODE IS ZERO
*                 THEN: 
*                   FREE QUEUE ENTRY. 
*                 ELSE: 
*                   CALL SSF ERROR PROCESSOR. 
*                   FREE QUEUE ENTRY. 
*               RETURN. 
# 
  
# 
****  PROC NSUPR - XREF LIST BEGIN. 
# 
      XREF
        BEGIN 
        PROC GENNSUP;                # GENERATE NSUP WORD # 
        PROC SSFREQ;                 # MAKE SSF REQUEST # 
        PROC SWAPIN;                 # CREATE SWAPIN REQUEST #
        PROC DEQUEUE;                # DEQUEUE #
        PROC FREE;                   # FREE QUEUE ENTRY # 
        PROC SSFERRP;                # SSF ERROR PROCESSOR #
        LABEL ACCNT1;                # ACCOUNT CHARGE ONE # 
        LABEL ACCNT2;                # ACCOUNT CHARGE TWO # 
        END 
  
# 
****  PROC NSUPR - XREF LIST END. 
# 
  
  
CONTROL EJECT;
  
      GENNSUP;
      SFC$RC1 = 0;
      SFC$RC2 = 0;
      SFC$RC3 = 0;
      SFC$FP1 = 2;
      SFC$SCPA1 = LOC(SFC$FC2); 
      SFC$FC1 = SF$LIST;
      SFC$FP2 = 1;
      SFC$UCPA2 = APL$NSUP; 
      SFC$SCPA2 = LOC(NSUP$WD); 
      SFC$FC2 = SF$WRIT;
      SFC$UCPA3 = QU$UCPA;
      IF QU$CHARGE EQ 0 
      THEN
        BEGIN  # BASIC CHARGE # 
        SFC$SCPA3 = LOC(ACCNT1);
        END 
  
      ELSE
        BEGIN  # AUXILLARY CHARGE 1 # 
        SFC$SCPA3 = LOC(ACCNT2);
        END 
  
      SFC$FC3 = SF$ENDT;
      SSFREQ; 
      IF SFC$RC1 EQ SFRC$SWAP 
        OR SFC$RC2 EQ SFRC$SWAP 
        OR SFC$RC3 EQ SFRC$SWAP 
      THEN
        BEGIN  # REQUEST JOB SWAP IN #
        SWAPIN; 
        END 
  
      ELSE
        BEGIN  # JOB NOT SWAPPED #
        DEQUEUE(LOC(APL$UCPQ)); 
        IF SFC$RC1 EQ 0 
        THEN
          BEGIN  # SUCCESSFUL COMPLETION #
          FREE; 
          END 
  
        ELSE
          BEGIN  # JOB UNKNOWN OR LIST ERROR #
          SSFERRP(QU$UCPA); 
          FREE; 
          END 
  
        END 
  
      RETURN; 
      END  # NSUPR #
  
      TERM
