mirror of https://github.com/ecmwf/eccodes.git
153 lines
3.6 KiB
Fortran
153 lines
3.6 KiB
Fortran
PROGRAM READVALUES
|
|
|
|
|
|
|
|
INTEGER IFILE
|
|
INTEGER GRIBID
|
|
INTEGER GRIBID2
|
|
INTEGER VALUE
|
|
INTEGER NARGS
|
|
INTEGER IRET
|
|
INTEGER IFILEN
|
|
INTEGER VALUESLEN
|
|
INTEGER J
|
|
INTEGER JCOUNT
|
|
|
|
INTEGER GRIB_OPEN_FILE
|
|
EXTERNAL GRIB_OPEN_FILE
|
|
INTEGER GRIB_CLONE
|
|
EXTERNAL GRIB_CLONE
|
|
EXTERNAL GRIB_PRINT
|
|
INTEGER GRIB_PRINT
|
|
INTEGER GRIB_CLOSE_FILE
|
|
INTEGER GRIB_NEW_FROM_FILE
|
|
INTEGER GRIB_NEW_FROM_TEMPLATE
|
|
INTEGER GRIB_SET_REAL8_ARRAY
|
|
INTEGER GRIB_SET_REAL4_ARRAY
|
|
INTEGER GRIB_SET_INT_ARRAY
|
|
INTEGER GRIB_GET_INT
|
|
INTEGER GRIB_SET_INT
|
|
INTEGER GRIB_GET_REAL8_ARRAY
|
|
INTEGER GRIB_RELEASE
|
|
|
|
EXTERNAL GRIB_CLOSE_FILE
|
|
EXTERNAL GRIB_NEW_FROM_FILE
|
|
EXTERNAL GRIB_NEW_FROM_TEMPLATE
|
|
EXTERNAL GRIB_GET_INT
|
|
EXTERNAL GRIB_SET_INT
|
|
EXTERNAL GRIB_GET_REAL8_ARRAY
|
|
EXTERNAL GRIB_SET_REAL8_ARRAY
|
|
EXTERNAL GRIB_SET_REAL4_ARRAY
|
|
EXTERNAL GRIB_SET_INT_ARRAY
|
|
EXTERNAL GRIB_RELEASE
|
|
INTEGER PVSIZE
|
|
|
|
|
|
INTEGER GRIB_WRITE_TO
|
|
EXTERNAL GRIB_WRITE_TO
|
|
|
|
INTEGER GRIB_GET_ERROR_STRING
|
|
EXTERNAL GRIB_GET_ERROR_STRING
|
|
|
|
|
|
INTEGER PLSIZE
|
|
CHARACTER*2 INPUT
|
|
CHARACTER*256 YDATAFILE
|
|
CHARACTER*256 MPARAM
|
|
CHARACTER*256 MERROR
|
|
REAL*8 VALUES(2048)
|
|
INTEGER PL(32)
|
|
REAL*8 PVSS(20)
|
|
REAL*8 VMAX
|
|
REAL*8 VMIN
|
|
IFILE = 0
|
|
IRET = 5
|
|
GRIBID = 0;
|
|
PVSIZE =20
|
|
PLSIZE =32
|
|
NARGS = IARGC()
|
|
|
|
VALUESLEN = 2048
|
|
|
|
CALL GETARG(1,INPUT)
|
|
|
|
IF(INPUT.EQ.'-i') THEN
|
|
CALL GETARG(2,YDATAFILE)
|
|
ELSE
|
|
print*,'Usage: readvalues -i inputfile'
|
|
STOP
|
|
END IF
|
|
|
|
JCOUNT = 0
|
|
|
|
IFILEN = INDEX(YDATAFILE,' ') - 1
|
|
|
|
IRET = GRIB_OPEN_FILE(IFILE, YDATAFILE (1: IFILEN),"r")
|
|
WRITE (*,*) "Opened returned ", IRET, IFILE
|
|
|
|
JCOUNT = 0
|
|
|
|
50 CONTINUE
|
|
JCOUNT = JCOUNT + 1
|
|
IRET = GRIB_NEW_FROM_TEMPLATE(GRIBID, "gg_ml")
|
|
|
|
C IRET = GRIB_NEW_FROM_FILE(IFILE,GRIBID)
|
|
C WRITE (*,*) "gribid ret ",IRET, IFILE
|
|
|
|
IF ( IRET .LT. 0 ) THEN
|
|
WRITE (*, *) 'total ', JCOUNT ,' ret = ', IRET
|
|
C IRET = GRIB_CLOSE_FILE(IFILE)
|
|
STOP 'no more gribs'
|
|
ENDIF
|
|
IF ( JCOUNT .GT. 1 ) THEN
|
|
WRITE (*, *) 'total ', JCOUNT ,' ret = ', IRET
|
|
IRET = GRIB_CLOSE_FILE(IFILE)
|
|
STOP 'no more gribs'
|
|
ENDIF
|
|
IRET = GRIB_GET_INT(GRIBID,"ni",VALUE)
|
|
WRITE (*,*) "NI ", VALUE , " ret ",IRET
|
|
|
|
IRET = GRIB_GET_ERROR_STRING(IRET,MERROR)
|
|
WRITE (*,*) "ERROR ", MERROR
|
|
|
|
|
|
DO J = 1, PVSIZE
|
|
PVSS(J) = J
|
|
ENDDO
|
|
|
|
|
|
IRET = GRIB_SET_REAL8_ARRAY(GRIBID,"pv",PVSS, PVSIZE)
|
|
IRET = GRIB_GET_ERROR_STRING(IRET,MERROR)
|
|
|
|
DO J = 1, PLSIZE
|
|
PL(J) = 64
|
|
ENDDO
|
|
|
|
IRET = GRIB_SET_INT_ARRAY(GRIBID,"pl",PL, PLSIZE)
|
|
IRET = GRIB_GET_ERROR_STRING(IRET,MERROR)
|
|
VALUE = 1
|
|
IRET = GRIB_SET_INT(GRIBID,"marsClass",VALUE)
|
|
WRITE (*,*) "Class ", VALUE , " ret ",IRET
|
|
|
|
VMAX = VALUES(1)
|
|
VMIN = VMAX
|
|
|
|
DO J = 1, VALUESLEN
|
|
VALUES(J) = J + 0.5
|
|
ENDDO
|
|
|
|
IRET = GRIB_SET_REAL8_ARRAY(GRIBID,"values",VALUES, VALUESLEN)
|
|
IRET = GRIB_GET_ERROR_STRING(IRET,MERROR)
|
|
WRITE (*,*) "PACK ERROR here", MERROR
|
|
|
|
IRET = GRIB_PRINT(GRIBID,"level")
|
|
IRET = GRIB_PRINT(GRIBID,"topLevel")
|
|
IRET = GRIB_PRINT(GRIBID,"bottomLevel")
|
|
IRET = GRIB_PRINT(GRIBID,"GRIB")
|
|
IRET = GRIB_WRITE_TO(GRIBID,"test.grib")
|
|
IRET = GRIB_RELEASE(GRIBID)
|
|
GO TO 50
|
|
|
|
|
|
END
|