6

The commands to compile and execute UniVec.p and UniVecMain.c with -calign

hostname% pc -c -calign UniVec.p hostname% cc UniVec.o UniVecMain.c -lpc

hostname% a.out 24

Conformant Arrays

For single-dimension conformant arrays, pass upper and lower bounds, placed after the declared parameter list. If the array is multidimensional, pass element widths as well, one element width for each dimension, except the last one.

See this example:

function ip(var x: array [lb..ub: integer] of real): real;

extern double ip(double [], int, int);

...

double v1[10]; double z;

z = ip(v1, 0, 9);

...

One bounds pair may apply to several arrays if they are declared in the same parameter group:

function ip(var x,y:array[lb..ub:integer] of real):real;

...

double v1[10], v2[10] ; extern double ip() ; double z ;

z = ip ( v1, v2, 0, 9 ) ;

...

With multidimensional arrays, for all dimensions but the last one, pass the low bound, high bound, and element width.

The C–Pascal Interface

101