*DECK PRCTRLM 
USETEXT COMCBEG 
USETEXT COMRQUE 
PROC PRCTRLM; 
# TITLE  PRCTRLM - PRINT OUT CONTROL MESSAGE. # 
  
      BEGIN  # PRCTRLM #
  
# 
**    PRCTRLM - PRINT OUT CONTROL MESSAGE.
* 
*     THIS ROUTINE PRINTS OUT THE HEXIDECIMAL FORMAT OF THE 
*     CONTROL MESSAGE THAT HAS BEEN RECEIVED BY RHF.
* 
*     ENTRY   - P<QU$ADDRESS> CONTAINS THE CONTROL MESSAGE. 
* 
*     EXIT    - THE CONTROL MESSAGE HAS BEEN SENT TO THE DAYFILE. 
* 
*     PROCESS - CONVERT THE BINARY MESSAGE TO HEXIDECIMAL DISPLAY.
*               CALL RHFMSG TO SEND THE MESSAGE TO THE DAYFILE. 
* 
*     NOTE    - THIS ROUTINE ASSUMES THAT THE CONTROL MESSAGE 
*               BEGINS IN WORD THREE OF THE QUEUE ENTRY AND THAT
*               THE CONTROL MESSAGE LENGTH IS NO GREATER THAN 
*               216 BITS. 
# 
  
# 
****  PROC PRCTRLM - XREF LIST BEGIN. 
# 
      XREF
        BEGIN 
        PROC RHFMSG;                 # SEND MESSAGE TO RHFS DAYFILE # 
        END 
  
# 
****  PROC PRCTRLM - XREF LIST END. 
# 
  
  
      ITEM DMESSCHAR  I;             # CHARACTER WITHIN DAYFILE MESS #
      ITEM DMESSWORD  I;             # WORD WITHIN DAYFILE MESS # 
      ITEM CMESSCHAR  I;             # CHARACTER WITHIN CONTROL MESS #
      ITEM CMESSWORD  I;             # WORD WITHIN CONTROL MESSAGE #
      ITEM DONE       B;             # MESSAGE IS COMPLETLY CONVERTED # 
  
      BASED ARRAY CTRLMESS [0:3] S(1);
        BEGIN 
        ITEM CM$WORD    I(00,00,60); # WORD WITHIN CONTROL MESSAGE #
        END 
  
      ARRAY DAYFMESS [0:6] S(1);
        BEGIN 
        ITEM DM$WORD    C(00,00,10); # WORD WITHIN DAYFILE MESSAGE #
        ITEM DM$RHF     C(00,00,06) = [" RHF, "]; 
        END 
  
      ARRAY CONBINTOHD [0:15] S(1); 
        BEGIN 
        ITEM CBTH$CHAR  C(00,00,01) = ["0","1","2","3","4","5","6", 
          "7","8","9","A","B","C","D","E","F"]; 
        END 
  
      CONTROL EJECT;
  
      DONE = FALSE; 
      DMESSWORD = 0;
      DMESSCHAR = 6;
      P<CTRLMESS> = P<QU$ADDRESS> + 2;
  
      FOR CMESSWORD = 0 STEP 1 WHILE NOT DONE 
      DO
        BEGIN 
        FOR CMESSCHAR = 0 STEP 1 WHILE CMESSCHAR LE 14
                                   AND NOT DONE 
        DO
          BEGIN 
          C<DMESSCHAR,1>DM$WORD[DMESSWORD] =
              CBTH$CHAR[B<CMESSCHAR*4,4>CM$WORD[CMESSWORD]];
          DMESSCHAR = DMESSCHAR + 1;
          IF DMESSCHAR GE 10
          THEN
            BEGIN 
            DMESSCHAR = 0;
            DMESSWORD = DMESSWORD + 1;
            END 
  
          IF CMESSWORD EQ 3 
            AND CMESSCHAR EQ 9
          THEN
            BEGIN 
            DONE = TRUE;
            END 
  
          END 
  
        END 
  
      RHFMSG(LOC(DAYFMESS),60); 
  
      END  # PRCTRLM #
  
      TERM
