*DECK COBTIME 
         IDENT     COBTIME
          COMMENT   MISC COMPILER TIME AND DATE STUFF 
 COBTIME  SPACE  4
**        COBTIME - SUPPLIES VARIOUS FORMS OF TIME AND DATE:  
*         RL     REAL TIME (RAW)
*         CP     CPU TIME (RAW) 
*         DATE   TODAYS DATE
*         TIME   WALL CLOCK TIME
* 
 RL       SPACE  4
         ENTRY     CP,RL
RL       DATA      0
         RTIME     REAL 
         SA1       REAL 
         BX6       X1 
         EQ        RL 
CP       DATA      0
 CP       SPACE  4
         TIME      CPU
         SA1       CPU
         BX6       X1 
         EQ        CP 
 DATE     SPACE  4
*         DATE - RETURN TODAYS DATE (ADDR IN X1)
          ENTRY  DATE 
  
*      IT IS POSSIBLE FOR THE DATE TO BE IN ANY OF THE FOLLOWING FORMS- 
*      YYMMDD, YYDDMM, MMDDYY, MMYYDD, DDYYMM, DDMMYY 
*      WE MUST BE ABLE TO HANDLE ALL THESE CASES (UNLIKELY THOUGH THEY
*      MAY BE)
*     WE USE IP.YMD SO TO RETURN TO THE COMPILER THE SYSTEM DATE AND
*     FORMAT OF THAT DATE 
*     FORMAT   VFD  18/Y,18/M,18/D,6/0  IS SUCH THAT  BYTE = 0-9, AND 
*                Y = BYTE YEAR STARTS 
*                M = BYTE MONTH STARTS
*                D = BYTE DAY  STARTS 
 A        MICRO  1,1, "IP.YMD"
 B        MICRO  2,1, "IP.YMD"
 C        MICRO  3,1, "IP.YMD"
 "A"      EQU    0
 "B"      EQU    1
 "C"      EQU    2
  
          SPACE  4
 M0       IFEQ   M,0         IF MM FIRST
 D1       IFEQ   D,1         IF MM FIRST, DD SECOND 
  
*      MMDDYY CASE           BMM/DD/YYB RETURNED BY DATE MACRO
  
 DATEFOR  VFD    18/7,18/1,18/4,6/0 
 D1       ENDIF 
  
          IFEQ   Y,1         IF MM FIRST, DD SECOND 
  
*      MMYYDD CASE           BMM/YY/DDB RETURNED BY SYSTEM
  
 DATEFOR  VFD    18/4,18/1,18/7,6/0 
 Y1       ENDIF 
 M0       ENDIF 
          SPACE  4
 D0       IFEQ   D,0         IF DD FIRST
 M1       IFEQ   M,1         IF DD FIRST, MM SECOND 
  
*      DDMMYY CASE           BDD/MM/YYB RETURNED BY DATE MACRO
  
 DATEFOR  VFD    18/7,18/4,18/1,6/0 
 M1       ENDIF 
  
 Y1       IFEQ   Y,1         IF DD FIRST, YY SECOND 
  
*      DDYYMM CASE           BDD/YY/MMB RETURNED BY DATE MACRO
  
 DATEFOR  VFD    18/4,18/7,18/1,6/0 
 Y1       ENDIF 
 D0       ENDIF 
          SPACE  4
 Y0       IFEQ   Y,0         IF YY FIRST
 M1       IFEQ   M,1         IF YY FIRST, MM SECOND 
  
*      YYMMDD CASE           BYY/MM/DDB RETURNED BY DATE MACRO
  
 DATEFOR  VFD    18/1,18/4,18/7,6/0 
 M1       ENDIF 
 D1       IFEQ   D,1         IF YY FIRST, DD SECOND 
  
*      YYDDMM CASE           BYY/DD/MMB RETURNED BY DATE MACRO
  
 DATEFOR  VFD    18/1,18/7,18/4,6/0 
 D1       ENDIF 
 Y0       ENDIF 
          SPACE  4
 DATE     DATA   0
          SA2    DATEFOR
          BX6    X2 
          SA2    A1+1 
          SA6    X2          STORE DATE FORMAT FOR CALLER 
          SX0    X1          SAVE RETURN
          DATE   CDATE       GET CURRENT DATE 
          SA2    CDATE
          BX6    X2 
          SA6    X0          RETURN IT
          EQ     DATE 
  
 TIME     SPACE  4
*         TIME - WALL CLOCK TIME TO (X1)
          ENTRY  TIME 
 TIME     DATA   0
          SX0    X1          SAVE RETURN
          CLOCK  CTIME       GET CURRENT TIME 
          SA2    CTIME
          BX6    X2 
          SA6    X0          RETURN IT
          EQ     TIME 
REAL     BSS       1
CPU      BSS       1
          ENTRY  CDATE
 CDATE    DATA   0
          ENTRY  CTIME
 CTIME    DATA   0
         END
