Kalendářní makrofunkce obvykle pracují pouze nad mzdovým kalendářem mzdové věty, která je nahrána v paměti. V některých případech je však potřeba, aby bylo možno zjistit nebo nastavit parametry obecného mzdové kalendáře.
Lze to řešit pomocí nastavení identu mzdového kalendáře do dynamické globální proměnné: "#$_WCALID" před použitím kalendářní funkce. Proměnná "#$_WCALID" bude po volání kalendářní funkce smazána.
Ident mzdového kalendáře (tabulka WCAL) zjistíte pomocí funkce _SumWage. Mzdová věta a mzdový kalendář musí existovat!
Základní věta:
_Int(_SumWage(SWG_UZAM_OBE + SWG_VETA_ZAKL + SWG_ROZSAH_JEDNA + SWG_POL_JEDNA + SWG_ZAM_JEDEN, Mesic, Rok, IdxCalPol, ZamId));Opravná nebo základní věta:
_Int(_SumWage(SWG_UZAM_OBE + SWG_VETA_OPR_ZAKL + SWG_ROZSAH_JEDNA + SWG_POL_JEDNA + SWG_ZAM_JEDEN, Mesic, Rok, IdxCalPol, ZamId));
Příklad:
dim WCalId : Longint;
WCalId := _Int(_SumWage(SWG_UZAM_OBE + SWG_VETA_OPR_ZAKL + SWG_ROZSAH_JEDNA + SWG_POL_JEDNA + SWG_ZAM_JEDEN, 3, 2014, 997, 12));
if(WCalId <> 0)then
SetGVal("#$_WCALID", WCalId);
GetLastStart(997, Class, Specf, FirstDay, SDurat, WorkSDurat, SpecEx, LastMin);
Trace(WCalId, ", ",Class,", ",Specf,", ",FirstDay,", ",SDurat);
SetGVal("#$_WCALID", WCalId);
Trace(WCalId, ", _Duration= ", _Duration(ixKal, 0, 0, 1, $FF, clNemoc, spAll, 2, True));
endif