home *** CD-ROM | disk | FTP | other *** search
/ Power CD-ROM!! 7 / POWERCD7.ISO / os2 / etelr212 / parsdate.vrm < prev    next >
Text File  |  1994-08-30  |  3KB  |  140 lines

  1. /***********************************************/
  2. /* VX-Rexx Macro to parse dates                */
  3. /* Please do not modify                        */
  4. /***********************************************/
  5. /* Custom mainline for macro */
  6.  
  7.     call RXFuncAdd "VRLoadFuncs", "VROBJ", "VRLoadFuncs"
  8.     call VRLoadFuncs
  9.  
  10.     _VREVersion = SubWord( VRVersion( "VRObj" ), 1, 1 )
  11.     if( _VREVersion < 2.02 )then do
  12.         call VRMessage "", "This program requires VX-REXX version 2.0b to run.", "Error!"
  13.         return 32000
  14.     end
  15.  
  16.     signal on SYNTAX name _VRESyntax
  17.     signal _VREMain
  18.  
  19. _VRESyntax:
  20.     parse source . . _VRESourceSpec
  21.     call VRMessage "", "Syntax error in" _VRESourceSpec "line" SIGL, "Error!"
  22.     exit 32000
  23.  
  24. _VREMain:
  25. /*:VRX         Main
  26. */
  27. Main:
  28. parse upper arg date direction form
  29. if Length( date ) < 8 then
  30.     signal dateError
  31. position = Pos( "/", date, 1 )
  32. if position = 0 then
  33.     signal dateError
  34. if Pos( '/', date, position + 1 ) = 0 then
  35.     signal dateError
  36. if form = 'O' then
  37.     parse var date year '/' month '/' day
  38. if form = 'E' then
  39.     parse var date day '/' month '/' year
  40. if form = 'U' then
  41.     parse var date month '/' day '/' year
  42.  
  43. /*
  44.  * Increment date by one
  45.  */
  46. if direction = 'UP' then do
  47.     call GetMaxDay
  48.     if day < Maxday then do
  49.         day = day + 1
  50.         signal SetDate
  51.     end
  52.     if day = Maxday then do
  53.         if month <> '12' then do
  54.             month = month + 1
  55.             day = '01'
  56.             signal SetDate
  57.         end
  58.         if month = '12' then do
  59.             year = year + 1
  60.             month = '01'
  61.             day = '01'
  62.             signal SetDate
  63.         end
  64.     end
  65.     signal SetDate
  66. end
  67. /*
  68.  * Decrement date by one
  69.  */
  70. if direction = 'DOWN' then do
  71.     if day > 1 then do
  72.         day = day - 1
  73.         signal SetDate
  74.     end
  75.     if day = 1 then do
  76.         if month <> 1 then do
  77.             month = month - 1
  78.             call GetMaxDay
  79.             day = MaxDay
  80.             signal SetDate
  81.         end
  82.         if month = 1 then do
  83.             year = year - 1
  84.             month = '12'
  85.             day = '31'
  86.             signal SetDate
  87.         end
  88.     end
  89.     signal SetDate
  90. end
  91.  
  92. GetMaxDay:
  93. /*
  94.  * Figure maximum number of days for given month
  95.  */
  96. maxday = 31
  97. if( month = 4 | month = 6 | month = 9 | month = 11 )then do
  98.     maxday = 30
  99.     return
  100. end
  101. if( Pos( '.', year / 4 ) = 0 & month = 2 )then do
  102.     maxday = 29
  103.     return
  104. end
  105. if( Pos( '.', year / 4 ) <> 0 & month = 2 )then do
  106.     maxday = 28
  107.     return
  108. end
  109. return
  110.  
  111. SetDate:
  112. /*
  113.  * Return formatted date
  114.  */
  115. if Length( year ) = 1 then
  116.     year = '0'||year
  117. if Length( month ) = 1 then
  118.     month = '0'||month
  119. if Length( day ) = 1 then
  120.     day = '0'||day
  121. if form = 'O' then
  122.     rc = year||'/'||month||'/'||day
  123. if form = 'E' then
  124.     rc = day||'/'||month||'/'||year
  125. if form = 'U' then
  126.     rc = month||'/'||day||'/'||year
  127. call VRMethod 'Application', 'PutVar', 'rc'
  128. exit
  129.  
  130. dateError:
  131. if form = 'O' then
  132.     call VRMessage "", "Incorrect date format -- yy/mm/dd  ", "Warning"
  133. if form = 'U' then
  134.     call VRMessage "", "Incorrect date format -- mm/dd/yy  ", "Warning"
  135. if form = 'E' then
  136.     call VRMessage "", "Incorrect date format -- dd/mm/yy  ", "Warning"
  137. rc = 'ERROR'
  138. call VRMethod 'Application', 'PutVar', 'rc'
  139. exit
  140.