SUBROUTINE TSDATE(DATE,YEAR,PERIOD,FREQ) IMPLICIT INTEGER (A-Z) C C THIS SUBROUTINE MAKES A TSP DATE FROM THE YEAR, C PERIOD, AND FREQUENCY FREQ. C YEARS CAN EITHER BE 2 DIGIT OR 4 DIGIT; ANY YEAR LESS THAN C 200 IS ASSUMED TO BE A 2 DIGIT YEAR. THIS MEANS ONE CAN GO UP C TO 2099 WITH 2 DIGIT YEARS. OF COURSE, IN THIS CASE, THE YEAR C WILL ACTUALLY BE 3 DIGITS. C BRONWYN H. HALL APRIL 1982 C 4.3 OPTIONS BASEYEAR=1900/2000/0 USER CONTROLS BASE YEAR, C WHICH ALLOWS FOR YEARS NEAR 0, OR YEARS CENTERED AROUND 2000. C COMMON /COM43/ NOT43(5),IYBASE DIMENSION WARN1(16) C DATA IYBASE/1900/ DATA CUTOFF/200/ DATA WARN1/4HPeri,4Hod s,4Hpeci,4Hfied,4H too,4H big,4H for, * 4H fre,4Hquen,4Hcy; ,4Hit i,4Hs be,4Hing ,4Hset , * 4Hto 1,4H. / C C CHECK FOR UNDATED SERIES. C IF (FREQ.GT.0) GO TO 5 DATE = YEAR IF (PERIOD.LE.1) RETURN CALL WRNPRT(16,WARN1,PERIOD,6) PERIOD = 1 RETURN C C DATED SERIES. C 5 IF (YEAR.LE.CUTOFF .AND. YEAR.GE.0) YEAR = YEAR+IYBASE PER = PERIOD IF (PER.LE.FREQ) GO TO 10 C C ILLEGAL PERIOD - PRINT WARNING AND CONTINUE. C CALL WRNPRT(16,WARN1,PER,6) PER = 1 10 DATE = YEAR*FREQ+PER-1 RETURN C ENTRY UNTSDT(DATE,YEAR,PERIOD,FREQ) C C CHECK FOR UNDATED SERIES. C IF (FREQ.GT.0) GO TO 15 YEAR = DATE PERIOD = 1 RETURN C C DATED SERIES C 15 YEAR = DATE/FREQ PERIOD = DATE-YEAR*FREQ+1 IF (YEAR.LE.CUTOFF .AND. YEAR.GE.0) YEAR = YEAR+IYBASE RETURN END