Zeller's Congruence in a CALCA Block for calculating Day-of-the-Week
From Cassandra
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
