 This dataset is named 'STORET.HELP.FLOW.LIBRARY(SAS)'                  00010000
                                                                        00030000
 An example which reads the raw format data records as extracted from   00040000
 the STORET Daily Flow System.  Data are converted to SAS form, and     00050008
 placed in a SAS dataset.                                               00051008
                                                                        00070000
 Notes regarding usage -                                                00080000
                                                                        00090000
    1. The date range on the "D" card may be changed.  The flow         00100002
       retrieval procedure will send an ENTIRE water-year of data into  00110002
       SAS for ANY water year which is partially or fully within this   00111002
       date range.  SAS must therefore also check the dates.            00120002
                                                                        00160000
    2. The state and gaging station supplied may be changed.  Not all   00170000
       stations have data on parameters other than flow.  The one given 00180000
       here does, and may be used as a test.                            00190000
                                                                        00200000
    3. There are provisions in the SAS code for only 4 parameters.  Some00210000
       stations may have more than 4 parameters recorded.  You can add  00220000
       or delete parameters from the SAS analysis by carefully following00230000
       the patterns used for the 4 examples.                            00240000
                                                                        00241007
    4. The date format utilized in the SAS code (YYMMDD) does not allow 00242007
       for distinquishing data from different centuries, therefore all  00243007
       records containing 1800s data are deleted to prevent subsequent  00244007
       ambiguity.                                                       00245007
                                                                        00250000
    5. The date check in the SAS code, which appears to be redundant, is00260007
       not.  Although the "D" card appears to preclude data outside the 00270000
       specified range, the flow retrieval procedure passes data only in00280002
       units of complete water-years.  It is important to put the       00281002
       desired date range in BOTH the "D" card and the SAS "IF" test on 00290002
       "DATE".                                                          00300002
                                                                        00320000
    6. The name of the final SAS dataset may be changed from            00330007
       "SASOUT.FLOWKEEP" to an unqualified name like "FLOWKEEP" and the 00340000
       JCL statement with ddname "SASOUT" may be deleted, if the        00350000
       retrieved data is NOT to be saved in a permanent SAS dataset.    00360000
                                                                        00370000
                                                                        00380000
//iii      JOB (aaaaSTORP,Miii),STORET,TIME=(,30),                      00390000
//             MSGCLASS=A,MSGLEVEL=(1,1),PRTY=4                         00400000
/*ROUTE  PRINT HOLD                                                     00410000
/*JOBPARM LINES=30                                                      00420000
/*CNTL  CWT.TRY,EXC                                                     00430000
//FLOWSTEP  EXEC  FLOW                                                  00440003
//DISTR.INPUT DD *                                                      00450000
?RETRIEVE                                                               00480001
P10                                                                     00490001
P60                                                                     00500001
P95                                                                     00510001
P300                                                                    00520001
D 750101750331                                                          00530001
S22 07381328                                                            00540000
?PASSFILE                                                               00541001
/*                                                                      00550000
//SASSTEP EXEC SAS                                                      00560003
//FLOWIN DD DSN=&DATA,DISP=(OLD,DELETE)                                 00570000
//SASOUT DD DSN=iiiaaaa.existing.sas.dataset,DISP=OLD                   00580000
//SYSIN DD *                                                            00590000
DATA D1(KEEP=GAGE DATE STAT DEPTHTYP DEPTH XSEC TEMP)                   00600000
     D2(KEEP=GAGE DATE STAT DEPTHTYP DEPTH XSEC FLOW)                   00610000
     D3(KEEP=GAGE DATE STAT DEPTHTYP DEPTH XSEC CONDUCT)                00620000
     D4(KEEP=GAGE DATE STAT DEPTHTYP DEPTH XSEC DISS_OX)                00630000
     ;                                                                  00640000
INFILE FLOWIN;                                                          00650000
LENGTH DEFAULT=4;                                                       00660000
FORMAT DATE YYMMDD6.;                                                   00670000
FORMAT DEPTHTYP $8.;                                                    00680000
*  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  ;     00690000
INPUT  @10   GAGE    $CHAR15.                                           00700000
       @25   XSEC        RB4.                                           00710000
       @29   DEPTH       RB4.                                           00720000
       @33   PARM        IB4.                                           00730000
       @37   WYR         IB2.                                           00740000
       @39   STAT        IB2.                                           00750000
       @1611 BMONTH      IB2.                                           00760000
             @ ;                                                        00770000
*  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  ;     00780000
*      GAGE     ==> gaging station                                ;     00790000
*      XSEC     ==> cross section locator  (in feet, measured     ;     00800000
*                   from the left bank while facing downstream)   ;     00810000
*      DEPTH    ==> depth  (in feet)                              ;     00820000
*      PARM     ==> STORET parameter code                         ;     00830000
*      STAT     ==> value type, e.g., 1=max, 2=min, 3=mean        ;     00840000
*  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  ;     00850000
DEPTHTYP=' ';                                                           00860000
IF DEPTH=111111                                                         00870000
 THEN DO;                       * bottom data ;                         00880000
  DEPTHTYP='BOTTOM';                                                    00890000
  DEPTH=.;                                                              00900000
  END;                                                                  00910000
IF DEPTH=888888                                                         00920000
 THEN DO;                       * surface data ;                        00930000
  DEPTHTYP='SURFACE';                                                   00940000
  DEPTH=.;                                                              00950000
  END;                                                                  00960000
IF DEPTH=999999 THEN DEPTH=.;   * depth missing ;                       00970000
IF XSEC=999999 THEN XSEC=.;     * cross section locator missing ;       00980000
DO MO=BMONTH TO 12, 1 TO BMONTH-1;                                      00990000
   IF WYR < 1900 THEN DELETE;          * skips 1800S data  ;            00991007
   IF MO >= BMONTH  THEN YEAR = WYR-1901;   ELSE YEAR = WYR-1900;       01000000
   OFFSET = (((MO-1)*31)*4)+1;                                          01010000
   DO DAY=1 TO 31;                                                      01020000
     INPUT  @OFFSET+44 VALUE RB4. @;   * read data values          ;    01030000
     IF VALUE <= 999990 THEN DO;       * check for missing values  ;    01040000
       DATE = MDY(MO,DAY,YEAR);                                         01050000
     * following date range should match "D" card date range ;          01060000
       IF (DATE >= '1JAN75'D)  AND  (DATE < '1APR75'D)                  01070004
        THEN DO;                                                        01080000
         IF PARM=10  THEN DO; TEMP=VALUE;    OUTPUT D1; END;            01090000
         IF PARM=60  THEN DO; FLOW=VALUE;    OUTPUT D2; END;            01100000
         IF PARM=95  THEN DO; CONDUCT=VALUE; OUTPUT D3; END;            01110000
         IF PARM=300 THEN DO; DISS_OX=VALUE; OUTPUT D4; END;            01120000
         END;                                                           01130000
       END;                            * value <= 999990 ;              01140005
     OFFSET = OFFSET + 4 ;                                              01150005
     END;                              * day=1 to 31 ;                  01160005
   END;                                * mo=bmonth ;                    01170005
*  -  -  - -  -  -  -  - -  -  -  -  -  -  -  -  -  -  -  -  -  -  - ;  01180000
PROC SORT DATA=D1;; BY GAGE DATE STAT DEPTHTYP DEPTH XSEC;              01190000
PROC SORT DATA=D2;; BY GAGE DATE STAT DEPTHTYP DEPTH XSEC;              01200000
PROC SORT DATA=D3;; BY GAGE DATE STAT DEPTHTYP DEPTH XSEC;              01210000
PROC SORT DATA=D4;; BY GAGE DATE STAT DEPTHTYP DEPTH XSEC;              01220000
*  -  -  - -  -  -  -  - -  -  -  -  -  -  -  -  -  -  -  -  -  -  - ;  01230000
DATA SASOUT.FLOWKEEP;                                                   01240000
MERGE D1 D2 D3 D4;                                                      01250000
BY GAGE DATE STAT DEPTHTYP DEPTH XSEC;                                  01260000
*  -  -  - -  -  -  -  - -  -  -  -  -  -  -  -  -  -  -  -  -  -  - ;  01270000
PROC PRINT; BY GAGE; ID DATE;                                           01280000
/*                                                                      01290000
