# Section 4.3:
Culture Description File

The Culture Description file contains all of the cultural specification components defined in ISO/IEC 14652 except for the string ordering component. Despite the complexity of data structures specified in the following, in practice it is the smallest of the three binary file formats.

Header
Entity | Octets | Comment
--- | --- | ---
code kind | 1 | class `CODE_KINDS`
<Char Groups> |  |
<Cash Data> |  |
<Time Data> |  |
<Number Data> |  |
<Answers> |  |
paper size present | 1 | class `BOOL`
[<Paper Size>] |  |
names present | 1 | class `BOOL`
[<Name Data>] |  |
address present | 1 | class `BOOL`
[<Address Data>] |  |
phone present | 1 | class `BOOL`
[<Phone Data>] |  |
units present | 1 | class `BOOL`
[<Measurement Units>] |  |
version present | 1 | class `BOOL`
[<Version Data>] |  |

Char Groups
Entity | Octets | Name | Comment
--- | --- | --- | ---
classes count | 1 | a |
| >a times< |  |

Entity | Octets | Comment
--- | --- | ---
class kind | 1 | class `CODE_KINDS`
<One Class> |  |

"`0xffffffff`" | 4 |  | a flag
map count | 1 | b |
| >b times< |  |

Entity | Octets |
map kind | 1 | class `CHAR_MAPPINGS`
<One Map> |  |

"`0xffffffff`" | 4 |  | a flag

One Class
Entity | Octets | Name |
code size (octets) | 1 | a |
range count | 1 | b |
| >b times< |  |

Entity | Octets
--- | ---
range low | a
range high | a

One Map
Entity | Octets | Name |
code size (octets) | 1 | a |
maplet count | 1 | b |
| >b times< |  |

Entity | Octets
--- | ---
base code | a
offset | a
count | a

Note that in the above structure the offset is a signed number formed from the given number of octets.

Cash Data
Entity | Octets | Comment
--- | --- | ---
<Cash Format> |  | local
<Cash Format> |  | international
<Cash Format> |  | duo local
<Cash Format> |  | duo international
Sized(valid from date) |  |
Sized(valid to date) |  |
Sized(duo valid from date) |  |
Sized(duo valid to date) |  |
exchange rate numerator | 4 |
exchange rate denominator | 4 |

Cash Format
Entity | Octets | Name | Comment
--- | --- | --- | ---
code kind | 1 |  | class `CODE_KINDS`
Sized(decimal mark) |  |  |
Sized(thousands separator) |  |  |
Sized(positive sign) |  |  |
Sized(negative sign) |  |  |
section count | 1 | a |
| >a times< |  |

Entity | Octets
--- | ---
section digit count | 1

Sized(currency symbol) |  |  |
places precision | 1 |  |
plus symbol precedes | 1 |  | class `BOOL`
plus separation spec | 1 |  | class `MON_SPACING`
plus sign position | 1 |  | class `SIGN_POSITIONS`
minus symbol precedes | 1 |  | class `BOOL`
minus separation spec | 1 |  | class `MON_SPACING`
minus sign position | 1 |  | class `SIGN_POSITIONS`

Note that there are a number of single octet logical values in the time and date structure which have the bit-pattern 0x1 if true - in which case the following entity is next. If the value is 0x0 (false) then the following entity is omitted from the file. The entity is written in square brackets to indicate this possibility.

Time Data
Entity | Octets | Comment
--- | --- | ---
date format present | 1 |
[<Date/Time Format>] |  | date
time format present | 1 |
[<Date/Time Format>] |  | time
date/time format present | 1 |
[<Date/Time Format>] |  | date and time
era date format present | 1 |
[<Date/Time Format>] |  | era date
era format present | 1 |
[<Date/Time Format>] |  | era
era year format present | 1 |
[<Date/Time Format>] |  | era year
relative time format present | 1 |
[<Date/Time Format>] |  | relative time
weekday count | 1 |
first day in week | 1 |
first week contains | 1 |
first day display | 1 |
first workday | 1 |
calendar direction | 1 | class `CAL_DISPLAY_ORDERS`
time zones present | 1 |
[<Time Zones>] |  |
alt digits present | 1 |
[<Alternate Digits>] |  |

Date/Time Format
Entity | Octets | Name | Comment
--- | --- | --- | ---
code kind | 1 |  | class `CODE_KINDS`
Sized(prefix) |  |  |
element count | 1 | a |
| >a times< |  |

Entity | Octets | Comments
--- | --- | ---
modifier | 1 | class `DT_CODES`
component | 1 | class `DT_CODES`
Sized(separator) |  |

Time Zones
Entity | Octets | Name
--- | --- | ---
time zone count | 1 | a
| >a times< |

Entity
<Time Zone>

Time Zone
Entity | Octets | Comment
--- | --- | ---
Sized(standard time name) |  |
<Elapsed Time> |  | standard time offset
standard offset added | 1 | if West of UTC
Sized(daylight saving time name) |  |
<Elapsed Time> |  | daylight saving time offset
daylight saving offset added | 1 | if West of UTC
rule count | 1 | a
| >a times< |

Entity
<TZ Rule>

Elapsed Time
Entity | Octets
--- | ---
days since 31 Dec 1899 | 4
milliseconds | 4

Note that the days component of the elapsed time will inevitable be zero in the context of a time zone specification!

TZ Rule
Entity | Octets | Comment
--- | --- | ---
range low | 4 |
range high | 4 |
<Rule Element> |  | start DST
<Rule Element> |  | stop DST

Rule Element
Entity | Octets | Comments
--- | --- | ---
day number | 2 | in week
week number | 1 | in month
month | 1 | in year
time of day | 4 | in milliseconds

Alternate Digits
Entity | Octets | Name |
digit count | 1 | a |
| >a times< |  |

Entity
Sized(digit code)

Alternate digits are given in sequence from the encoding for the numeric value zero upwards.

Number Format
Entity | Octets | Name | Comments
--- | --- | --- | ---
code kind | 1 |  | class `CODE_KINDS`
Sized(decimal mark) |  |  |
Sized(thousands separator) |  |  |
number of sections | 1 | a |
| >a times< |  |

Entity | Octets
--- | ---
section length (chars) |

Answers
Reg Expression
Sized(Yes)
Sized(No)

Paper Size
Entity | Octets | Comments
--- | --- | ---
height | 4 | in millimetres
width | 4 | in millimetres

Name Data
Entity | Octets
--- | ---
format present | 1
[<Name Format>] |
cardinality | 1
Sized(General) |
Sized(Mr) |
Sized(Mrs) |
Sized(Miss) |
Sized(Ms) |

Name Format
Entity | Octets | Name | Comments
--- | --- | --- | ---
code kind | 1 |  | class `CODE_KINDS`
Sized(prefix) |  |  |
component count | 1 | a |
| >a times< |  |

Entity | Octets | Comments
--- | --- | ---
modifier code | 1 | class `NAME_CODES`
component code | 1 | class `NAME_CODES`
Sized(separator) |  |

Address Data
Entity | Octets | Name | Comments
--- | --- | --- | ---
<Address Format> |  |  |
code kind | 1 |  | class `CODE_KINDS`
component count | 1 | a |
| >a times< |  |

Entity | Octets | Comments
--- | --- | ---
key | 1 | class `ADDRESS_KEYS`
Sized(data string) |  |

Address Format
Entity | Octets | Name | Comments
--- | --- | --- | ---
code kind | 1 |  | class `CODE_KINDS`
Sized(prefix) |  |  |
component count | 1 | a |
| >a times< |  |

Entity | Octets | Comments
--- | --- | ---
modifier code | 1 | class `ADDR_CODES`
component code | 1 | class `ADDR_CODES`
Sized(separator) |  |

Phone Data
Entity | Octets | Comment
--- | --- | ---
international format present | 1 | class `BOOL`
[<Phone Format>] |  | international
domestic format present | 1 | class `BOOL`
[<Phone Format>] |  | domestic
Sized(foreign access) |  |
Sized(domestic access) |  |

Phone Format
Entity | Octets | Name | Comments
--- | --- | --- | ---
code kind | 1 |  | class `CODE_KINDS`
Sized(prefix) |  |  |
component count | 1 | a |
| >a times< |  |

Entity | Octets | Comments
--- | --- | ---
modifier code | 1 | class `PHONE_CODES`
component code | 1 | class `PHONE_CODES`
Sized(separator) |  |

Version Data
Entity | Octets | Name | Comment
--- | --- | --- | ---
code kind | 1 |  | class `CODE_KIND`
element count | 1 | a |
| >a times< |  |

Entity
Sized(element)

category count | 1 | b |
| >b times< |  |

Entity | Octets | Comment
--- | --- | ---
category spec | 1 | class `CATEGORIES`

date | 4 |  | days since 31 Dec 1899

| Specification Index |  | Resources Index

Comments or enquiries should be made to Keith Hopper. Page last modified: Tuesday, 24 October 2000. |