*DECK DB$ACM
USETEXT CDCSCTX 
      PROC DB$ACM;
 #
* *   DB$ACM  ACCOUNT MSG TO UCP DAYFILE        PAGE 1
* *           M. W. WANG             MODIFIED  04/01/80 
* *           W. R. SMITH            MODIFIED  10/15/80 
* * 
* DC  PURPOSE 
* 
*     FORMAT AND OUTPUT ACCOUNT MESSAGES FOR UCP ON NOS AND NOS/BE
* 
* DC  ENTRY CONDITIONS
* 
*     IF ACCOUNTING IS TURNED ON THEN 
*          TQACUMCP MUST CONTAIN THE ACCUMULATED RUN-UNIT CP TIME 
*          TQACUMIO MUST CONTAIN THE ACCUMULATED RUN-UNIT IO TIME 
* 
* DC  EXIT CONDITIONS 
* 
*     MESSAGES ARE GENERATED. 
* 
* DC  CALLING ROUTINES
* 
*     DB$END$ 
*     DB$TRU
* 
* DC  CALLED ROUTINES 
* 
# 
      XREF FUNC DB$CDEB C(10);    # INTEGER TO BLANK FILLED DECIMAL    #
      XREF FUNC DB$CDEC C(10);    # INTEGER TO ZERO FILLED DECIMAL     #
      XREF PROC DB$FLOP;    # GENERATE A FLOW POINT                    #
      XREF PROC DB$MBA;     # ALLOCATE TEMPORARY BUFFER                #
      XREF PROC DB$POP;     # POP THE ENTRY POINT                      #
      XREF PROC DB$PUSH;    # PUSH THE ENTRY POINT                     #
      XREF PROC DB$SFCL;    # SYSTEM CONTROL POINT CALL                #
      XREF FUNC MOD I;      # FTN MODULUS FUNCTION                     #
      XREF ITEM DB$SFDF U;  # CONSTANT TO ISSUE UCP DAYFILE MESSAGES   #
# 
 #
      BEGIN 
# 
*     LOCAL VARIABLES 
# 
      BASED ARRAY UCPMSG;    # BLOCK FOR UCP MESSAGE                   #
        BEGIN 
        ITEM UCPTEXT1 C(0,0,4); 
        ITEM UCPTEXT2 C(0,24,25); 
        ITEM UCPT1 C(2,54,5); 
        ITEM UCPT2 C(3,24,1); 
        ITEM UCPT3 C(3,30,3); 
        ITEM UCPT4 U(3,48,12);
        END 
        ITEM TEMPSEC U; 
        ITEM TEMPMIL U; 
        DEF DFMSGSIZE #4#;   # SIZE OF UCP MESSAGE BLOCK               #
 #
* 
* DC  DESCRIPTION 
* 
*     IF ACCOUNTING IS TURNED ON THEN 
*     CP AND IO STATISTICS ARE ISSUED TO THE UCP DAYFILE BY DB$SFCL 
* 
* 
 #
# 
*     RETURN IF NO ACCOUNTING.
# 
      CONTROL IFGR DFFLOP,0;
        DB$FLOP("ACM    "); 
      CONTROL ENDIF;
  
      IF NOT ACCNFLAG 
      THEN
        BEGIN 
        RETURN; 
  
        END 
# 
*     OUTPUT ACCOUNT MESSAGE TO UCP DAYFILE.
# 
      DB$MBA(DFMSGSIZE,P<UCPMSG>);            #FIRST GET A BUFFER      #
      UCPTEXT1[0] = "  CP"; 
      UCPTEXT2[0] = " SECONDS CHARGED BY CDCS ";
      UCPT2[0] = "."; 
      UCPT4[0] = 0; 
      TEMPSEC = TQACUMCP[0]/1000000;          #OBTAIN CP SECONDS       #
      UCPT1[0] = DB$CDEB(TEMPSEC,5);
      TEMPMIL = MOD((TQACUMCP[0]/1000),1000); #OBTAIN CP MILLISECONDS  #
      UCPT3[0] = DB$CDEC(TEMPMIL,3);
      DB$PUSH(DB$ACM);
      DB$SFCL(DFSFREGR,DB$SFDF,0,LOC(UCPMSG));
  
      TEMPSEC = TQACUMIO[0]/1000000;          #OBTAIN IO SECONDS       #
      UCPTEXT1[0] = "  IO"; 
      UCPT1[0] = DB$CDEB(TEMPSEC,5);
      TEMPMIL = MOD((TQACUMIO[0]/1000),1000); #OBTAIN IO MILLISECONDS  #
      UCPT3[0] = DB$CDEC(TEMPMIL,3);
      DB$SFCL(DFSFREGR,DB$SFDF,0,LOC(UCPMSG));
      DB$POP(DB$ACM); 
      RETURN; 
  
      END 
      TERM
