-

+; "...\\\";
.(" !") .


:





:      |   |   | 


: 02.08.08.

(******************************************************************************)
(**)                          ;                                   (**)
(******************************************************************************)
(* : .                      *)
(******************************************************************************)


  - = , , : ;

(******************************************************************************
 * , 1 . . (
 * ).
 ******************************************************************************)
-(d-: ): ;

  y, m, n: ;

  y := d.; m := d. - 3;
  m < 0 (m, 12); (y) ;
  n := y * 1461 4 + (m * 153 + 2) 5 + d. - 306;
  n > 577737 n := n - (y 100 * 3 - 5) 4 ;
  n
;

(******************************************************************************
 * , 1 . . .
 ******************************************************************************)
-(n: ; d+: );

  c, y, m: ;

  n > 577737
    n := n * 4 + 1215; c := n 146097; n := n 146097 4
 
    n := n + 305; c := 0
  ;
  n := n * 4 + 3; y := n 1461; n := n 1461 4;
  n := n * 5 + 2; m := n 153; n := n 153 5;
  m > 9 m := m - 12; (y) ;
  d. := 100 * c + y;
  d. := m + 3;
  d. := n + 1
;

(******************************************************************************
 * , .
 ******************************************************************************)
-(: ): ;

  (( 4 = 0) ( 100 # 0)) ( 400 = 0)
   
;

(******************************************************************************
 * .
 ******************************************************************************)
(: ; : ): ;

 
    1: 31
  | 2: 29 28
  | 3: 31
  | 4: 30
  | 5: 31
  | 6: 30
  | 7: 31
  | 8: 31
  | 9: 30
  | 10: 31
  | 11: 30
  | 12: 31
  0
;

(******************************************************************************
 * , ,
 * ( ),
 * .
 ******************************************************************************)
-(n: ): ;

  : ;

  := (n 146097)*4 + (n 146097) 36524 + 1;
  - (( - 1) 4) - 3
;

(******************************************************************************
 * (1 - , ..., 7 - ),
 * .
 ******************************************************************************)
-(d-: ): ;

  c : ;

  d. < 3 c := 1 c := 0 ;
  (( 3 * d. - (7 * (d. + (d. + 9) 12)) 4 +
          (23 * d.) 9 + d. + 2 + ((d. - c) 100 + 1) *
          3 4 - 16) 7) + 1
;

.
    .