<?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>