memoryconsumption-ASAM ODS - AOP5 (Speicherproblem)

for txt German please read below...

****

Hi @ all,

I had a problem with memoryconsumption in the code as follows:

[...]

Call OdsValAlloc ("VehicleList", "Ods_TYPE_INST", 1).

Call OdsInstList ("Vehicle", "State = 1 VehicleList", "", OdsHandle)

intAnzahlVehicle = OdsValCount

IntI = 1 to intAnzahlVehicle

' * Anzahl der Configs ermitteln

Dial OdsValuesCount (VehicleList (intI), 'Configurations', OdsHandle)

intAnzConfigs = OdsValCount

' * Instanz mit den entsprechenden "Configurations".

Call OdsValAlloc ("ConfigList", "Ods_TYPE_INST", 1).

Call OdsValGet (VehicleList (intI), "Configurations", 1, intAnzConfigs, 'ODS_TYPE_INST', "ConfigList", 1, OdsHandle)

IntJ = 1 to intAnzConfigs

[...]

Next

Call OdsValFree ("ConfigList")

Next

Call OdsValFree ("VehicleList")

[...]

I have itterate through several instancelists, which I get of our ASAM-ODS-database. Several information as in this code "vehiclename" or "configurationsnumber" is stored in variants and writes in a txtfile.

Several trys with a shortend script with I only itterates through the bodies exhibits the same behavior.

I only GET information from the database.

After a while my memory is used and the script chrash.

Unfortunately, it seems that the 'OdsValFree' command frees the memory space used of the GPI-variables.

If I close the connection to the server ("OdsClose"), then the memory will be accessible again.

All advice out there?

THX

Contur

****************************************

German:

Hi zusammen,

ICH habe in um Scripten, die wie das wanted aufgebaut sind, das problem, dass immer mehr Speicher und das Script nach einer weile busy DIAdem mit ner Speicherfehlermeldung absturzt.

Beim Itterieren durch diverse Instanzen, welche ich aus of our ASAM-ODS-data base lese, wird immer mehr Speicher keine, auch wenn ich - wie im angegeben - die GPI-specific freigebe Script.

ICH habe den Code before can Schön, dass ich nur durch die Instanzen itteriere und nichts weiter in irgendwelcher form vorhalte. Problem experienced existiert.

Wenn ich mit "OdsClose" die zur beende, wird der Speicher freigegeben DB connection. However email ich handle Instanzen ja zum Itterieren...

Habe ICH in diesem Fall nur lesenden Zugriff auf die data base.

Danke as read

Contur

Hmm, aktually the plugin behaves like that.

Information retrieved by the server are collected up to

  • OdsDialogRefresh handle
  • OdsClose handle

is called. This behavior is made to enable high-performance access to data server recovered.

I a m a bit wondering this same course of instances will cause this huge memory consumption.

Your entities have attributes thaosands? Or just you manage an enormous amount of instances.

Please keep in mind that, normally, an ASAM Ods server does not return more than 10,000 cases.

Workaround solutions:

OdsDialogRefresh will not release the full memory but should be a good first step and allows in most cases.

OdsClose will help globably as you already determinde. This is not the worst. There are two ways to do the job.

To be known: the odskeys returned by odsinstlist, odsvalget, odssvalget are persistent. So that they can be used even if the session is closed. Even the next day.

  1. Close the sourec some time and go on the use of the source after having reopened.
  2. Use a second store opened and the key retrieved by source1 source2. If you can open and close a few times source2.

Both solutions work quiet well with AOP, AOP5, ATF, ATFX.

Hope this helps

Greetings Andreas

P.S.: To speed up the work with AOP5, it is possible to specify Instances which should not be removed from the cache in the advanced settings. Canidate for things like unit or quantity on the other must be retrieved from server every time that it is requested. So if if you work on a playground with the same unit, quantity, this may help. Otherwise the device and quantities can be resolved to a second source which is not updated or closed.

Tags: NI Software

Similar Questions

  • Create ASAM ODS hierarchy

    I am configuring an ASAM ODS server. I already create the server, export the configuration, and installed on the client computer. Then I am able to connect from a client computer to the server but when I try to run the script to the hierarchy that does not work. My understanding of the forums another is that the script "main.vbs" to create the hierarchy should be run in tiara 2012 (I'm running with 2012 SP1 and still does not work).

    The first thing I notice is that after the conection icons are not the same in the interface ASAM (NAVIGATOR) and then when I run the "main.vbs" and "CreateASAMModelHierarchy.SUC" the error attached.

    Can you please help me with this problem?

    Neither Chei,

    In case you have the same problem as did nrin, here is once again this solution:

    To connect to the NI ASAM-ODS server with AOP5 please follow these steps:
    1. open the NAVIGATOR tiara.
    2. go to settings - data banks...
    3. Add a new data store. Or using the first button on the toolbar or via the context menu.
    4. enter a name, select the use AOP5 and click OK.
    5. in the following configuration dialog box, you must enter the computer name of the machine running the server OR ASAM-ODS.
    (This information is also displayed in the dialog box settings ASAM Manager DataFinder (DFSE)
    6. click on the [...] button in the URL line. In the next dialog box, select your server ASAM-ODS.
    7 leave the dialog boxes for configuring two clicks on the [OK] button and open the new data store in the BROWSER.
    8 download the creative hierarchy script that has been updated on January 27, 2014 and run in DIAdem SCRIPT

    Brad Turpin

    Tiara Product Support Engineer

    National Instruments

  • Definition of the ASAM-ODS unit

    Hello

    I'm creating a file converter that should correspond to the ASAM ODS standard.

    I use the "storage/data plugin" tip screws, range of the file IO. For now my test are based on the creation of an ATF file on my computer. Eventually the Oracle server with the asam-ods database.

    The *.atf files that I create can be read: 'Tiara' and "AVL Concerto" too.

    The problem I have is the association of a unit (rUnit) of my "MeasurementQuanties". I understand that I must pass a reference to the unit

    INSTELEM MeasurementQuantity
      Id = 67;
      iName = "P_CV_CEE";
      rMeasurement = 3;
      rUnit = UNDEFINED;
      rQuantity = UNDEFINED;
      iDataType = "DT_FLOAT";
      iDescription = UNDEFINED;
      iSize = UNDEFINED;
      iSystemName = UNDEFINED;
      iChannelMode = UNDEFINED;
      iInterpolationMode = UNDEFINED;
      iDelayTime = UNDEFINED;
      iDeadband = UNDEFINED;
      iLocalName = UNDEFINED;
      LocalColumn = 67;
    ENDINSTELEM;
    
    INSTELEM Unit Id = 45; iName = "hhmmss"; rPhysicalDimension = 35; iGain = 1.; iOffset = 0.; iSystemName = "hhmmss"; iUser = "AlmaAutomotive"; iProject = "Common"; iLastUpdate = "20100304183325000000000"; MeasurementQuantity = UNDEFINED; quantities = UNDEFINED;ENDINSTELEM;
    

    I need to change the rUnit = UNDEFINED to something similar to rUnit = UnitID

    Any help is appreciated!

    Hi Davide.

    There are two cases to consider:

    (1) the device that you want to assign does not exist and must be added to the unit catalogue

    (2) the device that you want to assign already exist in the catalog of the unit

    Here's a VBScript code that shows the main actions that need to happen.  In your case, you already have the references to 'Channel' as your reference light green MeasurementQuantity table.

    ' determine subtypes of aounit and aophysicaldimension
    dim unitEntity : set unitEntity = store.Model.Entities("aounit").SubTypes(1)
    dim physdimEntity : set physdimEntity = store.Model.Entities("aophysicaldimension").SubTypes(1)
    
    ''''''''''''''''''''''''''''''''''''''''''
    ' I: unit does not exist and we have to create it in the unit catalog
    dim channel : set channel = store.GetElementList("tdm_channel", "name=ch1", 1).Item(1)
    
    dim mPhysDim : set mPhysDim = store.CreateElement(physdimEntity, "m")
    mPhysDim.Properties("length_exp").Value = 1
    mPhysDim.Properties("mass_exp").Value = 0
    mPhysDim.Properties("time_exp").Value = 0
    mPhysDim.Properties("current_exp").Value = 0
    mPhysDim.Properties("temperature_exp").Value = 0
    mPhysDim.Properties("molar_amount_exp").Value = 0
    mPhysDim.Properties("luminous_intensity_exp").Value = 0
    
    dim cmUnit : set cmUnit = store.CreateElement(unitEntity, "mm")
    cmUnit.Properties("factor").Value = 0.001
    cmUnit.Properties("offset").Value = 0
    cmUnit.References("phys_dimension").Elements.AddReference(mPhysDim)
    
    ' now we have created the unit and can add it to the channel
    channel.References("unit").Elements.AddReference(cmUnit)
    
    store.Save
    
    ''''''''''''''''''''''''''''''''''''''''''
    ' II: Query the unit already added in case I
    dim channel2 : set channel2 = store.GetElementList("tdm_channel", "name=ch2", 1).Item(1)
    
    dim unitEntityName : unitEntityName = store.Model.Entities("aounit").SubTypes(1).Name
    dim myUnit : set myUnit = store.GetElementList(unitEntityName, "name=mm",1).Item(1)
    channel2.References("unit").Elements.AddReference(myUnit)
    
    store.Save
    

    Brad Turpin

    Tiara Product Support Engineer

    National Instruments

  • To connect to the data several times store

    Hello

    I connect to an ASAM-ODS-of server via

    Call OdsOpen ("AOP5", param, 0, 0)

    where param is "IOR_STRING". In this way, I can connect as many times I want (whenever I have run the script). Now, I try to the most comfortable way with:

    Set oStore = Navigator.ConnectDataStoreByParameter ("AOP5", param)

    In this way, the connection is created only once, when I try to run the script, the second time that I get the error message «...» Data store "NoName"cannot be opened". The way with 'OdsOpen' has not worked either (ErrorCode 104). What I am doing wrong?

    Kind regards

    Martin Kozlowski

    Tiara 2012

    There is a big difference between OdsOpen and Navigator.ConnectDataStore...

    OdsOpen ' ', 'STORENAME', 0, 0
    corresponds to
    Dim store: store set = navigator. ConnectDataFinder (STORENAME)

    OdsOpen 'AOP5', 'IOR_STRING', 0, 0
    corresponds to
    Dim store: store set = navigator. ConnectDataStoreByParameter ("AOP5", "IOR_STRING")

    And here is the difference. When the store variable goes out of scope the ASAM ODS Corba session is closed. This would also happen if you cancel your

    OdsOpen with the OdsClose which must correspond to it. Otherwise, the session will remain open until the server time out.

    In your case, this means that the session with your IOR no longer exists after the script is finished.

    What would work around?

    • You will need to create a global variable in a command from the user and to entrust the open air. The global scope will remain open until you call close or nothing set.

    • You open the store in Navigator which will remain open until you shut up. (navigator. Display.OpenDataStoreByParameter)

    There is an additional difference.

    • OdsOpen establishes a connection to the server for each open call you. Take a look at the file-> ASAMDataService and watch all your stores open with client and server resources

    • Navigator. ??? will not open a new server connection if the parameter string is equal. So if you want to open it twice add some xml 1 ...

    Anyway, the best way to work the way you do it is openeing the store in the browser GUI. Second best is the global setting, but it is more difficult to implement.

    Most imports or ASAM scripts which I know work with a single open... and its end when the script is finished.

    Hope this helps

    Andreas

  • Treat the AVL ATF error file in the opening AVL recorder data

    We test our engines with AVL testbed. After the series of tests, we got the result of the test stored as FAT filesystem. According to AVL test bench specifications, Puma Open settings and data are stored in format ASAM ODS (Open Data Services). This means that the data structure conforms to the ASAM standards.

    But while we try to use the Diadem software for process AVL data file, we found something strange. The problem is that the tiara can open all other groups of the AVL ATF file as "AND" "EM" etc except the recorder group. Test data recorded by AVL Puma cannot open the Diadem software. The tiara channel shows "Novalue".

    Could someone tell me the reason and the solutions?

    Thank you

    While the file is readable by itself, it contains certain constructs that are not loadable using the submatrices.

    Use the attached code to load.

    Option Explicit

    If (FileNameGet ("ANY", "FileRead", DataReadPath, "the file ATFX (*.atfx;")) *. (ATF), *.atfx; *.ATF") ="IDOk") then

    "atf (x) open file
    Dim param: param = "" & replace (FileDlgFileName, "&", "&") & ""
    Dim store: store set = navigator. ConnectDataStoreByParameter ("ATFX", param)

    «get the submatrices to load»
    protected subMatrixEntity: subMatrixEntity = store. Model.Entities ("AoSubmatrix"). SubTypes (1). Name
    Dim sms: sms the value = store. GetElementList (subMatrixEntity, "")

    ' Load with the default configuration
    Call Navigator.LoadData (sms, "Load", Navigator.Settings.CreatePropertyImportSet (store))

    End If

  • How to close a database connection in the new browser

    Hi @ all,

    with the new object browser, it is easy to connect to a database with the methods 'ConnectDataStore' or 'ConnectDataStoreByParameter '.

    But how the connection can be closed?

    In an AsamOds environment, it is important to close the connection, because a part of the environment (the so-called ORB) 'hiding' some data (in the ActiveObjectMap). This "cache" is cleaned by closing the connection. So, the problem is that without the ability to close a connection, the cache grow upward (and in how the Orb ist becomes unstable and crashes after a while).

    Thanks for reading

    Greetings from the Germany

    Contur

    Hi Contur,

    the new ASAM-ODS API doesn't have an explicit close method. A store (and here the connection held by this store) will be automatically closed when all references to this store is closed - which translates into VBS to nothingness. The easiest thing is the store itself:

    Dim myStore: set myStore = Navigator.ConnectDataStore ("ASAM pass fail analysis Example")

    Define myStore = Nothing

    In the case your script any other helds refers to this store, for example the results of a query or a certain element, that you must set to nothing as well

    Dim myStore: set myStore = Navigator.ConnectDataStore ("ASAM pass fail analysis Example")

    protected myRootElements: set myRootElements = myStore.RootElements
    Set myRootElements = Nothing

    Define myStore = Nothing

  • ATFX import error Exception (20)

    Hello

    IAM, try to import an ATFX ASAM ODS file with 2 binary files in tiara, but I always get the following error Message:

    New section logfile *.
    ToDriver.cpp (425): ATFX: ERROR: Exception: load in (20)ata unknown type to this method!

    This happens when I try to import a file with DS_STRING "channels".

    There are 2 binary files. The first is quite well. The other usually contains data of type string and is called _string.btf [ATFX-Filename].

    IAM using DIAdem 2014 Versionnumber: 14.0.0f5641

    I have a few adjoining example files.

    Hope someone can help me.

    Greetings

    Reading of the measured variables of type DT_STRING of a binary component (zero terminated) was not applied until NI DIAdem 2015.

    The current version of DIAdem 2015 is able to read your file without error.

    If you are able to get online instead of component data, it would read.

    Sorry for the inconvenience.

    P.S.: Plugin ATFX belongs NEITHER USI. If you are not able to switch to tiara 2015 simply to install a trial version of 2015 on your machine.

  • Problem mit Daten aus ATFX-Datei

    Hallo,

    ICH habe identische Daten aus unterschiedlichen sources. Once direkt aus einem Datenlogger als ATFX, das andere bad wurden die gleichen Daten first in data base ASAM ODS importiert und von eine sleeps wieder in ein ATFX used. Leider wird dann einen Kanal (Datentyp T_LONGLONG) defender DIAdem im. Wenn ich both ATFX-Dateien im ASAM Commander von HighQSoft betrachte, sind die Daten im Kanal beidemale town. IM werden nur die Daten aus dem Datenlogger kreatin dub DIAdem.

    I have both Datenpakete angehangt. Es sich um den is Kanal time aus der Kanalgruppe TIMESERIES_ (1 Hz) _001.

    Gruss, Marc

    P.S. The DIAdem Version der 10.2.1f3219 wurde pricing

    At a first glance the exported file contains some curious duplicates.

    for example

    QuantInternTime_001 25739502 DT_FLOAT 0.000000e + 00 91.00000000000 45.50000000000 not_tested 5405535
             25685658
             25685658
         

    Please ensure that duplicates are removed.

    The coruption of data is made by the file

    Data logger:

    -1251709688064000 1

    Export:

    -1.25171e + 1 of 15

    and should be

    -1.251709688064E + 1 OF 15

    However, the exporter of the file uses a precision of output which is not enough for this number.

    The number in question has an accuracy of 13 which can always be stored in a value of type double and that should be OK on setting shaped text.

    This means

    -1.25171e + 15 + 15 =-311936000--1.251709688064E

    which is the value of starting in tiara.

    This means that DIAdem is just to display the data.

  • ATFX DataFinder

    Hello

    Currently, I have following problem with ATFX (ASAM ODS) files and the DataFinder. ATFX data contains several matrices for different sampling rates high. The DataFinder can only create an index for the files that contain only a matrix. If I was using DIAdem and ASAM Data Service, I have a similar problem when importing is set to "Default". When the import mode is set to 'Submatrix' then I can load data ATFX. So I think that there is a similar problem with the DataFinder.

    Is there a way to tell the DataFinder to use the import mode 'Submatrix' when creating indexes for files ATFX? I use the plugin "ATFX example.

    BTW: why, it's always off ATFX plugin (and the grayed out checkbox), but it is possible to install the plugin "ATFX sample"? What is the difference?

    Thank you and best regards,

    Peter

    :-)

    Seem to get us to the center of it.

    Can you provide a sample file?

    I'll attach the file in the documentation file.

    • every submatrix is allowed to have an independent.
    • local column should be designated as its quantity of measure
    • If there are several submatrices a local column marked as all independent independent localcolumns must be connected to a single measure quantity.

    If all these things are given tiara accumulate the value matrix if the ATFX file is loaded in the default mode.

    Greetings

    Andreas

  • AOP5 get no connection to the server of ODS

    Hello

    We use tiara and the AOP5 Plugin to connect to different servers of the ODS. We have a tool of the "HighQSoft" called ASAM-Commander toolprovider. With this tool, we get connetion on all our servers of ODS.

    But when connecting via AOP5 the more local network server works sometimes, the connection to the server in another subnet does not work. Tiara displays the following Message:

    I checked the CORBA Ports with NETSTAT and logged after that try.

    The Logi shows more information:

    162 gewunschte 'TestODS' konnte nicht open werden Datenbestand der.
    (187): error initializing interface
    163 19.03.2014 07:13:29 Fehler:Fehler bei dem Öffnen der Datenquelle "TestODS" vom Typ 'AOP5 '.

    Is it possible that there is something that is blocking the connection in tiara?


  • I need free space in my Mac Air looking at 'about my Mac"it looks like I have 40 GB as backup, but I can't find it with the ODS

    I need free space in my Mac Air

    I used "about my Mac' and TI - s telling me I have 40 GB as backup, but I can't find with ODS (OmniDiskSweeper)

    ODS tells me I have just 30-40 GB busy.

    I can find a way to release the backup file?

    I m also helps TimeCapsule and back up there it's only 30-40 GB (as the ODS is to find)

    appreciate the help

    It seems to me that you look at the Snapshots Time Machine:

    https://support.Apple.com/en-us/HT204015

    You can ignore them.

    If they bother you, find the instructions to put out them here:

    http://pondini.org/TM/30.html

    Ciao.

  • CANopen Close VI gel when closing an ODS object

    CANopen Close.vi will not stop and is frozen when a SDO object is closed.

    I create an interface object, then an ODS object, read the SDO object and then close the ODS object, then the object of the interface.

    Any ideas?

    I decided to give up this aid on the SDO and simply close the interface. The VI will close all the objects associated with this stage of the interface.

  • open ODS files in windows 7

    I have ODS files I need to open and I cannot open the attachments to email

    For example?

    You can access your email via the webmail account page (for example, http://mail.live.com) or in an email Client (Outlook, for example, Windows Live Mail)?

    You really should post this question in this forum: http://social.answers.microsoft.com/Forums/en-US/w7network/threads

    ~ Robear Dyer (PA Bear) ~ MS MVP (that is to say, mail, security, Windows & Update Services) since 2002 ~ WARNING: MS MVPs represent or work for Microsoft

  • Could not locate the agent.exe ODS.

    In recent weeks, when my computer starts up, I get a message that says ODS agent.exe impossible to locate the component dnssd, dll not found - need to re - install. I don't remember to remove whatever it is and wonder if this is a serious problem and how can I fix it?  I use Windows XP Home Edition II.

    Thanks for your help.  Elizabeth

    E-mail address is removed from the privacy *.

    If you mean that you see a message like this:

    ODSAgent.exe - Unable to locate component
    This application has failed to start because c:\windows\system32\dnssd.dll was not found.  Reinstalling the application may fix this message.

    ODSAgent belong to some software from Apple that allows remote DVD and CD disc sharing, restoration of system software and a migration wireless with MacBook Air.

    If you have not deleted the file, he could have been quarantined (actually deleted) by your unspecified antivirus/antimalware software.

    Describe your current antivirus and software anti malware situation: McAfee, Symantec, Norton, Spybot, AVG, Avira!, MSE, Panda, Trend Micro, CA, Defender, ZoneAlarm, PC Tools, Comodo, etc..

    If you use this Apple software and features, you can see if the uninstall and reinstall the application by downloading it from the Apple page:

    http://support.Apple.com/kb/DL112

    You might be able to get by with only replace the missing c:\windows\system32\dnssd.dll file that you can download on my SkyDrive, but there could be other files that are missing too so a relocation may be required if you use this software.

    If you do not use this software, you can uninstall it or disable the ODSAgent Service, so it does not start when you restart your system.

    Note that the 'experts' Support who are engaged by Microsoft engineer will say just to try running sfc/scannow and check if it helps (to help any) or run msconfig and disable the Service and that you will keep seeing the message, but that is not the problem - it fixes the symptom of a problem which is not the same thing that actually solve the problem (however counts as a 'response' on) their planet).
     
    Maybe it's fine if you use not just software, but you will leave with a sloppy XP configuration.

    If you do not know the software and do not use it, just uninstall it from Add/Remove Programs, and that should remove afflicted startup ODSAgent as well.

    To download the c:\windows\system32\dnssd.dll on my SkyDrive, follow these steps:

    I downloaded a copy of the file you need on my SkyDrive (everyone has a SkyDrive for file sharing).

    You can download it and when you do, put a copy of the file in this folder (assuming that Windows is installed on your C drive):

    c:\Windows\System32

    Here is the link to my SkyDrive and you can get the file you need here:

    https://SkyDrive.live.com/?CID=6a7e789cab1d6f39&ID=6A7E789CAB1D6F39! 311

    When you see the files available for download, you can not see the file extension (.exe, .dll, .cpl, .sys, .zip, etc.), but when download you them they will have the right extension.

    When you download the file (especially if you use Internet Explorer), when you get a chance to save the file, your browser is unable to save the file with an extension (by example, .exe, .dll, .cpl, .sys, .zip, etc) then you will need to manually add the extension appropriate to the file when you download the file before you save it.

    You can download the file without the extension, and then rename the file to add the appropriate extension.  You do not want to use a file called dnssd when the name of the file should really be called c:\windows\system32\dnssd.dll (if the downloaded file has no extension, you will need to change the name of the file to add the appropriate extension to make it work.

    Restart and look at things, to remember that you will have to perhaps download and reinstall this app from Apple, if other files are missing.

  • I can't read ods odt files in vista 32 and

    I can't read ODS ODT FILES AND IT IS COMING AS SYMBOLS AND SIGNS, HOW can I GET MY WORK I'M BACK with the HELP of VISTA 32

    ODT and ODS are files created by OpenOffice application.

    You have installed OpenOffice?

    http://download.CNET.com/OpenOffice-org/3000-18483_4-10263109.html

Maybe you are looking for

  • Saved passwords are gone; just upgraded to Firefox 34.0.5

    I've just (accidentally) updated for Firefox 34.0.5 for desktop PC, and now all my saved passwords are gone. I do not remove them. How? Why? What can I do to get back them? I am really annoyed at Mozilla to be always on my face to be upgraded, now th

  • I use add time to find and organize research, FF34 only has no search box, how can I add a?

    I tend to use the Site search, if available, instead, bookmarks, I use "add to search bar" to make the correct xml file, then I use to organize research to the group by category... (373 user research currently xml files) as soon as FireFox put to upg

  • Questions of AutoCorrect.

    Is it possible to add acronyms in the dictionary of AutoCorrect on my MacBook Pro mid 2012? Often as I'm looking for something or typing an e-mail, AutoCorrect will change my acronym and it makes me or send an e-mail that makes no sense, or I spend 5

  • Are there any cd rom on the new MacBook Pro drive?

    You buy a separate CD-ROM for all MacBook Pro now?

  • Microsoft gift cards

    I have four cards of microsoft gift of $50.00 dollars I want to use. When I enter my code of gift cards there is a message saying that the number is incorrect. I was reading on the back of the card and he said: "this gift card does not expire" howeve