Returns the value of a numeric attribute for the specified SAS data set
Category: SAS File I/O
ATTRN ( data-set-id , attr- name )
data-set-id
specifies the data set identifier that the OPEN function returns.
attr-name
is a numeric attribute, as listed in the section below. If the value of attr-name is invalid, a missing value is returned.
Valid numeric values used with attr-name are:
ALTERPW
specifies whether a password is required to alter the data set.
1 | the data set is alter protected. |
| the data set is not alter protected. |
ANOBS
specifies whether the engine knows the number of observations.
1 | the engine knows the number of observations. |
| the engine does not know the number of observations. |
ANY
specifies whether the data set has observations or variables .
-1 | the data set has no observations or variables. |
| the data set has no observations. |
1 | the data set has observations and variables. |
Alias: VAROBS
ARAND
specifies whether the engine supports random access.
1 | the engine supports random access. |
| the engine does not support random access. |
Alias: RANDOM
ARWU
specifies whether the engine can manipulate files.
1 | the engine is not read-only. It can create or update SAS files. |
| the engine is read-only. |
AUDIT
specifies whether logging to an audit file is enabled.
1 | logging is enabled. |
| logging is suspended . |
AUDIT_DATA
specifies whether after-update record images are stored.
1 | after-update record images are stored. |
| after-update record images are not stored. |
AUDIT_BEFORE
specifies whether before-update record images are stored.
1 | before-update record images are stored. |
| before-update record images are not stored. |
AUDIT_ERROR
specifies whether unsuccessful after-update record images are stored.
1 | unsuccessful after-update record images are stored. |
| unsuccessful after-update record images are not stored. |
CRDTE
specifies the date that the data set was created. The value that is returned is the internal SAS datetime value for the creation date.
Tip: Use the DATETIME. format to display this value.
ICONST
returns information about the existence of integrity constraints for a SAS data set.
| no integrity constraints. |
1 | one or more general integrity constraints. |
2 | one or more referential integrity constraints. |
3 | both one or more general integrity constraints and one or more referential integrity constraints. |
INDEX
specifies whether the data set supports indexing.
1 | indexing is supported. |
| indexing is not supported. |
ISINDEX
specifies whether the data set is indexed.
1 | at least one index exists for the data set. |
| the data set is not indexed. |
ISSUBSET
specifies whether the data set is a subset.
1 | at least one WHERE clause is active. |
| no WHERE clause is active. |
LRECL
specifies the logical record length.
LRID
specifies the length of the record ID.
MAXGEN
specifies the maximum number of generations.
MAXRC
specifies whether an application checks return codes.
1 | an application checks return codes. |
| an application does not check return codes. |
MODTE
specifies the last date and time that the data set was modified. The value returned is the internal SAS datetime value.
Tip: Use the DATETIME. format to display this value.
NDEL
specifies the number of observations in the data set that are marked for deletion.
NEXTGEN
specifies the next generation number to generate.
NLOBS
specifies the number of logical observations (those that are not marked for deletion). An active WHERE clause does not affect this number.
-1 | the number of observations is not available. |
NLOBSF
specifies the number of logical observations (those that are not marked for deletion) by forcing each observation to be read and by taking the FIRSTOBS system option, the OBS system option, and the WHERE clauses into account.
Tip: Passing NLOBSF to ATTRN requires the engine to read every observation from the data set that matches the WHERE clause. Based on the file type and size , this can be a time-consuming process.
NOBS
specifies the number of physical observations (including those that are marked for deletion). An active WHERE clause does not affect this number.
-1 | the number of observations is not available. |
NVARS
specifies the number of variables in the data set.
PW
specifies whether a password is required to access the data set.
1 | the data set is protected. |
| the data set is not protected. |
RADIX
specifies whether access by observation number (radix addressability) is allowed.
1 | access by observation number is allowed. |
| access by observation number is not allowed. |
Note: A data set that is accessed by a tape engine is index addressable although it cannot be accessed by an observation number.
READPW
specifies whether a password is required to read the data set.
1 | the data set is read protected. |
| the data set is not read protected. |
TAPE
specifies the status of the data set tape.
1 | the data set is a sequential file. |
| the data set is not a sequential file. |
WHSTMT
specifies the active WHERE clauses.
| no WHERE clause is active. |
1 | a permanent WHERE clause is active. |
2 | a temporary WHERE clause is active. |
3 | both permanent and temporary WHERE clauses are active. |
WRITEPW
specifies whether a password is required to write to the data set.
1 | the data set is write protected. |
| the data set is not write protected. |
This example checks whether a WHERE clause is currently active for a data set.
%let iswhere=%sysfunc(attrn(&dsid,whstmt)); %if &iswhere %then %put A WHERE clause is currently active.;
This example checks whether a data set is protected with a password.
data _null_; dsid=open("mydata"); pw=attrn(dsid,"pw"); if pw then put "data set is protected"; run;
Functions:
'ATTRC Function' on page 322
'OPEN Function' on page 690