Search notes:

SAS: proc contents

data foo;
  attrib col_1 length=$10;
  attrib col_2 length=  8;
  col_1='abc'; col_2 = 42; output;
  col_1='def'; col_2 =  1; output;
  col_1='ghi'; col_2 = 99; output;
run;

proc contents
     data = foo;
run;

/*
The CONTENTS Procedure

Data Set Name        WORK.FOO                                                 Observations          3
Member Type          DATA                                                     Variables             2
Engine               V9                                                       Indexes               0
Created              11/29/2017 16:40:24                                      Observation Length    24
Last Modified        11/29/2017 16:40:24                                      Deleted Observations  0
Protection                                                                    Compressed            NO
Data Set Type                                                                 Sorted                NO
Label
Data Representation  SOLARIS_X86_64, LINUX_X86_64, ALPHA_TRU64, LINUX_IA64
Encoding             latin1  Western (ISO)


                                 Engine/Host Dependent Information

Data Set Page Size          65536
Number of Data Set Pages    1
First Data Page             1
Max Obs per Page            2714
Obs in First Data Page      3
Number of Data Set Repairs  0
Filename                    /var/app/sas/work/SAS_work411300009AD8_host.ch/foo.sas7bdat
Release Created             9.0401M3
Host Created                Linux
Inode Number                96731147
Access Permission           rw-rw----
Owner Name                  tq84
File Size                   128KB
File Size (bytes)           131072


Alphabetic List of Variables and Attributes

#    Variable    Type    Len

1    col_1       Char     10
2    col_2       Num       8
*/
Github repository about-SAS, path: /programming/proc/contents/data.sas

out=

Using out= to write the result into a separate data set, then using proc print on the created dataset.
data tq84_ds;
  attrib col_foo length=$10;
  attrib col_bar format=words20.;
  attrib col_baz length=  8;

  col_foo = 'foo';
  col_bar =   42 ;
  col_baz =   99 ;

  output;
run;

     position /* Output variables by position. Default is alphabetical! */

proc contents
     data = tq84_ds
     noprint
     out  = tq84_ds_contents
     ;
run;

proc sql;
     describe table tq84_ds_contents;
quit;
/*
create table WORK.TQ84_DS_CONTENTS( bufsize=73728 )
  (
   LIBNAME char(8) label='Library Name',
   MEMNAME char(32) label='Library Member Name',
   MEMLABEL char(256) label='Data Set Label',
   TYPEMEM char(8) label='Special Data Set Type (From TYPE=)',
   NAME char(32) label='Variable Name',
   TYPE num label='Variable Type',
   LENGTH num label='Variable Length',
   VARNUM num label='Variable Number',
   LABEL char(256) label='Variable Label',
   FORMAT char(32) label='Variable Format',
   FORMATL num label='Format Length',
   FORMATD num label='Number of Format Decimals',
   INFORMAT char(32) label='Variable Informat',
   INFORML num label='Informat Length',
   INFORMD num label='Number of Informat Decimals',
   JUST num label='Justification',
   NPOS num label='Position in Buffer',
   NOBS num label='Observations in Data Set',
   ENGINE char(8) label='Engine Name',
   CRDATE num format=DATETIME16. label='Create Date',
   MODATE num format=DATETIME16. label='Last Modified Date',
   DELOBS num label='Deleted Observations in Data Set',
   IDXUSAGE char(9) label='Use of Variable in Indexes',
   MEMTYPE char(8) label='Library Member Type',
   IDXCOUNT num label='Number of Indexes for Data Set',
   PROTECT char(3) label='Password Protection (Read Write Alter)',
   FLAGS char(3) label='Update Flags (Protect Contribute Add)',
   COMPRESS char(8) label='Compression Routine',
   REUSE char(3) label='Reuse Space',
   SORTED num label='Sorted and/or Validated',
   SORTEDBY num label='Position of Variable in Sortedby Clause',
   CHARSET char(8) label='Host Character Set',
   COLLATE char(8) label='Collating Sequence',
   NODUPKEY char(3) label='Sort Option: No Duplicate Keys',
   NODUPREC char(3) label='Sort Option: No Duplicate Records',
   ENCRYPT char(8) label='Encryption Routine',
   POINTOBS char(3) label='Point to Observations',
   GENMAX num label='Maximum Number of Generations',
   GENNUM num label='Generation Number',
   GENNEXT num label='Next Generation Number',
   TRANSCOD char(3) label='Character Variables Transcoded'
  );
*/

proc print
     data=tq84_ds_contents
     noobs;
     var
       varnum
       name
       type
       length
     ;
run;
/*
VARNUM     NAME      TYPE    LENGTH

   2      col_bar      1        8
   3      col_baz      1        8
   1      col_foo      2       10

----
   type=1 indicates numeric and type=2 indicates character.
*/
Github repository about-SAS, path: /programming/proc/contents/out.sas

See also

proc datasets
SAS programming: proc

Index