*DECK NOAPLAD 
USETEXT COMCBEG 
USETEXT COMRAPL 
USETEXT COMRQUE 
USETEXT COMRRTN 
USETEXT COMRSFC 
USETEXT COMRUNK 
PROC NOAPLAD; 
# TITLE NOAPLAD - PROCESS UCP REQUEST WITH NO APPL. TABLE ADDRESS. #
  
      BEGIN  # NOAPPLAD # 
# 
**    NOAPLAD - PROCESS UCP REQUEST WITH NO APPL. TABLE ADDRESS.
* 
*     PROCESSES UCP REQUESTS THAT DO NOT HAVE AN APPLICATION TABLE
*     SPECIFIED.
* 
*     PROC NOAPLAD. 
* 
*     ENTRY    - QU$ADDRESS IS BASED ARRAY CONTAINING UCP REQUEST.
* 
*     EXIT    -  UCP REQUEST PROCESSED. 
* 
*     PROCESS -  FOR EACH APPLICATION TABLE HEADER: 
*                  IF JOBID IN REQUEST MATCHES APPLICATION JOB ID 
*                  THEN:  "APPLICATION TABLE FOUND" 
*                    IF REQUEST IS VALID
*                    THEN:  
*                      SET HIGHER CHARGE
*                      DEPENDING ON WHICH CASE: 
*                        REQUEST IS NETOFF: 
*                          QUEUE ON NETOFF AUEUE. 
*                        REQUEST IS NETWAIT:  
*                          QUEUE ON NETWAIT QUEUE.
*                        REQUEST IS NETGET: 
*                          INITIATE NETGET PROCESSING.
*                        REQUEST IS NETGETL:  
*                          INITIATE NETGETL PROCESSING. 
*                        REQUEST IS NETPUT: 
*                          INITIATE NETPUT PROCESSING.
*                        REQUEST IS NETXFR: 
*                          INITIATE NETXFR PROCESSING.
*                      IF THE "NO APPL TABLE ADDR" MESSAGE HAS NOT
*                        BEEN PREVIOUSLY DISPLAYED
*                        AND THIS IS NOT AN OPERATING SYSTEM REQUEST
*                      THEN:  
*                        ISSUE "NO APPL TABLE ADDR" MESSAGE 
*                        SET BIT INDICATING MESSAGE HAS BEEN DISPLAYED. 
*                    ELSE:  "REQUEST INVALID" 
*                      FREE REQUEST ENTRY 
*                      ISSUE RHF CALL ERROR MESSAGE 
*                      ABORT UCP. 
*                IF NO MATCHING APPLICATION TABLE FOUND 
*                THEN:  
*                  FREE REQUEST ENTRY 
*                  ISSUE "NO NETON PERFORMED" MESSAGE 
*                  ABORT UCP. 
*                RETURN 
* 
* 
****  PROC NOAPLAD - XREF LIST BEGIN. 
# 
      XREF
        BEGIN 
        ITEM FAPLADR  I;             # FIRST APPLICATION TABLE ADDRESS #
        PROC  FREE;                  # OBTAIN FREE QUEUE ENTRY #
        ITEM LAPLADR  I;             # LAST APPLICATION TABLE ADDRESS # 
        PROC  NETGET;                # PROCESS NETGET # 
        PROC  NETGETL;               # PROCESS NETGETL #
        PROC  NETPUT;                # PROCESS NETPUT # 
        PROC  NETXFR;                # PROCESS NETXFR # 
        PROC  QUEUE;                 # ADD ENTRY TO QUEUE # 
        LABEL ACCNT2; 
        PROC CALLSYS;                # MAKE RA + 1 CALL # 
        PROC  UCPMSG;                # DAYFILE MSG TO UCP # 
        END 
  
# 
****  PROC NOAPLAD - XREF LIST END. 
# 
  
  
      ITEM APPLFOUND B;              # FLAG FOR MATCHING APPL FOUND # 
      ITEM JOBID     I;              # TEMP CELL - UCP JOBID FOR UCPMSG#
      ITEM UCPA      I;              # TEMP CELL - UCPA FOR UCPMSG #
      ITEM UCPREQSTAT I;             # UCP STAT FIELD # 
  
      SWITCH REQUEST
             NETOFFNC,               # LABEL FOR NETOFF FUNCTION #
             NETWAITFNC,             # LABEL FOR NETWAIT FUNCTION # 
             NETGETFNC,              # LABEL FOR NETGET FUNCTION #
             NETGETLFNC,             # LABEL FOR NETCETL FUNCTION # 
             NETPUTFNC,              # LABEL FOR NETPUT FUNCTION #
             NETXFRFNC,              # LABEL FOR NETXFR FUNCTION #
             ;
  
CONTROL EJECT;
  
      UCPREQSTAT = QU$STAT; 
      APPLFOUND = FALSE;
      P<APL$HEADER> = FAPLADR;
  
      ASLONGAS P<APL$HEADER> LE LAPLADR AND NOT APPLFOUND 
      DO
        BEGIN  # FIND MATCHING JOB ID # 
  
        IF QU$JOBID EQ APL$JOBID
        THEN
          BEGIN  # MATCHING ID FOUND #
          APPLFOUND = TRUE; 
  
          IF    QU$STAT NE 0
            OR (QU$WC GE 1
            AND QU$WC LE 2
            AND APL$NETON 
            AND NOT APL$NETOFF
            AND NOT APL$EOJCON
            AND QU$FUNCT GE UCP$FIRST 
            AND QU$FUNCT LE UCP$LAST) 
          THEN
            BEGIN  # REQUEST VALID #
            QU$APLADR = P<APL$HEADER>;
            QU$CHARGE = 1;           # LEVY HIGHER CHARGE # 
  
# 
*     USE SIMULATED CASE STATEMENT TO PUT REQUEST ON CORRECT QUEUE. 
# 
            GOTO REQUEST[QU$FUNCT-2]; 
  
NETOFFNC:                            # NETOFF FUNCTION #
            QUEUE(LOC(NETOFFQ));
            GOTO ENDCASE; 
  
NETWAITFNC:                          # NETWAIT FUNCTION # 
            QUEUE(LOC(NETWAITQ)); 
            GOTO ENDCASE; 
  
NETGETFNC:                           # NETGET FUNCTION #
            NETGET; 
            GOTO ENDCASE; 
  
NETGETLFNC:                          # NETCETL FUNCTION # 
            NETGETL;
            GOTO ENDCASE; 
  
NETPUTFNC:                           # NETPUT FUNCTION #
            NETPUT; 
            GOTO ENDCASE; 
  
NETXFRFNC:                           # NETXFR FUNCTION #
            NETXFR; 
            GOTO ENDCASE; 
  
ENDCASE:  
  
# 
*     END OF SIMULATED CASE STATEMENT.
# 
  
            IF NOT APL$MSGDIS AND UCPREQSTAT EQ 0 
            THEN
              BEGIN  # ISSUE NO ADDR SPECIFIED MSG #
              APL$MSGDIS = TRUE;
              UCPMSG(APL$JOBID,LOC(MSGNOAPPL),48,INFORM$);
              END 
  
            END 
  
          ELSE
            BEGIN  # REQUEST INVALID #
            UCPA = QU$UCPA; 
            FREE; 
            UCPMSG(APL$JOBID,LOC(MSGCALLERR),31,REPLY$ABT,UCPA);
            END 
  
          END 
  
        P<APL$HEADER> = P<APL$HEADER> + APL$LENGTH +
                        APL$NUMCON * CON$LENGTH;
        END 
  
      IF NOT APPLFOUND
      THEN
        BEGIN  # NO MATCHING APPLICATION #
        JOBID = QU$JOBID; 
        UCPA = QU$UCPA; 
        FREE; 
        CONTROL IFEQ OS$NOS;
        IF UCPREQSTAT EQ 0
        THEN
          BEGIN 
          UCPMSG(JOBID,LOC(MSGNONETON),28,REPLY$ABT,UCPA);
          END 
  
        SFC$WD1 = 0;
        SFC$UCPA1 = -1; 
        SFC$SCPA1 = LOC(ACCNT2);
        SFC$FC1 = SF$ENDT;
        SFC$JOBID = JOBID;
        SSFRCL = TRUE;
        SSFADDR = LOC(SFC$WD1); 
        CALLSYS(SSF$CALL);
        CONTROL ENDIF;
  
        CONTROL IFEQ OS$NOSBE;
        UCPMSG(JOBID,LOC(MSGNONETON),28,REPLY$ABT,UCPA);
        CONTROL ENDIF;
        END 
  
      RETURN; 
      END  # NOAPLAD #
  
      TERM
  
