To use this program, follow these steps:
  1. Open a SAS editor window (or another text editor)
  2. COPY the program below and PASTE it into the editor window
  3. Edit the program so that the FILE= specification points to where the data file is stored on your system
  4. Save the modified program file and RUN it using SAS
The program is below this line. If no program is listed, the URL to the EML document may be in error. If the EML file does not include all the information needed, the SAS program will have errors or be incomplete.

* Package ID: knb-lter-vcr.2.3;
* Cataloging System:VCR; 
* Data set title: A study of water quality conditions in the tidal creeks of Northampton County, Vs; 
* Data set creator:  Luis Lagera -  ; 
* Metadata Provider:    - Virginia Coast Reserve Long-Term Ecological Research Project ; 
* Contact: Dr Luis Lagera -    - ; 
* Contact:    - Information manager - Virginia Coast Reserve Long-Term Ecological Research Project   - jporter@lternet.edu; 
        
Title1 ' A study of water quality conditions in the tidal creeks of Northampton County, Vs' ; 
/* You should replace  'PUT-LOCAL-PATH-TO-DATA-FILE-HERE' (below) with the appropriate path;  
    to your data file (e.g., c:\mydata\datafile.txt). If you want to create a permanent SAS dataset, replace the WORK. specification  
    in the DATA statement (and SET statement in section for range checking) with a valid SAS Library reference. */ 
DATA WORK.data1; 
%let _EFIERR_ = 0; /* set the ERROR detection macro variable */ 
infile 'PUT-LOCAL-PATH-TO-DATA-FILE-HERE' 
                TRUNCOVER; 
input                          
                                    @1 SITEID  $ 3.     
                                    @6 DAY 2.  
                                    @8 MONTH 2.  
                                    @10 YEAR 2.  
                                    @19 TIME 4.  
                                    @24 JUCDAY 3.  
                                    @25 BATVOL     
                                    @32 PANTEMP     
                                    @39 THCOTEM     
                                    @46 HYDTEMP     
                                    @53 HYDPH     
                                    @60 HYDCOND     
                                    @66 HYDSAL     
                                    @71 HYDSAT     
                                    @78 HYDDO    ; 
if _ERROR_ then call symputx('_EFIERR_',1); /* set ERROR detection macro variable */  
IF (PANTEMP EQ 99) THEN PANTEMP= . ;  
IF (THCOTEM EQ 99) THEN THCOTEM= . ;  
IF (HYDTEMP EQ 99) THEN HYDTEMP= . ;  
IF (HYDPH EQ 99) THEN HYDPH= . ;  
IF (HYDCOND EQ 99) THEN HYDCOND= . ;  
IF (HYDSAL EQ 999) THEN HYDSAL= . ;  
IF (HYDSAT EQ 99) THEN HYDSAT= . ;  
IF (HYDDO EQ 99) THEN HYDDO= . ;  
LABEL SITEID ='Site Name / Code-' ; 
LABEL DAY ='Day-DD' ; 
LABEL MONTH ='Month-MM' ; 
LABEL YEAR ='Year-YY' ; 
LABEL TIME ='Time-none' ; 
LABEL JUCDAY ='Julian Day-none' ; 
LABEL BATVOL ='Battery Voltage-volts' ; 
LABEL PANTEMP ='Panel Temperature-deg C' ; 
LABEL THCOTEM ='Thermocouple Temperature (Air / Water)-deg C' ; 
LABEL HYDTEMP ='Water Temperature-deg C' ; 
LABEL HYDPH ='pH-pH units' ; 
LABEL HYDCOND ='Conductivity-uSIEMES/cm' ; 
LABEL HYDSAL ='Salinity-%' ; 
LABEL HYDSAT ='Dissolved oxygen content as pement saturation-%' ; 
LABEL HYDDO ='Dissolved oxygen-mg/l' ;
run;
                
                
                
/* The analyses below are basic descriptions of the variables.
   After testing, they should be replaced. */
                
                
PROC FREQ; 
      TABLES  SITEID;  
PROC MEANS; 
        VAR DAY ;  
PROC MEANS; 
        VAR MONTH ;  
PROC MEANS; 
        VAR YEAR ;  
PROC MEANS; 
        VAR TIME ;  
PROC MEANS; 
        VAR JUCDAY ;  
PROC MEANS; 
        VAR BATVOL ;  
PROC MEANS; 
        VAR PANTEMP ;  
PROC MEANS; 
        VAR THCOTEM ;  
PROC MEANS; 
        VAR HYDTEMP ;  
PROC MEANS; 
        VAR HYDPH ;  
PROC MEANS; 
        VAR HYDCOND ;  
PROC MEANS; 
        VAR HYDSAL ;  
PROC MEANS; 
        VAR HYDSAT ;  
PROC MEANS; 
        VAR HYDDO ; 
RUN;
                 
TITLE2 'Observations with one or more out of range values'; 
DATA bad1;
SET WORK.data1; 
* List cases where data is out of range;
* Note: if no out of range cases are detected, the variable names will be listed, but no actual cases; 
LENGTH BADVARS $ 255; 
IF ((DAY NE .) AND (DAY LT 01)) THEN BADVARS=CAT(TRIM(BADVARS),' DAY-min'); 
IF ((DAY NE .) AND (DAY GT 31)) THEN BADVARS=CAT(TRIM(BADVARS),' DAY-max'); 
IF ((MONTH NE .) AND (MONTH LT 01)) THEN BADVARS=CAT(TRIM(BADVARS),' MONTH-min'); 
IF ((MONTH NE .) AND (MONTH GT 12)) THEN BADVARS=CAT(TRIM(BADVARS),' MONTH-max'); 
IF ((YEAR NE .) AND (YEAR LT 00)) THEN BADVARS=CAT(TRIM(BADVARS),' YEAR-min'); 
IF ((YEAR NE .) AND (YEAR GT 99)) THEN BADVARS=CAT(TRIM(BADVARS),' YEAR-max'); 
IF ((TIME NE .) AND (TIME LT 0000)) THEN BADVARS=CAT(TRIM(BADVARS),' TIME-min'); 
IF ((TIME NE .) AND (TIME GT 2400)) THEN BADVARS=CAT(TRIM(BADVARS),' TIME-max'); 
IF ((JUCDAY NE .) AND (JUCDAY LT 1)) THEN BADVARS=CAT(TRIM(BADVARS),' JUCDAY-min'); 
IF ((JUCDAY NE .) AND (JUCDAY GT 365)) THEN BADVARS=CAT(TRIM(BADVARS),' JUCDAY-max'); 
IF ((PANTEMP NE .) AND (PANTEMP LT -5)) THEN BADVARS=CAT(TRIM(BADVARS),' PANTEMP-min'); 
IF ((PANTEMP NE .) AND (PANTEMP GT 40)) THEN BADVARS=CAT(TRIM(BADVARS),' PANTEMP-max'); 
IF ((THCOTEM NE .) AND (THCOTEM LT -5)) THEN BADVARS=CAT(TRIM(BADVARS),' THCOTEM-min'); 
IF ((THCOTEM NE .) AND (THCOTEM GT 40)) THEN BADVARS=CAT(TRIM(BADVARS),' THCOTEM-max'); 
IF ((HYDTEMP NE .) AND (HYDTEMP LT -5)) THEN BADVARS=CAT(TRIM(BADVARS),' HYDTEMP-min'); 
IF ((HYDTEMP NE .) AND (HYDTEMP GT 40)) THEN BADVARS=CAT(TRIM(BADVARS),' HYDTEMP-max'); 
IF ((HYDPH NE .) AND (HYDPH LT 4)) THEN BADVARS=CAT(TRIM(BADVARS),' HYDPH-min'); 
IF ((HYDPH NE .) AND (HYDPH GT 10)) THEN BADVARS=CAT(TRIM(BADVARS),' HYDPH-max'); 
IF ((HYDCOND NE .) AND (HYDCOND LT 10)) THEN BADVARS=CAT(TRIM(BADVARS),' HYDCOND-min'); 
IF ((HYDCOND NE .) AND (HYDCOND GT 100)) THEN BADVARS=CAT(TRIM(BADVARS),' HYDCOND-max'); 
IF ((HYDSAL NE .) AND (HYDSAL LT 0)) THEN BADVARS=CAT(TRIM(BADVARS),' HYDSAL-min'); 
IF ((HYDSAL NE .) AND (HYDSAL GT 50)) THEN BADVARS=CAT(TRIM(BADVARS),' HYDSAL-max'); 
IF ((HYDSAT NE .) AND (HYDSAT LT 0)) THEN BADVARS=CAT(TRIM(BADVARS),' HYDSAT-min'); 
IF ((HYDSAT NE .) AND (HYDSAT GT 200)) THEN BADVARS=CAT(TRIM(BADVARS),' HYDSAT-max'); 
IF ((HYDDO NE .) AND (HYDDO LT 0)) THEN BADVARS=CAT(TRIM(BADVARS),' HYDDO-min'); 
IF ((HYDDO NE .) AND (HYDDO GT 20)) THEN BADVARS=CAT(TRIM(BADVARS),' HYDDO-max'); 
IF (BADVARS NE ''); 
PROC PRINT data=bad1; 
RUN;