Readers for the data files of SPSS, Stata and SAS, for
Jennifer programs: Stata .dta (formats
104 to 119), SPSS .sav, .zsav and portable .por, SAS XPORT .xpt
(versions 5 and 8), and SAS data sets .sas7bdat with the value labels
of .sas7bcat format catalogs. Every reader returns one Dataset: the
variables with their labels, display formats, value labels and declared
missing values, and the cells by column, ready for stats and linalg or
as CSV. Read-only.
jvc add @deckyard/statfilesThis vendors the deck to vendor/<scope>/statfiles/. Without jvc, unpack the
src/ subtree of a release archive (<scope>-statfiles-<version>.tar.gz) there.
import "@deckyard/statfiles/" as statfiles;
def ds as statfiles.Dataset init statfiles.read(fs.readBytes("survey.sav"));
io.printf("%d rows, mean age %.1f\n", $ds.rowCount, stats.mean(statfiles.present($ds, "age")));
fs.writeString("survey.csv", statfiles.toCsv($ds, true));
examples/ has one program per format: dta_describe.j, sav_summary.j,
por_summary.j, xpt.j and sas7bdat.j.
Jennifer 0.26.0 or newer. No capability: the readers take the file as
bytes, so reading it from disk is the caller's.
tools/check-all.sh # the full gate, as CI runs it
jennifer test src/statfiles_test.j # the test overlay
tools/check-docs.sh # docs against the code
tools/pack.sh dist # build the release archiveLGPL-3.0-only, see LICENSE. Copyright (C) 2026 mplx <[email protected]>.
tools/check-headers.sh checks every source file's SPDX header against
deck.toml.