*DECK FINDAPL 
USETEXT COMCBEG 
USETEXT COMRAPL 
USETEXT COMRLRA 
USETEXT COMRQUE 
USETEXT COMRMEM 
PROC FINDAPL(RETURNCODE); 
# TITLE FINDAPL - FIND APPLICATION TABLE. # 
  
      BEGIN  # FINDAPL #
  
# 
**    FINDAPL - FIND APPLICATION TABLE. 
* 
*     THIS PROCEDURE SEARCHES THE APPLICATION TABLE HEADERS FOR AN
*     APPLICATION MATCHING ANAME. 
* 
*     PROC FINDAPL(RETURNCODE). 
* 
*     ENTRY   -  QU$ADDRESS IS BASED ARRAY CONTAINING NETON REQUEST.
* 
*     EXIT    -  RETURNCODE = 0 - APPLICATION FOUND 
*                             1 - APPLICATION DISABLED
*                             2 - NO APPL WITH ANAME FOUND
*                             3 - ALL ANAME TABLE SPACE USED
*                             4 - ANAME IS SERVER, BUT NONE STARTING
*                             5 - APPLICATION FOUND WITH MATCHING JOBID 
*                APL$HEADER - POINT TO APPLICATION HEADER IS ONE FOUND
* 
*     PROCESS    SEARCH APPLICATION TABLE HEADERS 
*                IF ANY HEADER HAS JOB ID MATCHING NETON REQUEST
*                THEN:  
*                  RETURN CODE 5. 
*                ELSE 
*                  IF NO MATCHING APPLICATION NAME FOUND
*                  THEN:  
*                   RETURN CODE 2.
*                  ELSE:  
*                    IF ANY MATCHING APPL NAME DISABLED 
*                      OR IDLE DOWN IN PROGRESS 
*                    THEN:  
*                      RETURN CODE 1. 
*                    ELSE:  
*                      IF AVAILABLE MATCHING ENTRY FOUND
*                      THEN:  
*                        RETURN CODE 0
*                        SET APL$HEADER FOR THIS ENTRY. 
*                      ELSE:  
*                        IF SERVER: 
*                        THEN:  
*                          RETURN CODE 4. 
*                        ELSE 
*                          RETURN CODE 3..... 
*                RETURN.
* 
* 
# 
  
      ITEM RETURNCODE I;             # FINDAPL RETURN CODE #
  
# 
*     PROC FINDAPL - XREF LIST BEGIN. 
# 
  
      XREF
        BEGIN 
        ITEM FAPLADR  I;             # FIRST APPLICATION TABLE ADDRESS #
        ITEM LAPLADR  I;             # LAST APPLICATION TABLE ADDRESS # 
        END 
  
# 
*     PROC FINDAPL - XREF LIST END. 
# 
  
  
      ITEM APLHDR    I;              # TERMPORARY CELL FOR APPL HDR ADR#
      ITEM SVR       B;              # SERVER APPLICATION FLAG #
      ITEM DISABLED  B;              # APPLICATION DISABLED FLAG #
  
CONTROL EJECT;
  
      SVR = FALSE;
      RETURNCODE = 2; 
      APLHDR = O"400000"; 
      DISABLED = FALSE; 
  
      P<APL$HEADER> = FAPLADR;
  
      ASLONGAS P<APL$HEADER> LE LAPLADR 
      DO
        BEGIN  # SEARCH APPLICATION HEADERS # 
  
        IF QU$JOBID EQ APL$JOBID
        THEN
          BEGIN  # UCP ALREADY NETTED ON #
  
          IF APL$EOJCON 
          THEN
            BEGIN  # END OF JOB CONNECT ESTABLISHED # 
            RETURNCODE = 0; 
            APLHDR = P<APL$HEADER>; 
            END 
  
          ELSE
            BEGIN  # NO END OF JOB CONNECT ESTABLISHED - ILLEGAL CALL # 
            RETURNCODE = 5; 
            EXIT APLSEARCH; 
            END 
  
          END 
  
        IF QU$ANAME EQ APL$NAME 
        THEN
          BEGIN  # MATCHING ANAME # 
  
          DISABLED = FALSE; 
          IF RETURNCODE EQ 2
          THEN
            BEGIN  # FIRST ANAME MATCH #
            RETURNCODE = 3; 
            END 
  
          IF APL$SVR AND RETURNCODE EQ 3
          THEN
            BEGIN  # SERVER APPLICATION # 
            SVR = TRUE; 
            RETURNCODE = 4; 
            END 
  
          IF (NOT APL$ENABLE OR IDLEDWN)
            AND RETURNCODE NE 0 
          THEN
            BEGIN  # ANAME DISABLED # 
            DISABLED = TRUE;
            RETURNCODE = 1; 
            END 
  
          IF ((APL$JOBORD EQ 0   AND   NOT SVR) 
            OR (APL$JOBORD NE 0  AND  (SVR OR APL$ASTART) 
                  AND APL$START)) 
            AND NOT DISABLED
            AND  RETURNCODE  NE  0
          THEN
            BEGIN  # AVAILABLE HEADER # 
            RETURNCODE = 0; 
            APLHDR = P<APL$HEADER>; 
            END 
  
          END 
  
        P<APL$HEADER> = P<APL$HEADER> + APL$LENGTH
          + APL$NUMCON * CON$LENGTH;
        END APLSEARCH:  
  
      P<APL$HEADER> = APLHDR; 
      RETURN; 
      END  # FINDAPL #
  
      TERM
