home *** CD-ROM | disk | FTP | other *** search
/ HomeWare 14 / HOMEWARE14.bin / prog / fdate80a.arj / HOLIFEDS.BAT < prev    next >
DOS Batch File  |  1993-07-20  |  9KB  |  275 lines

  1. @echo off
  2. rem This batch file requires Fdate v7.0 or greater
  3.  
  4. if (%1)==(SUBROUTINE) goto %2
  5. cls
  6. if (%1)==() goto help
  7. if (%1)==(?) goto help
  8.  
  9. if (%2)==() goto OKparm2
  10. if (%2)==(REM) goto OKparm2
  11. if (%2)==(rem) goto OKparm2
  12. if (%2)==(Rem) goto OKparm2
  13. echo Invalid second parm [%2].
  14. goto endit
  15. :OKparm2
  16.  
  17. set year=%1
  18.  
  19. rem verify %1 (year parm) is a valid year
  20. Fdate /Ff /A01-01-%year% /occyy /p"@set year=">junktemp.bat
  21. if errorlevel 1 echo Year parm [%1] is not valid.
  22. call junktemp.bat
  23. del  junktemp.bat
  24. if errorlevel 1 goto help
  25.  
  26.  
  27. cls
  28. echo ───────────────────────────────────────────────────────────────────────────────
  29. echo                   FEDERAL HOLIDAYS IN %year%
  30. echo ───────────────────────────────────────────────────────────────────────────────
  31. echo.
  32.  
  33.  
  34.  
  35. REM =========== NEW YEARS DAY: JANUARY 1 ======================
  36. set holiday=01-01-%year%
  37. Fdate /Ff /A%holiday% /odow# /p"@set dow#=">junktemp.bat
  38. call junktemp.bat
  39.  
  40. REM Popular leave day: the Monday before a Tuesday holiday
  41. %2 if %dow#%==3 Fdate /Fadd /N-1 /A%holiday% /P"-- POPULAR LEAVE DAY...................."
  42.  
  43. CALL %0  SUBROUTINE CheckWeekend %holiday%
  44. Fdate /Ff /A%holiday% /p"New Year's Day %year%%cf%..."
  45.  
  46. REM Popular leave day: the Friday after a Thursday holiday
  47. %2 if %dow#%==5 Fdate /Fadd /N+1 /A%holiday% /P"-- POPULAR LEAVE DAY...................."
  48.  
  49. REM =========== MARTIN LUTHER KING BIRTHDAY: 3rd Monday in January
  50. Fdate /Fw /D2 /N3 /A01-01-%year% /P"Martin Luther King, Jr. Birthday........"
  51. Fdate /Fw /D2 /N3 /A01-01-%year% /Omm-dd-ccyy /P"@set MLKDAY="> JUNKTEMP.BAT
  52. call junktemp.bat
  53.  
  54.  
  55. REM =========== INAUGURATION DAY: JAN 20, every 4th year after 1965
  56. set holiday=01-20-%year%
  57. Fdate /Ff /A%holiday% /odow# /p"@set dow#=">junktemp.bat
  58. call junktemp.bat
  59.  
  60. rem Inauguration day became a federal holiday starting in 1966
  61. Fdate /F#comp /A%year% /B1966 /p"@set mod=">junktemp.bat
  62. call junktemp.bat
  63. if (%mod%)==(LT) goto EndInaugural
  64.  
  65. Fdate /F#mod /A%year% /B4 /p"@set mod=">junktemp.bat
  66. call junktemp.bat
  67. if (%mod%)==(1) goto Inaugural
  68.                 goto EndInaugural
  69.  
  70. :Inaugural
  71.  
  72. :Popular leave day: the Tuesday between MLK birthday and Inauguration Day
  73. %2 if %dow#%==4 Fdate /Fadd /N-1 /A%holiday% /P"-- POPULAR LEAVE DAY (Washington, DC)..."
  74.  
  75.  
  76. REM Jan 20 is inauguration day, unless it falls on a SUNDAY
  77.  
  78. set pf= .................
  79. if %dow#%==7 echo       (Inauguration Day, January 20, falls on Saturday)
  80. if %dow#%==7 goto EndInaugural
  81. if %dow#%==1 goto Imoved
  82.              goto Iweekday
  83.  
  84. :Imoved
  85. REM Inauguration day (Jan 20) falls on a Sunday.  Move it to Monday.
  86. Fdate /Fadd /A%holiday% /N+1 /omm-dd-ccyy /p"@set holiday=">junktemp.bat
  87. call junktemp.bat
  88. set pf= (celebrated).....
  89. set dow#=2
  90. :Iweekday
  91.  
  92. if %holiday%==%mlkday% echo       (Inauguration Day falls on same day as M. L. King's birthday)
  93. if %holiday%==%mlkday% goto endInaugural
  94.  
  95. Fdate /Ff /A%holiday% /p"Inauguration Day%pf%......"
  96. echo       (Applies only to Federal employees working in the Washington, DC area)
  97.  
  98. REM Popular leave day: the Friday after a Thursday holiday
  99. %2 if %dow#%==5 Fdate /Fadd /N+1 /A%holiday% /P"-- POPULAR LEAVE DAY...................."
  100.  
  101. echo.
  102. :EndInaugural
  103. set pf=
  104. REM ===============================================================
  105.  
  106.  
  107. REM ======== GEORGE WASHINGTON's BIRTHDAY: 3rd Monday in February
  108. Fdate /Fw /D2 /N3 /A02-01-%year% /P"Washington's Birthday..................."
  109.  
  110.  
  111. REM =============== MEMORIAL DAY: last monday in May ==============
  112. Fdate /FW /D2 /N-1 /A05-31-%year% /P"Memorial Day............................"
  113.  
  114.  
  115. REM =============== INDEPENDENCE DAY: July 4 ====================
  116. set holiday=07-04-%year%
  117. Fdate /Ff /A%holiday% /Odow# /p"@set dow#=">junktemp.bat
  118. call junktemp.bat
  119.  
  120. REM Popular leave day: the Monday before a Tuesday holiday
  121. %2 if %dow#%==3 Fdate /Fadd /N-1 /A%holiday% /P"-- POPULAR LEAVE DAY...................."
  122.  
  123. CALL %0  SUBROUTINE CheckWeekend %holiday%
  124. Fdate /Ff /A%holiday% /p"Independence Day%cf%......"
  125.  
  126. REM Popular leave day: the Friday after a Thursday holiday
  127. %2 if %dow#%==5 Fdate /Fadd /N+1 /A%holiday% /P"-- POPULAR LEAVE DAY...................."
  128.  
  129.  
  130. REM =============== LABOR DAY: first Monday in September ==========
  131. Fdate /Fw /D2 /N1  /A09-01-%year% /P"Labor Day..............................."
  132.  
  133.  
  134. REM =============== COLUMBUS DAY: second Monday in October ========
  135. Fdate /Fw /D2 /N2  /A10-01-%year% /P"Columbus Day............................"
  136.  
  137.  
  138. REM =============== VETERAN'S DAY: November 11 =================
  139. set holiday=11-11-%year%
  140. Fdate /Ff /A%holiday% /odow# /p"@set dow#=">junktemp.bat
  141. call junktemp.bat
  142.  
  143. REM Popular leave day: the Monday before a Tuesday holiday
  144. %2 if %dow#%==3 Fdate /Fadd /N-1 /A%holiday% /P"-- POPULAR LEAVE DAY...................."
  145.  
  146. CALL %0  SUBROUTINE CheckWeekend %holiday%
  147. Fdate /Ff /A%holiday% /p"Veteran's Day%cf%........."
  148.  
  149. REM Popular leave day: the Friday after a Thursday holiday
  150. %2 if %dow#%==5 Fdate /Fadd /N+1 /A%holiday% /P"-- POPULAR LEAVE DAY...................."
  151.  
  152.  
  153. REM =============== THANKSGIVING: 4th Thursday in November ========
  154. REM Get date of Thanksgiving in mm-dd-ccyy format
  155. Fdate /Fw /D5 /N4  /A11-01-%year% /Omm-dd-ccyy /P"@set holiday=">junktemp.bat
  156. call junktemp.bat
  157.  
  158. Fdate /Ff /A%holiday%  /P"Thanksgiving Day........................"
  159.  
  160. REM Popular leave day: the Friday after a Thursday holiday
  161. %2 Fdate /Fadd /N+1 /A%holiday% /P"-- POPULAR LEAVE DAY...................."
  162.  
  163.  
  164. REM =============== CHRISTMAS DAY: December 25 =================
  165. set holiday=12-25-%year%
  166. Fdate /Ff /A%holiday% /odow# /p"@set dow#=">junktemp.bat
  167. call junktemp.bat
  168.  
  169. REM Popular leave day: the Monday before a Tuesday holiday
  170. %2 if %dow#%==3 Fdate /Fadd /N-1 /A%holiday% /P"-- POPULAR LEAVE DAY...................."
  171.  
  172. REM The President often gives Federal employees leave on the afternoon
  173. REM of Christmas Eve, when Christmas Day falls on Friday
  174. %2 if %dow#%==6 Fdate /Fadd /A%holiday% /N-1 /P"-- President MAY grant leave for afternoon of "
  175.  
  176. CALL %0  SUBROUTINE CheckWeekend %holiday%
  177. Fdate /Ff /A%holiday% /p"Christmas Day%cf%........."
  178.  
  179. REM Popular leave day: the Friday after a Thursday holiday
  180. %2 if %dow#%==5 Fdate /Fadd /N+1 /A%holiday% /P"-- POPULAR LEAVE DAY...................."
  181.  
  182.  
  183. REM =============== NEW YEARS DAY: January 1 ===================
  184. rem advance year to next year
  185. fdate /f#add /a%year% /b1 /p"@set year=">junktemp.bat
  186. call junktemp.bat
  187.  
  188. set holiday=01-01-%year%
  189. Fdate /Ff /A%holiday% /odow# /p"@set dow#=">junktemp.bat
  190. call junktemp.bat
  191.  
  192. REM Popular leave day: the Monday before a Tuesday holiday
  193. %2 if %dow#%==3 Fdate /Fadd /N-1 /A%holiday% /P"-- POPULAR LEAVE DAY...................."
  194.  
  195. CALL %0  SUBROUTINE CheckWeekend %holiday%
  196. Fdate /Ff /A%holiday% /p"New Year's Day %year%%cf%..."
  197.  
  198. REM Popular leave day: the Friday after a Thursday holiday
  199. %2 if %dow#%==5 Fdate /Fadd /N+1 /A%holiday% /P"-- POPULAR LEAVE DAY...................."
  200.  
  201. set year=
  202. set cf=..................
  203. set holiday=
  204. echo.
  205. goto cleanup
  206.  
  207. REM ================================================================
  208. REM               SUBROUTINES
  209. REM ================================================================
  210. :help
  211. cls
  212. echo ───────────────────────────────────────────────────────────────────────────────
  213. echo                   HOW TO USE HOLIFEDS.BAT
  214. echo ───────────────────────────────────────────────────────────────────────────────
  215. ECHO HOLIFEDS with a YEAR parameter displays federal holidays in YEAR, along with
  216. ECHO          days that are likely to be popular as annual-leave days.
  217. ECHO.
  218. ECHO HOLIFEDS with a YEAR parameter followed by the word "REM" displays federal
  219. ECHO          holidays in YEAR, and supresses display of popular leave days.
  220. ECHO.
  221. ECHO EXAMPLES:
  222. ECHO   HOLIFEDS 1996        displays federal holidays & popular leave days in 1996
  223. ECHO   HOLIFEDS 1996 REM    displays federal holidays in 1996
  224. ECHO.
  225. ECHO ───────────────────────────────────────────────────────────────────────────────
  226. echo The notation "(celebrated)" means that the holiday actually falls on
  227. ECHO a Saturday or Sunday, so Federal workers are given the previous Friday
  228. ECHO or the following Monday as a holiday.
  229. ECHO ───────────────────────────────────────────────────────────────────────────────
  230. ECHO.
  231. ECHO When the calendar is displayed, you can print it by pressing SHIFT+PRINTSCREEN
  232. ECHO.
  233. goto endit
  234.  
  235.  
  236. :CheckWeekend
  237. shift
  238. shift
  239. goto Dow-%dow#%
  240.  
  241. :dow-1
  242. Fdate /Fadd /A%1 /N+1 /omm-dd-ccyy /p"@set holiday=">junktemp.bat
  243. set dow#=2
  244. call junktemp.bat
  245. set cf= (celebrated).....
  246. goto endit
  247.  
  248. :dow-7
  249. Fdate /Fadd /A%1 /N-1 /omm-dd-ccyy /p"@set holiday=">junktemp.bat
  250. call junktemp.bat
  251. set dow#=6
  252. set cf= (celebrated).....
  253. goto endit
  254.  
  255. :dow-2
  256. :dow-3
  257. :dow-4
  258. :dow-5
  259. :dow-6
  260. set holiday=%1
  261. set cf=..................
  262. goto endit
  263.  
  264.  
  265. :CLEANUP
  266. set fdate=
  267. set dow#=
  268. set mod=
  269. set mlkday=
  270. set cf=
  271. set pf=
  272. if exist  junktemp.bat del  junktemp.bat
  273.  
  274. :endit
  275.