Оказывается в XDS есть поддержка:
Цитата:
The array of bytes which is passed to a procedure in place of a formal SEQ-parameter is formed as follows:
• values of all actual parameters forming the sequence are represented as described below and concatenated in the array in their textual order
• integer values are converted to LONGINT
• BOOLEAN, CHAR, cardinal, and enumeration values are converted to LONGCARD
• range type values are converted according to their base type
• real values are converted to LONGREAL
• pointer, address, opaque, and procedure type values are converted to ADDRESS
• a structured value (record or array) is interpreted as a one-dimensional array of bytes and is represented by a 3-element descriptor:
• the address of the structure
• a zero 32-bit word (reserved for future extensions)
• size of the structure (in LOCs) minus one
Example
PROCEDURE write(SEQ args: SYSTEM.BYTE);
BEGIN
END write;
VAR i: INTEGER;
c: SYSTEM.CARD8;
r: LONGREAL;
S: RECORD a: LONGINT; c: CHAR END;
p: POINTER TO ARRAY OF CHAR;
. . .
write(i,c,S,r,p^);
For this call the actual byte array passed to write will contain:
• 4 bytes of the sign-extended value of i
• 4 bytes of the zero-extended value of c
• 12 bytes of the array descriptor
• 4 bytes containing the address of S
• 4 bytes containing 0
• 4 bytes containing 4 (SIZE(S)-1)
• 8 bytes value of r in the double-precision 80387 format
• 12 bytes of the array descriptor
• 4 bytes containing the address of the P data
• 4 bytes containing the value 0
• 4 bytes containing SIZE(p^)-1
Copyright © 1999-2011 Excelsior, LLC.