home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / UE311CMD.ZIP / CALUTIL.CMD < prev    next >
OS/2 REXX Batch file  |  1990-06-19  |  5KB  |  231 lines

  1. ;       CALUTIL.CMD:    Utilities for Calendar Preparation
  2. ;            (C)opyright 1989 by Ian Ornstein
  3. ;            Last Update Fri Feb 17 1989
  4. ;    Permission is granted to copy, distribute and use this software
  5. ;    wherever Daniel M Lawrence's MicroEMACS is used.
  6. ;
  7. ;
  8. store-procedure save-ctx
  9.     set %savebuf    $cbufname
  10.     set %savecol    $curcol
  11.     set %saverow    $curline
  12. !endm
  13. store-procedure restore-ctx
  14.     select-buffer    %savebuf
  15.     set $curcol    %savecol
  16.     set $curline    %saverow
  17. !endm
  18. ;
  19. store-procedure get-date
  20.     select-buffer "[CalWork]"
  21.     beginning-of-line
  22.     !force kill-to-end-of-line
  23.     insert-string $time
  24. ;
  25.     beginning-of-line
  26.     next-word
  27.     delete-next-word
  28.     set %curmon  &left $kill 3
  29. ;
  30.     end-of-line
  31.     4 backward-character
  32.     delete-next-word
  33.     set %curyear &left $kill 4
  34. ;
  35.     beginning-of-line
  36.     next-word
  37.     delete-next-word
  38.         set %curday &left $kill 2
  39.     !if &equal &left %curday 1 0
  40.         set %curday &cat " " &right %curday 1
  41.     !endif
  42. ;
  43. ; SAVE  %mnum and %curyear
  44.         run month-number
  45.     set %savemon  %mnum
  46.      set %saveyear %curyear
  47.     unmark-buffer
  48. !endm
  49. ;
  50. store-procedure get-window
  51.         save-window
  52.     1 next-window
  53.     !if &sequal $cbufname "Function Keys"
  54.         delete-window
  55.     !endif
  56.     !if &sequal $cbufname "*Calendar*"
  57.         beginning-of-file
  58.         set-mark
  59.         end-of-file
  60.         kill-region
  61.     !else
  62.         1 split-current-window
  63.         select-buffer "*Calendar*"
  64.         !force 8 resize-window
  65.         beginning-of-file
  66.         set-mark
  67.         end-of-file
  68.         !force kill-region
  69.     !endif
  70.     !while &less $curline 8
  71.         78 insert-string " "
  72.         insert-string "~n"
  73.      !endwhile
  74.     78 insert-string " "  
  75.     1 goto-line
  76. !endm
  77. ;    *Calendar* Tables
  78. ;
  79. store-procedure days-per-mon
  80. ;
  81. ;    DPM    - days per month
  82. ;
  83.     set %M1     31
  84.     set %M2        28
  85.     set %M3     31
  86. ;
  87.     set %M4     30
  88.     set %M5     31
  89.     set %M6      30
  90. ;    
  91.     set %M7     31
  92.     set %M8     31
  93.     set %M9     30
  94. ;
  95.     set %M10    31
  96.     set %M11    30
  97.     set %M12    31
  98. ;
  99.     set %index &cat "%M" %mnum  
  100.     set %dpm &ind %index
  101. !endm
  102. ;
  103. store-procedure month-name
  104. ;
  105. ;    MONAME    - month name
  106. ;
  107.     set %M1     "January  "
  108.     set %M2     "February "
  109.     set %M3     "March    "
  110. ;
  111.     set %M4     "April    "
  112.     set %M5     "May      "
  113.     set %M6     "June     "
  114. ;    
  115.     set %M7     "July     "
  116.     set %M8     "August   "
  117.     set %M9     "September"
  118. ;
  119.     set %M10    "October  "
  120.     set %M11    "November "
  121.     set %M12    "December "
  122. ;
  123.     set %index &cat "%M" %mnum   
  124.     set %moname &ind %index
  125. !endm
  126. ;
  127. store-procedure month-number
  128. ;
  129. ;    MNUM
  130. ;
  131.     set %Jan    1
  132.     set %Feb    2
  133.     set %Mar    3
  134. ;
  135.     set %Apr    4
  136.     set %May    5
  137.     set %Jun    6
  138. ;    
  139.     set %Jul    7
  140.     set %Aug    8
  141.     set %Sep    9
  142. ;
  143.     set %Oct    10
  144.     set %Nov    11
  145.     set %Dec    12
  146. ;
  147.     set %index &cat "%" %curmon
  148.     set %mnum &ind %index
  149. !endm
  150. ;
  151. store-procedure day-of-week
  152.     set %p1 &add  %mnum 10
  153.     set %p2 &div  %p1   13
  154.     set %p3 &tim  %p2   12
  155.     set %p4 &sub  %p1   %p3
  156.     set %p5 &tim  13    %p4
  157.     set %p5 &sub  %p5   1
  158.     ;
  159.     set %p5 &div  %p5   5
  160.     set %p5 &add  &add  %p5   %dnum   77
  161.     ;
  162.     set %p6 &sub  %mnum 14
  163.     set %p6 &div  %p6   12
  164.     set %p6 &add  %ynum %p6                    
  165.     set %p7 &tim  5     %p6
  166.     set %p8 &div  %p7   4
  167.     set %p9 &add &add %p5 %p8 6
  168.     ;
  169.     set %dow &div %p9  7
  170.     set %dow &tim %dow 7
  171.     set %dow &sub %p9  %dow 
  172. !endm
  173. ;
  174. ;    DISP1MON    Displays one Calendar Month
  175. ;            Requires:
  176. ;                %calcol    column to start month display
  177. ;                %mnum    month number
  178. ;                %ynum    four digit year (1989)
  179. ;
  180. store-procedure disp1mon
  181.     run month-name
  182.     set $curcol %calcol
  183.     overwrite-string &cat &CAT &cat "    " %moname " " %ynum
  184.     next-line
  185.     set $curcol %calcol
  186.     overwrite-string &cat  " S  M  Tu W  Th F  S"
  187.     run days-per-mon
  188. ;
  189.     set %d1  "                     1  2  3  4  5  6  7  8  9 10"
  190.     set %d2  " 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27"
  191.     set %dfeb " 28                  "
  192.     set %dleap " 28 29                  "
  193.     set %d30 " 28 29 30                  "
  194.     set %d31 " 28 29 30 31               "
  195.     set %days &cat %d1 %d2
  196. ;
  197.     !if &equ %dpm 30
  198.         set %days &cat %days %d30
  199.     !else
  200.         !if &equ %dpm 31
  201.             set %days &cat %days %d31
  202.         !else
  203.             !if &equ %mnum 2
  204.                 !if &or &seq %curyear "1992" &seq %curyear "1996"
  205.                       set %days &cat %days %dleap
  206.                 !else
  207.                     set %days &cat %days %dfeb
  208.                 !endif
  209.             !endif
  210.         !endif
  211.     !endif
  212. ;
  213.     set %dnum 1
  214.     run day-of-week
  215.     set %pos &tim %dow 3
  216.     set %pos &sub 21 %pos
  217. ;
  218.     set %wkline 0
  219.     !while &les %wkline 6
  220.         set %wkline &add %wkline 1
  221.         set %dispwk &mid %days %pos 21
  222.         next-line
  223.         set $curcol %calcol
  224.         overwrite-string %dispwk
  225.         set %pos &add %pos 21
  226.     !endwhile
  227. ;
  228.     beginning-of-file
  229.     unmark-buffer
  230. !endm
  231.