Get the number of steps for a GAP model prediction

library(rOpenserver)

get_gap_model_01 <- function() {
    # get the GAP model "Gap Model.gap"
    gap_dir <- system.file("models", package = "rOpenserver")
    gap_model <- list.files(gap_dir, pattern = "*.GAP", ignore.case = TRUE)[1]
    gap_file <- file.path(gap_dir, gap_model)
    if (!file.exists(gap_file)) stop("Model not found ...") else
        return(gap_file)

}

# start OpenServer and GAP
gserver <- newOpenServer()
gserver$DoCmd("GAP.START")
#> [1] 0

# open GAP model
cmd_openfile <- paste0('GAP.OPENFILE("', get_gap_model_01(), '")')
gserver$DoSlowCmd(cmd_openfile)
#> [1] 0


# get the number of steps for the model prediction
NumSteps <- as.integer(gserver$DoGAPFunc("GAP.PREDINIT()"))
print(NumSteps)
#> [1] 78

# exit GAP
Sys.sleep(1)
gserver$DoCmd("GAP.SHUTDOWN")
#> [1] 0
gserver <- NULL

S3 methods

We can also do this using S3 methods derived from R6 classes

library(rOpenserver)

get_gap_model_01 <- function() {
    # get the GAP model "Gap Model.gap"
    # this is the model used in VBA OpenServer
    gap_dir <- system.file("models", package = "rOpenserver")
    gap_model <- list.files(gap_dir, pattern = "*.GAP", ignore.case = TRUE)[1]
    gap_file <- file.path(gap_dir, gap_model)
    if (!file.exists(gap_file)) stop("Model not found ...") else
        return(gap_file)

}

# start OpenServer and GAP
gserver <- setOpenServer()
DoCmd(gserver, "GAP.START")
#> [1] 0

# open the GAP model
cmd_openfile <- paste0('GAP.OPENFILE("', get_gap_model_01(), '")')
DoSlowCmd(gserver, cmd_openfile)
#> [1] 0


# get the number of steps for the model prediction
NumSteps <- as.integer(DoGAPFunc(gserver, "GAP.PREDINIT()"))
print(NumSteps)
#> [1] 78

# exit GAP
Sys.sleep(1)
DoCmd(gserver, "GAP.SHUTDOWN")
#> [1] 0
gserver <- NULL                             # clean any OpenServer processes