COMUQQC 
COMMON
  
#     COMUQQC - *QGET*/*DROP* COMMON DATA.                            # 
                                               CONTROL NOLIST;
                                              CONTROL IFEQ LISTCON,1; 
                                               CONTROL LIST;
                                               CONTROL FI;
                                               CONTROL PRESET;
      BEGIN  # COMUQQC #
  
# 
***   COMUQQC - *QGET*/*DROP* COMMON DATA.
* 
*         COPYRIGHT CONTROL DATA SYSTEMS INC.  1992.
* 
*     *COMUQQC* CONTAINS THE COMMON STORAGE FOR THE *QAC* PARAMETER 
*     BLOCK AND OTHER DATA USED TO PROCESS THE *QGET* AND *DROP*
*     COMMANDS. 
# 
  
# 
*     MISCELLANEOUS DEFINITIONS.
* 
*     NOTE - THE REPLY BUFFER LENGTH (*REPLEN*) MUST BE DEFINED AS A
*            MULTIPLE OF THE ENTRY LENGTH (*QACRETL*).
# 
  
      DEF AJLC       #40#;           # ABORT JOB MESSAGE MAX LENGTH # 
      DEF ALLQUEUES  #O"7777"#;      # ALL QUEUES # 
      DEF BADSTP     #O"23"#;        # BAD STEP CODE #
      DEF COUNT$END  #4#;            # QUEUE LOOP COUNT # 
      DEF DCNUM      #5#;            # NUMBER OF *DC* VALUES #
      DEF DC$ALL     #"ALL"#;        # ALL DISPOSITION CODES #
      DEF DC$EX      #"EX"#;         # EXECUTE DISPOSITION CODE # 
      DEF DC$IN      #"IN"#;         # INPUT DISPOSITION CODE # 
      DEF DC$PL      #"PL"#;         # PLOT DISPOSITION CODE #
      DEF DC$PR      #"PR"#;         # PRINT DISPOSITION CODE # 
      DEF DC$PU      #"PU"#;         # PUNCH DISPOSITION CODE # 
      DEF DC$SC      #"SC"#;         # *DSP* CODE TO MAKE FILE LOCAL #
      DEF DC$TT      #"TT"#;         # WAIT DISPOSITION CODE #
      DEF DC$WT      #"WT"#;         # WAIT DISPOSITION CODE #
      DEF DQ$YES     #"YES"#;        # DEQUEUE=YES #
      DEF DQ$NO      #"NO"#;         # DEQUEUE=NO # 
      DEF DSPBLKL    #7#;            # *DSP* PARAMETER BLOCK LENGTH # 
      DEF DUPLFN     #8#;            # DUPLICATE LOCAL FILE NAME #
      DEF ENDDC      #5#;            # LAST ITEM IN *DCITEM* #
      DEF INVNM      #10#;           # INVALID LOCAL FILE NAME #
      DEF MAXCNT     #O"7777"#;      # MAXIMUM QUEUE COUNT #
      DEF NOTFND     #7#;            # ENTRY NOT FOUND #
      DEF OPTION     #0#;            # *XARG* OPTION #
      DEF PARML      #17#;           # *QAC* PARAMETER BLOCK LENGTH # 
      DEF PARMNOPREL #12#;           # LENGTH - PREFIX LENGTH # 
      DEF PREFIXL    #5#;            # *QAC* BLOCK PREFIX LENGTH #
      DEF PRULIMIT   #29#;           # PRU LIMIT ON ATTACH OF FILE #
      DEF QACRETL    #2#;            # *QAC* REPLY ENTRY LENGTH # 
      DEF QAC$END    #5#;            # *QAC* END OF QUEUE BITS #
      DEF QAC$QBITS  #0#;            # *QAC* START OF QUEUE BITS #
      DEF QBIT (I)   #B<12-I-1,1>QAC$W8Q[0]#;  # QUEUE BIT ACCESS # 
      DEF QCOUNT (I) #B<I*12,12>QAC$COUNT[0]#;  # QUEUE COUNT ACCESS #
      DEF REPLEN     #50#;           # REPLY BUFFER LENGTH #
      DEF SELPARL    #12#;           # SELECTION BLOCK LENGTH # 
      DEF SYNTAXOK   #0#;            # SYNTAX OK #
      DEF TTBIT      #5#;            # *TT* BIT # 
  
# 
*     *QAC* FUNCTION AND PARAMETER BLOCK LENGTHS. 
# 
  
      DEF ALTER      #1#;            # *QAC* ALTER CODE # 
      DEF ALTERL     #12#;           # *QAC* ALTER BLOCK LENGTH # 
      DEF GET        #2#;            # *QAC* GET CODE # 
      DEF GETL       #11#;           # *QAC* GET BLOCK LENGTH # 
      DEF PEEK       #3#;            # *QAC* PEEK CODE #
      DEF PEEKL      #11#;           # *QAC* PEEK BLOCK LENGTH #
  
# 
*     DISPOSITION CODES TABLE.
* 
*     THIS IS A TABLE USED TO MAP A 2 CHARACTER *DC* PARAMETER INTO 
*     *QBIT* AND *QCOUNT*.
# 
  
      ARRAY DCITEM [0:DCNUM] S(1);
        BEGIN 
        ITEM DCITEM$FUL C(00,00,02) =  # 2 CHARACTER VALUES # 
          ["IN","EX","PR","PU","PL","TT"];
        ITEM DCITEM$Q    U(00,12,03) =  # OFFSET #
          [0,1,2,3,4,5];
        END 
  
# 
*     SCRATCH BUFFER SPACE. 
# 
  
      BASED ARRAY DUMAR [0:0] P(1);;
  
# 
*     *QAC* FUNCTION LIST.
# 
  
      STATUS FCN
        PEEK,                        # *PEEK* FUNCTION #
        ALTER,                       # *ALTER* FUNCTION # 
        GET;                         # *GET* FUNCTION # 
  
      COMMON UQQCCOM; 
        BEGIN  # UQQCCOM #
  
        ITEM MSGLINE    C(80);       # DAYFILE MESSAGE LINE # 
        ITEM USRLINE    C(AJLC);     # USER DROP MESSAGE LINE # 
  
# 
*     NEXT JSN. 
# 
  
        ARRAY NEXTJSNA [0:0] S(1);
          BEGIN 
          ITEM NEXTJSN    C(00,00,04);  # NEXT JSN #
          ITEM NEXTJSNI   U(00,00,60);  # INTEGER FORMAT #
          END 
  
# 
*     HOLD NEXT UJN.
# 
  
        ARRAY NEXTUJNA [0:0] S(1);
          BEGIN 
          ITEM NEXTUJN    C(00,00,07);  # NEXT UJN #
          ITEM NEXTUJNI   U(00,00,60);  # INTEGER FORMAT #
          END 
  
# 
*     *QAC* PARAMETER BLOCK.
* 
*     NOTE - ANY CHANGES TO THIS ARRAY MAY REQUIRE CHANGES
*            TO *COMSQAC*.
# 
  
        ARRAY QACPARM [0:0] S(PARML); 
          BEGIN  # QACPARM #
          ITEM QAC$W0    U(00,00,60);  # WORD 0 # 
          ITEM QAC$LFN   C(00,00,07);  # LFN #
          ITEM QAC$ERR   U(00,42,08);  # ERROR RETURN CODE #
          ITEM QAC$FCN   U(00,50,09);  # FUNCTION CODE #
          ITEM QAC$COMP  B(00,59,01);  # COMPLETE BIT # 
          ITEM QAC$LEN   U(01,36,06);  # LENGTH OF *QAC* BLOCK #
          ITEM QAC$FIRST U(01,42,18);  # FIRST POINTER #
          ITEM QAC$IN    U(02,42,18);  # IN POINTER # 
          ITEM QAC$OUT   U(03,42,18);  # OUT POINTER #
          ITEM QAC$W4ORD U(04,12,12);  # WORD 4 ORDINAL # 
          ITEM QAC$W4Q   U(04,24,12);  # WORD 4 QUEUE # 
          ITEM QAC$LIMIT U(04,42,18);  # FET LIMIT POINTER #
  
  
# 
*     SELECTION CRITERIA PORTION (WORDS 5 - 11).
# 
  
  
          ITEM QAC$JSN    C(07,00,04);  # JSN # 
          ITEM QAC$LID    B(07,45,01);  # LID SELECTION # 
          ITEM QAC$SETJS  B(07,53,01);  # JSN SELECTION  #
          ITEM QAC$PRI    B(07,57,01);  # PRIORITY #
          ITEM QAC$W8Q    U(08,00,12);  # QUEUE SELECTION BITS #
          ITEM QAC$DISP   C(08,24,02);  # DISPOSITION CODE #
          ITEM QAC$LIDC   C(09,18,03);  # LID # 
  
# 
*     *PEEK* FUNCTION PORTION (WORDS 12 - 15).
# 
  
          ITEM QAC$COUNT  U(12,00,60);  # QUEUE COUNTS #
          ITEM QAC$EXCNT  U(12,12,12);  # EXECUTING QUEUE COUNT # 
          ITEM QAC$PEEKJS B(14,58,01);  # GET JSN # 
          ITEM QAC$PKFOUI B(14,51,01);  # GET FO AND UI # 
          ITEM QAC$PEEKUJ B(14,50,01);  # GET UJN # 
          ITEM QAC$TTCNT  U(13,00,12);  # *TT* COUNT #
  
# 
*     *ALTER* FUNCTION PORTION (WORDS 12 - 16). 
# 
  
          ITEM QAC$KILL   B(12,41,01);  # KILL (SINGLE REPRIEVE) FLAG # 
          ITEM QAC$SETLD  B(12,42,01);  # SET NEW LID FLAG #
          ITEM QAC$MSGA   B(12,44,01);  # MESSAGE AVAILABLE ON ABORT #
          ITEM QAC$DROP   B(12,50,01);  # DROP FILE SELECTION FLAG #
          ITEM QAC$NWLD   U(13,41,18);  # NEW LID # 
          END  # QACPARM #
  
# 
*     *QAC* *PEEK* REPLY ENTRY. 
# 
  
        BASED ARRAY QACREP [0:0] S(QACRETL);
          BEGIN 
          ITEM QACREP$JSN C(00,00,04);  # RETURN JSN #
          ITEM QACREP$UJN C(01,00,07);  # RETURN UJN #
          END 
  
  
# 
*     RETURNED JSN. 
# 
  
        ARRAY RETJSNA [0:0] S(1); 
          BEGIN 
          ITEM RETJSN     C(00,00,04);  # RETURNED JSN #
          ITEM RETJSNI    U(00,00,60);  # INTEGER FORMAT #
          END 
  
        END  # UQQCCOM #
  
      END  # COMUQQC #
                                               CONTROL LIST;
