Online File
Rick Aster: Professional SAS Programming Shortcuts: Contents
DATA _NULL_;
LENGTH TYPE $ 1 FMT $ 32;
* Labels, character values, and fields are limited to these maximum lengths.;
LENGTH LABEL $ 40 CVAL FIELD $ 256;
* Output text file.;
FILE OUT DLM='09'X LRECL=8192;
* Input SAS dataset.;
DSID = OPEN('WORK.MYDATA');
* Write labels of variables.;
NVARS = ATTRN(DSID, 'NVARS');
IF _N_ = 1 THEN DO N = 1 TO NVARS;
LABEL = VARLABEL(DSID, N);
IF LABEL = '' THEN LABEL = VARNAME(DSID, N);
PUT LABEL @;
END;
PUT ;
* Read and write data.;
NOBS = ATTRN(DSID, 'NLOBS');
DO I = 1 TO NOBS;
RC = FETCH(DSID);
IF RC THEN LEAVE;
DO N = 1 TO NVARS;
TYPE = VARTYPE(DSID, N);
FMT = VARFMT(DSID, N);
LEN = VARLEN(DSID, N);
SELECT (TYPE);
WHEN('C') DO;
IF FMT = '' THEN FMT =
'$CHAR' || TRIM(LEFT(PUT(LEN, F5.))) || '.';
CVAL = GETVARC(DSID, N);
FIELD = PUTC(CVAL, FMT);
END;
WHEN('N') DO;
IF FMT = '' THEN FMT = 'BEST12.';
NVAL = GETVARN(DSID, N);
FIELD = PUTN(NVAL, FMT);
END;
END;
PUT FIELD @;
END;
PUT ;
END;
RC = CLOSE(DSID);
STOP;
RUN;
*
To use this program, change the input SAS dataset name.
On an EBCDIC system, change the DLM= option to DLM='05'X.
*;