*DECK DB$ACR
USETEXT CDCSCTX 
      PROC   DB$ACR(REQ)  ; 
 #
* *   DB$ACR  RELATIONAL READ ACCOUNTING         PAGE  1
* *   R.C.KLOENNE                                2/11/77
* * 
* * 
* DC  PURPOSE 
*     ADD UP CP IO ACCOUNT CHARGES FOR RELATIONAL READS 
* 
* DC  ENTRY CONDITIONS
* 
*     REQ IS REQUEST ORDINAL
* 
*     READ RELATIONAL OPERATION HAS TAKEN PLACE 
* 
*     OFT, UFT AND FPT POINTERS ARE SET.
* 
* DC  EXIT CONDITIONS 
  
      ACCOUNT CHARGES ADDED TO TASK REQUEST IN TQT
* 
* DC  CALLING ROUTINES
* 
*     DB$MPGT 
*     DB$MPGN 
* 
* DC  CALLED ROUTINES 
# 
      XREF FUNC DB$ACCL  I;        # LOCATE BASED ARRAY DB$ACCT        #
      XREF PROC DB$FLOP;           # GENERATE FLOW POINT               #
# 
 #
      BEGIN 
      CONTROL NOLIST;           #CDCSCOMMN# 
*CALL  ACCNT
      CONTROL LIST; 
# 
      LOCAL  VARIABLES
# 
      ITEM  REQ;
      ITEM  I;
      BASED ARRAY  PRIMARY; 
           BEGIN
           ITEM PRIMAIO  U(0,0,30);  # IO TIME                         #
           ITEM PRIMACP  U(0,30,30);  # CP TIME                        #
           END
 #
* DC  DESCRIPTION 
 #
  
      CONTROL IFGR DFFLOP,0;
        DB$FLOP("ACR    "); 
      CONTROL ENDIF;
  
      P<ACCNT> = DB$ACCL;    # POSITION ACCOUNTING TABLE               #
      I=0;
      IF UFFITFO EQ DFFITFOIS THEN I=1;  #CHECK IS FO                  #
      IF UFFITFO EQ DFFITFODA THEN I=2;  #CHECK DA FO                  #
      IF UFFITFO EQ DFFITFOAK THEN I=3;  #CHECK AK FO                  #
      P<PRIMARY> = LOC(ACALTIO[REQ])+I;  # POINT TO PRIMARY KEY        #
 #
      PRIMARY KEY READS AND ALTERNATE KEY READS CAN BE DISTINGUISHED
      BY COMPARING RKP,RKW FIELDS IN OFT AND FPT FOR PRIMARY KEY
 #
        IF (OFPRIRKP EQ FPFITRKP) AND (FPFITRKW EQ OFPRIRKW)
        THEN
          BEGIN 
 #
      PRIMARY OR ALTERNATE ACCESS CHARGES FOR A RELATION REQUEST
      ARE ADDED TO RUN UNIT TOTALS DEPENDING ON KEY 
 #
          TQACCP = PRIMACP + TQACCP ; 
          TQACIO = PRIMAIO + TQACIO ; 
          END 
                                                             ELSE 
          BEGIN 
          TQACCP = ACALTCP[REQ] + TQACCP ;
          TQACIO = ACALTIO[REQ] + TQACIO ;
          END 
         END
         TERM 
