program pullvar_nhc
c  This program creates a script called pullvar_nhc.ksh which pulls appropriate 
c  fields from GFS grib file.

      integer *4 nvars,ishell,ilog,nlevs
      character *1 cvar3,cvar4,clev4
      character *4 cvar(5),clev(11),ctmpvar,ctmplev
      character *9 ctmpfil
      character *14 cinput
      character *15 cscript
      character *16 clog      
      character *28 cgrbdir
      character *19 cgribfil
      character *40 cgrep
      character *120 ccom

c getenv is not considered intrinsic by pgf90
c     INTRINSIC getenv 
	  
c	  Als added code need to query environmental variable 
c	  set by get_gfs.pl named GFSFILE
	  
	  character *100 gfsfile 
	  call getenv("GFSFILE", gfsfile)
      
c      data cgrbdir /'/home/dostalek/jack/gfs/bin/'/
      data clog /'pullvar_nhc.log'/      
      data cscript /'pullvar_nhc.ksh'/
c      data cinput /'pullvar_nhc.in'/
      data ilog,ishell,iinput /50,51,52/
      data nvars,nlevs /5,11/
      data cvar /'UGRD','VGRD','HGT ','TMP ','RH  '/
      data clev /'100 ','150 ','200 ','250 ','300 ','400 ','500 ',
     +'700 ','850 ','925 ','1000'/ 

c     Open log file
c      open(unit=ilog,file=cgrbdir//clog,status='replace')
	  open(unit=ilog,file=clog,status='replace')
c     Open input file
c      open(unit=iinput,file=cgrbdir//cinput,status='old')
c	  open(unit=iinput,file=cinput,status='old')
c      read(iinput,3) cgribfil
c3     format(a19)
c   

c     Create the shell script 
c      open(unit=ishell,file=cgrbdir//cscript,status='replace')
	  open(unit=ishell,file=cscript,status='replace')          

      write(ishell,4) '#!/bin/ksh'
4     format (a10)      
      write(ishell,5) '# Script pullvar_nhc.ksh'
5     format (a24)              
      write(ishell,7) '#'
7     format (a1)      
c      write(ishell,12) 'WGRIB=''/home/dostalek/jack/wgrib/wgrib''' 
	write(ishell,12) 'WGRIB=wgrib'
12    format(a15)
c      write(ishell,8) 'gribdir='''//cgrbdir//''''
c8     format (a38)
c      write(ishell,9) 'gribfil='''//cgribfil//''''
c9     format (a29)     

c	  Als code
	  write (ishell,999) 'gribfil='//gfsfile//''
999   format (a100) 	  



c     Cycle through variables, creating appropriate wgrib commands
            
      do 200 ivar=1,nvars
        ctmpvar=cvar(ivar)
        cvar3=ctmpvar(3:3)
        cvar4=ctmpvar(4:4)
        nvarchar=4
        if(cvar4.eq.' ') nvarchar=3
        if(cvar3.eq.' ') nvarchar=2
        do 100 ilev=1,nlevs
          ctmplev=clev(ilev)
          clev4=ctmplev(4:4)
          nlevchar=4
          if(clev4.eq.' ') nlevchar=3
          cgrep="|grep ':"//ctmplev(1:nlevchar)//" mb:'|grep ':"//
     +    ctmpvar(1:nvarchar)//":'|"
          ngrepch=index(cgrep,'  ')
          ngrepch=ngrepch-1
          ctmpfil=ctmplev(1:nlevchar)//ctmpvar(1:nvarchar)
          mchar=index(ctmpfil,' ')
          mchar=mchar-1
          
          if(ctmpfil(1:mchar).eq.'250RH') goto 100
          if(ctmpfil(1:mchar).eq.'200RH') goto 100
          if(ctmpfil(1:mchar).eq.'150RH') goto 100
          if(ctmpfil(1:mchar).eq.'100RH') goto 100
          
c          ccom='$WGRIB -s $gribdir$gribfil '//cgrep(1:ngrepch)//' $WGRIB 
c     + -s -i -H $gribdir$gribfil -o $gribdir"'//ctmpfil(1:mchar)//'.bin"          
c     +'
	        ccom='$WGRIB -s $gribfil '//cgrep(1:ngrepch)//' $WGRIB 
     + -s -i -H $gribfil -o "'//ctmpfil(1:mchar)//'.bin"          
     +'
          write(ishell,150) ccom
150        format (a120)          
100      continue
200    continue

      write(ishell,10) '#'
10    format (a1)
      write(ishell,11) 'exit'
11    format (a4)            

      write(ilog,*) ' '
      write(ilog,*) 'pullvar_nhc.ksh created'
      write(ilog,*) '  '

      close(unit=ishell)
      close(unit=iinput)
      close(unit=ilog)
  
      stop
      end