*DECK DLUPTM
USETEXT DLFPDEF 
PROC DLUPTM(CLOCK$TIME,ELAPSED, RETRN);# CALCULATE CLOCK TIME FROM OFFS#
*IF DEF,IMS 
 #
*1DC  DLUPTM
* 
*     1. PROC NAME           AUTHOR              DATE 
*        DLUPTM              P.C.TAM             78/10/05 
* 
*     2. FUNCTIONAL DESCRIPTION.
*        CALCULATE CLOCK TIME.
* 
*     3. METHOD USED. 
*        CONVERT DISPLAY CLOCK TIME TO BINARY,
*        ADD IN ELAPSED TIME, 
*        CONVERT BACK TO DISPLAY. 
* 
*     4. ENTRY PARAMETERS.
*        CLOCK$TIME          CLOCK TIME IN DISPLAY CODE 
*        ELAPSED             OFFSET ADDED 
* 
*     5. EXIT PARAMETERS. 
*        RETRN               CALCULATED CLOCK TIME
* 
*     6. COMDECKS CALLED AND SYMPL TEXTS USED.
*        DLFPDEF
* 
*     7. ROUTINES CALLED. 
*        NONE.
* 
 #
*ENDIF
# 
      EXTERNAL VARIABLES
# 
# 
      INTERNAL VARIABLES
# 
      ARRAY CLOCK$TIME S(1);
        BEGIN 
        ITEM HOUR   U(0,6,12);    # HOUR FIELD                         #
        ITEM HOUR1  U(0,6,CL);    # 1ST DIGIT OF HOUR FIELD            #
        ITEM HOUR2  U(0,12,CL);   # 2ND DIGIT OF HOUR FIELD            #
        ITEM MINUTE U(0,24,12);   # MINUTE FIELD                       #
        ITEM MIN1   U(0,24,CL);   # 1ST DIGIT OF MINUTE FIELD          #
        ITEM MIN2   U(0,30,CL);   # 2ND DIGIT OF MINUTE FILED          #
        ITEM SECS   U(0,42,12);   # SECONDS FIELD                      #
        ITEM SEC1   U(0,42,CL);   # 1ST DIGIT OF SECOND FIELD          #
        ITEM SEC2   U(0,48,CL);   # 2ND DIGIT OF SECOND FIELD          #
        END 
  
      ITEM
      ELAPSED      I,        # OFFSET TO ADD                           #
      RETRN        C(WC),    # RETURN RESULT                           #
      HH           I,        # TEMP VARIABLE TO HOLD HOUR FIELD        #
      MM           I,        # TEMP VARIABLE TO HOLD MINUTE FIELD      #
      SS           I,        # TEMP VARIABLE TO HOLD SECOND FIELD      #
      TEMP1        I,        # TEMPORARY VARIABLE                      #
      TEMP2        I;        # TEMPORARY VARIABLE                      #
  
# ******************************************************************** #
  
      BEGIN 
# 
      CALCULATE BINARY HOUR, MINUTE, SECOND.
# 
      HH = 10 * (HOUR1[0] - O"33") + (HOUR2[0] - O"33");
      MM = 10 * (MIN1[0] - O"33") + (MIN2[0] - O"33");
      SS = 10 * (SEC1[0] - O"33") + (SEC2[0] - O"33");
# 
      ADD IN OFFSET 
# 
      TEMP1 = SS + ELAPSED; 
      TEMP2 = TEMP1 / 60; 
      SS = TEMP1 - TEMP2 * 60;
      TEMP1 = MM + TEMP2; 
      TEMP2 = TEMP1 / 60; 
      MM = TEMP1 - TEMP2 * 60;
      TEMP1 = HH + TEMP2; 
      TEMP2 = TEMP1 / 24; 
      HH = TEMP1 - TEMP2 * 24;
# 
      CONVERT TO DISPLAY CODE 
# 
      RETRN = "  .  .  .";
      TEMP1 = HH / 10;
      B<0, CL> RETRN = TEMP1 + O"33"; 
      B<6, CL> RETRN = (HH - TEMP1 * 10) + O"33"; 
      TEMP1 = MM / 10;
      B<18, CL> RETRN = TEMP1 + O"33";
      B<24, CL> RETRN = (MM - TEMP1 * 10) + O"33";
      TEMP1 = SS / 10;
      B<36, CL> RETRN = TEMP1 + O"33";
      B<42, CL> RETRN = (SS - TEMP1 * 10) + O"33";
      END 
TERM
