Online File
Rick Aster: Professional SAS Programming Logic: Contents
*
read1.sas
Reads SAS dataset using I/O functions
Rick Aster May 2000
*;
DATA _NULL_;
LENGTH NAME $ 60 MSG $ 75;
FILE LOG;
*
Define libref.
*;
RC = LIBNAME('MAIN1', 'main');
IF RC > 0 THEN GOTO E1;
*
Open SAS dataset.
*;
DSID = OPEN('MAIN1.LIST');
IF NOT DSID THEN GOTO E2;
*
Find variables NAME and NUMBER.
*;
NAME_VAR = VARNUM(DSID, 'NAME');
NUM_VAR = VARNUM(DSID, 'NUMBER');
IF NOT (NAME_VAR AND NUM_VAR) THEN GOTO E3;
IF NOT (VARTYPE(DSID, NAME_VAR) = 'C' AND VARTYPE(DSID, NUM_VAR) = 'N')
THEN GOTO E4;
*
Process observations.
*;
DO WHILE (1);
RC = FETCH(DSID);
IF RC THEN LEAVE; * Check for end of file or error;
NAME = GETVARC(DSID, NAME_VAR);
NUMBER = GETVARN(DSID, NUM_VAR);
PUT NUMBER NAME;
END;
*
Close SAS dataset and clear libref.
*;
CLOSE:
RC = CLOSE(DSID);
RC = LIBNAME('MAIN1');
STOP;
*
Error handling.
*;
E1:
PUT 'Unable to find main library. Return code ' RC;
MSG = SYSMSG();
IF MSG NE '' THEN PUT MSG;
STOP;
E2:
RC = SYSRC();
PUT 'Unable to open LIST member. Return code ' RC;
MSG = SYSMSG();
IF MSG NE '' THEN PUT MSG;
STOP;
E3:
PUT 'Variables NAME and NUMBER not found.';
GOTO CLOSE;
E4:
PUT 'Wrong data type for variable NAME or NUMBER.';
GOTO CLOSE;
RUN;