Cray ポインタには次のようにして値を割り当てることができます。
絶対アドレスに設定します。
例: q = 0
整変数の加減式によって割り当てます。
例: p = q + 100
Cray ポインタは整数ではありません。Cray ポインタを実数変数に割り当てることはできません。
LOC 関数 (非標準) を使用して Cray ポインタを定義することができます。
例: p = LOC( x )
例: Cray ポインタの使用例
SUBROUTINE sub ( n ) COMMON pool(100000) INTEGER blk(128), word64 REAL a(1000), b(n), c(100000-n-1000) POINTER ( pblk, blk ), (ia, a ), ( ib, b ), & ( ic, c ), ( address, word64 ) DATA address / 64 / pblk = 0 ia = LOC( pool ) ib = ia + 4000 ic = ib + n ... |
前述の例を説明します。
word64 は絶対アドレス 64 の内容を参照します。
blk はメモリーの最初の 128 ワードを占める配列です。
a は無名共通ブロックにある配列で、長さは 1,000 です。
b は a のあとに位置し、長さは n です。
c は b のあとに位置します。
a、b、c は pool 領域に関連付けられています。
word64 は blk(17) と同じです。 Cray ポインタはバイトアドレスであり、blk の整数要素はそれぞれ 4 バイトの長さがあるためです。