| 123456789101112131415161718192021222324252627282930313233343536 |
- MODULE TArrRecFld;
- (* Regression for docs/wip/arrrec-field-openarray.mod: an array field of
- an array-of-record element passed as an open-array actual. The field's
- inline descriptor length word must be initialised in the static
- array-of-record data, else the callee reads 0 and traps. Exit 42. *)
- VAR ExitCode : INTEGER;
- TYPE
- ProcEnt = RECORD
- name : ARRAY [0..63] OF CHAR;
- END;
- VAR
- procs : ARRAY [0..3] OF ProcEnt;
- nProcs : CARDINAL;
- PROCEDURE CopyN (src : ARRAY OF CHAR; VAR dst : ARRAY OF CHAR);
- VAR i : CARDINAL;
- BEGIN
- i := 0;
- WHILE (i < 63) AND (src[i] # CHR(0)) DO dst[i] := src[i]; INC(i) END;
- dst[i] := CHR(0)
- END CopyN;
- PROCEDURE NoteProc (name : ARRAY OF CHAR);
- BEGIN
- CopyN(name, procs[nProcs].name);
- INC(nProcs)
- END NoteProc;
- BEGIN
- NoteProc("hello");
- IF (procs[0].name[0] = "h") AND (procs[0].name[4] = "o") THEN
- ExitCode := 42
- ELSE ExitCode := 1
- END
- END TArrRecFld.
|