*DECK ACRQA 
USETEXT COMCBEG 
USETEXT COMRAPL 
USETEXT COMRNAM 
USETEXT COMRQUE 
USETEXT COMRRTN 
PROC ACRQA((ACRQREPLY));
# TITLE ACRQA - INITIATE CON/ACRQ/A SUPERVISORY REPLY # 
  
      BEGIN  # ACRQA #
  
# 
**    ACRQA - INITIATE CON/ACRQ/A SUPERVISORY REPLY.
* 
*     ACRQA QUEUES A CON/ACRQ/A FOR THE APPLICATION, AND SENDS DAYFILE
*     MESSAGES SHOWING THE APPLICATION AND REJECT CODE DETAILS. 
* 
*     PROC ACRQA(ACRQREPLY).
* 
*     ENTRY   -  QV$ADDRESS IS BASED ARRAY CONTAINING CON/ACRQ/R. 
*                APL$HEADER IS BASED ARRAY CONTAINING APPL HEADER.
*                ACRQREPLY  IS CON/ACRQ/R REPLY CODE (BITS 11-4)
*                               AND LOCAL REPLY CODE (BITS 3-0).
* 
*     EXIT    -  CON/ACRQ/A QUEUED FOR APPLICATION. 
*                DAYFILE MESSAGE GIVING REJECT CAUSE SENT TO
*                  RHF DAYFILE. 
* 
*     PROCESS -  FILL IN APPROPRIATE FIELDS OF REJECT MESSAGE.
*                SEND MESSAGES TO RHF DAYFILE 
*                CHANGE SUPERVISORY MSG FROM CON/ACRQ/R TO CON/ACRQ/A 
*                ADD REPLY CODE TO MESSAGE
*                INITIATE SUPERVISORY REPLY 
*                RETURN 
# 
  
      ITEM ACRQREPLY I;              # CON/ACRQ/R REPLY CODE #
  
# 
****  PROC ACRQA - XREF LIST BEGIN. 
# 
  
      XREF
        BEGIN 
        FUNC BINTODD C(10);          # CONVERT TO DECIMAL DISPLAY CODE #
        PROC SUPRPLY;                # INITIATE SUPERVISORY REPLY # 
        PROC RHFMSGJ;                # ISSUE RHF DAYFILE MESSAGE #
        END 
  
# 
****  PROC ACRQA - XREF LIST END. 
# 
  
  
      ARRAY [0:0] S(1); 
        BEGIN 
        ITEM ACRQR$RPLY U(00,48,12);  # ACRQREPLY PARAMETER # 
        ITEM ACRQR$RC   U(00,48,08);  # CON/ACRQ/R REPLY CODE # 
        ITEM ACRQR$RC1  U(00,48,04);  # RC 1 #
        ITEM ACRQR$RC2  U(00,52,04);  # RC 2 #
        ITEM ACRQR$LOC  U(00,56,04);  # LOCAL REPLY CODE #
        END 
  
      DEF CNVTLIM    #10#;           # UPPER RC CONVERSION LIMIT  # 
  
      ARRAY SUBSYS$RC [0:15] S(1);
        BEGIN  # TABLE OF RC2 VALUES FOR CON/ACRQ/A SUPERVISORY MSGS #
        ITEM  CNVT$RC0 I(00,12,12) =
                    [2,4,5,1,2,3,6,1,6,2,5,2,2,2,2,2];  #  0-15 # 
        ITEM  CNVT$RC1 I(00,24,12) =
                    [4,4,3,3,3,3,3,4,4,4,2,2,2,2,4,6];  # 16-31 # 
        ITEM  CNVT$RC2 I(00,36,12) =
                    [6,6,5,5,5,5,5,6,6,6,2,2,2,2,6,6];  # 32-47 # 
        ITEM  CNVT$RC3 I(00,48,12) =
                    [2,2,1,1,1,1,1,1,2,2,2,2,2,2,2,2];  # 48-63 # 
        END    # CONVERSION TABLE  #
  
      ARRAY MSG$CONREJ [0:0] S(5);
        BEGIN 
        ITEM MSGCR      C(00,00,43) = 
                    ["CONNECT TO XXXXXXX LID=XXX PID=XXX REJECTED"];
        ITEM MSGCRAPPL  C(01,06,07);
        ITEM MSGCRLID   C(02,18,03);
        ITEM MSGCRPID   C(03,06,03);
        END 
  
      ARRAY MSG$DETAIL [0:10] S(5); 
        BEGIN  # TEXT FOR REMOTE REJECT MESSAGES, CODES 0 - 15 #
        ITEM MSGDATA    C(00,00,40) = 
                    ["(REMOTE REJECT MESSAGE)", 
                     "REQUESTED APPLICATION NOT AVAILABLE", 
                     "RHF SHUTDOWN IN PROGRESS",
                     "NO NEW CONNECT REQUESTS--MAX REACHED",
                     "LID/PID/NAD UNAVAILABLE AT DESTINATION",
                     "NAD RESOURCE LIMIT REACHED",
                     "DESTINATION DOES NOT RESPOND",
                     "LID NOT DEFINED AT SOURCE", 
                     "REMOTE RHF SHUTDOWN IN PROGRESS", 
                     "SUBSYSTEM PASSWORD REMOTE REJECT",
                     "LID/PID/NAD DISABLED AT SOURCE"]; 
        ITEM MSGDATA$T1 C(00,00,21);  # REM REJ MSG TEXT 1 #
        ITEM MSGDATA$T2 C(02,06,19);  # REM REJ MSG TEXT 2 #
        ITEM MSGCHARCNT I(04,00,60) = [40,35,24,36,38,26,28,25, 
                                       31,32,30]; 
        END 
  
      ARRAY [0:15] S(4);
        BEGIN  # TEXT FOR REMOTE REJECT MESSAGES, CODES 16 - 63 # 
        ITEM REJMSG$TX1 C(00,00,21) = 
                    ["SERVER APPLICATION",
                     "SERVER LID",
                     "INITIATOR APPLICATION", 
                     "INITIATOR PID", 
                     "PASSWORD",
                     "INITIATOR NAD", 
                     "ACCESS CODE", 
                     "DESTINATION DEVICE",
                     "TCU", 
                     "SERVER NAD",
                     "UNKNOWN REASON CODE", 
                     "UNKNOWN REASON CODE", 
                     "UNKNOWN REASON CODE", 
                     "UNKNOWN REASON CODE", 
                     "RHF SUBSYSTEM", 
                     "SHUTDOWN IN PROGRESS"]; 
        ITEM REJMSG$VT2 I(02,24,12) =   # ADDITIONAL TEXT FLAGS # 
                    [ 3, 3, 3, 3, 3, 3, 3, 3, 
                      3, 3,-1,-1,-1,-1, 2, 2 ]; 
        END 
  
      ITEM REJMSG$OTH C(21) = "CONNECT REJECTED BY R";
  
      ARRAY [0:6] S(2); 
        BEGIN  # ADDITIONAL TEXT FOR REMOTE REJECT MESSAGES # 
        ITEM REJMSG$TX2 C(00,00,18) = 
                    ["                  ",
                     " UNAVAILABLE      ",
                     " DISABLED         ",
                     " INVALID          ",
                     "EMOTE RHF         ",
                     "EMOTE APPLICATION ",
                     "EMOTE INSTALLATION"]; 
        END 
  
      ARRAY MSG$REJCOD [0:0] S(4);
        BEGIN  # CONNECTION REJECT CODE # 
        ITEM MSG$REJC$T C(00,00,40) = 
                       ["APPLICATION CONNECTION REJECT CODE = 000"];
        ITEM MSG$REJC$C C(03,42,03);
        END 
  
CONTROL EJECT;
  
      MSGCRAPPL  = QU$APLNAME;
      MSGCRLID   = "   "; 
      MSGCRPID   = "   "; 
  
      IF QU$LIDI NE 0 
      THEN
        BEGIN  # LID DEFINED #
        MSGCRLID   = QU$LID;
        END 
  
      IF QU$PIDI NE 0 
      THEN
        BEGIN  # PID DEFINED #
        MSGCRPID   = QU$PID;
        END 
  
      RHFMSGJ(APL$JOBID,LOC(MSG$CONREJ),43);
  
      ACRQR$RPLY = ACRQREPLY; 
  
      IF ACRQR$LOC EQ 0  # IF NOT LOCAL OR OLD REPLY CODE # 
      THEN
        BEGIN 
        MSGDATA$T1[0] = REJMSG$TX1[10];  # "UNKNOWN REPLY CODE" # 
        MSGDATA$T2[0] = REJMSG$TX2[0];  # CLEAR ADDITIONAL TEXT # 
        IF ACRQR$RPLY NE 0               # IF REPLY CODE NON-ZERO # 
        THEN
          BEGIN 
          IF ACRQR$RC1 LT 4  # REPLY CODES 16-63 #
          THEN
            BEGIN 
            MSGDATA$T1[0] = REJMSG$TX1[ACRQR$RC2];  # SET MAIN TEXT # 
            IF ACRQR$RC1 LE REJMSG$VT2[ACRQR$RC1]   # IF MORE TEXT #
            THEN
              BEGIN 
              MSGDATA$T2[0] = REJMSG$TX2[ACRQR$RC1];  # ADD TEXT #
              END 
            END 
  
          ELSE                     # REPLY CODES > 63 # 
            BEGIN 
            MSGDATA$T1[0] = REJMSG$OTH;  # "CONNECT REJECTED BY" #
            IF ACRQR$RC1 LT 8  # REPLY CODES 64 - 127 # 
            THEN
              BEGIN 
              MSGDATA$T2[0] = REJMSG$TX2[4];  # "REMOTE RHF" #
              END 
  
            ELSE
              BEGIN 
              IF ACRQR$RC1 LT 14  # REPLY CODES 128 - 223 # 
              THEN
                BEGIN 
                MSGDATA$T2[0] = REJMSG$TX2[5];  # "REMOTE APPL" # 
                END 
  
              ELSE  # REPLY CODES 224 - 255 # 
                BEGIN 
                MSGDATA$T2[0] = REJMSG$TX2[6];  # "REMOTE INST" # 
                END 
              END 
            END 
          END 
        END 
  
      RHFMSGJ(APL$JOBID,LOC(MSGDATA[ACRQR$LOC]),MSGCHARCNT[ACRQR$LOC]); 
  
      IF ACRQR$LOC EQ 0 
        OR ACRQR$RC NE 0
      THEN
        BEGIN 
        MSG$REJC$C = BINTODD(ACRQR$RC,3);  # CONVERT REPLY CODE # 
        RHFMSGJ(APL$JOBID,LOC(MSG$REJCOD),40);
        END 
  
  
      QU$ACRQABN = QU$HDRABN; 
      QU$PFCSFC = $CONACRA; 
      QU$RC = 2;                   # SET DEFAULT APPLICATION REPLY #
      IF ACRQR$LOC NE 0 
      THEN
        BEGIN 
        QU$RC = CNVT$RC0[ACRQR$LOC];
        END 
  
      ELSE
        BEGIN 
        IF ACRQR$RC1 EQ 0 
        THEN
          BEGIN 
          QU$RC = CNVT$RC0[ACRQR$RC2];
          END 
  
        ELSE
          BEGIN 
          IF ACRQR$RC1 EQ 1 
          THEN
            BEGIN 
            QU$RC = CNVT$RC1[ACRQR$RC2];
            END 
  
          ELSE
            BEGIN 
            IF ACRQR$RC1 EQ 2 
            THEN
              BEGIN 
              QU$RC = CNVT$RC2[ACRQR$RC2];
              END 
  
            ELSE
              BEGIN 
              IF ACRQR$RC1 EQ 3 
              THEN
                BEGIN 
                QU$RC = CNVT$RC3[ACRQR$RC2];
                END 
              END 
            END 
          END 
        END 
  
      $SUPTLC = 3;
      QU$BLKHDR = $SUPHDR;
  
      SUPRPLY;
      RETURN; 
      END  # ACRQA #
  
      TERM
