C$$$  SUBPROGRAM DOCUMENTATION BLOCK
C                .      .    .                                       .
C SUBPROGRAM:    MSNOWINIT  INITIALIZE MADIS SNOW DATA
C   PRGMMR: L. BENJAMIN      ORG: FSL        DATE: 05-11-18
C   08-06-16  L. BENJAMIN REMOVED M_OFMOLD CALL
C
C ABSTRACT: READ FILES TO GET PARAMETERS SPECIFIYING WHAT WE NEED TO
C   KNOW TO READ NETCDF VARIABLES AND PROCESS THEM FOR SNOW DATASETS,
C   AND FOR ANY OTHER INFO NEEDED ONE TIME FOR SNOW PROCESSING.
C
C PROGRAM HISTORY LOG:
C   05-11-18  L. BENJAMIN ORIGINAL VERSION
C
C USAGE:    CALL MSNOWINIT (SNOWTBL,STATUS)
C
C   INPUT ARGUMENT LIST:
C
C     SNOWTBL - C       FILENAME OF THE MADIS SNOW TABLE
C     STADIC   - C       FILENAME OF THE ASOS STATION DICTIONARY
C
C   OUTPUT ARGUMENT LIST:
C     STATUS   - I       SUCCESS_P OR FAILURE CODE
C
C   INPUT FILES:
C     SNOWTBL - FILE SPECIFYING THE VARIABLES IN THE MADIS NETCDF FILES
C     SUBSRCIN - LISTS "SUBSRCS", OR SUBSETS, OF THE DATA (E.G., ASOS,
C                LOCAL MESONET PROVIDERS)
C
C SUBPROGRAMS CALLED:
C     UNIQUE:    MSNOWTBL, MERROR, M_GETLUN, M_OFMOLD
C
C REMARKS:
C   - LIMITED ERROR CHECKING IS DONE ON THE TABLE, AS IT'S MEANT TO
C     BE STATIC AND CREATED AT CODE DEVELOPMENT TIME.
C   - THE MADISCOM PROVIDER ARRAYS (NPVD, PVDNAME, ETC.) HAVE SFC
C     PROVIDERS IN ROW 1, HYDRO PROVIDERS IN ROW 2, MAP PROVIDERS 
C     IN ROW 3, SNOW PROVIDERS IN ROW 8.
C
C ATTRIBUTES:
C   LANGUAGE: FORTRAN-77 + EXTENSIONS
C   MACHINE:  UNIX
C$$$

      SUBROUTINE MSNOWINIT(SNOWTBL,SUBSRCIN,STATUS)

C     INCLUDES AND COMMONS
C     ------------------------------------------------------------------
      INCLUDE 'IMPLICIT'
      INCLUDE 'MADISCON'
      INCLUDE 'MADISCOM'

C     ------------------------------------------------------------------
C     ARGUMENTS
C     ------------------------------------------------------------------
      CHARACTER*(*) SNOWTBL,SUBSRCIN
      INTEGER       STATUS

C     ------------------------------------------------------------------
C     LOCAL
C     ------------------------------------------------------------------
      INTEGER       LUN,I,J,IFS0,ITMP,JTMP,M_LSTCHR,CODE(3),IOS
      CHARACTER     REG_VEC*1,PSTYP*1,NAME*11
      LOGICAL       ERRFLG,EXISTS

C     ---------------------------------------------------------------
C     INITIALIZE MADISCOM VARIABLES.
C     ---------------------------------------------------------------
      DO 1200 I = 1, MAX_SNOWDSET_P
         SNOWDSET_ENBL(I) = .TRUE.
 1200 CONTINUE

      DO 1201 I = 1, MAX_SUBSRC_P
         PROVDR_ENBL(I,8) = .TRUE.
 1201 CONTINUE

      NNEWPVD(8) = 0
      ALL_ENBL(8) = .TRUE.

      SNOWDSET_NAME(1) = 'SNOW     '

      LAST_SNOW_ATIME = '         '

      DMTYPE = -1
      QCTYPE = 0

      MINBCK = 0
      MINFWD = 0
      RECWIN = 0

      SNOW_INIT = INIT_P

C     ------------------------------------------------------------------
C     READ IN THE MADIS SNOW TABLE (DEFINES VARIABLES AND DATASETS).
C     MSNOWTBL WILL REPORT ANY ERRORS AND SET STATUS.
C     ------------------------------------------------------------------
      CALL MSNOWTBL(SNOWTBL,STATUS)


C     ------------------------------------------------------------------
C     READ IN THE SUBSRCIN FILE LISTING THE SUBSRC'S (PROVIDERS),
C     SUBPROVIDERS, AND VARIOUS CODES INDICATING HOW TO PROCESS SOME
C     THINGS THAT ARE HANDLED ON A PROVIDER AND/OR SUBPROVIDER BASIS.
C     ------------------------------------------------------------------
      CALL M_GETLUN(LUN, 1)
      SUBSRCIN_NAME(8) = SUBSRCIN

      ERRFLG = .FALSE.
      INQUIRE(FILE=SUBSRCIN_NAME(8), EXIST=EXISTS)
      IF (EXISTS) THEN
        OPEN(UNIT=   LUN,
     +       FILE=   SUBSRCIN_NAME(8),
     +       STATUS='OLD',
     +       FORM=  'FORMATTED',
     +       IOSTAT= IOS )

        IF (IOS .GT. 0)  THEN
          ERRFLG = .TRUE.
        ENDIF

      ELSE
        ERRFLG = .TRUE.
      ENDIF

      IF (ERRFLG) THEN

         CALL MERROR('MSNOWINIT: BIF - OPEN ERROR - SUBSRCIN')
         CALL M_GETLUN(LUN, 2)
         STATUS = BAD_FILE_P
         RETURN

      ENDIF


C     ---------------------------------------------------------------
C     NOW READ IN THE SUBSOURCES
C     ---------------------------------------------------------------
      NPVD(8) = 0
      NSUB(8) = 0

      DO 1195 J = 1, MAX_SUBSRC_P + MAX_SUBPVDR_P
         READ (LUN, 5225, END=1196) PSTYP,NAME,CODE
 5225    FORMAT (1X,A,5X,A,1X,I2,3X,I2,3X,I2)
         IF(PSTYP.EQ.'P')THEN
            NPVD(8) = NPVD(8) + 1
            PVDNAME(NPVD(8),8) = NAME(1:10)
            PVDLEN(NPVD(8),8) = M_LSTCHR(PVDNAME(NPVD(8),8),10)
            PACCUM_P_CODE(NPVD(8),8) = CODE(1)
            SRAD_P_CODE(NPVD(8),8) = CODE(2)
            SUB_CODE(NPVD(8),8) = CODE(3)
         ELSE IF(PSTYP.EQ.'S')THEN
            NSUB(8) = NSUB(8) + 1
            SUBNAME(NSUB(8),8) = NAME(1:11)
            SUBLEN(NSUB(8),8) = M_LSTCHR(SUBNAME(NSUB(8),8),11)
            PACCUM_S_CODE(NSUB(8),8) = CODE(1)
            SRAD_S_CODE(NSUB(8),8) = CODE(2)
         ENDIF
 1195 CONTINUE
 1196 OLD_NPVD(8) = NPVD(8)
      OLD_NSUB(8) = NSUB(8)
      CLOSE (LUN)

      RETURN
      END
C**---------------------------------------------------------------------
C**REQUIRED STANDARD FSL DISCLAIMER (NOVEMBER 2000)
C**---------------------------------------------------------------------
C**  OPEN SOURCE LICENSE/DISCLAIMER,  FORECAST SYSTEMS LABORATORY
C**  NOAA/OAR/FSL, 325 BROADWAY BOULDER, CO 80305
C**
C**  THIS SOFTWARE IS DISTRIBUTED UNDER THE OPEN SOURCE DEFINITION, 
C**  WHICH MAY BE FOUND AT http://www.opensource.org/osd.html.
C**
C**  IN PARTICULAR, REDISTRIBUTION AND USE IN SOURCE AND BINARY FORMS,
C**  WITH OR WITHOUT MODIFICATION, ARE PERMITTED PROVIDED THAT THE 
C**  FOLLOWING CONDITIONS ARE MET:
C**
C**  - REDISTRIBUTIONS OF SOURCE CODE MUST RETAIN THIS NOTICE, THIS LIST
C**    OF CONDITIONS AND THE FOLLOWING DISCLAIMER.
C**
C**  - REDISTRIBUTIONS IN BINARY FORM MUST PROVIDE ACCESS TO THIS 
C**    NOTICE, THIS LIST OF CONDITIONS AND THE FOLLOWING DISCLAIMER, AND
C**    THE UNDERLYING SOURCE CODE.
C**
C**  - ALL MODIFICATIONS TO THIS SOFTWARE MUST BE CLEARLY DOCUMENTED, 
C**    AND ARE SOLELY THE RESPONSIBILITY OF THE AGENT MAKING THE 
C**    MODIFICATIONS.
C**
C**  - IF SIGNIFICANT MODIFICATIONS OR ENHANCEMENTS ARE MADE TO THIS
C**    SOFTWARE, THE FSL SOFTWARE POLICY MANAGER 
C**    (softwaremgr.fsl@noaa.gov) BE NOTIFIED.
C**
C**  THIS SOFTWARE AND ITS DOCUMENTATION ARE IN THE PUBLIC DOMAIN AND 
C**  ARE FURNISHED "AS IS."  THE AUTHORS, THE UNITED STATES GOVERNMENT,
C**  ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, AND AGENTS MAKE NO 
C**  WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE SOFTWARE
C**  AND DOCUMENTATION FOR ANY PURPOSE.  THEY ASSUME NO RESPONSIBILITY 
C**  (1) FOR THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO 
C**  PROVIDE TECHNICAL SUPPORT TO USERS.
C**---------------------------------------------------------------------
