6

The Pascal main program,

VarRecMain.p

The commands to compile and execute VarRec.c and

VarRecMain.p

program VarRecMain; type

vr = record

case tag: char of

'a': (ch1, ch2: char);

'b': (flag: boolean);

'K': (ALIGN: integer)

end;

var

x: vr;

procedure VarRec(var d: vr); external c;

begin

x.tag := 'a'; x.ch1 := 'a'; x.ch2 := 'b'; VarRec(x); writeln(x.ch2)

end. { VarRecMain }

hostname% cc -c VarRec.c

hostname% pc -calign VarRec.o VarRecMain.p hostname% a.out

Z

The -calignoption is not needed in the previous example, but may be necessary if the record contains aggregates.

Non-Pascal Procedures

When you use the -xloption in compiling Pascal code, you can use the nonpascal keyword to declare that an external procedure is written in another language. This keyword generally causes everything to be passed by reference.

The C–Pascal Interface

127