SIRXS Software Problem Reports
|
---|
This listing shows software problem reports and enhancements ordered
by the revision number and release date.
Revision 20 Released January 2016
Fixed/implemented in revision 20
- Command lines length increased
- Command lines can now be up to 510 characters (increased from 254).
Severity: Enhancement
GET VARS and PUT VARS new features
- The two commands have been upgraded such that the features mirror each other. Both commands allow:
Use of "TO" to specify variable lists
Use of arrays as local variables
Specification of prefix or suffix for local variables
Use of name (not in quotes) as prefix or suffix
Severity: Enhancement
- Changed processing of input on long running programs to keep 'Break' function enabled
- If there was a long running SIR program and the user clicked the mouse or pressed any key other than "Break" then the SIR window title bar would say "Not responding" and any output scrolling would disappear for the duration of the program execution.
Note: This means that the program is not waiting as far as windows is concerned (it can process input) and so does not display a windows waiting sysmbol such as an hourglass or spinning circle.
Severity: Enhancement
- Text in quotes can be split across command lines.
- Text in quotes can be split across input lines. Trailing blanks are ignored but leading blanks on subsequent lines are treated as part of the string.
Severity: Enhancement
- Length of labels increased
- Maximum length of labels has been standardised to 254 characters. This applies to
VALUE LABELS and VARIABLE LABELS .
Severity: Enhancement
- New TRACE feature to trace control into/out of PQL subroutines for debugging.
- Subroutine tracing displays the subroutine name when it is entered during a PQL execution and displays a message when control is returned to the calling program. Subroutine tracing is always turned off by default and is automatically turned off when the main program finishes execution.
On a main retrieval/program, specifying the TRACE option turns on subroutine tracing immediately for the subsequent execution. NOTRACE is the default and has no effect.This setting is not saved with any saved executable.
On a subroutine command, if TRACE or NOTRACE is not specified, tracing is controlled by the main program setting. If TRACE or NOTRACE is specified, the setting is saved with the subroutine and controls tracing when the subroutine is executed and for any further subrouines called below that subroutine. The main program setting is restored when the subroutine returns control. This enables a subset of subroutines to be traced for debugging purposes.
Note that tracing can also be turned on with an option on the PRINT BACK command.
Severity: Enhancement
- New BUFEXIST function
num = BUFEXIST(buffer_name_expression)
Returns the buffer number of the specified buffer name.
Returns zero if the buffer name does not exist.
Severity: Enhancement
- New BUFLINES function
num = BUFLINES(buffer_name_expression)
Returns the number of lines in the specified buffer. Returns -1 if the buffer name does not exist. A zero return value indicates an existing, empty buffer.
Severity: Enhancement
- Enhanced number of variables for functions with lists of variables
- There are a number of functions such as
CNT which can have lists of variables. The list limit was 128 variables and this has been increased to 512.
Severity: Enhancement
- New EXISTSR function
num = EXISTSR (varname)
Returns 1 if any value of varname (real or string) found during a PROCESS REC or PROCESS ROWS loop is not undefined or defined as missing. Returns zero if all values are undefined or defined as missing.
Severity: Enhancement
- Enhanced set of functions which include missing/excluded values
- There are a number of functions such as
CNT which process variables and exclude variables which are undefined or missing/excluded. The set of functions has been increased with versions that only exclude undefined values i.e. missing/excluded values are included. These functions have an "X" appended to the name of the corresponding function and are:
num = CNTRX (varname) Returns the number of values of varname (real or string) found during a PROCESS REC or PROCESS ROWS loop that are not undefined. Returns zero if all values are undefined.
num = CNTX (varname1, varname2, ..... varname512) Counts the number of values in the list that are not undefined. There may be up to 512 values in the list, separated by commas. They may be real or string variables but all must be of the same type.
num = EXISTSRX (varname) Returns 1 if any value of varname (real or string) found during a PROCESS REC or PROCESS ROWS loop is not undefined. Returns zero if all values are undefined.
num = EXISTSX (varname) Returns 1 if value of named variable is not undefined. Returns zero if value undefined.
num = NEXISTS (varname) Returns 1 if value of named variable is undefined. Returns zero if value is not undefined.
Severity: Enhancement
- New NUMBRC function
num = NUMBERC (string)
Tests whether a string represents a valid number. The string can be a string constant, variable name or expression and should contain only numerical characters, at most one decimal point and a plus or minus sign or is in E+exponent format. The string may have blanks to start and all characters are processed. The function returns the following codes:
undefined if undefined
-1 if not a valid number string
0 if number is blank
If the string translates correctly to a real*8 number, it is then assigned to more restrictive formats starting with Integer*1. If the most restrictive format tests equal to the real*8 value, then the return value is set to to that.
1 Valid integer that could be stored in an Integer*1 variable
2 Valid integer that could be stored in an Integer*2 variable
4 Valid integer that could be stored in an Integer*4 variable
8 Valid floating point number that could be stored accurately in a REAL*4 variable
16 Valid floating point number that could only be stored in a REAL*8 number
Severity: Enhancement
- New DBNUM function
num = DBNUM (database_name)
Returns the number (nth) of a connected database.
Severity: Enhancement
- New DBATTR function
str = DBATTR (nth)
Returns the attribute name of the first file of the nth connected database.
Severity: Enhancement
- New DBPRE function
str = DBPRE (nth)
Returns the prefix which is the fully qualified directory of the nth connected database.
Severity: Enhancement
- Get Master functions did not check parameters properly.
-
The Master functions request information from master (e.g. name of nth database).
If the parameter was negative or greater than nth, this was not properly checked for and reported as an error. Invalid data might be returned or Master might fail.
Severity: Moderate
Status:Closed - Fixed
Example:
compute x = GETMDBN(0)
Workaround:
Use functions to get the number and only pass valid parameters > 0 and =< number.
compute x = system(69)
for i = 1,x
. compute z = GETMDBN(i)
rof
- DO REPEAT, INCLUDE and PRINT BACK were not operative within a PQLForm
-
PQLForms compilation is a two part process. The first part generates PQL and then the PQL is compiled in the normal manner.
The text processing environment commands were ignored during the generation of PQL.
Severity: Moderate
Status:Closed - Fixed
Workaround:
Cut and paste the required pieces of code physically into the form source.
- PQLForms now allows text style fields that displays a multi-line text control and creates/displays a named buffer
- The PQLForms
FIELD command now allows a TYPE BUFFER n clause. This generates a text control n lines deep. Data is automatically passed between the control and a named buffer which has the same name as the field.
The PQLForms screen painter allows for this new control when a new local variable is defined. Specify the type as "Buffer" from the drop down list.
It is the developer's responsibility to populate the buffer when a record is read and to save the updated text when the record is written - typically using the READ and WRITE clauses on the SCREEN command.
Severity:Enhancement
- PQLForms painter incorrectly processed user specified code for specific variables
- The PQLForms painter allows users to specify PQL code to operate at particular points in the form. Under certain circumstances, this code was not in the correct place.
Severity: Moderate
Status:Closed - Fixed
Workaround:
Specify the code at a different point in the painter.
- PQLForms painter prompt type did not enable EDIT control properly
- The PQLForms painter allows users to specify a variable label by entering text. This was not enabled properly.
Severity: Moderate
Status:Closed - Fixed
Workaround:
Specify the variable label in the schema.
CHECK ITEM function can be specified for a CHOICE control
-
A
CHOICE control is a pull-down list and the CHECK ITEM function displays the list.
Severity: Enhancement
CLICK is a new gui command that simulates the user clicking on a control.
CLICK simulates the user choosing (CLICKing) the appropriate control.
The program then continues as if a new message has been received. i.e no further commands are processed after the CLICK command and control returns to the appropriate message block.
CLICK does not alter the visual appearance of the dialog.
Severity: Enhancement
SET ITEM FONT allows values values in the SIZE parameter
- The
SET ITEM FONT command now operates by increasing or decreasing the font size n times as specified in the SIZE parameter, rather than having to repeat the command multiple times.
Severity: Enhancement
- Double clicking the mouse on the spreadsheet record selection didn't work
- Double clicking the mouse on the spreadsheet record is supposed to run the spreadsheet but didn't.
Severity: Minor
Status:Closed - Fixed
Workaround:
Use the OK button.
- Number of record types allowed was one less than specified in schema
- Could not create the last record type of the specified number. e.g. If 30 was the maximum, only 29 could be created.
Severity: Minor
Status:Closed - Fixed
Workaround:
Specify a higher maximum.
REDEFINE ARRAY set an error limit of zero
- The
REDEFINE ARRAY command accidently set an error limit of zero which suppressed subsequent error messages.
Severity: Minor
Status:Closed - Fixed
Workaround:
Specify an error limit after this command.
- Conflict between PQL compilation and some environment commands such as
IFNOTMEMBER
- The
IFNOTMEMBER and related IFcond SKIP environment commands use internal constants. If these were specified in a set of PQL commands being compiled, errors were introduced.
Severity: Minor
Status:Closed - Fixed
Workaround:
Avoid using these commands inside PQL compilations.
- CIR variable aliases not handled properly on Unload/Reload
- Any specified aliases on CIR variables were not unloaded properly and so the reload might fail.
Severity: Severe
Status:Closed - Fixed
Workaround:
Avoid using ALIAS for CIR variables.
- SQL Preset problem
- If a single character had an SQL
PRESET value, this was not stored properly.
Severity: Moderate
Status:Closed - Fixed
Workaround:
Avoid using single character PRESET in SQL.
- SQL Import problem
- If the first character in an imported line was blank, this caused import problems.
Severity: Moderate
Status:Closed - Fixed
Workaround:
Avoid using SQL import and rebuild tabfiles in other ways.
Revision 19 Released August 2014
Fixed in revision 19
- GUI Window gives Not Responding message and does not show updated output when interacting with the window while a PQL program is running
-
GUI Window gives Not Responding message and does not show updated output when interacting with the window while a PQL program is running
Severity: Minor
Status: Closed - Fixed
Example:
Run a PQL program that takes several minutes to execute. While the program is running, click the window title bar a few times.
Workaround:
Do not try to interact with the window while the PQL program is running. If it does go Not Responding then wait for the program to finish
- RELOAD created corrupt database if last index block exactly full
-
RELOAD created corrupt database if last index block exactly full
Severity: Serious
Status: Closed - Fixed
Example:
Workaround:
1) Do not completely delete a database until successful unload / reload / verify.
2) If the subsequent verify shows corruptions then restore the old database, apply another update then unload / reload / verify again.
- SPSS SAVE FILES with very long strings followed by variables with value labels
-
SPSS SAVE FILES with very long strings followed by variables with value labels
Severity: Moderate
Status: Closed - Fixed
Example:
program
string*261 var1
integer var2
value labels var2 (1) "one"
perform procs
spss save file filename="test261.sav"
end program
Workaround:
Shorten the string or put the long strings at the end of the file.
- ERROR LIMIT warning given erroneously
-
ERROR LIMIT warning given erroneously
Severity: Minor
Status: Closed - Fixed
Example:
Workaround:
- Temporary filename updated to include process id to avoid possible clashed with multiple instances of SIR/XS
-
Temporary filename updated to include process id to avoid possible clashed with multiple instances of SIR/XS
Severity: New Feature
Status: Closed - Fixed
Example:
Edit a member and note the temporary filename used.
Workaround:
- VALIDATE wrong results when referencing a constant
-
VALIDATE wrong results when referencing a constant
Severity: Moderate
Status: Closed - Fixed
a database with a string variable has a VALIDATE using a constant value that should fit but gives a 7 (text truncated). If I use a variable with the same value then it returns 0.
This doesn't happen with any string variable - it depends on VAR RANGES of another string variable.
Example:
PROGRAM
STRING TEST_VALUE
TEST_VALUE = '12'
WRITE [VALIDATE(1,"TESTVAR", '12' )]
WRITE [VALIDATE(1,"TESTVAR", TEST_VALUE)]
END PROGRAM
Start program translation
Start program execution
7
0
End program execution
Workaround:
Use a variable rather than a constant.
- ODBC truncating column names to 32 characters
-
ODBC truncating column names to 32 characters
Severity: Moderate
Status: Closed - Fixed
ODBC reads of an excel spreadsheet that has column names > 32 characters and these are being truncated in the COLNAME function.
Example:
Workaround:
Use COLVALS for "COLUMN_NAME" from the ODBCCOLS function.
- REDEFINING multi-dimensional arrays upgraded
-
REDEFINING multi-dimensional arrays upgraded
Severity: New Feature
Status: Closed - Fixed
Example:
program
integer array x (10)
set x * (1,2,3,4,5,6,7,8,9,10)
redefine array "X" (2,5)
for i = 1,2
for j = 1,5
write (stdout,noeol) x(i,j) ","
end for
write
end for
end program
Workaround:
- Unknown stack command when MOVE VARS/PUT VARS referenced too many variables.
-
Unknown stack command when MOVE VARS/PUT VARS referenced too many variables.
Severity: Moderate
Status: Closed - Fixed
Example:
Workaround:
- Procfile compare dialog added features.
-
Procfile compare dialog added features.
Severity: New Feature
Status: Closed - Fixed
Added "Select Newer" and other functionality.
Example:
Workaround:
- Processing records in reverse through a secondary index stopped after first record
-
Processing records in reverse through a secondary index stopped after first record
Severity: Moderate
Status: Closed - Fixed
Example:
retrieval noautocase
set start end ("AAA","BBB")
process record 1 indexed by STR with (start,end) reverse
write key str1 str2
end record
end retrieval
Workaround:
- Issues with multiple PROCESS JOURNAL executions in a FOR LOOP
-
Issues with multiple PROCESS JOURNAL executions in a FOR LOOP
Severity: Moderate
Status: Closed - Fixed
Example:
Workaround:
- Master updates with secondary indexes gave problems
-
Master updates with secondary indexes gave problems
Severity: Serious
Status: Closed - Fixed
Example:
Workaround:
- File names (attributes) might not match between OPEN and READ when specified as text filenames
-
File names (attributes) might not match between OPEN and READ when specified as text filenames
Severity: Moderate
Status: Closed - Fixed
Example:
open 'data.txt' lrecl=400 read
read ('data.txt') data (a400)
Workaround:
use OPEN attr DSN="data.txt" LRECL=400 READ
READ (attr) DATA (A400)
Revision 18 Released July 2013
Fixed in revision 18
- PQLForms long strings (>255) truncated on input.
-
PQLForms long strings (>255) truncated on input.
Severity: Moderate
Status: Closed - Fixed
Example:
Define a database string variable with length more than 255 then enter more than 255 characters through PQLForms.
Workaround:
- SORT ARRAY BY behaviour for tied values in keys inconsistent.
-
SORT ARRAY BY behaviour for tied values in keys inconsistent.
Severity: Minor
Status: Closed - Fixed
When two arrays are sorted using another array (BY ARRAY) then the sorted arrays should be sequenced the same way regradless of tied values.
ALTERNATE keyword allows row then column rather than column,row.
Example:
program
. integer * 1 array SCORE# GAMES# RANK# SORTER# (5)
. string * 32 array NAME$ (5)
. NAME$(1) = 'Bruss';SCORE#(1) = 31;GAMES#(1) = 54
. NAME$(2) = 'Ben' ;SCORE#(2) = 33;GAMES#(2) = 15
. NAME$(3) = 'Ryan' ;SCORE#(3) = 34;GAMES#(3) = 32
. NAME$(4) = 'John' ;SCORE#(4) = 42;GAMES#(4) = 28
. NAME$(5) = 'Jake' ;SCORE#(5) = 33;GAMES#(5) = 6
. for x = 1,5
. COMPUTE SORTER#(x) = X
. end for
. sort SORTER# by SCORE#
. for x = 1,5
. compute rank#(sorter#(x)) = x
. end for
. sort NAME$ by RANK#
. sort GAMES# by RANK#
. sort SCORE# by RANK#
. for x = 1,5
. write X NAME$(x) 17t SCORE#(x) 21t GAMES#(x)
. end for
end program
Workaround:
- EXECUTE DBMS command problem when issued within database processing
-
EXECUTE DBMS command problem when issued within database processing
Severity: Moderate
Status: Closed - Fixed
This can occur in a caseless database, when using EXECUTE DBMS with a subroutine
Example:
RETRIEVAL UPDATE
EXECUTE DBMS 'INCLUDE BUFFER "B"'
write "1"
EXECUTE SUBROUTINE SYSTEM.EMPLOYEE
write "4"
process record 1
write "5"
exit record
end record
END RETRIEVAL
Workaround:
- In-use flag and VERIFY interaction updated to be more logical
-
In-use flag and VERIFY interaction updated to be more logical
Severity: New Feature
Status: Closed - Fixed
Example:
Workaround:
- REDEFINE ARRAY gave strange results when multiple arrays defined
-
REDEFINE ARRAY gave strange results when multiple arrays defined
Severity: Moderate
Status: Closed - Fixed
Example:
retrieval noautocase
. integer * 1 WINS# LOSSES# YES NO P# ONE# TWO# MATCHES#
. integer * 1 T1W# T2W# T1G1# T1G2# T1G3# T2G1# T2G2# T2G3#
. integer * 2 FOR# AGAINST# T# TEAMS#
. string * 32 ONE$ TWO$ T1P1$ T1P2$ T2P1$ T2P2$
. date DATE_ ('MM/DD/YYYY')
. real * 8 array SORT# (225)
. integer * 2 array SCORE# GAMES# (225)
. string * 32 array TEAM$ WINS$ SCORE$ (225)
. string * 32 array N$ (14)
. string * 32 array TT$ (14,14)
. integer * 2 array TF# TA# TW# TL# TG# TS# TR# (14,14)
. integer * 2 array F# A# W# L# G# S# R# V# (14)
. TEAMS# = 16
. redefine array 'TEAM$' (TEAMS#)
end retrieval
Workaround:
- SEPCHAR keyword allowed for csv format in batch file processing
-
SEPCHAR keyword allowed for csv format in batch file processing
Severity: New Feature
Status: Closed - Fixed
Example:
SIR FILE DUMP RECTYPE=1 FILENAME="data.csv" CSV SEPCHAR="|"
SIR FILE DUMP RECTYPE=1 FILENAME="data.csv" CSV SEPCHAR=TAB
Workaround:
- DESCENDING did not work when sorting arrays
-
DESCENDING did not work when sorting arrays
Severity: Moderate
Status: Closed - Fixed
Example:
Workaround:
- WRITE ALL erroneously included a dummy FOR loop control variable
-
WRITE ALL erroneously included a dummy FOR loop control variable
Severity: Minor
Status: Closed - Fixed
Example:
PROGRAM
FOR I = 1,3
WRITE ALL
END FOR
END PROGRAM
Workaround:
- Master could crash if data records packed and encrypted when length close to multiple of 32
-
Master could crash if data records packed and encrypted when length close to multiple of 32
Severity: Moderate
Status: Closed - Fixed
Example:
Workaround:
- Functions that returned names did not trim trailing blanks consistently.
-
Functions that returned names did not trim trailing blanks consistently. Also could return zero length rather than undefined.
Severity: Minor
Status: Closed - Fixed
Example:
WRITE ['"'+dbname(0)+'"']
"COMPANY "
Workaround:
WRITE ['"'+TRIM(dbname(0))+'"']
"COMPANY"
- PQLForms problem with CALL VIA on caseless databases
-
PQLForms problem with CALL VIA on caseless databases
Severity: Moderate
Status: Closed - Fixed
Example:
. SCREEN MENU MAINMENU
NOBUTTON
. CALL SCREEN REC_2
AT 4,1 WIDTH 13
PROMPT "REC_2"
VIA ("TWO")
. FBUTTON EXIT
Workaround:
. SCREEN MENU MAINMENU
NOBUTTON
. CALL SCREEN REC_2
AT 4,1 WIDTH 13
PROMPT "REC_2"
VIA (1,"TWO")
. FBUTTON EXIT
- Problem with record counts on multiple journal restore
-
Problem with record counts on multiple journal restore
Severity: Moderate
Status: Closed - Fixed
Example:
Workaround:
- Problems on journal restore with secondary indexes
-
Problems on journal restore with secondary indexes
Severity: Moderate
Status: Closed - Fixed
Example:
Workaround:
- Treatment of padded string key fields made more consistent. NOTRIM keyword on EXPORT/IMPORT
-
Treatment of padded string key fields made more consistent. NOTRIM keyword on EXPORT/IMPORT
Severity: New Feature
Status: Closed - Fixed
Example:
EXPORT FILENAME="TEST.exp" NOTRIM
Workaround:
- VALID VALUES allows a TO specification
-
VALID VALUES allows a TO specification
Severity: New Feature
Status: Closed - Fixed
Example:
VALID VALUES X (1 to 50, 98 99)
Workaround:
VALID VALUES X (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,98,99)
- WRITE SCHEMA allows new RECTYPES of CIR, STANDARD and ALL.
-
WRITE SCHEMA allows new RECTYPES of CIR, STANDARD and ALL.
Severity: New Feature
Status: Closed - Fixed
Example:
WRITE SCHEMA RECTYPE=CIR
Workaround:
- Very long expressions crashed.
-
Very long expressions crashed.
Severity: Moderate
Status: Closed - Fixed
Expressions now explicitly limited to about 820 components. Note evaluating very long expressions is slow and is thus not recommended. Multiple IF statements should be used instead.
Example:
IFTHEN (A EQ 1 OR A EQ 2 OR A EQ 3 ... OR A EQ 999)
ENDIF
Workaround:
SET TEST (0)
IF (A EQ 1) SET TEST (1)
IF (A EQ 2) SET TEST (1)
IF (A EQ 3) SET TEST (1)
...
IF (A EQ 999) SET TEST (1)
IFTHEN (TEST EQ 1)
ENDIF
- SHOWMISS function returned wrong values with dates/times
-
SHOWMISS function returned wrong values with dates/times
Severity: Moderate
Status: Closed - Fixed
dates (& times) with system missing as their value, showmiss will write out some constant from elsewhere in the program.
Example:
program showmiss
date x ("mmddyyyy")
write x "!?"
if (0) write "you will never see this"
end program
Start program translation
Start program execution
you will never see this !?
End program execution
Workaround:
- STANDARD SCHEMA not written export file after changing database settings
-
STANDARD SCHEMA not written export file after changing database settings
Severity: Moderate
Status: Closed - Fixed
Example:
Workaround:
- Old style FORMS didn't connect to tabfiles properly
-
Old style FORMS didn't connect to tabfiles properly
Severity: Moderate
Status: Closed - Fixed
Example:
Workaround:
- $SQLTYPE in ODBC gave error if not connected to a database
-
$SQLTYPE in ODBC gave error if not connected to a database
Severity: Moderate
Status: Closed - Fixed
Some ODBC clients (eg MS Query) use select * from $SQLTYPE to get information about variable types. This gives an error if you are not connected to a DATABASE but the information is generic and should not need any database (or tabfile) connected.
Example:
start sirSQL, don't connect to a database but do connect to a tabfile (or don't connect to anything)
Tabfile TF created on May 16, 2012 at 16:01:57 connected.
select * from $SQLTYPE
No databases currently attached. $SQLTYPE
Errors in processing FROM clause $SQLTYPE
Workaround:
- DATA LIST command can be specified without columns or asterisk
-
New Feature DATA LIST command can be specified without columns or asterisk
Severity: New Feature
Status: Closed - Fixed
Example:
DATA LIST
ID (I2)
NAME (A25)
GENDER (I1)
MARSTAT (I1)
SSN (A11)
BIRTHDAY (DATE'MMIDDIYY')
EDUC (I1)
NDEPENDS (I1)
CURRPOS (I1)
SALARY (I2)
CURRDATE (DATE'MMIDDIYY')
Workaround:
- SCHEMA WRITE new keyword NOINDEX stops write of indexes for any record types being written
-
New Feature SCHEMA WRITE new keyword NOINDEX stops write of indexes for any record types being written
Severity: New Feature
Status: Closed - Fixed
Example:
WRITE SCHEMA NOINDEX
Workaround:
- SCHEMA WRITE new keyword LOCK will write the LOCK on the schema for all the rectypes being written
-
New Feature SCHEMA WRITE new keyword LOCK will write the LOCK on the schema for all the rectypes being written
Severity: New Feature
Status: Closed - Fixed
Example:
WRITE SCHEMA LOCK
Workaround:
- SCHEMA WRITE new keyword NOCOLS will suppress all column references on the schema for all the rectypes being written whether these are currently specified or not
-
New Feature SCHEMA WRITE new keyword NOCOLS will suppress all column references on the schema for all the rectypes being written whether these are currently specified or not
Severity: New Feature
Status: Closed - Fixed
Example:
WRITE SCHEMA NOCOLS
Workaround:
17 Released May 2012
Fixed in revision 17
- Deleting record type then unload/reload gave CIR REC count mismatch errors on Verify
-
Deleting record type then unload/reload gave CIR REC count mismatch errors on Verify
Severity: Minore
Status: Closed - Fixed
Example:
Workaround:
VERIFY FILE / PATCH
Fixed in revision 16
- Interactive READ crashes on unix platforms
-
210801 Interactive READ crashes on unix platforms
Severity: Minor
Status: Closed - Fixed
The example program below will crash SIR when the user clicks OK or Cancel on the interactive READ in
PQL.
Example:
program
string*10 numb
read "Enter a number" numb
write numb
end program
Workaround:
Use DISPLAY TEXTBOX
program
string*10 numb
DISPLAY TEXTBOX "Enter a number" RESPONSE len, numb
write numb
end program
- UNLOAD/PURGE/RELOAD procedure fails if someone else has DB connected
-
210798 UNLOAD/PURGE/RELOAD procedure fails if someone else has DB connected
Severity: Minor
Status: Closed - Fixed
The UNLOAD/PURGE/RELOAD procedure will fail at the DELETE/RENAME stage if someone else
has the database connected. The .sr4 file does get deleted and needs to be restored
from the UNLOAD step.
This is fixed so that it will still fail but leave the database files in tact.
Example:
Workaround:
Reload the procedure file from the generated unload file.
Make sure all users are disconnected from the database.
- New Options Added To WRITE SCHEMA
-
210795 New Options Added To WRITE SCHEMA
Severity: New Feature
Status: Closed - Feature
NOINDEX not write any indexes for any of the record types being written.
LOCK will write the LOCK on the schema for all the rectypes being written.
NOCOLS will suppress all column references on the schema for all the rectypes being written whether
these are currently specified or not.
SCHEMA definition to allow for no column specification in DATA LIST.
Example:
DATA LIST ID (I1)
VAR1 (I4)
VAR2 (D0)
VAR2B (F0)
Workaround:
- Generic toolbar bitmap displayed instead of error
-
210792 Generic toolbar bitmap displayed instead of error
Severity: New Feature
Status: Closed - Feature
In a menu program, if you specify a bitmap that is not in the directory then you get Default.bmp
instead of the error message.
Example:
Workaround:
Put the required bitmap file in the tbbb directory.
- SPREADSHEET in LABELS mode shows blank if there is no label for a particular value
-
210789 SPREADSHEET in LABELS mode shows blank if there is no label for a particular value
Severity: Minor
Status: Closed - Fixed
If a variable has labels for some values and not others (eg 99 "99 or more") then
the spreadsheet /labels will only show data for those values with labels.
Fixed to show the actual value when no label exists.
Example:
Workaround:
- ALL keyword on variable lists will now mean "ALL not previously listed"
-
210786 ALL keyword on variable lists will now mean "ALL not previously listed"
Severity: New Feature
Status: Closed - Feature
The ALL keyword can now be used at the end of a list of variables to mean ALL variables not previously
in the list. This way you can specify the order of some of the variables then get the rest in their
default ORDER
Example:
GET VARS GENDER MARSTAT ALL
spss save file filename='PREDICT\DAILY\OUT\MULTI.SAV'
variables=PREDICTN INTERVAL ALL
program
integer one two three
string four five
set one two three four five (1,2,3,"4","5")
write five all
end program
5 1 2 3 4
Workaround:
Specify all the variables in the required order
- Clone a record in SIR Spreadsheet converts missing values to undefined.
-
210783 Clone a record in SIR Spreadsheet converts missing values to undefined.
Severity: Minor
Status: Closed - Fixed
When you clone a record in SIR Spreadsheet, you lose user defined missing values (they get set to
system missing).
Example:
Workaround:
Use a GET VARS / PUT VARS in a PQL program to duplicate a record.
- It is not intuitive to set a field to undefined in PQLForms
-
210780 It is not intuitive to set a field to undefined in PQLForms
Severity: Minor
Status: Closed - Fixed
When a user accidentally enters something in a pqlforms field and that variable does not have
missing as a valid value then it is not easy or intuitive to undo the entry. (there is ctrl+u to set
the DB value to undefined).
Now, after the fix, entering a BLANK into a field that does not have BLANK as a missing value will
set the value to undefined.
If blank is a valid missing value then it is stored correctly.
If the field does not have blank as a valid value because it is required then that would need to be
caught elsewhere.
Example:
Workaround:
Press Ctrl+u to set any edit field to undefined.
- CASE IS / END CASE IS inside a PROCESS RECORD ... INDEXED BY gives an error
-
210777 CASE IS / END CASE IS inside a PROCESS RECORD ... INDEXED BY gives an error
Severity: Minor
Status: Closed - Fixed
When you process a record using an index you are in a case at execution time so you
can get to the CIR and process other records belonging to the current case.
The program below will work without the red CASE IS block.
With the case is, the compiler gets confused and complains that the process record occup
is not inside a case block.
Example:
retrieval
process record employee indexed by name from ("M") thru ("T")
write name gender
case is 1
end case is
process record occup
write 5x division
end record
end record
end retrieval
Workaround:
Workarounds would be to include another case block or to put CASE into a subprocedure.
retrieval
process record employee indexed by name from ("M") thru ("T")
write name gender
get vars id
case is 1
end case is
case is id
process record occup
write 5x division
end record
end case
end record
end retrieval
retrieval
process record employee indexed by name from ("M") thru ("T")
write name gender
execute subprocedure caseis
process record occup
write 5x division
end record
end record
subprocedure caseis
case is 1
end case is
end subprocedure
end retrieval
- New OPEN buttion in File attributes... dialog
-
210774 New OPEN buttion in File attributes... dialog
Severity: New Feature
Status: Closed - Feature
The Open button in file attributes will attempt to "open" the selected file.
Example:
Workaround:
Open the file from the operating system
- Microsoft Query hangs on connecting to a SIR ODBC data source.
-
210771 Microsoft Query hangs on connecting to a SIR ODBC data source.
Severity: Moderate
Status: Closed - Fixed
Microsoft Query hangs when trying to display the SIR ODBC database connection dialog.
Example:
Workaround:
Export the data from SIR to CSV and import into Microsoft.
- PQLForms: choosing a keyfields value from a choice list does not trigger record retrieval
-
210768 PQLForms: choosing a keyfields value from a choice list does not trigger record retrieval
Severity: Minor
Status: Closed - Fixed
When the last key field on a PQLForm is modified then the record data should be retrieved. This does
not happen if the key field is modified by selecting the value from a picklist.
Example:
In COMPANY OCCUP default PQLForm, type in case id 1 and select Laborer from the position drop
down list. The record is not retrieved.
Workaround:
Type the value into the text area
- Problems with CAT VARS as keys in spreadsheet
-
210765 Problems with CAT VARS as keys in spreadsheet
Severity: Moderate
Status: Closed - Fixed
A caseless with a record type that has a cat var for a key may not show all records in the spreadsheet.
Example:
A caseless with one record type that has a cat var and an integer for keys.
There are 9 records:
aaa 1
aaa 2
aaa 3
bbb 1
bbb 2
bbb 3
ccc 1
ccc 2
ccc 3
But in the spreadsheet only 5 are visible:
aaa 1
aaa 2
aaa 3
bbb 1
ccc 1
Workaround:
Use integer keys instead of cat vars
- WRITE button in PQLForms sets focus to the first field
-
210762 WRITE button in PQLForms sets focus to the first field
Severity: Minor
Status: Closed - Fixed
If you have a multipage form and want to save entry partway through then it won't stay on the
current field. It returns to the first page.
After this fix you can still press the RESET button to go to the first field.
Example:
Workaround:
User the page buttons to return to the page where you pressed Write.
- BMDP SAVE FILE now creates TEXT output
-
210759 BMDP SAVE FILE now creates TEXT output
Severity: Minor
Status: Closed - Fixed
In newer versions of BMDP software it is easier to execute a text file than to read a BMDP data file.
The text can be modified to run one or more of the BMDP stats procedures.
Example:
RETRIEVAL
. PROCESS CASES ALL
. PROCESS RECORD EMPLOYEE
. GET VARS ID GENDER MARSTAT BIRTHDAY EDUC NDEPENDS
. PERFORM PROCS
. END PROCESS RECORD
. END PROCESS CASES
BMDP SAVE FILE FILENAME = "D:\Development\SirXS\alpha\bmdp.dat"
VARIABLES = ID GENDER MARSTAT BIRTHDAY EDUC NDEPENDS
END RETRIEVAL
/CONTROL COLUMN=80.
/END
/INPUT TITLE='SIR/XS BMDP Proc from database: COMPANY Apr 11, 2012 09:59:37'.
VARIABLES=6.
FORMAT=FREE.
MCHAR='*'.
/VARIABLE NAMES= 'ID','GENDER','MARSTAT','BIRTHDAY','EDUC','NDEPENDS'.
MAXIMUM= (GENDER)2,(MARSTAT)2,(EDUC)6,(NDEPENDS)20.
MINIMUM= (GENDER)1,(MARSTAT)1,(EDUC)1,(NDEPENDS)0.
...
Workaround:
Generate BMDP commands using PQL Write.
- PROCESS ALL RECORD TYPES | PROCESS RECORD [expression]
-
210756 PROCESS ALL RECORD TYPES | PROCESS RECORD [expression]
Severity: New Feature
Status: Closed - Feature
New record processing commands
PROCESS DATA processes all record types in the case
PROCESS DATA [RECTYPE=expression]
A new function CURRREC(0) returns the record currently being processed.
Note that due to compiler restrictions you cannot directly refer to a record variable while
processing a record defined at execution time. Instead you need to use execution time functions such
as VARGET / VARPUT to access record variables.
Example:
retrieval
process case all
process data
COMPUTE RECNO = CURRREC(0)
COMPUTE N = NVARS(RECNO)
WRITE ID RECNO N
FOR I = 1,N
. COMPUTE VN = VARNAME(RECNO,I)
. COMPUTE VVAL = VARGET (VN)
. WRITE ' ' VN VVAL
ROF
end process data
end process case
end retrieval
Workaround:
generate a PQL retrieval using a pql program to process records at run time.
- TO keyword now allowed in LOOKUP, GET VAR varlist
-
210753 TO keyword now allowed in LOOKUP, GET VAR varlist
Severity: New Feature
Status: Closed - Feature
TO keyword now allowed in LOOKUP, GET VAR varlist
[GET VARS { ALL|
target_varlist (including 'TO' lists)|
local_varlist = target_varlist}]
Example:
RETRIEVAL NOAUTOCASE
LOOKUP RECORD COMPANY.EMPLOYEE
GET VARS NAME TO EDUC
USING 10
WRITE NAME TO EDUC
END RETRIEVAL
Workaround:
List all variables required
- Compilation of SUBROUTINES can hang if there are some GUI command errors
-
210750 Compilation of SUBROUTINES can hang if there are some GUI command errors
Severity: Minor
Status: Closed - Fixed
Compilation of SUBROUTINES may hang if there are some types of compilation errors.
Example:
SUBROUTINE SYSTEM.DELETE NODATABASE REPLACE
COMPUTE FRD1__ = 0
. SET ITEM 2,MISS(-1,"VAR1",MISNUM(VAR1))
. SET ITEM 2,MISS(-1,"VAR1",MISNUM(VAR1))
. SET ITEM 2,MISS(-1,"VAR1",MISNUM(VAR1))
END SUBROUTINE
Workaround:
Fix the compilation errors up displayed up to the hang.
- SYSTEM GLOBAL Variable substitution can interfere with DO REPEAT substitution
-
210747 SYSTEM GLOBAL Variable substitution can interfere with DO REPEAT substitution
Severity: Minor
Status: Closed - Fixed
If there is a SYSTEM GLOBAL in the line after a DO REPEAT then the last repeat value is overwritten
If it is a regular user global then all is ok.
Example:
do repeat NUM$ = ONE TWO THREE
c <DBNAME>
remark 'NUM$'
end repeat
ONE
TWO
COMPANY
do repeat NUM$ = ONE TWO THREE
c <DATE>
remark 'NUM$'
end repeat
ONE
TWO
{09:03:35}
Workaround:
put a line between the do repeat command and the line with the global.
do repeat NUM$ = ONE TWO THREE
c
c <DATE>
- RENAME FAMILY does not move its MEMBERS
-
210744 RENAME FAMILY does not move its MEMBERS
Severity: Moderate
Status: Closed - Fixed
if you rename a family then it doesn't keep the members.
Eg in company, the DATA family has four members but after
Example:
RENAME FAMILY DATA TEST
the TEST family is empty.
Workaround:
Create a new family and move members
or export (PWRITE) family and edit the file changing the FAMILY name - then import (PREAD)
- UNLOAD/PURGE/RELOAD reloads to the directory given by the PREFIX attribute
-
210741 UNLOAD/PURGE/RELOAD reloads to the directory given by the PREFIX attribute
Severity: Minor
Status: Closed - Fixed
If you connect to two databases and then make the first one the default,
then the PREFIX attribute is set to the path of the last connected.
The unload/reload dialog assumed this prefix attribute was for the default database.
As this dialog currently gives you the option of either deleting or renaming the database files
then the best place to put the new database is where the old one was.
Example:
Workaround:
Only connect one database or change the PREFIX attribute through Settings/File Attributes...
Fixed in revision 15
- OPEN MEMBER APPEND overwrites existing contents
-
210738 OPEN MEMBER APPEND overwrites existing contents
Severity: Minor
Status: Closed - Fixed
OPENing a member in append mode will overwrite the existing contents.
Example:
program
open mem dsn="EXAMPLES.APPEND" member write
write (mem) "hello"
close mem
end program
program
open mem dsn="EXAMPLES.APPEND" member append
write (mem) "world"
close mem
end program
Workaround:
Use FWRITE to copy the member to a file, append to the file and FREAD it back:
program
execute dbms "FWRITE 'TEMP.TXT' EXAMPLES.HELLO"
. OPEN MEM DSN="TEMP.TXT" APPEND IOSTAT=RC
. WRITE (MEM) "c this appended added"
. CLOSE MEM
execute dbms "DELETE MEMBER EXAMPLES.HELLO /NOINFORM /OK"
execute dbms "FREAD 'TEMP.TXT' EXAMPLES.HELLO"
end program
- CSV SAVE FILE writes double quotes un escaped in string variables
-
210735 CSV SAVE FILE writes double quotes un escaped in string variables
Severity: Minor
Status: Closed - Fixed
If a string variable contains a double quote then it is written to a csv save file as is. This will
confuse any application trying to read the file
Example:
PROGRAM
SET MESS ('Hello "World"')
CSV SAVE FILE FILENAME = "quote.csv"
END PROGRAM
Workaround:
Replace double quotes with double double quotes manually.
- Saving strings longer than 255 characters to SPSS SAVE FILE produces bad file
-
210732 Saving strings longer than 255 characters to SPSS SAVE FILE produces bad file
Severity: Minor
Status: Closed - Fixed
Trying to save long strings to spss save file will produce a bad file.
Example:
PROGRAM
STRING*507 STR507
SET STR507 ("")
FOR STR = 1,51
COMPUTE VAL = FORMAT(STR)
COMPUTE STR507 = STR507+PAD("....+...."," ",10-LEN(VAL),10-LEN(VAL))+VAL
END FOR
PERFORM PROCS
SPSS SAVE FILE FILENAME = "sir507.sav" VARIABLES= STR507
END PROGRAM
Workaround:
Break long strings into segments of 255 characters or fewer
- Old SirForms under master fails to retrieve a record on initialise.
-
210729 Old SirForms under master fails to retrieve a record on initialise.
Severity: Minor
Status: Closed - Fixed
Entering a record key into the keyfields and pressing enter may give an incorrect record not found or
record locked error.
Example:
Workaround:
go into the form record screen and do a "next record"* to retrieve the first record in the database
then change the keys to the record you want to retrieve.
- PROCESS JOURNAL FILENAME=expression can cause odd behaviour
-
210726 PROCESS JOURNAL FILENAME=expression can cause odd behaviour
Severity: Minor
Status: Closed - Fixed
PROCESS JOURNAL FILENAME=expression
Can cause the processing to terminate after one iteration
Example:
PROCESS JOURNAL FILENAME=varname FROM=LEV THRU=LEV
Workaround:
Calculate the filename before compilation - by putting it in a global.
- New CSV option on export
-
210723 New CSV option on export
Severity: New Feature
Status: Closed - Feature
The new CSV clause on EXPORT writes the data section as comma separated values:
All strings are in double quotes;
Lines do not have a final comma (not sure if this is standard csv);
Dates and times are in a standard format (dd-Mmm-YYYY, HH:MM:SS);
Categoricals are written as strings;
System missing (undefined) is indicated by an asterisk *
Numerics blank missing value is written as successive quotes;
There is a special hex format used if strings contain special characters line feed, null or double
quote. This consists of the letter H followed by the hex string in quotes e.g. ,H"0A0022"
Example:
EXPORT FILE FILENAME="MyExport.exp" CSV
Workaround:
- New functions convert to and from hex characters
-
210720 New functions convert to and from hex characters
Severity: New Feature
Status: Closed - Feature
CHARHEX
hexstr = CHARHEX(str)
Returns a hex representation of the input string. Each character is converted to its ASCII value
then that is converted to hexadecimal.
HEXCHAR
str = HEXCHAR(hexstr)
Converts the hexadecimal codes in the input string to their associated ASCII characters.
Example:
COMPUTE HEX1 = CHARHEX("Hello World")
COMPUTE STR = HEXCHAR("48656C6C6F20576F726C64")
Workaround:
- VALUE and VAR LABELS 79 characters long ae truncated to 78 without warning.
-
210717 VALUE and VAR LABELS 79 characters long ae truncated to 78 without warning.
Severity: Minor
Status: Closed - Fixed
VALUE LABELS and VAR LABELS are limited to 78 characters - but you only get an error if you specify 80
characters or more; if the length is 79 then the labels are truncated without notice.
This example, record 2 has 79 character value and var labels:
Example:
VAR LABEL VAR2 'A 79 character variable label.................................................X'
VALUE LABELS VAR2 (1) 'A 79 character value label....................................................X'
which become:
VALUE LABELS VAR2 (1)'A 79 character value label.........................................
VAR LABEL VAR2 'A 79 character variable label.........................................
Workaround:
- String data containing special characters may not export / import properly.
-
210714 String data containing special characters may not export / import properly.
Severity: Minor
Status: Closed - Fixed
String data containing line feed and null characters (eg PQL encrypt() data) will fail to import.
Export now writes these characters in hex character notaion.
Example:
Workaround:
Fixed in revision 14
- PROCESS JOURNAL program compiled when the database is attached will not find master updates
-
210711 PROCESS JOURNAL program compiled when the database is attached will not find master updates
Severity: Minor
Status: Closed - Fixed
Example:
Workaround:
Compile with the database attached
- TEXT File read with very long record length (> 10000 characters) will fail.
-
210708 TEXT File read with very long record length (> 10000 characters) will fail.
Severity: Minor
Status: Closed - Fixed
This applies to batch data input where the number of input columns is greater that 10000
Example:
Workaround:
Make input columns shorter
- Families containing no text members are not recreated on export/import pwrite/pread.
-
210705 Families containing no text members are not recreated on export/import pwrite/pread.
Severity: Minor
Status: Closed - Fixed
This can mean if you have a family containing only compiled procedures and you export import then this
family will no longer exists. You need to create it before you can recompile these members.
Example:
Workaround:
- Some variables don't have their details displayed in the information section of the Select Record dialog.
-
210702 Some variables don't have their details displayed in the information section of the Select Record dialog. <
Severity: Minor
Status: Closed - Fixed
Non-standard variable names don't have their details displayed in the information section of the Select
Record dialog.
Example:
Workaround:
- Tabfile strings displayed incorrectly in spreadsheet
-
210699 Tabfile strings displayed incorrectly in spreadsheet
Severity: Minor
Status: Closed - Fixed
in the spreadsheet you will see that the strings have their third and forth last characters repeated -
so 12345 will display 1232345
If the string is shorter than four characters then the spreadsheet will crash.
The program below writes out the strings correctly - only viewing them in speadsheet will show the
problem.
Example:
create tabfile string
c
retrieval noautocase
c string*1 S1
string*5 S5
string*6 S6
string*20 S20
c set s1 ('1')
set s5 ('12345')
set s6 ('123456')
set s20 ('12345678901234567890')
perform procs
save table string.test
end retrieval
program
process rows string.test
get vars all
write all
end rows
end program
Workaround:
- PREAD does not report the correct number of members read.
-
210696 PREAD does not report the correct number of members read.
Severity: Minor
Status: Closed - Fixed
The number of members read was one more than the reported count
Example:
Workaround:
- MERGE can crash on final warning message
-
210693 MERGE can crash on final warning message
Severity: Minor
Status: Closed - Fixed
If SIR MERGE needed to display a warning message on finalising (eg max key size increased) then it
would crash.
Example:
Workaround:
- VARPUT and null string inconsistancies
-
210690 VARPUT and null string inconsistancies
Severity: Minor
Status: Closed - Fixed
If there are no missing values on a numeric variable then VARPUT(.."") stores undefined not zero -
which is correct.
If there are missing values 0 on a numeric variable then VARPUT(.."") stores the missing associated
with zero - which is doesn't seem right.
If there are missing values BLANK on a numeric variable then VARPUT(.."") stores the missing
associated with BLANK- which is correct.
If you have both BLANK and 0 as missing values then VARPUT(.."") stores the first of these missing
values defined.
Example:
PROGRAM
INTEGER X
MISSING VALUES X (0)
COMPUTE RC = VARPUT("X","")
WRITE X [MISNUM(X)]
END PROGRAM
Incorrectly puts missing value #1 into X.
Workaround:
- TMP files are not deleted when running through sirweb.cgi
-
210687 TMP files are not deleted when running through sirweb.cgi
Severity: Minor
Status: Closed - Fixed
Every time a sirweb.cgi is executed it leaves tmp files behind after it ends.
Example:
Workaround:
Delete these files manually
- VALLABSV and VALLABSP treat dates as string representations of the Julian integer.
-
210684 VALLABSV and VALLABSP treat dates as string representations of the Julian integer.
Severity: Minor
Status: Closed - Fixed
The function VALLABSV returns a string. With dates and times it returns a string representation of the
internal number, not the date or time as specified on the value labels command.
Example:
program
date xx ('dd/mm/yyyy')
time yy ('hh:mm:ss')
missing values xx ('no date')
missing values yy ('no time')
value labels xx ('no date') 'missing value 1' ('10/07/2010') 'some date'
yy ('no time') 'missing value 1' ('12:00:00') 'noon'
write "DATE :"
for i = 1,nvallab(-1,"XX")
write i ") VALUE = " [VALLABSV(-1,"XX",i)] ", LABEL = " [VALLABSN(-1,"XX",i)]
end for
write / "TIME :"
for i = 1,nvallab(-1,"YY")
write i ") VALUE = " [VALLABSV(-1,"YY",i)] ", LABEL = " [VALLABSN(-1,"YY",i)]
end for
Workaround:
Use the DATEMAP function to convert to a date string
- Secondary index file (sr6) grows quickly when updating through master
-
210681 Secondary index file (sr6) grows quickly when updating through master
Severity: Minor
Status: Closed - Fixed
After many updates of an indexed variable the index file is much larger than it should be
Example:
Workaround:
Unload / Reload regularly
- The RECDOC function returns a zero length string when the record label is exactly 32 characters long.
-
210678 The RECDOC function returns a zero length string when the record label is exactly 32 characters long.
Severity: Minor
Status: Closed - Fixed
The RECDOC function returns a zero length string when the record label is exactly 32 characters long.
Example:
RECORD SCHEMA 1 REC_1 'thirty one characters of label!'
RECORD SCHEMA 2 REC_2 'thirty two characters of label1!'
RECORD SCHEMA 3 REC_3 'thirty three characters of label!'
program
write "rec 1 " [recdoc(1,0)]
write "rec 2 " [recdoc(2,0)]
write "rec 3 " [recdoc(3,0)]
end program
rec 1 thirty one characters of label!
rec 2
rec 3 thirty three characters of label!
Workaround:
Add an extra character to the label
- SirForms does not give an audible warning on incorrect entry
-
210675 SirForms does not give an audible warning on incorrect entry
Severity: Minor
Status: Closed - Fixed
There is no beep.
Example:
Workaround:
- Batch Data Input of blanks data into real variables gives an error message
-
210672 Batch Data Input of blanks data into real variables gives an error message
Severity: Minor
Status: Closed - Fixed
When the batch data input is run, the REAL variable produces an error when that field is BLANK - this
happens if BLANKUND is used and also if BLANK is a valid missing value for the REAL. I think you should
only give the error if BLANKUND is not set AND BLANK is not a valid missing value.
Example:
Workaround:
- VALLABSC with third arg blank returns label for zero
-
210669 VALLABSC with third arg blank returns label for zero
Severity: Minor
Status: Closed - Fixed
If the third argument for VALLABSC is a null string (or a blank) then it gets the value label for value
0. Fixed to get label for BLANK.
Example:
program
integer x
missing values x (BLANK)
value labels x (-1) 'First' (0) 'Second' (1) 'Third' (BLANK) 'blank'
write [vallabsc(-1,'X',' ')]
end program
Second
Workaround:
- Inserting a new common variable corrupts record data
-
210666 Inserting a new common variable corrupts record data
Severity: Moderate
Status: Closed - Fixed
These new functions return schema format and display width.
int = VXLEN( rtnum , varname_str )
Returns the number of character required to print or display a variable.
If you have some common variables and you add a new one somewhere in the middle then the record
types that reference the common variables will get them confused.
If a database has two common variables A and B, and a record type 1 where these variables are in
the data list.
Then when a new common var C is inserted between A and B,
Then the CIR data will have the correct values for A and B.
But the record will
If you look in the record 1 will have B=undefined.
Example:
Workaround:
- New Schema Functions Added - Schema format & display width
-
210663 New Schema Functions Added - Schema format & display width
Severity: New Feature
Status: Closed - Feature
These new functions return schema format and display width.
int = VXLEN( rtnum , varname_str )
Returns the number of character required to print or display a variable.
If the record number (rtnum) is negative, the function applies to a summary variable; if rtnum is
one more than the maximum record count (i.e. NRECS(0)+1) then this applies to a standard variable.
str = VSCHFMT( rtnum , varname_str )
Returns the variable format exactly as specified in the schema DATA LIST. This is different from
VFORMAT in that VFORMAT returns an external print format whereas the formats in the DATA LIST are a
mix of input formats (eg DATE'MM/DD/YYYY')) and internal formats (eg I2 a two byte integer). A
negative rtnum will return a schema like format for a local variable.
Example:
LEN = VXLEN (1,'SALARY')
SCHFMT = VSCHFMT (1,'BIRTHDAY')
Workaround:
Fixed in revision 13
- Array elements fail to work as RECODE variables
-
210660 Array elements fail to work as RECODE variables
Severity: Minor
Status: Closed - Fixed
An array element does not work as the recode variable. The example programs produce
compile errors.
Example:
program
integer*1 array A(2)
compute A(1)=1
recode STR=A(1) (0='0')
(1='1')
write STR
end program
program
integer*1 array A(2)
compute A(1)=1
recode STR=A(1)
(0='0') (1='1')
write STR
end program
Workaround:
Create a temporary variable to hold the value of the array element for the recode
- VARPUT does not work on the first COMMON variable in name order.
-
210657 VARPUT does not work on the first COMMON variable in name order.
Severity: Minor
Status: Closed - Fixed
The VARPUT function fails when used on the first COMMON variable in name
order. In the example schema, the variable CV1 is the first name
alphabetically and the VARPUT function will return undefined and not change
the value.
Example:
RECORD SCHEMA 0 CIR
DATA LIST
ID * (I2)
CV2 * (I2)
CV1 * (I2)
CV3 * (I2)
END SCHEMA
...
COMPUTE RC= VARPUT('CV1','0')
WRITE RC CV1
Workaround:
Create a dummy common variable called "A"
- SPSS SAVE FILE will output junk at the end of variable labels
-
210654 SPSS SAVE FILE will output junk at the end of variable labels
Severity: Minor
Status: Closed - Fixed
The example program will produce an SPSS file with variable labels like
CURRDATE "Current Salary Date ID"
Example:
RETRIEVAL
. PROCESS RECORD EMPLOYEE
. GET VARS ID CURRDATE
. PERFORM PROCS
. END RECORD
SPSS SAVE FILE FILENAME = "query_output.sav"
END RETRIEVAL
Workaround:
Use the PORTABLE option
- Consecutive dates with different maps will be combined in TO lists if they have the same metadata
-
210651 Consecutive dates with different maps will be combined in TO lists if they have the same metadata
Severity: Minor
Status: Closed - Fixed
Consecutive date or time variables with different date(or time) maps will be
incorectly combined in TO lists if they have the same internal ranges,
missing values, valid values or value label.
When this code is executed it will produce an error.
Example:
DATA LIST DATE2 * (DATE'EMM/YYYY')
DATE3 * (DATE'DD/MM/YYYY')
VAR RANGES DATE2 ('01/2000' '12/2010')
DATE3 ('01/01/2000' '01/12/2010')
writes
VAR RANGES DATE2 TO
DATE3 ('01/01/2000' '01/12/2010')
Workaround:
Separate the variables
or
Change the values so they are a little different
or
use the NOTO option on EXPORT or WRITE SCHEMA
- PROMPT VARDOC added to PQLForms FIELD Command
-
210648 PROMPT VARDOC added to PQLForms FIELD Command
Severity: New Feature
Status: Closed - Feature
VAR LABELS are limited to 78 characters and can be restrictive for PQLForms
prompts. A new prompt option VARDOC will use up to 256 characters of VAR DOC
information.
Example:
FIELD Q1 PROMPT VARDOC
Workaround:
Use a TEXT field to display VARDOCSN(recnum,varname,1)
- MERGE fails on caseless databases
-
210645 MERGE fails on caseless databases
Severity: Moderate
Status: Closed - Fixed
Merging two caseless database will produce a corrupt database
Example:
**09/I** CIR REC count exceeded 0:0(0)/17974/5' messages from a VERIFY FILE
Workaround:
Combine databases using write schema and batch data input.
- PQLForms field edit clause may not trigger on leaving field
-
210642 PQLForms field edit clause may not trigger on leaving field
Severity: Minor
Status: Closed - Fixed
An EDITIN clause on a field may not be triggered if it is the last field on
the screen and the tab key is pressed, OR if an ALT_letter is used to
"press" and action button.
Example:
Workaround:
Press ENTER on each field.
- Record types with more than 99 data input lines won't export/import properly
-
210639 Record types with more than 99 data input lines won't export/import properly
Severity: Minor
Status: Closed - Fixed
A data list with more than 99 input line will not export/import because the
line number is not separated from the variable name.
Example:
DATA LIST (120)
KEY 3 - 9 (I4)
VAR1 10 - 29 (A20)
120 VAR120 10 - 29 (A20)
but this is what it looks like on WRITE SCHEMA
DATA LIST (120)
KEY 3 - 9 (I4)
VAR1 10 - 29 (A20)
120VAR120 10 - 29 (A20)
Workaround:
Edit the export to include a space on these lines, or fit the input onto
fewer than 100 lines.
- Modifying a variable in STANDARD SCHEMA can effect another variable in that schema
-
210636 Modifying a variable in STANDARD SCHEMA can effect another variable in that schema
Severity: Minor
Status: Closed - Fixed
Modifying a standard schema can effect references to that variable in later
records. In the schema clip below, after VAR1 has its range changed then a
write schema will alter the data type of VAR1 to A10.
Example:
STANDARD SCHEMA
DATA LIST
VAR1 * (I1)
VAR2 * (I1)
VAR3 * (A10)
VAR RANGES VAR1 (0 1)
END SCHEMA
c
c Modify standard schema
c
STANDARD SCHEMA /LOCK
VAR RANGES VAR1 (0 2)
END SCHEMA
Workaround:
- PQL LOOKUP VIA will return the next record if there is no match with the supplied keys
-
210633 PQL LOOKUP VIA will return the next record if there is no match with the supplied keys
Severity: Minor
Status: Closed - Fixed
If LOOKUP VIA fails to find an exact match then it will return the next
records information.
In the example data below, LOOKUP via (1,3) should return a negative result
but instead it finds the next row (2,1).
Example:
KEY1 KEY2 DATA
1 1 "key1=1 and key2=1"
1 2 "key1=1 and key2=2"
2 1 "key1=2 and key2=1"
2 2 "key1=2 and key2=2"
Workaround:
Use a RECORD IS to lookup a record.
- Master can hang updating some record types with recnum > 127
-
210630 Master can hang updating some record types with recnum > 127
Severity: Minor
Status: Closed - Fixed
Master can hang updating a record type with a number > 127. An otherwise
identical record numbered less than 128 will not hang.
Example:
RECORD SCHEMA 128 UPAHM2
KEY FIELDS KEY(A)
MAX REC COUNT 123
DATA LIST
ID * (I2)
KEY * (I1)
DATA * (I2)
END SCHEMA
retrieval update
for i = 1,5
case is i
record is 128 (i)
compute DATA = i
write "about to save"
end record
write "saved"
end case
end for
end retrieval
Workaround:
- SQL (SQLServer) can crash selecting columns from particular record types
-
210629 SQL (SQLServer) can crash selecting columns from particular record types
Severity: Minor
Status: Closed - Fixed
SQL (and SQLServer during ODBC calls) can crash on selecting columns from
some record types.
Example:
SELECT * FROM ABCDE
Workaround:
- Auto I/O column assignment in schema dialogs can underestimate width
-
210627 Auto I/O column assignment in schema dialogs can underestimate width
Severity: Minor
Status: Closed - Fixed
If an numeric variable has no ranges or valid values but does have missing
values then the auto number option in the I/O columns dialog will assign a
width based on the widest missing value. In the example a width of 1 would be
assigned even though there are no restrictions on the value.
Example:
DATA LIST MYVAR * (I4)
MISSING VALUES MYVAR (1)
Workaround:
Manually set the width for such columns.
- PQLForms data entry mixes up BLANK and undefined
-
210624 PQLForms data entry mixes up BLANK and undefined
Severity: Minor
Status: Closed - Fixed
PQLForms displays blank and undefined values the same way; as an empty text
box. When it comes to writing the record, all the empty fields are stored
as blank - which means that some may end up as zero length strings, others
as missing BLANK and some as system undefined - depending on the schema
definition for each variable. This will happen even if the fields are
untouched during data entry.
This has been fixed so that the edit boxes will remember if the value is
undefined and only change if there has been specific data entry in that
field. This is now consistent with old SIRForms.
There is also a setting in preferences so that you can specify what is
displayed in an edit box if the value is undefined. The default is to
display nothing. If you specify a different string then that will be shown
(in light red) when the field is not in focus. You can set an edit item to
undefined by pressing Ctrl+U when editing that field.
Example:
Workaround:
- Undefined and Missing are displayed the same way in spreadsheet
-
210621 Undefined and Missing are displayed the same way in spreadsheet
Severity: Minor
Status: Closed - Fixed
Undefined (system missing), and valid missing values are all displayed as
NULL in the spreadsheet.
This has been fixed to show the actual missing value or keyword BLANK in
grey or the word "undefined" in light red. You can set a variable to BLANK
(if blank is a valid missing value) by entering a string containing zero or
more blanks and no other character. You cn set a variable to undefined by
pressing the Nullify button or Ctrl+U.
Example:
Workaround:
Use PQL or Forms to see the missing values
- Large real numbers are displayed in the spreadsheet as ***********
-
210618 Large real numbers are displayed in the spreadsheet as ***********
Severity: Minor
Status: Closed - Fixed
A double precision real number eg a D2 with a value 12345678 will display ok
as 12345678.00 but the value 123456789 will show *********** (11 stars).
Example:
Workaround:
- Restructured Unload & Reload can delete records without warning.
-
210615 Restructured Unload & Reload can delete records without warning.
Severity: New Feature
Status: Closed - Feature
If you make changes to the key variables of a record schema then unload and
reload, some records may not be allowed under the new definition and be
removed without any warning.
The deletion is the correct behaviour as the records are not allowed in the
database according to your new definition. A warning message however would
be useful.
The one-step Unload/Purge/Reload procedure in More Procedures... has been
modified so that it will check and write a warning if there are lost
records. The code below will also produce a warning.
Example:
c
c Get a before record count
c
INTEGER ARRAY OLDCOUNT (30)
COMPUTE NRECS = NRECS(0)+1
REDEFINE ARRAY "OLDCOUNT" (NRECS)
FOR REC= 0,NRECS(0)
COMPUTE OLDCOUNT(REC+1)=NUMRECS(REC)
END FOR
...
execute dbms unload...
execute dbms purge...
execute dbms reload...
...
c
c check after record count
c
FOR REC= 0,NRECS(0)
IFTHEN (OLDCOUNT(REC+1) GT NUMRECS(REC))
SET ITEM FONT IDLAB4,0,0,0,0,"#A0A000"
SET ITEM IDLAB4,"Reloading Database - Some records were removed"
WRITE "*** " [OLDCOUNT(REC+1) - NUMRECS(REC)] [TRIM(RECNAME(REC))] "(" REC ") Records have been removed by the restructu
ENDIF
END FOR
Workaround:
Be aware that when tightening constraints on key fields that some existing
data may not pass the new criteria.
- PQLForms local variables do not show value labels
-
210612 PQLForms local variables do not show value labels
Severity: Minor
Status: Closed - Fixed
Local variables will show value labels in the form painter but not when the
form is run.
Example:
. INTEGER LOCAL
. VAR LABEL LOCAL "The Local Variable"
. VALUE LABELS LOCAL (1) "One" (2) "Two" (3) "Three"
...
. FIELD LOCAL
DATA AT 5,25 WIDTH 13
LABELS AT 5,38 WIDTH 13
PROMPT VARDESC AT 5,6 WIDTH 18
TYPE INTEGER
Workaround:
Use FDISPLAY to show the value label
. FDISPLAY TEXT ( vallab(LOCAL) ) AT 35,39 WIDTH 13 FONT
(BGROUND=FFFFFF )
- BLANKUND keyword on DBI now works on DATE and TIMEs
-
210609 BLANKUND keyword on DBI now works on DATE and TIMEs
Severity: New Feature
Status: Closed - Feature
The BLANKUND keyword on BDI was introduced to optionally prevent blanks being
converted to zero for numeric variables without BLANK as a missing value. If
dates/times were blank a a BLANK missing value was not specified then these
would produce an error. The BLANKUND keyword now will convert these to
undefined without complaining.
Example:
Add Records INPUT = "file.dat" /
BLANKUND /
Workaround:
Define missing value BLANK if you want to allow BLANKs on data input
- Create table with "special" name causes problems with drop table
-
210606 Create table with "special" name causes problems with drop table
Severity: Minor
Status: Closed - Fixed
CREATE TABLE SpecialName
will create a tabfile with a name delimited by curly braces {SpecialName}
The delete tabfile dialog will include an extra set of braces and fail:
Example:
DROP TABFILE {{SpecialName}}
Command complete but not at end of line. (Error 1)
Workaround:
Use the DROP TABFILE {SpecialName} command directly
- Subprocedure name from expression doesn't work using DEBUG
-
210603 Subprocedure name from expression doesn't work using DEBUG
Severity: Minor
Status: Closed - Fixed
PQL gets confused during execution when debug is on and a subprocedure is
executed by
way of an expression for the subprocedure name.
The example gives
Missing subprocedure definition. (Error 730 - SP1)
When run.
Example:
program debug
c
. execute subprocedure ["SP"+"1"]
c
subprocedure sp1 | sp1
. write "SP1"
end subprocedure
c
end program
Workaround:
Remove the debug option or run using the gui debugger.
It will also work if the subprocedure is within a subroutine.
- UNIX: "Cannot Position" errors using Spreadsheet on tabfile
-
210600 UNIX: "Cannot Position" errors using Spreadsheet on tabfile
Severity: Minor
Status: Closed - Fixed
If you use the spreadsheet on a tabfile then you will get "Cannot Position"
errors when
you try to edit, print, export etc.
Example:
Workaround:
- Using spreadsheet on a Database after using it on a tabfile causes problems
-
210597 Using spreadsheet on a Database after using it on a tabfile causes problems
Severity: Minor
Status: Closed - Fixed
If you use the spreadsheet on a tabfile, then later in the same session on a
database
then you will get "Cannot Position" errors when you try to edit, print,
export etc.
Example:
Workaround:
Restart SIR after using spreadsheet on tabfile.
- pql connect tabfile with no filename specified will crash.
-
210594 pql connect tabfile with no filename specified will crash.
Severity: Minor
Status: Closed - Fixed
The PQL CONNECT TABFILE command will crash if the filename is not specified.
Example:
program
pql connect tabfile 'ANYTAB'
end program
Workaround:
The default filename is meant to be the tabfile name + ".tbf" so if you
want the
default value then specify this explicitly.
program
pql connect tabfile 'ANYTAB' filename 'ANYTAB.tbf'
end program
- TABVRANG returns column name not range info
-
210591 TABVRANG returns column name not range info
Severity: Minor
Status: Closed - Fixed
The TABVRANG function is meant to return column range (missing and valid)
information
but it is returning the column name instead.
Example:
Workaround:
- VALLABSV not returning the correct value for missing strings
-
210588 VALLABSV not returning the correct value for missing strings
Severity: Minor
Status: Closed - Fixed
The VALLABSV does not return the correct value for missing strings.
An effect of this is that a PQL form with a drop down choice for a string
variable with
missing values and labels, will not work.
Example:
program
string test
missing values test ("MISS")
value labels test ("MISS") "Is Missing"
WRITE [VALLABSV(-1,"TEST",1)] | this writes blank, not MISS
WRITE [VALLABSN(-1,"TEST",1)] | This writes "Is Missing" correctly
END PROGRAM
Workaround:
- Seven (or more) schema VALUE LABEL commands can confuse compiler
-
210585 Seven (or more) schema VALUE LABEL commands can confuse compiler
Severity: Minor
Status: Closed - Fixed
If a set of modify schema blocks containing seven or more VALUE LABEL commands, then the
compiler can get confused when subsequent commands contain a number (eg STRING LENGTH
32)
4.30 STRING LENGTH 32
String length is invalid - 32 assumed. (Error 70)
Example:
RECORD SCHEMA 1 EMPLOYEE
VALUE LABELS GENDER (1)'Male'
VALUE LABELS GENDER (1)'Male'
VALUE LABELS GENDER (1)'Male'
VALUE LABELS GENDER (1)'Male'
VALUE LABELS GENDER (1)'Male'
VALUE LABELS GENDER (1)'Male'
VALUE LABELS GENDER (1)'Male'
END SCHEMA
STRING LENGTH 32
Workaround:
Reduce the number of VALUE LABEL commands , or don't run anything straight after a set
of schema mods.
- SIRSQLS sends cat vars as strings but length of internal integer
-
210582 SIRSQLS sends cat vars as strings but length of internal integer
Severity: Minor
Status: Closed - Fixed
If a CAT VAR is sent via SIR SQL server then it is sent as a string. The column info
function returns the intenal integer length (1,2 or 4) and so the string is usually
trunctated.
Example:
Workaround:
Convert cat vars to string vars or integers with value labels.
- PATTERN function returns 0 or 1 when argument is missing
-
210579 PATTERN function returns 0 or 1 when argument is missing
Severity: Minor
Status: Closed - Fixed
The PATTERN function returns 0 or 1 (not undefined as it should) when the first argument
is a missing value. In this case the function is looking at some random memory which may
or may not include the pattern to be matched.
Example:
program
string x
missing values x ("NA")
set x ("NA")
write [PATTERN(x,"TABLE")] [PATTERN(x,"CHAIR")]
end program
Workaround:
Check if aguments are missing before using PATTERN
- FILL and COMMA functions crash when args are missing
-
210576 FILL and COMMA functions crash when args are missing
Severity: Minor
Status: Closed - Fixed
FILL and COMMA functions crash if the string contains a missing value (not undefined).
Example:
program
string x
missing values x ("NA")
set x ("NA")
write [fill(x,".")] [comma(x)]
end program
Workaround:
Check if aguments are missing before using FILL or COMMA
- Auto I/O columns in schema dialog does not work for standard vars
-
210573 Auto I/O columns in schema dialog does not work for standard vars
Severity: Minor
Status: Closed - Fixed
Using RECORD SCHEMA , I/O Columns, de-number and auto-number does not work on variables
from the standard schema.
Example:
Workaround:
Write the schema and manually change the I/O columns.
Fixed in revision 12
- The MISS function did not work on local string variables
-
210570 The MISS function did not work on local string variables
Severity: Minor
Status: Closed - Fixed
The MISS function did not work on local string variables.
If no database was attached then sir would crash; if a database was connected then the
function would return junk.
Example:
program
string STR
missing values STR (BLANK,"NONE","ZIP")
write [miss(-1,"STR",3)]
end program
Workaround:
- DO REPEAT now allows leading zeros in TO list
-
210567 DO REPEAT now allows leading zeros in TO list
Severity: New Feature
Status: Closed - Feature
DO REPEAT now allows generation of a sequence of numbers with leading zeros. In the
past, the TO clause in do repeat only allowed sequences of either numbers (1 TO 10) or
sir names with trailing numbers (VAR01 TO VAR10). You can now do leading zeros like
this:
Example:
DO REPEAT X = $001$ TO $100$
Workaround:
- LIST STATS restructure summary table is misaligned
-
210564 LIST STATS restructure summary table is misaligned
Severity: Trivial
Status: Closed - Fixed
The restructured records summary at the bottom of list stats does not contain all
details and is miss-aligned
Example:
Workaround:
- Some schema mods can corrupt CIR
-
210561 Some schema mods can corrupt CIR
Severity: Moderate
Status: Closed - Fixed
A sequence of schema mods (including a CIR mod) without an unload/reload can cause
corruptions in the CIR.
Example:
Workaround:
Do an unload reload after modifying schema.
- Details button in tabfile dialog can crash if there are no tables
-
210558 Details button in tabfile dialog can crash if there are no tables
Severity: Minor
Status: Closed - Fixed
The "Details" button on the Tabfiles dialog will cause a crash if the selected tabfile
has no tables.
Example:
Create a tabfile with NO tables.
Click on "Details..." in the bottom left corner of the dialog.
Since no table is highlighted, SIR complains and then exits all the way out of SIR.
Workaround:
Create a table on the tabfile.
- Various problems with undefined strings in tabfiles
-
210555 Various problems with undefined strings in tabfiles
Severity: Minor
Status: Closed - Fixed
Setting tabfile string variables to undefined does not appear to change the current
value, or displays junk in the first character.
The example program writes
"The Old Value " (padded with blanks)
not * (missing)
Example:
PROGRAM TUPDATE
integer nmiss
string smiss
COMPUTE DATA = 'The Old Value'
SET DATA (SMISSING)
COMPUTE DATA = smiss
COMPUTE NUM = 3
ROW IS JUNK.TAB1TAB INDEXED BY CASE ('1')
write "Here the value of data is " ['"'+data+'"']
PUT VARS NUM
PUT VARS DATA
END ROW IS
END PROGRAM
PROGRAM
PROCESS ROWS JUNK.TAB1TAB
GET VARS ALL
write "But here the value of data is " ['"'+data+'"']
WRITE ALL
END ROW
END PROGRAM
Workaround:
Set strings to "" rather than undefined.
- New Required Fields dialog in forms painter
-
210552 New Required Fields dialog in forms painter
Severity: New Feature
Status: Closed - Feature
New required fields dialog in forms painter (button on the screen properties dialog).
This dialog generates code for the WRITE clause to ensure that selected fields are
entered.
Example:
Workaround:
- PQLFORMS, FAILSCR not allowing re-entry of bad data
-
210549 PQLFORMS, FAILSCR not allowing re-entry of bad data
Severity: Minor
Status: Closed - Fixed
If a PQLForm sets the FAILSCR to non zero then an error message is displayed and the
record is not saved. The trouble is that if you are moving away from the record then it
will give you the error and move away without saving or giving you the opportunity to
fix the problem.
Example:
Workaround:
Use the Save button before attempting to move away from a record.
- New Exact time map format
-
210546 New Exact time map format
Severity: New Feature
Status: Closed - Feature
There is now an exact time format. If the time format starts with E then any string
input into that variable must match the format exactly (like the E Date format).
Example:
PROGRAM
TIME EMAP ("EHH:MM")
TIME NOEMAP ("HH:MM")
COMPUTE EMAP = "21"
COMPUTE NOEMAP = "21"
WRITE EMAP NOEMAP
COMPUTE EMAP = "21:01"
COMPUTE NOEMAP = "21:01"
WRITE EMAP NOEMAP
END PROGRAM
Workaround:
Test times using string functions to ensure they are the right format
- SPSS Portable files do not open in PSPP
-
210543 SPSS Portable files do not open in PSPP
Severity: Minor
Status: Closed - Fixed
SPSS portable files would not open under PSPP (which is meant to read SPSS files).
The SPSS specification says the text lines in the portable file are 80 characters long
but SIR wrote lines that were 80 characters *or less* and SPSS had no problem with this.
PSPP wanted the the lines to be exactly 80 characters (ie padded with blanks).
PSPP has fixed this and we also have fixed so we are compatible with old versions.
Example:
Workaround:
Edit the portable file and pad the first three lines with blanks to 80 columns.
- Negativley Scaled variables are truncated in SPSS SAVE FILE
-
210540 Negativley Scaled variables are truncated in SPSS SAVE FILE
Severity: Minor
Status: Closed - Fixed
Negatively scaled variables in SPSS save file are written correctly in the data section
but are given integer formats with zero decimals in the dictionary section - fixed to
specify correct number of decimals.
Example:
Workaround:
Use unscaled integers or real numbers.
- Compare Procfiles dialog improved
-
210537 Compare Procfiles dialog improved
Severity: New Feature
Status: Closed - Feature
Compare Procfiles (Program Menu) improved to allow copying from one procfile to other
and to produce a differences report.
Example:
Workaround:
- VARPOSIT function has changed
-
210534 VARPOSIT function has changed
Severity: New Feature
Status: Closed - Feature
VARPOSIT used to return the internal position in the data record for the start of the
variable data.
This should be meaningless to the pql programmer.
The function now returns the variable's ordinal in the record definition.
Example:
program
write [VARPOSIT(1,"GENDER")]
end program
Workaround:
- REGREP can not return a null string result
-
210531 REGREP can not return a null string result
Severity: Minor
Status: Closed - Fixed
If the result of using the REGREP (replace regular expression) function should be a null
string ("") then the function will return the original string instead.
Example:
write [regrep('aaaaa','a+','',1,2)]
Workaround:
- VERIFY FILE with RECKEY or RECDATA crashes.
-
210528 VERIFY FILE with RECKEY or RECDATA crashes.
Severity: Moderate
Status: Closed - Fixed
VERIFY FILE using the RECKEY or RECDATA options would crash after processing a few
records.
Example:
VERIFY FILE /RECKEY /RECDATA
Workaround:
Avoid using these options
- Memory leak in processing records with standard variables
-
210525 Memory leak in processing records with standard variables
Severity: Moderate
Status: Closed - Fixed
Similar leak with processing records containing standard variables.
Example:
Workaround:
- Slow memory leak associated with switching databases
-
210522 Slow memory leak associated with switching databases
Severity: Moderate
Status: Closed - Fixed
This was a minor leak but if you switch databases a lot it would become a problem.
Example:
Workaround:
- Spreadsheet can crash on searching for a case id
-
210519 Spreadsheet can crash on searching for a case id
Severity: Moderate
Status: Closed - Fixed
If you have a database with a string case is and a case exists but has no records of a
particular record type, then if you open that record type in the spreassheet and search
for that case, then sir will crash.
Example:
Workaround:
Use PQL to find records and cases.
- EVALUATE and SPSS SAVE FILE in the same program gives bad strings
-
210516 EVALUATE and SPSS SAVE FILE in the same program gives bad strings
Severity: Minor
Status: Closed - Fixed
An EVALUATE command in the same program as SPSS SAVE FILE (system) would corrupt string
variables in that file.
RETRIEVAL
Example:
RETRIEVAL
. PROCESS CASES ALL
. GET VARS ID
. PROCESS RECORD EMPLOYEE
. GET VARS NAME GENDER
. EVALUATE z = "1+1"
. PERFORM PROCS
. END PROCESS RECORD
. END PROCESS CASES
SPSS SAVE FILE
FILENAME = "testspss.sav"
VARIABLES = ID NAME GENDER
END RETRIEVAL
Workaround:
Avoid evaluate or use PORTABLE option on spss
- New "Remove Password" option on Unload dialog
-
210513 New "Remove Password" option on Unload dialog
Severity: New Feature
Status: Closed - Feature
A new option has been added to the unload dialog to remove existing password.
There was an option to change the password or create a password in the unload but not
one to remove and existing password.
Example:
Workaround:
The workaround was to enter {} in the new password field.
|
|