Skip to content

Chapter 3/4/8 DATA-step scripts run unmodified on Jenner - #1

Open
jenner-analytics wants to merge 1 commit into
bijubjs:masterfrom
jenner-analytics:jenner-check/initial-bundles
Open

Chapter 3/4/8 DATA-step scripts run unmodified on Jenner#1
jenner-analytics wants to merge 1 commit into
bijubjs:masterfrom
jenner-analytics:jenner-check/initial-bundles

Conversation

@jenner-analytics

@jenner-analytics jenner-analytics commented Aug 13, 2026

Copy link
Copy Markdown

Jenneranalytics.com provides an API that runs SAS code, with support for more than 200 SAS procedures. You can also use it with AI assistants in a collaborative workspace. It's available for Mac on the Apple App Store, and by license for Windows and Linux.

We support the larger community by
(1) increasing access to SAS-compatible systems,
(2) by providing test coverage and a test coverage framework to public SAS repos in order to encourage the use of best practices in software engineering.

Your Chapter 3 MEANS.sas runs on Jenner unmodified — this PR adds a small compatibility bundle so you can see for yourself. It's the test we wrote for your package, shared in case it's useful, and was assembled with AI assistance as is most code in modern businesses today.

One thing that stood out reading through the chapters: Chapter 4 DATA.sas chains its grouping logic as IF 2.0 < age < 3.0 THEN Group = 2; — SAS's own reading of that as two comparisons against the result of the first, rather than a Python-style range check, is one of the more common gotchas for people coming from other languages, and you use it correctly right next to a LOWCASE/UPCASE/PROPCASE cleanup pass and a unit conversion. That's a nice compact demonstration of DATA step fundamentals in one file.

jenner-check/ is a small, self-contained set of compatibility bundles built from seven of your own chapters — parking-fine summary stats, the instruction-scores MEANS breakdown, the fish/gradebook DATA step tour, the tornado INFILE variety (list, fixed-column, and delimited input), the right-to-work FREQ tables, a LIBNAME permanent-library round trip, and the probability-function chapter — each with its captured log/output and a runner to reproduce it:

jenner-check/
├── run_jenner.sh
├── t001_parking_fines/
├── t002_instruction_means/
├── t003_fish_gradebook/
├── t004_tornado_infile/
├── t005_freq_righttowork/
├── t006_libname_dataset/
└── t007_probability_functions/

Check out this PR's branch and, from the repo root, you can run one of the bundles directly:

# Check out this PR (puts you on its branch); then run from the repo root:
gh pr checkout 1
curl -sS --data-binary @jenner-check/t002_instruction_means/script.sas https://api.jenneranalytics.com/v1/quick

Or cd jenner-check && ./run_jenner.sh --all to re-run every bundle and verify it against the pinned results. The hosted API is free to try, no signup required — full API reference: the docs.

Only the SAS source text that a bundle runs (its autoexec.sas + script.sas) is ever sent to api.jenneranalytics.com; the runner doesn't read or upload any data files, so anything sitting next to a script stays on your machine, and nothing is transmitted unless you run a command yourself — the same as pasting a snippet into any hosted tool.

Merge it, close it, or ignore it — no response expected, and we won't open further PRs in this repo. If you'd rather not see any of these, a comment with no-more-prs, or an issue titled jenner-check: opt out, does it for good.


Lawrence W. Sinclair
CEO / Jenner Analytics Ltd
linkedin.com/in/lwsinclair/

Adds jenner-check/, a self-contained set of compatibility test bundles
built from seven of this repo's own chapter scripts (parking-fine
summary stats, instruction-scores MEANS breakdown, the fish/gradebook
DATA step tour, tornado INFILE variety, right-to-work FREQ tables, a
LIBNAME permanent-library round trip, and the probability-function
chapter), each captured against the hosted Jenner API with a pinned
expected.json and a bash runner to reproduce it. Nothing outside
jenner-check/ is touched and nothing runs on merge.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant