Provided by: isdnlog_3.25+dfsg1-9ubuntu3_amd64 bug

NAME

       rate-files - Format of rate-files

DESCRIPTION

       The  rate-files used by isdnlog(8) and by isdnrate(1) are textfiles defining the telephone
       fees for different destinations at certain dates/times for all providers of one country.
       The rate-files have the following overall layout:

       Header entries

       Provider entries

       Comments starting with a hash-sign '#' and empty lines are ignored. The first letter (tag)
       followed  by  a  colon separates the entries. Additional white space may be used after the
       tags to group content more readably.

   Special entries
       I:includefile

       i:includefile

              includefile get's substituted at the current position. There are two possibilities.
              In  the  rate  source  file  (which  is  prepared  by pp_rate) a small 'i' puts the
              contents of the include  file  in  the  outputfile.   An  'I'-Tag  means,  for  the
              preprocessor,  write  a  new output file (the includefile) and leave the tag in the
              rate-files. This is for real include files.
              Includes may be nested twice. The filename should not contain any paths (except for
              'i' of course), they are taken relative to their parent file.

   Header entries
       V:versionsstring

              e.g.  V:1.0-Germany [18-Mar-1999]

       S:Servicename

       N:Servicenumber[,Servicenumber...]

              This  defines  telephone services with special numbers. Special numbers are numbers
              which a) start with no '0' or b) can not be dialed with every  provider.  A  number
              with  a  variable length should have the wildcard '*' at the end, eg.  07189* which
              matches all numbers starting with 07189.  Numbers with wildcards should  be  placed
              after numbers which would match the wildcard, because matching is done straight top
              down.  There may be multiple N: tags for one telephone service.

              e.g.
              S:Internet
              N:07189*,19430
              N:19440

       U:currencyfmt currency

              If the first char of currencyfmt is ^, the amount is multiplied by 100 before it is
              displayed without leading ^.

              e.g. (one of these, ¢ = cent)
              U:%.3f EUR
              U:^%.3f ¢

       X:num_wildcard = provider[zZone] [,...]

              Define  exception.  If  a certain number is always routed to a certain provider and
              not to the preselected provider, you should use this tag.
              e.g. in Austria, online service numbers  194x  or  07189  go  always  via  Telekom,
              ignoring your preselection:
              X: 194*=1,07189*=1
              or
              X: 194*=1z6    # Provider 1 Zone 6

   Provider entries
       A  new  provider  starts always with a P: tag and consists of a Providerheader followed by
       Providerzones.

   Providerheader
       P:[daterange] providernumber providername

              daterange is [[fromDate][-toDate]]
              This defines a time range for the validity of rates for this provider.  Dates  have
              to  be  numeric  in format dd.mm.yyyy.  Note: as time is assumed as 00:00, take for
              toDate the day+1. The daterange has to  be  enclosed  in  square  brackets.  Either
              fromDate or -toDate or both may be given.
              The  providernumber  may  be  a simple number, normally the last digits of the VBN-
              number, or providernumber,variant if a provider has different connection fees.
              e.g.
              P:02 UTA
              or
              P:[01.01.1999] 1,1 Telekom Minimumfee

       B:vbn

       VBN-Number for provider

              e.g.  B:1002
              This is the number to select this provider and depends on your country.

       C:COMMENT: comment

       COMMENT may be an arbitrary string, but the following entries are used already:

              C:Name:           Providername
              C:Maintainer:     Who did the hard work
              C:TarifChanged:   and when
              C:Address:        Provideraddress
              C:Homepage:       http:URL for provider
              C:TarifURL:       URL for tarif info
              C:EMail:          EMail-Address
              C:Telefon:        Telefon number
              C:Telefax:        Fax number
              C:Hotline:        Telefon number
              C:Zone:           Textual info about zones
              C:Special:        Guess
              C:GT:             Additional charge text
              C:GF:             Additional charge formula

       If there are multiple comments with the same comment name, they get appended separated  by
       a newline char.

       D:zone

       Name  of  zone  file  (inserted  for  %s  in  ZONEFILE = /usr/lib/isdn/zone-CC-%s.dat from
       isdn.conf)

              e.g.  D:1001 # zone file is zone-at-1001.gdbm

       Note: if the provider has no different domestic zones, you should not define a D:tag.

   Providerzones
       A Providerzone entry starts with a Z: tag followed by one or more A: and T: tags.

       A zone is a region of areas, for which the same rates apply. Domestic  and  foreign  zones
       should not be mixed and all foreign zones should follow domestic zones.

       R:prov, sub ; zonelist

       Read  zones  from  provider prov subprovider number sub.  A zonelist is defined below.  If
       the referenced provider doesn't have a  subprovider  number,  the  sub  must  be  -1.  The
       referenced  provider  may be defined before or after the R:-tag. The referenced zones must
       be real Z:-entries, not references themself. The zone numbers and names are taken from the
       referenced  provider.  The  last to_zone may be missing then all zones from the start zone
       are used.
       e.g.

       R:1,1 ; 1-4,6, 10-
       There some limitations:
       The reference cannot be more exact than the referenced providerzones.  R:42,0;1  will  not
       work as desired if P:42,0 defines Z:1-4.
       It  is  not  possible  to reference a providerzone without areas when the default domestic
       zone (with your countrycode as area) is not included  in  the  same  range  of  referenced
       zones.   This  applies  mainly  to  zones  for  different  distances in the national fixed
       network, e.g. Z:1-3 in Germany.


       r:prov, sub ; start_zone-
       This tag is related to the R:-tag.  It is interpreted by  the  rate-preprocessor  pp_rate.
       All  providerzones with a zone number greater or equal start_zone are copied from provider
       prov[,sub] and replace the r:-tag.  If an area is already used in a previous  providerzone
       of  the  current  provider,  it  will  not  be copied.  If all areas of a providerzone are
       already defined, the entire zone will not be copied.  Lines that contain only comments are
       also not copied, but comments at the end of other lines are.

       This tag is designed for providers with a rate variant that offers different fees for some
       foreign destinations.

       Z:zonelist zonename

       where zonelist is zone[-to_zone][,...]

              e.g.  Z:1-2,4 Interior

       A:area[,area...]

       area may be a telephone number (including +countrycode for numbers which  may  be  reached
       from everywhere, a telephone number without +countrycode for numbers only reachable in the
       own country) or an area name or alias as defined in country.dat.  Country names have to be
       translated to their code by the rate-preprocessor pp_rate.

              e.g.  A:19430,07189 # Online

              e.g.  A:+31,Belgium # Int 1

       Note:  There  should  always  be  exactly  one  zone  with your countrycode or countryname
       respectively:

              Z:4
              A:+49
              T:...

       Countrynames like Belgium in the above example are replaced by  their  ISO-Code  (or  TLD)
       with the rate preprocessor pp_rate.

       T:[daterange]daylist/timelist[!]=chargelist chargename

       where daterange is [[fromDate][-toDate]] like the corresponding provider entry.  Note that
       the daterange is enclosed in sqare brackets, either fromDate or -toDate are optional.

       daylist is day[-day][,...]  and day is a daynumber (1=Mon,  2=Tue,  ...)  or  W  (workday,
       Monday  to  Friday),  E (weekend), H (holiday) or * (everyday).  If more than one of these
       days match a given date, the following order of priority (highest first) applies: H 7 .. 1
       E W *.

       timelist is hour[-hour][,hour] where hour is a number 0..23 or * for everytime.

       After  daylist/timelist  follows  =  or != which means, provider doesn't adjust rates on a
       rate boundary e.g. at 18h00.

       A chargelist consists of

       [MinCharge|]Charge[(Divider)]/Duration[:Delay][/Duration...]

       where MinCharge| is an (optional) minimum charge, Charge the rate per Duration seconds  or
       optional rate per (Divider) seconds, Duration is the length of one charge unit in seconds.
       After Delay the next duration is taken. If delay is not given it equals to  the  duration.
       The last duration may not have a delay and may not be zero.

              EXAMPLES
              T:1-4/8-18=1.5(60)/60/1 workday

              Monday  until  Thursday, daytime the charge is 1.50 per minute, first charge is for
              one minute after this charging is calculated in seconds interval.

              T:W/18-8=0.30|1.2(60)/1 night

              On workdays, night, charge is the bigger of 1.20 per minute or 0.30

              T:*/*=0.50/0,1(60)/1 always

              Everyday, everytime there is a connection fee of 0.50, then charge is 1 per minute.

              T:H/*=0.5/60:600,0.5/30 holidays

              On holidays, everytime a charge of 0.5 per minute in a minutes interval,  after  10
              minutes 0.5 per half minute in half a minutes interval.

              T:*/*=1.3/0,0/1

              Everyday, everytime the charge is 1.30 independent of duration, which could also be
              written as T:*/*=1.3|0/1.

              T: [-01.02.2000] */17-19=0.79(60)/60/1 Happy Hour
              T: [-01.02.2000] */19-17=0.90(60)/60/1 Normal

              Until the first of Feb 0:00h (i.e. end is 31.1.2000 24:00), everyday between 17 and
              19h  a  charge  of 0.79 per minute, the first minute is always charged fully, after
              this, charging is calculated in seconds interval.
              The second entry defines a charge of 0.90 in the time outside the happy hour.

              T:[15.11.1999-01.02.2000]*/17-19=0.79(60)/60/1 HH

              Like above, but a full date range is given.

       The next two t:-tags are interpreted by pp_rate and replaced  by  one  or  more  T:-lines.
       Both methods can be used together.

       t:[daterange]?[H]=chargelist chargename

       This line is replaced by according T:-lines for not yet defined day/hour pairs.

       If  a  daterange  is  given,  only  previous T:-lines without a daterange or with the same
       daterange will be considered as earlier definitions.  If H is noted, definitions will also
       be added for holidays.

              EXAMPLE
              T:W/08-18=0.10/60 normal time
              t:?H=0.04/60 save time

              This lines will lead to the following lines after pp_rate:

              T:W/08-18=0.10/60 normal time
              T:W/18-08=0.04/60 save time
              T:E,H/*=0.04 save time

       t:daterange=srcrange [chargename]

       Generates  T:-lines  for  daterange by copying previous T:-lines with srcrange in the same
       zone.  If a chargename is given, it will replace the chargename of the  originating  line.
       srcrange can be shortened as long as it remains definite.

              EXAMPLE
              T:[-24.12.2003]W/*=0.08/60 on workdays
              T:[-24.12.2003]E,H/*=0.06 weekend
              T:[24.12.2003-25.12.2003]*/*=0.04 Christmas Eve
              t:[25.12.2003-31.12.2003]=[-24.12.2003]
              t:[31.12.2003-01.01.2004]=[24.12.] New Year's Eve
              t:[01.01.2004]=[-24.12.]

              This will be transformed into:

              T:[-24.12.2003]W/*=0.08/60 on workdays
              T:[-24.12.2003]E,H/*=0.06/60 weekend
              T:[24.12.2003-25.12.2003]*/*=0.04/60 Christmas Eve
              T:[25.12.2003-31.12.2003]W/*=0.08/60 on workdays
              T:[25.12.2003-31.12.2003]E,H/*=0.06/60 weekend
              T:[31.12.2003-01.01.2004]=0.04/60 New Years' Eve
              T:[01.01.2004]W/*=0.08/60 on workdays
              T:[01.01.2004]E,H/*=0.06/60 weekend

SEE ALSO

       isdnlog(8), isdnrate(1), rate.conf(5), isdnlog/README, rate-at.dat

AUTHOR

       Leopold   Toetsch   <lt@toetsch.at>   (of   this  man  page  of  course).   Tobias  Becker
       <tobiasb@isdn4linux.de> added the tags r: and t:.

-lt-                                        2005/02/23                              rate-files(5)