<?xml version="1.0" encoding="utf-8"?> <!--$Date: 2010/03/02 14:21:45 $ $Revision: 1.1 $ $Author: pbrezina $ $ExpSubDir$--> <ROOT> <REFERENCES> <HOBJ_REF> <uid>09E3C1EB8FFCFF4EA9B87AE932981D8E</uid> <name>H.SingleStorage</name> <objType>ARCH_VAL</objType> <valType>Re</valType> </HOBJ_REF> <HOBJ_REF> <uid>641766465C206AC46B4E1CE7DC87F26C</uid> <name>SD.ArchVal</name> <objType>STRUCTDEF</objType> <valType>NAN</valType> </HOBJ_REF> <COL_REF> <col_idx>2</col_idx> <col_name>Flags</col_name> <col_valType>Int</col_valType> </COL_REF> <COL_REF> <col_idx>1</col_idx> <col_name>Value</col_name> <col_valType>Real</col_valType> </COL_REF> <HOBJ_REF> <uid>293CAF17961B8842B14D02AB9F332529</uid> <name>SD.ArchValOne</name> <objType>STRUCTDEF</objType> <valType>NAN</valType> </HOBJ_REF> <HOBJ_REF> <uid>1E6F5D89B0EE7F43BE3D350DA0FF2D8D</uid> <name>SD.ArchValOneBool</name> <objType>STRUCTDEF</objType> <valType>NAN</valType> </HOBJ_REF> <COL_REF> <col_idx>1</col_idx> <col_name>Value</col_name> <col_valType>Bool</col_valType> </COL_REF> <HOBJ_REF> <uid>A8FB6EA0142DDBE48A61C3D1CB2D07C3</uid> <name>SELF.EVH</name> <objType>PROCES</objType> <valType>Pr</valType> </HOBJ_REF> <HOBJ_REF> <uid>SYSTIME</uid> <name>SysTime</name> <objType>SYS_VAR</objType> <valType>TmA</valType> </HOBJ_REF> </REFERENCES> <CFGRECORDS> <TObjItemData> <Id>24820</Id> <Name>E.GETARCH</Name> <Descript/> <Typ>EVENT</Typ> <ParentId>SELF.EVH</ParentId> <Value_Type>Int</Value_Type> <CreateTime>01.01.1972 01:00:00.000</CreateTime> <ModifyTime>23.02.2010 13:47:20.741</ModifyTime> <Text_Palette/> <Read_Only>False</Read_Only> <TECH_UNIT/> <UseLimits>False</UseLimits> <VHL>1.00000000000000E+38</VHL> <HL>1.00000000000000E+38</HL> <LL>-1.00000000000000E+38</LL> <VLL>-1.00000000000000E+38</VLL> <VHL_ID/> <HL_ID/> <LL_ID/> <VLL_ID/> <Hysterezia>0.00000000000000E+00</Hysterezia> <TransPalIdx>0</TransPalIdx> <Hidden>False</Hidden> <uuid>069EDAB97F4E6F94895A9A76F6355A72</uuid> <memberOfModule/> <moduleRelation>AM_None</moduleRelation> </TObjItemData> <tEventData_Full> <tEventData> <TRIGGER/> <PRIORITY>3</PRIORITY> <ERROR_ID>0</ERROR_ID> <TRIG_COND>TValue</TRIG_COND> <Invert_Trig>False</Invert_Trig> <bQueueStartRq>False</bQueueStartRq> <bEventHaveValue>True</bEventHaveValue> <bCrumbleChange>False</bCrumbleChange> <bServerEvent>False</bServerEvent> </tEventData> <script><![CDATA[;********************************************************* ; DESCRIPT: Testovaci skript pre akcie INSERTARCHARR, GETARCHARR, GETARCHARR_TO_CNT ; ; AUTHOR: ; LAST CHANGE: ;********************************************************* TIME _currTime TIME _bt, _et INT _retCode ; vymazanie dat pre testovany casovy interval PROCEDURE DeleteArchData DELETEARCHDATA H.SingleStorage, _bt, _et, _retCode IF _retCode <> _ERR_NO_ERROR THEN LOG "DELETEARCHDATA failed" ENDIF END DeleteArchData ; generovanie dat pre testovany interval PROCEDURE FillArchData RECORD NOALIAS (SD.ArchVal) _data INT _i REDIM _data[1440] FOR _i = 1 TO 1440 DO_LOOP _data[_i]^Value := _i TIME %AddTime(_bt, (_i-1)*60) END_LOOP INSERTARCHARR H.SingleStorage, _data^Value, _retCode, @TRUE IF _retCode <> _ERR_NO_ERROR THEN LOG "INSERTARCHARR failed" ENDIF END FillArchData ; test citania dat prostrednictvom akcie GETARCHARR PROCEDURE ReadData RECORD NOALIAS (SD.ArchVal) _data RECORD NOALIAS (SD.ArchValOneBool) _dataBool ; GETARCHARR H.SingleStorage, _data^Value, _data^Flags, _bt, _et, 0, 10000, _retCode ; toto osetrenie straci, lebo viem ze v archive v danom intervale nebude viac hodnot _ERR_MORE_DATA ; a viem ze tam nejake hodnoty musia byt _ERR_NO_DATA IF _retCode <> _ERR_NO_ERROR THEN LOG "GETARCHARR failed" RETURN ENDIF ; je korektny pocet hodnot ? IF _data\DIM <> 1440 THEN LOG "GETARCHARR wrong number of values" RETURN ENDIF ; INT _i ; su hodnoty korektne ? FOR _i = 1 TO 1440 DO_LOOP IF _data[_i]^Value <> _i THEN LOG "INVALID DATA", _i _retCode := -1 RETURN ENDIF END_LOOP ; citanie dat do stlpca typu Boolean GETARCHARR H.SingleStorage, _dataBool^Value, , _bt, _et, 0, 10000, _retCode IF _retCode <> _ERR_NO_ERROR THEN LOG "GETARCHARR failed" RETURN ENDIF ; END ReadData ; podobne ako ReadData ale prostrednictvom akcie GETARCHARR_TO_CNT PROCEDURE ReadDataCNT RECORD NOALIAS (SD.ArchVal) _data RECORD NOALIAS (SD.ArchValOne) _dataOne RECORD NOALIAS (SD.ArchValOneBool) _dataOneBool INT _cnt INT _pages ; GETARCHARR_TO_CNT H.SingleStorage, _cnt, 255, _bt, _et, 0, 10000, _retCode ; osetrenie chyby podobne ako GETARCHARR IF _retCode <> _ERR_NO_ERROR THEN LOG "GETARCHARR_TO_CNT failed" RETURN ENDIF ; CNT_GETNR _cnt, _pages INT _i, _iVal INT _page BOOL _bFound ; Poradove cislo hodnoty _iVal := 0 ; prejdem vsetky stranky FOR _page = 1 TO _pages DO_LOOP CNT_FIND _cnt, _page, _data, _bFound IF _bFound THEN ; prejdem celu stranku FOR _i = 1 TO _data\DIM DO_LOOP _iVal := _iVal + 1 IF _data[_i]^Value <> _iVal THEN LOG "INVALID DATA", _iVal _retCode := -1 RETURN ENDIF END_LOOP ; rozne varianty citania ; citanie do jedno-stlpcovej struktury - typ stlpca Realny CNT_FIND _cnt, _page, _dataOne, _bFound ; citanie do jedno-stlpcovej struktury - typ stlpca Boolean CNT_FIND _cnt, _page, _dataOneBool, _bFound ELSE LOG "GETARCHARR_TO_CNF page not found", _page _retCode := -1 RETURN ENDIF END_LOOP ; ; Pocet hodnot musi by 1440 IF _iVal <> 1440 THEN LOG "GETARCHARR_TO_CNF wrong number of values" RETURN ENDIF ; CNT_DESTROY _cnt ; END ReadDataCNT BEGIN ; _bt, _et bude cely vcerajsi den _currTime := SysTime _bt := %SubTime(_currTime, %ModTime(%SubTime(_currTime, 24*3600), 24*3600)) _et := %AddTime(_bt, 24*3600) ; INT _i FOR _i = 1 TO 10 DO_LOOP CALL DeleteArchData IF _retCode <> _ERR_NO_ERROR THEN RETURN ENDIF CALL FillArchData IF _retCode <> _ERR_NO_ERROR THEN RETURN ENDIF ; CALL ReadData IF _retCode <> _ERR_NO_ERROR THEN RETURN ENDIF ; CALL ReadDataCNT IF _retCode <> _ERR_NO_ERROR THEN RETURN ENDIF END_LOOP ; END ]]></script> </tEventData_Full> </CFGRECORDS> <CRC>56f76c8d6a3aedc690c59d25d6603798</CRC> </ROOT>