home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 18 REXX / 18-REXX.zip / rexxalgo.zip / TESTALGO / G2J.CMD < prev    next >
OS/2 REXX Batch file  |  1997-08-25  |  5KB  |  141 lines

  1. /* REXX **********************************************/
  2. /*                                                   */
  3. /* Program name: G2J                                 */
  4. /* Function    : translates gregorian date to julian */
  5. /*               date                                */
  6. /* Syntax      : julDate = G2J(yyyy.mm.dd)           */
  7. /* Changes     :                                     */
  8. /*                                                   */
  9. /* Author      : Janosch R. Kowalczyk                */
  10. /*                                                   */
  11. /* (C) Copyright Janosch R. Kowalczyk, 1996.         */
  12. /* All rights reserved.                              */
  13. /* Made use of GREED.  09 Jul 1996 / 13:21:56   JRK  */
  14. /*****************************************************/
  15. Parse Arg gregDate
  16.  
  17. If gregDate = '' Then gregDate = '1954.06.16'
  18.  
  19. /*-------------(Exceptions handling )---------------*/
  20. Signal On Failure Name CLEARUP
  21. Signal On Halt Name    CLEARUP
  22. Signal On Syntax Name  CLEARUP
  23.  
  24. If RxFuncQuery('SysLoadFuncs') Then Do
  25.   Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
  26.   Call SysLoadFuncs
  27. End /* If RxFuncQuery... */
  28.  
  29. If gregDate > '' Then Do
  30.   Say
  31.   text = 'Test G2J (Translate Gregorian date to Julian date):'
  32.   Say Center( "(" text ")", 80, '*')
  33.   gregDate = TestGreg(gregDate) 
  34.   Say gregDate '--->' G2J(gregDate)
  35.   Say '1900.01.01 --->' G2J('1900.01.01')
  36.   Say '1900.02.28 --->' G2J('1900.02.28')
  37.   Say '1900.03.01 --->' G2J('1900.03.01')
  38.   Say '1900.12.31 --->' G2J('1900.12.31')
  39.   Say '1996.01.01 --->' G2J('1996.01.01')
  40.   Say '1996.02.28 --->' G2J('1996.02.28')
  41.   Say '1996.03.01 --->' G2J('1996.03.01')
  42.   Say '1996.12.31 --->' G2J('1996.12.31')
  43.   Say '1997.01.01 --->' G2J('1997.01.01')
  44.   Say '1997.02.28 --->' G2J('1997.02.28')
  45.   Say '1997.03.01 --->' G2J('1997.03.01')
  46.   Say '1997.12.31 --->' G2J('1997.12.31')
  47.   Say '2000.01.01 --->' G2J('2000.01.01')
  48.   Say '2000.02.28 --->' G2J('2000.02.28')
  49.   Say '2000.03.01 --->' G2J('2000.03.01')
  50.   Say '2000.12.31 --->' G2J('2000.12.31')
  51.   Say
  52. End
  53. Else Call HelpText
  54.  
  55. /*-------------------(End program)------------------*/
  56. Call CharOut , "Press any key to exit "
  57. Call LineIn
  58.  
  59. Exit
  60.  
  61. CLEARUP:
  62.   Say
  63.   Say 'GREED001E - Break, Failure or Syntax Error'
  64. Exit
  65.  
  66.  
  67. /*================(Test plausibility)===============*/
  68. TestGreg: Procedure
  69. Arg gregDate
  70.  
  71. laenge = Length(gregDate)
  72.  
  73. If laenge = 8 Then Do
  74.   gregDate = '19'||gregDate
  75. End
  76. Else If laenge \= 10 Then Do
  77.   gregDate = Date( 'S' )
  78.   gregDate = Insert( '.', gregDate, 6)
  79.   gregDate = Insert( '.', gregDate, 4)
  80. End
  81.  
  82. Return Translate(gregDate,'.', ' /')
  83.  
  84.  
  85. /*==================(Translate date)=================*/
  86. G2J: Procedure
  87. /*---------------------------------------------------*/
  88. /*                                                   */
  89. /* Procedure name: G2J                               */
  90. /* Function      : translates gregorian date to the  */
  91. /*                 julian date                       */
  92. /* Syntax        : julDate = G2J(yyyy.mm.dd)         */
  93. /* Changes       :                                   */
  94. /*                                                   */
  95. /* Author        : Janosch R. Kowalczyk              */
  96. /*                                                   */
  97. /* Author.....: Janosch R. Kowalczyk                 */
  98. /* Made use of GREED.  09 Jul 1996 / 13:21:56   JRK  */
  99. /*---------------------------------------------------*/
  100. Arg gregDate
  101.  
  102. year = SubStr(gregDate,1,4)
  103. mon  = SubStr(gregDate,6,2) + 0
  104. day  = SubStr(gregDate,9,2)
  105.  
  106. mon.0  = 12
  107. mon.1  = 0
  108. mon.2  = 31
  109. mon.3  = 59
  110. mon.4  = 90
  111. mon.5  = 120
  112. mon.6  = 151
  113. mon.7  = 181
  114. mon.8  = 212
  115. mon.9  = 243
  116. mon.10 = 273
  117. mon.11 = 304
  118. mon.12 = 334
  119.  
  120. If (year // 400 = 0 | (year // 100 > 0 & year // 4 = 0)) & mon > 2 Then
  121.   leap = 1
  122. Else leap = 0
  123.  
  124. julDay = mon.mon + day + leap
  125.  
  126. Return year'.'Right(julDay,3,'0')
  127.  
  128.  
  129. /*=================(Help texts)=================*/
  130. HelpText: Procedure
  131.  
  132. Say 'Syntax:'                                             
  133. Say                                                       
  134. Say 'G2J gregorian_date'                                     
  135. Say                                                       
  136. Say 'gregorian_date has format: yyyy.mm.dd'    
  137. Say '                       or: yyyy/mm/dd'                                                          
  138. Say '                       or: yyyy mm dd'                                                          
  139.  
  140. Return                                                    
  141.