Zeller's Congruence in a CALCA Block for calculating Day-of-the-Week

From Cassandra

Jump to: navigation, search

You can use Zeller's Congruence to calculate the Day-of-the-Week in CALCA block without having to rely on a script running in a workstation. The following code shows an example of the concept. This version was provided by Maks Wilde (mwilde@ieee.org).


NAME   = DCS_CALCS:DOW
 TYPE   = CALCA
 RI01   = TESTCP_STASTATION.DAY
 RI02   = TESTCP_STA:STATION.MONTH
 RI03   = TESTCP_STA:STATION.YEAR
 M01    = 1.0
 M02    = 26.0
 M03    = 10.0
 M04    = 4.0
 M05    = 100.0
 M06    = 5.0
 M07    = 7.0
 M08    = 3.0
 M09    = 12.0
 STEP01 = SUB RI02 M08 ; MONTH -13
 STEP02 = BIN 8
 STEP03 = IN RI02      ; MONTH 
 STEP04 = STM M20
 STEP05 = IN RI03      ; YEAR
 STEP06 = STM M21
 STEP07 = GTO 13
 STEP08 = ADD RI02 M09
 STEP09 = STM M20      ; MONTH (W/ OFFSET)
 STEP10 = SUB RI03 1
 STEP11 = STM M21      ; MONTH (W/ OFFSET)
 STEP12 = 
 STEP13 = IN M21 
 STEP14 = IN M05
 STEP15 = IMOD
 STEP16 = STM M10      ; K
 STEP17 = 
 STEP18 = IN M21
 STEP19 = IN M05
 STEP20 = IDIV
 STEP21 = STM M11      ; J
 STEP22 = 
 STEP23 = ADD M20 M01  ; M + 1
 STEP24 = MUL M02      ; * 26
 STEP25 = DIV M03      ; / 10
 STEP26 = STM M12
 STEP27 = 
 STEP28 = IN M10
 STEP29 = IN M04
 STEP30 = IDIV         ; K /4
 STEP31 = STM M13
 STEP32 = IN M11
 STEP33 = IN M04
 STEP34 = IDIV         ; J / 4
 STEP35 = STM M14
 STEP36 = 
 STEP37 = MUL M11 M06  ; J * 5
 STEP38 = STM M15
 STEP39 = 
 STEP40 = IN RI01
 STEP41 = IN M12
 STEP42 = IN M10
 STEP43 = IN M13
 STEP44 = IN M14
 STEP45 = IN M15
 STEP46 = ADD 6
 STEP47 = OUT RO02
 STEP48 = IN M07
 STEP49 = IMOD
 STEP50 = OUT RO01
END

Personal tools