# =============================================================================== # DATEADD FUNCTIONS AND VARIABLES INCLUDED BELOW # OWNER, BRANT PUTTKAMMER, LAST UPDATED 01/31/2015 ## PROPERTY OF BRANT PUTTKAMMER, PLEASE CONTACT ME IF YOU HAVE QUESTIONS ## PLEASE USE CAUTION WHEN RUNNING THIS PROGRAM ON YOUR SYSTEM # =============================================================================== # END OF MONTH # SET THE TIME VARIABLE TO THE TIME RIGHT NOW set time [timestamp] # set time [expr $time-(86400 * [# Days Past ME Date])] # ******************************************************************************* #* PROPERTY OF BRANT PUTTKAMMER, PLEASE CONTACT ME IF YOU HAVE QUESTIONS # GET THE CURRENT DAY, MONTH AND YEAR BY THEMSELVES # %d DAY OF MONTH AS (01-31) set CurrentDay [timestamp -format "%d" -seconds $time] set CurrentDayName [timestamp -format %a -seconds $time] set CurrentDayFull [timestamp -format %d -seconds $time] set CurrentDayTrim [string trimleft $CurrentDayFull "0"] # %m MONTH AS (01-12) set CurrentMonth [timestamp -format "%m" -seconds $time] # %b MONTH AS ABBREVIATED MONTH NAME (Jan-Dec) set CurrentMonthName [timestamp -format "%b" -seconds $time] set CurrentMonthNameLCase [timestamp -format "%b" -seconds $time] set CurrentMonthName [string toupper $CurrentMonthName] # %B MONTH AS FULL MONTH NAME (January-December) set CurrentMonthFullName [timestamp -format "%B" -seconds $time] set CurrentMonthFullName [string toupper $CurrentMonthFullName] # %Y YEAR AS FOUR DIGIT YEAR (2008) set CurrentYear [timestamp -format "%Y" -seconds $time] set CurrentYear2Digit [string range $CurrentYear 2 3] set NextYear [expr ($CurrentYear + 1)] set NextYear2Digit [string range $NextYear 2 3] set PreviousCurrentYear [expr ($CurrentYear - 1)] # set CurrentFullYear [timestamp -format "%Y" -seconds $time] set CurrentHour [timestamp -format "%H" -seconds $time] set CurrentMinute [timestamp -format "%M" -seconds $time] set CurrentSecond [timestamp -format "%S" -seconds $time] set CurrentDateLogStamp "$CurrentYear$CurrentMonth$CurrentDayFull$CurrentHour$CurrentMinute$CurrentSecond" set CurrentAMPM [timestamp -format "%p" -seconds $time] # MISC DATES THAT ARE NEEDED FOR SELECT SCRIPTS - ESTABLISH LOG FILE DATE TOO set FileDate [timestamp -format %m%d%y -seconds $time] set FileDate [timestamp -format %Y%m%d -seconds $time] set PreviousFileDate [timestamp -format %Y%m%d -seconds $time-86400] set FileNameDate [timestamp -format %Y%m%d%H%M%S -seconds $time] set CurrentDayOfWeek [timestamp -format "%u" -seconds $time] set CurrentDate [timestamp -format "%m%d%y" -seconds $time] set DisplayDate [timestamp -format "%m/%d/%y %H:%M:%S" -seconds $time] set SMSDate [timestamp -format "%b %d, %Y" -seconds $time] set StartTime [timestamp] set StartTimeDisplay [timestamp -format " %x at %X" -seconds $StartTime] set StartTimeDisplay [timestamp -format " %A %B %d, %Y at %X" -seconds $StartTime] set ServerTime [timestamp] set EndTime [timestamp] set CaptureTime [timestamp] set HourDuration "00" set TotalTime [expr $EndTime-$StartTime] set EndTimeDisplay [timestamp -format " %A %B %d, %Y at %X" -seconds $EndTime] set CaptureTimeDisplay [timestamp -format " %A %B %d, %Y at %X" -seconds $EndTime] set DisplayHolidayDate [timestamp -format "%B %d, %Y" -seconds $time] # set HolidayTestDate [timestamp -format "%m%d%y" -seconds [expr $time-86400]] set HolidayTestDate [timestamp -format "%m%d%y" -seconds [expr $time]] set LoginCurrentHour [timestamp -format "%H" -seconds $time] set LoginCurrentHour [string trimleft $LoginCurrentHour "0"] set LoginCurrentMinute [timestamp -format "%M" -seconds $time] set LoginCurrentMinute [string trimleft $LoginCurrentMinute "0"] # GET DATE OF LAST PERIOD END PROCESSING set PreviousPeriodEnd [expr $time-(86400 * $CurrentDayTrim)] set PreviousPeriodEndD [timestamp -format "%d" -seconds $PreviousPeriodEnd] set PreviousPeriodEndM [timestamp -format "%b" -seconds $PreviousPeriodEnd] set PreviousPeriodEndM [string toupper $PreviousPeriodEndM] set PreviousPeriodEndY [timestamp -format "%Y" -seconds $PreviousPeriodEnd] set PreviousPeriodEndY2Digit [string range $PreviousPeriodEndY 2 3] # GET DATE 3 DAYS AGO set CurrentDate3DaysAgo [expr $time-259200] set CurrentDate3DaysAgoD [timestamp -format "%d" -seconds $CurrentDate3DaysAgo] set CurrentDate3DaysAgoM [timestamp -format "%b" -seconds $CurrentDate3DaysAgo] set CurrentDate3DaysAgoM [string toupper $CurrentDate3DaysAgoM] set CurrentDate3DaysAgoY [timestamp -format "%y" -seconds $CurrentDate3DaysAgo] # GET DATE 30 DAYS AGO set CurrentDate30DaysAgo [expr $time-2592000] set CurrentDate30DaysAgoD [timestamp -format "%d" -seconds $CurrentDate30DaysAgo] set CurrentDate30DaysAgoM [timestamp -format "%b" -seconds $CurrentDate30DaysAgo] set CurrentDate30DaysAgoM [string toupper $CurrentDate30DaysAgoM] set CurrentDate30DaysAgoY [timestamp -format "%y" -seconds $CurrentDate30DaysAgo] # GET DATE 60 DAYS AGO set CurrentDate60DaysAgo [expr $time-5184000] set CurrentDate60DaysAgoD [timestamp -format "%d" -seconds $CurrentDate60DaysAgo] set CurrentDate60DaysAgoM [timestamp -format "%b" -seconds $CurrentDate60DaysAgo] set CurrentDate60DaysAgoM [string toupper $CurrentDate60DaysAgoM] set CurrentDate60DaysAgoY [timestamp -format "%y" -seconds $CurrentDate60DaysAgo] # GET DATE 180 DAYS AGO set CurrentDate180DaysAgo [expr $time-15552000] set CurrentDate180DaysAgoD [timestamp -format "%d" -seconds $CurrentDate180DaysAgo] set CurrentDate180DaysAgoM [timestamp -format "%b" -seconds $CurrentDate180DaysAgo] set CurrentDate180DaysAgoM [string toupper $CurrentDate180DaysAgoM] set CurrentDate180DaysAgoY [timestamp -format "%y" -seconds $CurrentDate180DaysAgo] # GET DATE YESTERDAY - 86400 set CurrentDate1DayAgo [expr $time-86400] set CurrentDate1DayAgoD [timestamp -format "%d" -seconds $CurrentDate1DayAgo] set CurrentDate1DayAgoM [timestamp -format "%b" -seconds $CurrentDate1DayAgo] set CurrentDate1DayAgoM [string toupper $CurrentDate1DayAgoM] set CurrentDate1DayAgoY [timestamp -format "%y" -seconds $CurrentDate1DayAgo] # GET DATE TOMORROW + 86400 set CurrentDateTomorrow [expr $time+86400] set CurrentDateTomorrowFull [timestamp -format "%m%d%y" -seconds $CurrentDateTomorrow] set CurrentDateTomorrowD [timestamp -format "%d" -seconds $CurrentDateTomorrow] set CurrentDateTomorrowM [timestamp -format "%b" -seconds $CurrentDateTomorrow] set CurrentDateTomorrowM [string toupper $CurrentDateTomorrowM] set CurrentDateTomorrowY [timestamp -format "%y" -seconds $CurrentDateTomorrow] # ADD LEADING 0 TO NEXT YEAR IF LESS THAN 10 # if {$NextYear < 10} {set NextYear "0$NextYear"} # if {$CurrentFullYear < 4000} {set NextFullYear "30$NextYear"} # if {$CurrentFullYear < 3000} {set NextFullYear "20$NextYear"} # ADD ONE TO THE CURRENT MONTH TO GET NEXT MONTH MODULO 12 SO IN DECEMBER 13 BECOMES 1 set NextMonthVar [string trimleft $CurrentMonth "0"] set NextMonth [expr ($NextMonthVar + 1)%12] set NextMonth2Out [expr ($NextMonthVar + 2)%12] # IN CASE NEXT MONTH IS DECEMBER THE ABOVE EXPRESSION WILL RETURN 0 SO CHANGE IT TO 12 if {$NextMonth == 0} {set NextMonth 12} if {$NextMonth2Out == 0} {set NextMonth2Out 12} # CREATE THE FIRST DAY OF THE NEXT MONTH, IF NOW IS DECEMBER WE DON'T NEED TO CHANGE YEAR BECAUSE # EVERY YEAR HAS 31 DAYS IN DECEMBER SO THE RIGHT DAY OF THE MONTH WILL STILL BE CREATED if {$NextMonth == 1} {set FirstDayNextMonth "$NextMonth/1/$NextYear"} if {$NextMonth != 1} {set FirstDayNextMonth "$NextMonth/1/$CurrentYear"} if {$NextMonth2Out == 1} {set FirstDayNextMonth2Out "$NextMonth2Out/1/$NextYear"} if {$NextMonth2Out == 2} {set FirstDayNextMonth2Out "$NextMonth2Out/1/$NextYear"} if {$NextMonth2Out != 2} {set FirstDayNextMonth2Out "$NextMonth2Out/1/$CurrentYear"} # USE TCL COMMAND CLOCK SCAN TO GET THE INTEGER VALUE OF THE FIRST DAY OF NEXT MONTH set FirstDayNextMonthInt [clock scan $FirstDayNextMonth] set FirstDayNextMonthInt2Out [clock scan $FirstDayNextMonth2Out] set NextMonthName [timestamp -format "%b" -seconds $FirstDayNextMonthInt] set NextMonthFullName [timestamp -format "%B" -seconds $FirstDayNextMonthInt] # CREATE VARIABLES FOR NEXT MONTH END DATE set NextMonthName [timestamp -format "%b" -seconds $FirstDayNextMonthInt] set NextMonthName [string toupper $NextMonthName] set NextMonthYear [timestamp -format "%Y" -seconds $FirstDayNextMonthInt] set NextMonthYearMod [expr $NextMonthYear%4] if {$NextMonth == 1 || $NextMonth == 3 || $NextMonth == 5 || $NextMonth == 7 || $NextMonth == 8 || $NextMonth == 10 || $NextMonth == 12} {set NextMonthEndDay "31"} elseif {$NextMonth == 4 || $NextMonth == 6 || $NextMonth == 9 || $NextMonth == 11} {set NextMonthEndDay "30"} elseif {$NextMonth == 2 && $NextMonthYearMod == 0} {set NextMonthEndDay "29"} else {set NextMonthEndDay "28"} # ABSOLUTE MONTH END DATE, EVEN IF RUNNING BEFORE ME DATE set AbsoluteMonth "$CurrentMonth" set AbsoluteMonth [string trimleft $AbsoluteMonth "0"] set AbsoluteMonthYearMod [expr $CurrentYear%4] if {$AbsoluteMonth == 1 || $AbsoluteMonth == 3 || $AbsoluteMonth == 5 || $AbsoluteMonth == 7 || $AbsoluteMonth == 8 || $AbsoluteMonth == 10 || $AbsoluteMonth == 12} {set AbsoluteMonthEndDay "31"} elseif {$AbsoluteMonth == 4 || $AbsoluteMonth == 6 || $AbsoluteMonth == 9 || $AbsoluteMonth == 11} {set AbsoluteMonthEndDay "30"} elseif {$AbsoluteMonth == 2 && $AbsoluteMonthYearMod == 0} {set AbsoluteMonthEndDay "29"} else {set AbsoluteMonthEndDay "28"} # CREATE QUARTER MONTH NAME FOR STATEMENTS OPTION 5 set QuarterMonth [expr $AbsoluteMonth-2] if {$QuarterMonth == 1} {set QuarterMonthName "JAN"} elseif {$QuarterMonth == 4} {set QuarterMonthName "APR"} elseif {$QuarterMonth == 7} {set QuarterMonthName "JUL"} elseif {$QuarterMonth == 10} {set QuarterMonthName "OCT"} else {set QuarterMonthName "JAN"} # SET THE LAST DAY OF CURRENT MONTH BY SUBTRACTING ONE DAY FROM THE FIRST DAY OF NEXT MONTH set LastDayOfMonthInt [expr $FirstDayNextMonthInt-86400] set LastDayOfMonthInt2Out [expr $FirstDayNextMonthInt2Out-86400] # NOW FORMAT THE LAST DAY OF CURRENT MONTH INTO MM/DD/YY set LastDayOfMonthNumeric [timestamp -format "%m%d%y" -seconds $LastDayOfMonthInt] set LastDayOfMonth "[timestamp -format "%m" -seconds $LastDayOfMonthInt]/[timestamp -format "%d" -seconds $LastDayOfMonthInt]/[timestamp -format "%y" -seconds $LastDayOfMonthInt]" set LastDayOfMonth2Out "[timestamp -format "%m" -seconds $LastDayOfMonthInt2Out]/[timestamp -format "%d" -seconds $LastDayOfMonthInt2Out]/[timestamp -format "%y" -seconds $LastDayOfMonthInt2Out]" # CALCULATE MONTH END AND PREVIOUS MONTH END DATE BASED ON CURRENT DATE set SecondToLastDayOfMonthInt [expr $FirstDayNextMonthInt-172800] set SecondLastDayOfMonthNumeric [timestamp -format "%m%d%y" -seconds $SecondToLastDayOfMonthInt] set SecondToLastDayOfMonth "[timestamp -format "%m" -seconds $SecondToLastDayOfMonthInt]/[timestamp -format "%d" -seconds $SecondToLastDayOfMonthInt]/[timestamp -format "%y" -seconds $SecondToLastDayOfMonthInt]" # =============================================================================== # REMOVING LEADING ZERO'S FROM MONTH set ThisMonthTrim [string trimleft $CurrentMonth "0"] set Month [string trimleft $CurrentMonth "0"] # FIRST OF MONTH # NOW MERGE THE MONTH AND YEAR WITH A 1 FOR THE FIRST DAY set FirstOfMonth "$ThisMonthTrim/1/$CurrentYear" # PURGE PROGRAM BEGIN DATE set PurgeDateNextDay 1 set PurgeDay "01" set PurgeYear [expr $CurrentYear-1] set PurgeYear [string range $PurgeYear 2 3] set PurgeDate1YearsAgo "01 $CurrentMonthName $PurgeYear" set PurgeDate1YearsAgoNextDay "02 $CurrentMonthName $PurgeYear" set PurgeYear [expr $CurrentYear-1] set PurgeDate1YearsAgoZipName "$PurgeYear$CurrentMonth$PurgeDay" set PurgeYear [expr $CurrentYear-2] set PurgeYear [string range $PurgeYear 2 3] set PurgeDate2YearsAgo "01 $CurrentMonthName $PurgeYear" set PurgeDate2YearsAgoNextDay "02 $CurrentMonthName $PurgeYear" set PurgeYear [expr $CurrentYear-2] set PurgeDate2YearsAgoZipName "$PurgeYear$CurrentMonth$PurgeDay" # =============================================================================== # PREVIOUS DAY # SET THE PREVIOUS DAY BY SUBTRACTING 86400 SECONDS = 1 DAY set PreviousDay [expr $time-86400] set PreviousDate [expr $time-86400] # NOW FORMAT INTO MM/DD/YY # set PreviousDay [timestamp -format "%m%d%y" -seconds $PreviousDay] # set PreviousDay "[timestamp -format "%m" -seconds $PreviousDay]/[timestamp -format "%d" -seconds $PreviousDay]/[timestamp -format "%y" -seconds $PreviousDay]" set PreviousDayD [timestamp -format "%d" -seconds $PreviousDay] set PreviousDayM [timestamp -format "%b" -seconds $PreviousDay] set PreviousDayM [string toupper $PreviousDayM] set PreviousDayMonth [timestamp -format "%m" -seconds $PreviousDate] set PreviousDayY [timestamp -format "%y" -seconds $PreviousDay] set PreviousDayYear2Digit [timestamp -format "%y" -seconds $PreviousDate] set PreviousDayYear [timestamp -format "%Y" -seconds $PreviousDate] set PreviousDay [timestamp -format "%m/%d/%y" -seconds $PreviousDay] set PreviousDayHour [timestamp -format "%H" -seconds $time] set PreviousDayMinute [timestamp -format "%M" -seconds $time] set PreviousDaySecond [timestamp -format "%S" -seconds $time] # FORMAT MONDAY DATE FOR START set MONDAYSDATE "$PreviousDayD $PreviousDayM $PreviousDayY" # =============================================================================== # ORCC DATE FUNCTIONS FOR PROC RESPONSE set ORCCMonth [expr $time-15120000] set ORCCMonth [timestamp -format "%m" -seconds $ORCCMonth] set ORCCDay [expr $time-15120000] set ORCCDay [timestamp -format "%d" -seconds $ORCCDay] set ORCCYear [expr $time-15120000] set ORCCYear [timestamp -format "%y" -seconds $ORCCYear] # =============================================================================== # HOLD FILE PURGE DATES - PURGING /data/MEA/_HOLD_ set FirstDay "01" set PrevMonthTimeStamp [expr $time-(86400 * $CurrentDayTrim)] set PrevMonthDayD [timestamp -format "%d" -seconds $PrevMonthTimeStamp] set PrevMonthDayM [timestamp -format "%m" -seconds $PrevMonthTimeStamp] set PrevMonthDayMonth [timestamp -format "%b" -seconds $PrevMonthTimeStamp] set PrevMonthDayMonth [string toupper $PrevMonthDayMonth] set PrevMonthDayY [timestamp -format "%Y" -seconds $PrevMonthTimeStamp] set PrevMonthDayTwoTimeStamp [expr $time-(86400 * ($CurrentDayTrim+1))] set PrevMonthDayTwoD [timestamp -format "%d" -seconds $PrevMonthDayTwoTimeStamp] set PrevMonthDayTwoM [timestamp -format "%m" -seconds $PrevMonthDayTwoTimeStamp] set PrevMonthDayTwoY [timestamp -format "%Y" -seconds $PrevMonthDayTwoTimeStamp] set BegDatePurge "$PrevMonthDayY$PrevMonthDayM$FirstDay" set EndDatePurge "$PrevMonthDayY$PrevMonthDayM$PrevMonthDayD" set EndDateDayTwoPurge "$PrevMonthDayTwoY$PrevMonthDayTwoM$PrevMonthDayTwoD" # =============================================================================== # PURGE PROGRAM BEGIN DATE set PurgeYear [expr $PrevMonthDayY-2] set PurgeYear [string range $PurgeYear 2 3] set PurgeDate2YearsAgoPreviousMonth "01 $PrevMonthDayMonth $PurgeYear" # CURRENT DATE LESS 3 MONTHS set CurrentMonth3Back [expr ($ThisMonthTrim-3)] set CurrentYear3Back $CurrentYear set CurrentDay3Back $CurrentDay set AbsoluteEOMDay3Back $CurrentDay if {$CurrentMonth3Back == -2} {set CurrentMonth3Back 10} elseif {$CurrentMonth3Back == -1} {set CurrentMonth3Back 11} elseif {$CurrentMonth3Back == 0} {set CurrentMonth3Back 12} else {set CurrentMonth3Back $CurrentMonth3Back} # if {$CurrentMonth3Back < 1} {set CurrentYear3Back [expr ($CurrentYear3Back-1)]} if {$CurrentMonth3Back == 10 || $CurrentMonth3Back == 11 || $CurrentMonth3Back == 12} {set CurrentYear3Back [expr ($CurrentYear3Back-1)]} set CurrentYear3BackMod [expr $CurrentYear3Back%4] if {$CurrentDay3Back > 27 && $CurrentMonth3Back == 2 && $CurrentYear3BackMod == 0} {set CurrentDay3Back 29} elseif {$CurrentDay3Back > 27 && $CurrentMonth3Back == 2 && $CurrentYear3BackMod > 0} {set CurrentDay3Back 28} elseif {$CurrentDay3Back > 30 && ($CurrentMonth3Back == 4 || $CurrentMonth3Back == 6 || $CurrentMonth3Back == 9 || $CurrentMonth3Back == 11)} {set CurrentDay3Back 30} if {$CurrentMonth3Back == 2 && $CurrentYear3BackMod == 0} {set AbsoluteEOMDay3Back 29} elseif {$CurrentMonth3Back == 2 && $CurrentYear3BackMod > 0} {set AbsoluteEOMDay3Back 28} elseif {($CurrentMonth3Back == 4 || $CurrentMonth3Back == 6 || $CurrentMonth3Back == 9 || $CurrentMonth3Back == 11)} {set AbsoluteEOMDay3Back 30} elseif {($CurrentMonth3Back == 1 || $CurrentMonth3Back == 3 || $CurrentMonth3Back == 5 || $CurrentMonth3Back == 7 || $CurrentMonth3Back == 8 || $CurrentMonth3Back == 10 || $CurrentMonth3Back == 12)} {set AbsoluteEOMDay3Back 31} set CurrentDate3MonthsAgo "$CurrentMonth3Back/$CurrentDay3Back/$CurrentYear3Back" set AbsoluteEOMDate3MonthsAgo "$CurrentMonth3Back/$AbsoluteEOMDay3Back/$CurrentYear3Back" # =============================================================================== set EmailText "\n" set LineBreak "\n" set AccountDirectory "[YOUR_LIVE_ACCOUNT_DIRECTORY_PATH]" set ReplyToAddress "info@DOMAIN.coop" # ===============================================================================