The issue with my example was, in fact, the short length of the observation. As per the docs:
The V9 engine compresses one observation at a time, and adds a fixed-length block of data to each observation. Because of the additional block of data, some data sets would result in a larger file size if compressed. For example, a data set with an extremely short observation length would not benefit from compression.
Indeed, increasing the length of the char var in SQL enables the compression:
73 proc sql;
74 create table demo16(compress=char)(my num, your char length=16);
NOTE: Compression was disabled for data set WORK.DEMO16 because compression overhead would increase the size of the data set.
NOTE: Table WORK.DEMO16 created, with 0 rows and 2 columns.
75 create table demo17(compress=char)(my num, your char length=17);
NOTE: Table WORK.DEMO17 created, with 0 rows and 2 columns.
There must be some other reason why my tables aren't compressed - am off now, to find it!
... View more