Fixed Pipeline mode slow sequence slicing for Delay, and PulsePort instructions.
Changed Status variable RunSignature to include the expression memory into the signature. Changing constants in a program was not giving a different signature. This caused LoadFieldCal to erroneously load the calibration data.
Improved FieldCal: 1) added more checking for successful file creation. 2) improved checking to determine whether or not to use existing calibration file. 3) Added checking for reading and writing the file created. Will now give an error if the file cannot be created due to full disk. 4) include the reps as part of the signature used to determine whether or not to create a new file. Reps was changed and the old file was still used. This confused the FieldCal wizard. Also added checking for the gf_raw parameter to force it to be the same size as the other arrays, etc. Fixed gf_raw when indexing into an array with reps set to 1. 5) Change FieldCal to give a compile error if KnownVar and MeasVar are different sizes. 6) added checking to make sure valid options are used for FielCalStrain. 7) if reps is a constant it must either be 1 or the size of the measurement array for FieldCal wizard to work properly. Other sizes will now give compile error.
Fixed Alias problem when declaring an alias array. Very rarely an obscure and incorrect compile error resulted due to uninitialized memory.
Changed FFT and FFTSpa options 1..4 to correctly return DC and Nyquist values.
Changed compiler and pre-compiler to flag an error for alias declarations that are clearly illegal.
Fixed Precompiler checking for valid program filename length.
Fixed illegal units declaration from crashing the pre-compiler.
Fixed FFTSample with Real/Imaginary spectral binning option for CR9052.
Improved Tablefile: 1) initialization of the current file number when first starting up is fixed. 2) check to make sure the card bytes free is correct before verifying that the files will fit. 3) Fixed TOB1 data file type when using Boolean data type. 4) change TOA5 data file type in to express 7 significant digits instead of 5 for IEEE4 data. 5) Added CSIXML data file type.
Improved CalFile filename parameter to allow all types of strings.
Fixed ClockSet to work with a Long array and with a string.
Added checking of the length of the program file name to make sure it will run in the datalogger.
Fixed spatial instructions, Sample and MoveBytes to work correctly with an array of TableName.FieldName data.
Fixed expression that is Long + String or Long & String.
Changed NSEC data table field so that if the source is a float, it must be dimensioned >= 7 to avoid using incorrect values for the source.
Added a method to access data via a time stamp instead of record number. In GetRecord(Dest,TableName,N) and TableName.FieldName(M,N), if N is negative, it references a timestamp of Secs Since 1990.
Improved CustomMenus: 1) allow string variables to be used as names (left side of displayvalue). 2) don't leave '>' at end of line, if no sub menu, when scrolling.
Fixed storing Long type to FP2.
Changed so Long &H80000000 (NAN) is stored as FP2 -7999 instead of 0.
Changed so +INF float is converted to string as "+INF" instead of "INF"
Changed so Float to Long +INF is converted to most positive integer instead of most negative integer.
When Sampling TableName.TimeStamp into a field of type NSEC, give the full resolution of the timestamp instead of only 1 second resolution.
For Time of Maximum and Time of Minimum, use the timestamp of the sequence that calls the table, not necessarily the main scan's timestamp.
Improved GetRecord: 1) when there are no records stored in the Data Table source and when one or more of the fields in the Data Table are of type String and when the destination array is not of type String. In this case, GetRecord writes beyond the bounds of the destination variable array. 2) changed to give out of bounds warning, and not proceed if destination array is not large enough to hold data.
Fixed calling subroutines with a variable indexed string array.
Fixed IfTime(), WorstCase(), and Timer() functions to use the correct timestamp when called from a subroutine.
If out of memory errors occur when creating tables, stop the task and let the software get the error. Don't continue running or system may crash. This will occur if variables are too large to fit in memory.
Changed Status table such that if there are no DataTables and/or no Slow Sequences, their respective fields are eliminated.
Changed RealTime(X) to allow X to be declared as type LONG.
Changed Round() function to be perfectly symmetrical.