Input/output records¶
Setting input and reading output¶
Input to action routines is done using the functions idba_set*
, and output
is read with the functions idba_enq*
(see Input, output, actions):
! Set the extremes of an area and retrieve all the stations in it
ierr = idba_setd(handle, "latmin", 30.D0)
ierr = idba_setd(handle, "latmax", 50.D0)
ierr = idba_setd(handle, "lonmin", 10.D0)
ierr = idba_setd(handle, "lonmax", 20.D0)
ierr = idba_query_stations(handle, count)
! Get the informations about a station
do while (count.gt.0)
ierr = idba_next_station(handle)
ierr = idba_enqc(handle, "name", cname)
ierr = idba_enqi(handle, "ana_id", id)
ierr = idba_enqd(handle, "lat", lat)
ierr = idba_enqd(handle, "lon", lon)
! ....
count = count - 1
enddo
Note that, when one uses idba_setc()
, idba_seti()
, idba_enqc()
,
idba_enqi()
with parameters that have some decimal digits, DB-All.e will
work with values as if they did not have a decimal point. That is, if latitude
10.124323 is read with idba_enqi()
, then the result will be 10124323.
The following example shows what happens:
! Set the latitude to 30.0 degrees
ierr = idba_setr(handle, "lat", 30.0)
! Set the latitude to 30.0 degrees
ierr = idba_setd(handle, "lat", 30.0D0)
! Set the latitude to 0.00030 degrees
ierr = idba_seti(handle, "lat", 30)
! Set !the latitude to 30.0 degrees
ierr = idba_seti(handle, "lat", 3000000)
! Set the latitude to 0.00030 degrees
ierr = idba_setc(handle, "lat", "30")
! Set the latitude to 30.0 degrees
ierr = idba_setc(handle, "lat", "3000000")
Input/output shortcuts¶
There are a few functions that are shortcuts to other input and output functions:
idba_enqdate()
is a shortcut to:
idba_enqi(handle, "year", year)
idba_enqi(handle, "month", month)
idba_enqi(handle, "day", day)
idba_enqi(handle, "hour", hour)
idba_enqi(handle, "min", minute)
idba_enqi(handle, "sec", second)
idba_setdate()
is a shortcut to:
idba_seti(handle, "year", year)
idba_seti(handle, "month", month)
idba_seti(handle, "day", day)
idba_seti(handle, "hour", hour)
idba_seti(handle, "min", minute)
idba_seti(handle, "sec", second)
idba_enqlevel()
is a shortcut to:
idba_enqi(handle, "leveltype1", type1)
idba_enqi(handle, "l1", l1)
idba_enqi(handle, "leveltype2", type2)
idba_enqi(handle, "l2", l2)
idba_setlevel()
is a shortcut to:
idba_seti(handle, "leveltype1", type1)
idba_seti(handle, "l1", l1)
idba_seti(handle, "leveltype2", type2)
idba_seti(handle, "l2", l2)
idba_enqtimerange()
is a shortcut to:
idba_enqi(handle, "pindicator", type)
idba_enqi(handle, "p1", p1)
idba_enqi(handle, "p2", p2)
idba_settimerange()
is a shortcut to:
idba_seti(handle, "pindicator", type)
idba_seti(handle, "p1", p1)
idba_seti(handle, "p2", p2)
Parameter names¶
There are three different kinds of parameter names one can use:
DB-All.e parameters (see Input/output/query parameters), that have a special meaning to DB-All.e: for example they can be part of the coordinate system, or space/time extremes to use to query the database. They are indicated simply with their name (for example, “lat” or “yearmin”).
btable, represent all possible sorts of observed data, and are indicated in the form Bxxyyy, where xxyyy are the X and Y values from the WMO table B.
aliases that are short, easy to remember names which can be used instead of frequently used WMO B variables.
Queries and observed data¶
The idba_set*
and idba_enq*
functions can also be used to set and get
observation data. To do so, use as parameter the string "Bxxyyy"
, where
xx
and yyy
are the X and Y values of the BUFR/CREX table B describing
the observed data.
For example:
! Set the speed of the wind (very useful in summer)
ierr = idba_setr(handle, "B11002", 1.8)
! Also set the temperature
ierr = idba_setr(handle, "B12001", 21.8)
ierr = idba_insert_data(handle)
Attributes¶
The idba_set*
and idba_enq
groups of functions can also be used to
set and get attributes on data. To do so, use as parameter the string
"*Bxxyyy"
, where xx
and yyy
are the X and Y values of the
BUFR/CREX table B describing the attribute.
For example:
! Set the confidence of the wind speed value we inserted
! in the last 'idba_insert_data'
ierr = idba_setr(handle, "*B33007", 75.0)
ierr = idba_setc(handle, "*var_related", "B11002")
ierr = idba_insert_attributes(handle)