Hi Fred,
Here's the macro so far. It's very close to completion at this
point (%trim_num = # days to backdate)..macro A/O 27 Mar 95:
{:START}
---------------------- Initialize Variables ----------------------
{SETV yr_lgth,365}{SETV day,%_day}{SETV jul_yr,%_yea}
{SETV trim_num,30} <-HARD CODED FOR TESTING ONLY *******
---------------------- Is This A Leap Year? ----------------------
{CALL leap_test}
---------------------- Pad %_mon If Required ----------------------
{LENG %_mon}{COMP %_len,1}{IFCO ,jan_test}
{COMP %_mon,10}{IFCO-L ,convert}
{SUBS test,1,1,%_mon}{COMP test,0}{IFCO 90}
{SETV %_mon,0%_mon}
------------------------- Is This January? ------------------------
{:JAN_TEST}
{COMP %_mon,01}{IFCO jan}
-------------------- Convert Today To Julian ---------------------
{:CONVERT}
{CALL %_mon%_set}
{SETV jul_day,%beg_mo}
{DECR %day}
{INCR %jul_day,%day}
---------------------- Compute Target Date -----------------------
{:TARGET}
---------- Determine if Target Date Will Be in Last Year ----------
{DECR trim_num}
{COMP %jul_day,%trim_num}
{IFCO-LE ,adjust}
{DECR %jul_yr}
-------------------- Was Last Year A Leap Year? -------------------
{CALL leap_test}
{INCR %jul_day,%yr_lgth}
-------------------- Time To Figure Out Target --------------------
{:ADJUST}
{DECR %jul_day,%trim_num}
-------------- Convert Target From Julian To MM/DD/YY -------------
{CALL get_mo}
{CALL get_day}
{SETV target,%jul_mo%/%jul_day%/%jul_yr}
{CLEA}{DISP 5,5,0E,Target is: %target} <- DISPLAY FOR TESTING ONLY
---------------------- Cleanup The Variables ----------------------
{SETV jul_yr}{SETV jul_mo}{SETV jul_day}
{SETV yr_lgth}{SETV trim_num}{SETV beg_mo}
{SETV day}{SETV month}
{} <- TEST END POINT ** FINAL WILL PASS "%TARGET" TO TRIM ROUTINE
--------------------------- Subroutines ---------------------------
{:GET_MO}
{SETV month,12}
{:GLOOP}
{LENG %month}{COMP %_len,1}{IFCO ,GL1}
{SETV month,0%month}
{:GL1}
{CALL %month%_set}
{COMP %jul_day,%beg_mo}{IFCO-GE l_exit}
{DECR month}{GOTO gloop}
{:L_EXIT}
{SETV jul_mo,%month} {RETU}
{:GET_DAY}
{CALL %jul_mo%_set}
{DECR %jul_day,%beg_mo}{INCR %jul_day}
{LENG %jul_day}
{COMP %_len,1}{IFCO ,retu}
{SETV jul_day,0%jul_day} {RETU}
{:JAN}
{SETV %jul_day,%day}
{LENG %jul_day}{COMP %_len,1}{IFCO ,target}
{SETV %jul_day,0%jul_day} {GOTO target}
{:LEAP_ADJ}
{COMP leap,y}{IFCO ,retu}
{INCR %beg_mo} {RETU}
{:LEAP_TEST}
{COMP %jul_yr,00}{IFCO LA_1}
{SETV test,%jul_yr}
{DIVI test,4}
{COMP %_rem,0}{SETV test}{IFCO ,retu}
{:LT_1}
{SETV leap,y}{SETV yr_lgth,366} {RETU}
{:RETU} {RETU}
--------------- Julian Values For 1st Day Of Months ---------------
{:01_SET}{SETV beg_mo,1} {RETU}
{:02_SET}{SETV beg_mo,32} {RETU}
{:03_SET}{SETV beg_mo,60} {CALL leap_adj} {RETU}
{:04_SET}{SETV beg_mo,91} {CALL leap_adj} {RETU}
{:05_SET}{SETV beg_mo,121} {CALL leap_adj} {RETU}
{:06_SET}{SETV beg_mo,152} {CALL leap_adj} {RETU}
{:07_SET}{SETV beg_mo,182} {CALL leap_adj} {RETU}
{:08_SET}{SETV beg_mo,213} {CALL leap_adj} {RETU}
{:09_SET}{SETV beg_mo,244} {CALL leap_adj} {RETU}
{:10_SET}{SETV beg_mo,274} {CALL leap_adj} {RETU}
{:11_SET}{SETV beg_mo,305} {CALL leap_adj} {RETU}
{:12_SET}{SETV beg_mo,335} {CALL leap_adj} {RETU}
--- JCQWK
---------------
* Origin: Meredith Place Mail Drop (1:300/15)
|