@@ -83,7 +83,7 @@ ibmspsscfdata.GetData <- function(fields=NULL,
8383 PACKAGE = ibmspsscf_package )
8484
8585 n <- length(out )
86- last.SpssCfError <- out [[n ]]
86+ last.SpssCfError << - out [[n ]]
8787 if (last.SpssCfError != 0 )
8888 {
8989 processSpssCFError(last.SpssCfError )
@@ -192,6 +192,13 @@ ibmspsscfdata.GetData <- function(fields=NULL,
192192 {
193193 # # flagValues[1] is true value, flagValues[2] is false value
194194 flagValues <- ibmspsscfdatamodel.GetFlagValues(i )
195+ if (length(flagValues ) == 0 )
196+ {
197+ last.SpssCfError <<- 1022
198+ .Call(" ext_SendErrorCode" ,as.integer(last.SpssCfError ), as.integer(3 ), as.list(fieldNames [[j ]]), as.integer(err ),PACKAGE = ibmspsscf_package )
199+ stop(printSpssError(last.SpssCfError ),call. = FALSE , domain = NA )
200+ }
201+
195202 for (index in 1 : length(result [[j ]]))
196203 {
197204 if (! is.na(result [[j ]][index ])) {
@@ -275,13 +282,14 @@ ibmspsscfdata.GetDataFromTemp <- function(missingValue = NA,
275282 colClassesVec <- c(colClassesVec , " numeric" )
276283 }
277284 }
278- dataFromTempFile <- read.table(dataFileName , header = TRUE , sep = " " ,colClasses = colClassesVec , encoding = " UTF-8" )
285+ dataFromTempFile <- read.table(dataFileName , header = TRUE , sep = " " ,colClasses = colClassesVec ,fileEncoding = " UTF-8" )
279286 unlink(dataFileName )
280287
281288
282289 # # 2. Convert flag fields
283290 # # process converting flag fields to logical fields
284291 fieldMeasure <- modelerDataModel [4 ,]
292+ fieldNames <- modelerDataModel [1 ,]
285293 fieldCount <- ibmspsscfdatamodel.GetFieldCount()
286294 fields <- 0 : (fieldCount - 1 )
287295 if (logicalFields == TRUE )
@@ -293,6 +301,13 @@ ibmspsscfdata.GetDataFromTemp <- function(missingValue = NA,
293301 {
294302 # # flagValues[1] is true value, flagValues[2] is false value
295303 flagValues <- ibmspsscfdatamodel.GetFlagValues(i )
304+ if (length(flagValues ) == 0 )
305+ {
306+ last.SpssCfError <<- 1022
307+ .Call(" ext_SendErrorCode" ,as.integer(last.SpssCfError ), as.integer(3 ), as.list(fieldNames [[j ]]), as.integer(0 ),PACKAGE = ibmspsscf_package )
308+ stop(printSpssError(last.SpssCfError ),call. = FALSE , domain = NA )
309+ }
310+
296311 # # need to convert character firstly, factor will have value check
297312 dataFromTempFile [[j ]] <- as.character(dataFromTempFile [[j ]])
298313 for (index in 1 : length(dataFromTempFile [[j ]]))
@@ -353,6 +368,16 @@ ibmspsscfdata.GetDataFromTemp <- function(missingValue = NA,
353368 j <- 1
354369 for (i in fields )
355370 {
371+ # only convert storage is not string, string has been converted in read.table
372+ if (" string" != fieldStorages [[j ]] && (" nominal" == fieldMeasure [[j ]]
373+ || " discrete" == fieldMeasure [[j ]]))
374+ {
375+ if (factorMode == " levels" )
376+ {
377+ dataFromTempFile [[j ]] <- factor (dataFromTempFile [[j ]], ordered = FALSE )
378+ }
379+ }
380+
356381 if (" ordinal" == fieldMeasure [[j ]])
357382 {
358383 valueLabels <- ibmspsscfdatamodel.GetValueLabels(i )
0 commit comments