HP Pascal/iX Reference Manual (31502-90022)

11- 36
byte boundaries, and the total size of the elements to be
moved must be an integral multiple of one byte.
Example
{ This example assumes certain packing which may not apply to your
implementation. }
TYPE
IxType1 = 0..20;
IxType2 = -3..17;
Array1 = PACKED ARRAY [IxType1] of SHORTINT;
Array2 = ARRAY [IxType2] of SHORTINT;
Array3 = PACKED ARRAY [1..20] of -256..255;
Array4 = CRUNCHED ARRAY [1..20] of -256..255;
VAR
Avar1 : Array1;
Avar2 : Array2;
Avar3 : Array3;
Avar4 : Array4;
Ix : Integer;
BEGIN
Move_Fast (5, AVar2, -3, AVar1, 3); { legal }
FOR Ix := 0 TO 4 DO { equivalent FOR loop }
AVar1[Ix+3] := AVar2[Ix-3];
Move_Fast (5, AVar3, 2, AVar4, 9);
{
illegal
, because }
{ - AVar4 does not have byte-aligned elements }
{ - AVar4[9] starts on the 27th bit of a word }
{ (also not byte-aligned) }
{ besides, the number of bits to be moved is not a }
{ multiple of eight, anyway }
Move_Fast (8, AVar4, 1, AVar4, 9)
{
legal
, because }
{ - even though the individual elements of AVar4 are }
{ not byte-aligned, }
{ - AVar4[1] and AVar4[9] are each byte-aligned, and }
{ - The total size of the elements to be moved is an }
{ integral multiple of eight. }
END;
Error Handling Routines
Escape.
Usage
escape
(escape_value)
Parameters
escape_value
An integer expression whose value will be available
through the predefined function escapecode.
Description
Calling this predefined procedure indicates that a software error has
been detected. Execution passes to the statement following the reserved
word RECOVER of the first enclosing TRY-RECOVER statement.