ГОСТ Р ИСО/МЭК 8825-2-2003
dateOfHire [1] Date,
nameOfSpouse [2] Name,
children [3] IMPLICIT
SEQUENCE OF ChildInformation DEFAULT {} }
ChildInformation :: = SET
{name Name,
dateOfBirth [0] Date}
Name :: = [APPLICATION 1] IMPLICIT SEQUENCE {givenName VisibleString,
initial VisibleString (SIZE(1)),
familyName VisibleString}
EmployeeNumber :: = [APPLICATION 2] IMPLICIT INTEGER
Date :: = [APPLICATION 3] IMPLICIT VisibleStirng (FROM(«0»..«9») л SIZE (8)) - - YYYYMMDD NameString :: = VisibleString (FROM(«a»..«z»|«A»..«Z»|«-.») л SIZE (1..64))
A.2.2 Описание ACH. 1 значения записи
Далее формально, с использованием ACH. 1, описано значение персональной записи для Джона Смита (John Smith).
{ name {givenName «John», initial «P», famillyName «Smith»}, title «Director»,
number 51,
dateOfHire «19710917»,
nameOfSpouse {givenName «Mary», initial «T», familyName «Smith»}, children {{name{givenName «Ralph», initial «T», familyName «Smith»}, dateOfBirth «19571111»},
{name{givenName «Susan», initial «В», familyName «Jones»}, dateOfBirth «19590717»}}}
A.2.3 Представление PER (ALIGNED) данного значения записи
Далее показано представление приведенного выше значения записи (после применения варианта ALIGNED установленных в настоящем стандарте правил уплотненного кодирования). Кодирование представлено в шестнадцатеричном виде и сопровождается двоичным видом с описательными комментариями.
Длина этого кодирования составляет 74 октета. Для сравнения, то же самое значение PersonnelRecord, закодированное с использованием варианта UNALIGNED PER, занимает 61 октет, BER с определенной формой длины — по крайней мере 136 октетов, а BER с неопределенной формой длины — по крайней мере 161 октет.
A.2.3.1 Шестнадцатеричное представление
864A6F68 6E501053 6D697468 01330844 69726563 746F7219 7109170C 4D617279 5410536D 69746802 1052616C 70685410 536D6974 68195711 11105375 73616E42 104A6F6E 65731959 0717 A.2.3.2 Двоичное представление
Для облегчения чтения данных в двоичном представлении использованы пустые строки для группировки логически связанных полей (обычно это пары длина/значение); для разделения полей использован конец строки; для выделения символов в символьной строке использован пробел; ’х’ представляет нулевой бит заполнения, который иногда используется для выравнивания полей по границе октета.
1 Битовая карта = 1 указывает, что есть «children»
000011х Длина name.givenName = 4
01001010 01101111 01101000 01101110 name.givenName = «John»
01010000 name.initial = «P»
000100хх Длина name.familyName = 5
01010011 01101101 01101001 01110100 01101000 name.familyName = «Smith»
00000001 Длина number = 1
00110011 number = 51
00001000 Длина title = 8
01000100 01101001 01110010 01100101 01100011 01110100 01101111 01110010 title = «Director»
0001 1001 0111 0001 0000 1001 0001 0111 dateOfHire = «19590717»
000011хх Длина nameOfSpouse. givenName = 4
32