declare foo as shared 4 int | shared [4] int foo
declare foo as shared blocksize 4 int | shared [4] int foo
declare foo as shared (blocksize 4) int | shared [4] int foo
declare foo as shared (blocksize cyclic) int | shared [1] int foo
declare foo as shared blocksize cyclic int | shared [1] int foo
declare foo as shared (blocksize automatic) int | shared [*] int foo
declare foo as shared blocksize automatic int | shared [*] int foo
declare foo as shared (blocksize indefinite) int | shared [] int foo
declare foo as shared blocksize indefinite int | shared [] int foo
cast foo into shared 4 pointer to local double | (double *shared [4])foo
declare x as shared array 4 of pointer to double | double* shared[1] x[4]
declare x as shared array of pointer to double | double* shared[1] x[]
declare x as shared array 4 of pointer to local double | double* shared[1] x[4]
declare x as shared array of pointer to local double | double* shared[1] x[]
declare x as array 4 of pointer to shared 12 double | shared [12] double* x[4]
declare x as array of pointer to shared blocksize 12 double | shared [12] double* x[]
declare x as shared blocksize 12 array 4 of double | shared [12] double x[4]
declare x as shared blocksize 12 array of double | shared [12] double x[]
declare x as shared blocksize 12 array 4 of pointer to local double | double* shared [12] x[4]
declare x as shared blocksize 12 array of pointer to local double | double* shared [12] x[]
declare x as array 10 of pointer to shared (blocksize cyclic) pointer to shared (blocksize 4) int | shared[4] int * shared[1] * x[10]
declare x as array 10 of local pointer to shared (blocksize cyclic) pointer to shared (blocksize 4) int | shared[4] int * shared[1] * x[10]
explain shared int f | declare f as shared (blocksize cyclic) int
explain shared [] int f | declare f as shared (blocksize indefinite) int
explain shared [0] int f | declare f as shared (blocksize indefinite) int
explain shared [1] int f | declare f as shared (blocksize cyclic) int
explain shared [3] int *shared[5] x[7] | declare x as array 7 of shared (blocksize 5) pointer to shared (blocksize 3) int
explain int shared [2] * shared [3] x[5] | declare x as array 5 of shared (blocksize 3) pointer to shared (blocksize 2) int
set upcverbose | 
explain shared[4] int *x[10] | declare x as array 10 of local pointer to shared (blocksize 4) int
explain shared[4] int * shared * x[10] | declare x as array 10 of local pointer to shared (blocksize cyclic) pointer to shared (blocksize 4) int
declare f as shared array of int | shared [1] int f[]
declare f as array of shared int | shared [1] int f[]
explain shared [12] double* x[] | declare x as array of local pointer to shared (blocksize 12) double
explain int shared [2] * const * volatile x[5] | declare x as array 5 of local volatile pointer to local const pointer to shared (blocksize 2) int
explain int shared [3] x[4] | declare x as array 4 of shared (blocksize 3) int
explain int *shared [3] x | declare x as shared (blocksize 3) pointer to local int
explain int *shared [3] strict x | declare x as shared (blocksize 3) strict pointer to local int
explain int *shared [3] relaxed x | declare x as shared (blocksize 3) relaxed pointer to local int
