Предположим, нам надо передававать данные в определенном двочном формате.
Какой вариант вам больше нравится?

1
## Код:
```
IMPORT S:=SYSTEM, ..
TYPE
  Req = RECORD
    opcode : BYTE;
    mode    : BYTE;
    length  : SHORTINT;
    window  : INTEGER;
  END;
  AReq = ARRAY SIZE(Req) OF BYTE;

VAR rq:Req;
  ...
  rq.opcode := opcode;
  rq.mode  := mode;
  rq.length := length;
  rq.window := window;

  stream.WriteBytes(S.VAL(AReq, rq), 0,SIZE(Req),res);
```


2
## Код:
```
CONST szReq =8;
VAR rq: ARRAY szReq OF BYTE;
    opcode : BYTE;
    mode    : BYTE;
    length  : SHORTINT;
    window  : INTEGER;

  ix:=0;
  S.PUT(S.ADR(rq[0]),opcode);
  S.PUT(S.ADR(rq[1]),mode);
  S.PUT(S.ADR(rq[2]),length);
  S.PUT(S.ADR(rq[4]),window);
  stream.WriteBytes(rq, 0,szReq,res);
```


3
## Код:
```
CONST szReq =8;

  PROCEDURE WInt8(VAR b:ARRAY OF BYTE; VAR i: INTEGER; x: INTEGER);
  BEGIN
    b[i]:= SHORT(SHORT(x)); INC(i)
  END WInt8;
  ...

  VAR rq: ARRAY szReq OF BYTE;
    ix: INTEGER;

  ix:=0;
  WInt8(rq,ix,opcode);
  WInt8(rq,ix,mode);
  WInt16(rq,ix,length);
  WInt32(rq,ix,window);
  stream.WriteBytes(rq, 0,szReq,res);
```
