Autocall member, xxxxxxxx, has not been compiled by the macro processor


SAS Note 11929 explains a change to the SAS distributed autocall (macro) library from a Fixed Block to Variable Block Record Format (RECFM).

This change to the autocall library can result in unexpected behavior. If the S2= option is set to a non-zero value, autocall services or %INCLUDEs from the SAS distributed autocall library can produce unexpected results. The S2= option is handled differently between fixed and variable blocked files. For fixed blocked files, the value determines how much of the record is to be read. For variable blocked files, the value determines where to start reading.

Many sites will use the S= and S2= options to avoid having SAS read sequence numbers. However, if a file has valid sequence numbers throughout, SAS can properly handle reading the file by using the SEQ= System option. The SEQ= System option is used to specify what part of the sequence number to check for validity. SAS will always check for 8 bytes (last 8 bytes of a fixed blocked record file, and first 8 bytes after RDW/BDW of a variable blocked record file.) If SEQ=4 is set, SAS will expect 8-byte sequence number but will only check the last for bytes of this for being valid digits. For example, SEQ=4 and an 8-byte sequence value of XXXX0001 would be treated as a valid sequence number and it would not be processed by SAS. However, SEQ=8 and same value XXXX0001 would not be considered a valid sequence number and SAS would expect it to be part of the data to be processed within the record.

There are two possible circumventions to this issue:

SAS®9 has SAS distributed autocall macros that have gone beyond column 72. SAS does not intend to go back to a Fixed Block RECFM for the distributed autocall library.