*DECK CONREQR 
USETEXT COMCBEG 
USETEXT COMRAPL 
USETEXT COMRMEM 
USETEXT COMRNAM 
USETEXT COMRQUE 
PROC CONREQR; 
# TITLE - SEND CON/REQ/R TO APPLICATION. #
  
      BEGIN  # CONREQR #
  
# 
**    CONREQR - SEND CON/REQ/R TO APPLICATION.
* 
*     THIS PROCEDURE WILL GENERATE THE CON/REQ/R ASYNCHRONOUS 
*     SUPERCISORY MESSAGE AND CAUSE IT TO BE QUEUED FOR TRANSMITTAL 
*     TO THE APPLICATION. 
* 
*     PROC CONREQR. 
* 
*     ENTRY   -  QU$ADDRESS IS BASED ARRAY CONTAINING REMOTE CONNECTION 
*                  REQUEST OR LOCAL CONNECTION REQUEST (CON/ACRQ/R).
*                APL$HEADER IS BASED ARRAY CONTAING APPL. HEADER. 
*                CONNECTION IS BASED ARRAY CONTAING CONNECTION ENTRY. 
* 
*     EXIT    -  CON/REQ/R SUPERVISORY MESSAGE QUEUED FOR APPLICATION.
*                LOCAL OR REMOTE CONNECTION REQUEST QUEUED ON THE 
*                  DELAY QUEUE. 
* 
*     PROCESS - IF REMOTE CONNECTION REQUEST
*                THEN:  
*                  MOVE ANAME,PID AND ABN FROM REMOTE REQUEST TO
*                    PRE-FORMATTED CON/REQ/R MESSAGE
*                  QUEUE REMOTE REQUEST ENTRY ON DELAY Q. 
*                ELSE:  "LOCAL CONNECTION REQUEST"
*                  MOVE THIS APPLICATION NAME AND THIS MAINFRAME'S PID
*                    TO PRE-FORMATTED CON/REQ/R MESSAGE 
*                  QUEUE LOCAL REQUEST ENTRY ON DELAY Q.
*                OBTAIN FREE QUEUE ENTRY
*                MOVE PRE-FORMATTED HEADER TO QUEUE ENTRY 
*                MOVE PRE-FORMATTED CON/REQ/R MSG TO QUEUE ENTRY
*                INITIATE QUEUING OF CON/REQ/R MSG TO APPLICATION 
*                SET CON/REQ/R SENT BIT 
*                RETURN.
* 
* 
****  PROC CONREQR - XREF LIST BEGIN. 
# 
  
      XREF
        BEGIN 
        PROC GETFREE;                # OBTAIN QUEUE ENTRY # 
        PROC QUEUE;                  # ADD ENTRY TO QUEUE # 
        PROC SUPRPLY;                # INITIATE QUEUING OF SUP. MESSAG# 
        END 
  
# 
****  PROC CONREQR - XREF LIST END. 
# 
  
  
      ARRAY [0:0] S(3); 
        BEGIN  # PRE-FORMATTED CON/REQ/R MSG #
        ITEM $SUPWD1    U(00,00,60) = [0];
        ITEM $SUPPFCSFC U(00,00,16) = [$CONREQ];
        ITEM $SUPACN    U(00,24,12);
        ITEM $SUPDT     U(00,44,03) = [5];
        ITEM $SUPWD2    U(01,00,60) = [0];
        ITEM $SUPANAME  C(01,00,07);
        ITEM $SUPPID    C(01,42,03);
        ITEM $SUPWD3    U(02,00,60) = [0];
        ITEM $SUPABN    U(02,24,18);
        END 
  
CONTROL EJECT;
  
      IF QU$TYPE EQ QT$CONWAIT
      THEN
        BEGIN  # REMOTE CONNECTION REQUEST #
        $SUPANAME = QU$ANAME2;
        $SUPPID   = QU$REMPID;
        $SUPABN   = QU$REMABN;
        QUEUE(LOC(CON$DELAYQ)); 
        END 
  
      ELSE
        BEGIN  # LOCAL CONNECTION REQUEST # 
        $SUPANAME = APL$NAME; 
        $SUPPID   = THISPID;
        $SUPABN   = QU$HDRABN;
        QUEUE(LOC(CON$DELAYQ)); 
        END 
  
      $SUPTLC  = 3;                  # NUMBER OF WORDS IN CONREQR MSG # 
      GETFREE;
      QU$BLKHDR = $SUPHDR;
      $SUPACN   = (P<CONNECTION> - P<APL$HEADER> - APL$LENGTH)
                     / CON$LENGTH  + APL$MINACN ; 
      QU$SUPWD1 = $SUPWD1;
      QU$SUPWD2 = $SUPWD2;
      QU$SUPWD3 = $SUPWD3;
      SUPRPLY;
      CON$REQ$R = TRUE;              # FLAG CON/REQ/R SENT #
      RETURN; 
      END  # CONREQR #
  
      TERM
