PROGRAM GRIDPOST
C
C$$$  MAIN PROGRAM DOCUMENTATION BLOCK  ***
C
C MAIN PROGRAM: GRIDPOST
C   PRGMMR: MALONEY          ORG: W/OST22     DATE: 2005-01-27
C
C ABSTRACT:  DRIVER FOR PROGRAM U202.  SEE U202 COMMENTS OR PROGRAM
C   WRITEUP FOR VARIABLE DEFINITIONS.  AN ATTEMPT HAS BEEN
C   MADE TO INCLUDE ALL INFORMATION IN THIS DRIVER THAT
C   THE USER OF U202 MIGHT HAVE TO CHANGE.  THE OPEN TO
C   THE CONTROL FILE 'U202.CN' IS HERE SO THAT ACCESS TO THE
C   CONTROL FILE CAN BE MODIFIED FOR CRAY OR BATCH HP JOBS.
C
C PROGRAM HISTORY LOG:
C   00-12-01  GLAHN   
C   05-01-27  MALONEY ADDED NCEP DOCBLOCK. ADDED CALLS TO W3TAGB
C                     AND W3TAGE. CHANGED THE VALUE OF KFILDO FROM
C                     12 TO 6.  RENAMED MDL_GRIDPOST.
C   05-03-14  RLC     INCREASED ND2,ND3 TO COVER NDFD GRID, INCREASED
C                     MAXSTA TO COVER ALL SITES LIST.
C   16-11-01  SAMPLATSKY  INCREASED MAXSTA TO 110000, AND ND4 TO 2000
C                     FOR CNVLTG IMPLEMENTATION.
C   
C        DATA SET USE
C        INPUT FILES:
C         FORT.KFILDI - UNIT NUMBER OF DEFAULT INPUT FILE.
C                       THIS IS PROBABLY SPECIFIED FOR THE SYSTEM
C                       BEING USED.  SET IN DATA STATEMENT.
C
C        OUTPUT FILES:  (INCLUDING WORK FILES)
C         FORT.KFILDO - UNIT NUMBER OF DEFAULT OUTPUT (PRINT) FILE.
C                       THIS IS PROBABLY SPECIFIED FOR THE SYSTEM
C                       BEING USED.  SET IN DATA STATEMENT.
C
C        VARIABLES
C                ND1  = THE MAXIMUM NUMBER OF STATIONS THAT CAN BE DEALT WITH.
C                       ALSO, IT MUST BE GE NBLOCK IN LINEARIZATION ROUTINES.
C                ND2  = ND2*ND3 IS THE MAXIMUM SIZE OF THE GRID THAT CAN
C                       BE DEALT WITH.
C                ND3  = ND2*ND3 IS THE MAXIMUM SIZE OF THE GRID THAT CAN
C                       BE DEALT WITH.  SEE ND2.  BECAUSE ND5 = ND2X3,
C                       AND ND5 MAY NEED TO BE LARGER THAN ND2X3, ND2
C                       OR ND3 MAY NEED TO BE SET LARGER THAN NECESSARY.
C                       SINCE THE INDIVIDUAL VALUES OF ND2 AND ND3 ARE
C                       NOT USED, THIS IS OK.
C                ND4  = THE MAXIMUM NUMBER OF PREDICTORS FOR WHICH 
C                       INTERPOLATED VALUES CAN BE PROVIDED.
C                ND5  = DIMENSION OF IPACK( ), IWORK( ), AND DATA( ).
C                       THESE ARE GENERAL PURPOSE ARRAYS, SOMETIMES USED
C                       FOR GRIDS.  TO AVIOD ERRORS IN CERTAIN ROUTINES,
C                       AND TO AVOID CONFUSION, ND5 SHOULD BE SET EQUAL TO
C                       ND2X3.  ALSO, BECAUSE IPACK( ) AND IWORK( ) ARE 
C                       USED AS WORK ARRAYS IN RDSNAM, ND5 SHOULD NOT BE
C                       LT ND12.
C                ND6  = MAXIMUM NUMBER OF MODELS THAT CAN BE DEALT WITH.
C                ND7  = DIMENSION OF IS0( ), IS1( ), IS2( ), AND IS4( ).
C                       SHOULD BE GE 54.
C                ND8  = MAXIMUM NUMBER OF DATES THAT CAN BE DEALT WITH.
C                ND9  = MAXIMUM NUMBER OF FIELDS THAT CAN BE DEALT WITH.
C                       EFFECTIVELY, THIS IS THE TOTAL NUMBER OF FIELDS
C                       IN ALL MODELS USED FOR DAY 1.
C                ND10 = THE MEMORY IN WORDS ALLOCATED TO THE SAVING OF 
C                       PACKED GRIDPOINT FIELDS AND UNPACKED VECTOR DATA.
C                       WHEN THIS SPACE IS EXHAUSTED, SCRATCH DISK WILL
C                       BE USED.
C                ND11 = MAXIMUM NUMBER OF GRID COMBINATIONS THAT CAN BE
C                       DEALT WITH ON THIS RUN.
C                ND12 = THE NUMBER OF MOS-2000 EXTERNAL RANDOM ACCESS
C                       FILES THAT CAN BE USE ON THIS RUN.
C
C       SUBPROGRAMS CALLED:  U202, W3TAGB, W3TAGE
C          UNIQUE: - U202
C          LIBRARY:
C            W3LIB - W3TAGB, W3TAGE
C
C        EXIT STATES:
C          COND =    0 - SUCCESSFUL RUN
C
C REMARKS:  NONE
C
C ATTRIBUTES:
C   LANGUAGE:  FORTRAN 90 (xlf90 compiler)
C   MACHINE:  IBM SP
C
C$$$
C
      PARAMETER (L3264B=32)
      PARAMETER (L3264W=64/L3264B)
      PARAMETER (NBLOCK=6400/L3264B)
      PARAMETER (MAXSTA=110000)
      PARAMETER (ND1=MAX(NBLOCK,MAXSTA))
      PARAMETER (ND2=2345,
     1           ND3=1597)
      PARAMETER (ND4=2000)
      PARAMETER (ND6=15)
      PARAMETER (ND7=54)
      PARAMETER (ND8=7000)
      PARAMETER (ND9=5000)
      PARAMETER (ND10=50000)
      PARAMETER (ND11=4)
      PARAMETER (ND12=5)
      PARAMETER (ND2X3=MAX(ND1,ND2*ND3,ND12))
      PARAMETER (ND5=ND2X3)
C
      CHARACTER*8 CCALL(ND1,6)
      CHARACTER*8 CCALLD(ND5)
      CHARACTER*12 UNITS(ND4)
      CHARACTER*20 NAME(ND1)
      CHARACTER*32 PLAIN(ND4)
      CHARACTER*60 NAMIN(ND6),RACESS(ND12)
C
      DIMENSION ICALL(L3264W,ND1,6),
     1          NELEV(ND1),IWBAN(ND1),STALAT(ND1),STALON(ND1),
     2          ITIMEZ(ND1),ISDATA(ND1),SDATA(ND1),SDATA1(ND1),
     3          L1DATA(ND1)
      DIMENSION FD1(ND2X3),FD2(ND2X3),FD3(ND2X3),FD4(ND2X3),
     1          FD5(ND2X3),FD6(ND2X3),FD7(ND2X3),
     2          FDVERT(ND2X3),FDTIME(ND2X3),
     3          FDA(ND2X3),
     4          FDSINS(ND2X3),FDMS(ND2X3)
      DIMENSION ID(4,ND4),IDPARS(15,ND4),THRESH(ND4),JD(4,ND4),
     1          INDEX(ND4),JP(3,ND4),IFIND(ND4),ISTAV(ND4),ITIME(ND4),
     2          ISCALD(ND4),SMULT(ND4),SADD(ND4),ORIGIN(ND4),CINT(ND4)
      DIMENSION IPLAIN(L3264W,4,ND4)
      DIMENSION IPACK(ND5),DATA(ND5),IWORK(ND5),ICALLD(L3264W,ND5)
      DIMENSION KFILIN(ND6),MODNUM(ND6),LDATB(ND6),LDATE(ND6),
     1          JFOPEN(ND6),LKHERE(ND6),MSDATE(ND6)
      DIMENSION INDEXC(ND1,ND6)
      DIMENSION IS0(ND7),IS1(ND7),IS2(ND7),IS4(ND7)
      DIMENSION IDATE(ND8),NWORK(ND8)
      DIMENSION LSTORE(12,ND9),MSTORE(7,ND9)
      DIMENSION CORE(ND10)
      DIMENSION DIR(ND1,2,ND11),NGRIDC(6,ND11)
      DIMENSION KFILRA(ND12)
C
      EQUIVALENCE (PLAIN,IPLAIN)
      EQUIVALENCE (ICALL,CCALL),(ICALLD,CCALLD)
      EQUIVALENCE (IWBAN,SDATA)
C
      DATA KFILDI/5/,
     1     KFILDO/6/
      DATA PLAIN/ND4*' '/ 
      DATA LDATB/ND6*2100000000/
      DATA LDATE/ND6*-2100000000/
      DATA LKHERE/ND6*1/
C
      CALL W3TAGB('MDL_GRIDPOST',2000,0258,0065,'W/OST22')
      CALL TIMPR(KFILDO,KFILDO,'START U202          ')
CCC   OPEN(UNIT=KFILDI,FILE='U202.CN',STATUS='OLD',IOSTAT=IOS,ERR=900)
C
      CALL U202(KFILDI,KFILDO,
     1          ICALL,CCALL,NELEV,
     2          IWBAN,STALAT,STALON,ITIMEZ,ISDATA,SDATA,SDATA1,
     3          L1DATA,NAME,ND1,FD1,FD2,FD3,FD4,FD5,FD6,FD7,
     4          FDA,FDVERT,FDTIME,FDSINS,FDMS,ND2,ND3,ND2X3,
     5          ID,IDPARS,THRESH,JD,INDEX,JP,IFIND,ISTAV,ITIME,
     6          ISCALD,SMULT,SADD,ORIGIN,CINT,UNITS,ND4,
     7          PLAIN,IPLAIN,L3264B,L3264W,
     8          IPACK,DATA,IWORK,ICALLD,CCALLD,ND5,
     9          KFILIN,NAMIN,JFOPEN,MODNUM,LDATB,LDATE,
     A          LKHERE,MSDATE,INDEXC,ND6,
     B          IS0,IS1,IS2,IS4,ND7,
     C          IDATE,NWORK,ND8,
     D          LSTORE,MSTORE,ND9,
     E          CORE,ND10,NBLOCK,
     F          DIR,NGRIDC,ND11,
     G          KFILRA,RACESS,ND12)
C
      CALL TIMPR(KFILDO,KFILDO,'END U202            ')
      CALL W3TAGE('MDL_GRIDPOST')
      STOP
C
C900  CALL IERX(KFILDO,KFILDO,IOS,'DRU202','900 ')
C     STOP 900
C
      END