*DECK UCPCOMP 
USETEXT COMCBEG 
USETEXT COMRAPL 
USETEXT COMRQUE 
USETEXT COMRSFC 
PROC UCPCOMP; 
# TITLE UCPCOMP - PERFORM UCP COMPLETE.  #
  
      BEGIN  # UCPCOMP #
  
# 
**    UCPCOM - PERFORM UCP COMPLETE.
* 
*     PERFORM UCP COMPLETE. 
* 
*     PROC UCPCOMP. 
* 
*     ENTRY   - APL$HEADER IS BASED ARRAY CONTAINING APPLICATION TABLE. 
*               QU$ADDRESS IS BASED ARRAY CONTAINING UCP COMPLETE.
* 
*     EXIT    - UCP COMPLETE PERFORMED. 
* 
*     PROCESS - INITIALIZE SPECIAL FUNCTION CALL AREA 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 UCPCOMP - XREF LIST BEGIN. 
# 
      XREF
        BEGIN 
        PROC SSFREQ;                 # MAKE SSF REQUEST # 
        PROC SWAPIN;                 # CREATE SWAP IN REQUEST # 
        PROC DEQUEUE;                # DEQUEUE #
        PROC FREE;                   # FREE QUEUE ENTRY # 
        PROC QUEUE;                  # QUEUE #
        PROC SSFERRP;                # SSF ERROR PROCESSOR #
        LABEL ACCNT1;                # ACCOUNT CHARGE ONE # 
        LABEL ACCNT2;                # ACCOUNT CHARGE TWO # 
        END 
  
# 
****  PROC UCPCOMP - XREF LIST END. 
# 
  
  
CONTROL EJECT;
  
      SFC$UCPA1 = 0;  # DO NOT SET COMPLETE.  REDUCE ACTIVITY COUNT. #
      IF QU$CHARGE EQ 0 
      THEN
        BEGIN  # BASIC CHARGE # 
        SFC$SCPA1 = LOC(ACCNT1);
        END 
  
      ELSE
        BEGIN  # AUXILLARY CHARGE 1 # 
        SFC$SCPA1 = LOC(ACCNT2);
        END 
  
      SFC$FC1 = SF$ENDT;
      SSFREQ; 
      IF SFC$RC1 EQ SFRC$SWAP 
      THEN
        BEGIN  # REQUEST JOB SWAPIN # 
        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 #
          SSFERRP(0); 
          FREE; 
          END 
  
        END 
  
      RETURN; 
      END  # UCPCOMP #
  
      TERM
