> -- ScrollLock писал(а):
> Доступ к содержимому массива получается через функции, возвращающие указатель типа void * на начало массива, через который и идёт работа с данными.Возможно, тут поможет (недокументированная) SYSTEM.THISARRAY (искать в SqlDB), которая формирует параметр-открытый массив:
## Код:
```
MODULE PrivTestArray;

   IMPORT SYSTEM, Log, In := i21sysIn;
   
   PROCEDURE LogArray (IN x: ARRAY OF INTEGER);
      VAR   i: INTEGER;
   BEGIN
      i := 0;
      WHILE i < LEN(x) DO
         Log.Int(x[i]);
         INC(i)
      END;
      Log.Ln
   END LogArray;
   
   PROCEDURE DoubleElems (VAR x: ARRAY OF INTEGER);
      VAR   i: INTEGER;
   BEGIN
      i := 0;
      WHILE i < LEN(x) DO
         x[i] := 2 * x[i];
         INC(i)
      END
   END DoubleElems;
   
   PROCEDURE Do*;
      VAR
         a: ARRAY 10 OF INTEGER;
         i: INTEGER;
         unsafeArrayLen: INTEGER;
         unsafeArrayAdr: INTEGER;
   BEGIN
      In.Open;
      i := 0; In.Int(a[i]);
      WHILE In.done DO
         INC(i); In.Int(a[i])
      END;
      IF i > 0 THEN
         unsafeArrayLen := i;
         unsafeArrayAdr := SYSTEM.ADR(a);
         LogArray(SYSTEM.THISARRAY(unsafeArrayAdr, unsafeArrayLen));
         DoubleElems(SYSTEM.THISARRAY(unsafeArrayAdr, unsafeArrayLen));
         LogArray(SYSTEM.THISARRAY(unsafeArrayAdr, unsafeArrayLen))
      END
   END Do;

END PrivTestArray.

^Q PrivTestArray.Do
^Q PrivTestArray.Do 1 3
^Q PrivTestArray.Do 2 -4 6 -8 10
```
