UXAXDV(CSIDE,DX1,DX2) 目盛とラベルを描く間隔を指定して 座標軸を描く. UYAXDV(CSIDE,DY1,DY2) UXAXNM(CSIDE,UX1,N1,UX2,N2) 目盛とラベルを描く場所を 指定して座標軸を描く. UYAXNM(CSIDE,UY1,N1,UY2,N2) UXAXLB 目盛とラベルを描く場所を (CSIDE,UX1,N1,UX2,CH,NC,N2) 指定して座標軸を描く. UYAXLB (CSIDE,UY1,N1,UY2,CH,NC,N2) UXMTTL(CSIDE,CTTL,PX) 大きめのタイトルを描く. UYMTTL(CSIDE,CTTL,PY) UXSTTL(CSIDE,CTTL,PX) 小さめのタイトルを描く. UYSTTL(CSIDE,CTTL,PY)
UXPAXS(CSIDE,ISLCT) 軸を示す線分を描く. UYPAXS(CSIDE,ISLCT) UXPTMK(CSIDE,ISLCT,UX,N) 目盛を描く. UYPTMK(CSIDE,ISLCT,UY,N) UXPLBL(CSIDE,ISLCT,UX,CH,NC,N) 文字列で指定したラベルを描く. UYPLBL(CSIDE,ISLCT,UY,CH,NC,N) UXPNUM(CSIDE,ISLCT,UX,N) 数値で指定したラベルを描く. UYPNUM(CSIDE,ISLCT,UY,N) UXPTTL(CSIDE,ISLCT,CTTL,PX) タイトルを描く. UYPTTL(CSIDE,ISLCT,CTTL,PY)
UZPACK
UZpGET(CP,IPARA) 内部変数を参照する. UZpSET(CP,IPARA) 内部変数を変更する. UZpSTX(CP,IPARA) 内部変数を変更する (実行時オプションによる変更を許す). UZINIT 内部変数を初期化する. UZFACT(RFACT) 内部変数を何倍かする. UZPSAV 内部変数をスクラッチファイルに書き出す. UZPRST スクラッチファイルに書いた値で再設定する.
このサブルーチンパッケージ UXPACK/UYPACK/UZPACK において,実際にユーザーが使用するであろうルーチン群. 下位応用ルーチン (LLA)を組み合わせて書かれており, 座標軸の構成要素の属性は UZpGET/UZpSETによって 参照/変更することができる. 上位応用ルーチン(ULA)に関する以下の説明では, 内部で呼ばれている下位応用ルーチン名が しばしば引用されるので,くわしくは[here]節を参照のこと.
上位応用ルーチン(ULA)に含まれるサブルーチンとしては以下のものがある.
以下の説明で共通してあらわれる引数 CSIDE は, 座標軸の構成要素を描く場所を指定するパラメーターで, X軸については 'B', 'T', 'U' が指定できる; Y軸については 'L', 'R', 'U' が指定できる (くわしくは[here]節参照).
目盛はCSIDEすべての選択について描かれる. しかしラベルを描くかどうかは,場所に依存した内部変数'LABELzs'が決める. この内部変数が.TRUE.なら描く,.FALSE.なら描かない (初期値は,.TRUE., .FALSE., .TRUE., .TRUE., .FALSE., .TRUE.). つまり初期設定では,下('B')の座標軸と左('L')の 座標軸についてラベルを描くが,上('T')の座標軸と右('R')の 座標軸についてはラベルを描かない (ユーザーの座標軸はラベルを描く).
以下のルーチンのうち,UXAXLB/UYAXLB, UXAXNM/UYAXNM, UXAXDV/UYAXDVについては, 内部変数'LOFFSET'が.TRUE.なら 座標系をリニアオフセットする;.FALSE.ならしない (初期値は.FALSE.). つまり,内部変数'LOFFSET'が.TRUE.のとき 次のように座標系の変換がおこなわれウインドウが再設定される (この設定はルーチン内でのみ有効であって, ルーチンを抜け出すとき最初の設定に戻される; つまり座標軸を描くときのみ有効である).
UXPACKについては内部変数'XOFFSET', 'XFACT'を参照して 次の変換をおこなう. [ f(x) = XFACT x + XOFFSET ]
UYPACKについては内部変数'YOFFSET', 'YFACT'を参照して 次の変換をおこなう. [ g(y) = YFACT y + YOFFSET ]これはたとえば, 温度に関するデータがあってデータの単位はセ氏で与えられているが, 目盛は華氏で打ちたいというときなどに有効である.
目盛とラベルを描く間隔を指定して座標軸を描く.
CALL UXAXDV(CSIDE,DX1,DX2)
CALL UYAXDV(CSIDE,DY1,DY2)
CSIDE (C*1) 座標軸を描く場所を指定する ( [here] 節参照). DX1, (R) 小さめの目盛を描く 間隔を指定する DY1 (U座標系の値で指定する). DX2, (R) 大きめの目盛および ラベルを描く間隔を指定する DY2 (U座標系の値で指定する). DX2およびDY2はそれぞれD X1およびDY1の 整数倍でなければならない.
目盛とラベルを描く場所を指定して座標軸を描く.
CALL UXAXNM(CSIDE,UX1,N1,UX2,N2)
CALL UYAXNM(CSIDE,UY1,N1,UY2,N2)
CSIDE (C*1) 座標軸を描く場所を指定する ( [here] 節参照). UX1, (R) 小さめの目盛を描く 場所を格納した長さN1の配列 UY1 (U座標系の値で指定する). N1 (I) 配列UX1, UY1の長さ. UX2, (R) 大きめの目盛および UY2 ラベルを描く場所を格納した長さN2の配列 (U座標系の値で指定する). N2 (I) 配列UX2, UY2の長さ.
目盛とラベルを描く場所を指定して座標軸を描く. 描くラベルも指定する.
CALL UXAXLB(CSIDE,UX1,N1,UX2,CH,NC,N2)
CALL UYAXLB(CSIDE,UY1,N1,UY2,CH,NC,N2)
CSIDE (C*1) 座標軸を描く場所を指定する ( [here] 節参照). UX1, (R) 小さめの目盛を描く 場所を格納した長さN1の配列 UY1 (U座標系の値で指定する). N1 (I) 配列UX1, UY1の長さ. UX2, (R) 大きめの目盛および UY2 ラベルを描く場所を格納した長さN2の配列 (U座標系の値で指定する). CH (C*(NC)) 描くラベルを格納した文字長NC 長さN2の文字型配列. NC (I) 配列CHの文字長. N2 (I) 配列UX2, UY2, CHの長さ.
大きめのタイトルを描く.
CALL UXMTTL(CSIDE,CTTL,PX)
CALL UYMTTL(CSIDE,CTTL,PY)
CSIDE (C*1) 座標軸を描く場所を指定する ( [here] 節参照). CTTL (C*(*)) 描くタイトル. PX, (R) -1から+1の間の実数値で タイトルを描く位置を PY 指定する.-1のとき左よせ,0のときセンタリング, +1のとき右よせする.
小さめのタイトルを描く.
CALL UXSTTL(CSIDE,CTTL,PX)
CALL UYSTTL(CSIDE,CTTL,PY)
CSIDE (C*1) 座標軸を描く場所を指定する ( [here] 節参照). CTTL (C*(*)) 描くタイトル. PX, (R) -1から+1の間の実数値で タイトルを描く位置を PY 指定する.-1のとき左よせ,0のときセンタリング, +1のとき右よせする.
内部変数の管理や初期化をおこなうサブルーチンパッケージ.
UXPACK/UYPACK/UZPACKで使う内部変数を参照/変更する. (UZPSTX は実行時オプションによる変更を許す.)
CALL UZpGET(CP,IPARA)
CALL UZpSET(CP,IPARA)
CALL UZpSTX(CP,IPARA)
CP (C*8) 内部変数の名前. IPARA (I,R,L) 内部変数の値.
以下にCPとして指定できる名前のリストを記す. 'ROFFzs', 'INDEXTi'などの略記法については[here]節を 参照のこと.
'UXUSER' (R) Y軸の作画ルーチンにおいて場所を示すパラメーターと して 'U'serを指定したときに用いられるX座標値 (初期値は不定). 詳しくは [here] 節参照. [-1ex]0ex1ex} 'UYUSER' (R) X軸の作画ルーチンにおいて場所を示すパラメーターと して 'U'serを指定したときに用いられるY座標値 (初期値は不定). 詳しくは [here] 節参照. [-1ex]0ex1ex} 'ROFFzs' (R) 最後に描いたラベルやタイトルの軸からの距離を保持し ている 内部変数(初期値は,0, 0, 0, 0, 0, 0). [here] 節参照. [-1ex]0ex1ex} 'ROFGzs' (R) 座標軸を本来描く場所からどれだけ平行移動して描くか を 指定する内部変数(初期値は,0, 0, 0, 0, 0, 0). [here] 節参照. [-1ex]0ex1ex} 'LABELzs' (L) ラベルを描くかどうかを指定する内部変数; .TREU.なら描く,.FALSE.なら描かない (初期値は,.TRUE., .FALSE., .TRUE., .TRUE., .FALSE., .TRUE.).[here] , [here] ,[here] 節参照. [-1ex]0ex1ex} 'IROTLzs' (I) ラベルの文字列の回転角を指定する内部変数; 回転角は90度を単位とする整数値で指定する (初期値は,0, 0, 0, 0, 0, 0). [here] ,[here] 節参照. [-1ex]0ex1ex} 'IROTCzs' (I) タイトルの文字列の回転角を指定する内部変数; 回転角は90度を単位とする整数値で指定する (初期値は,0, 0, 0, +1, +1, +1). [here] ,[here] 節参照. [-1ex]0ex1ex} 'ICENTzs' (I) ラベルの文字列のセンタリングオプションを指定する内 部変数; -1のとき左よせ,0のときセンタリング,+1のとき右よ せする (初期値は,0, 0, 0, +1, +1, +1). [here] ,[here] 節参照. [-1ex]0ex1ex} 'INDEXTi' (I) 座標軸および目盛を描く線分のラインインデクスを指定 する内部変数 (初期値は,不定,1, 3). [here] ,[here] 節参照. [-1ex]0ex1ex} 'INDEXLi' (I) ラベルおよびタイトルの文字を描く線分の ラインインデクスを指定する内部変数 (初期値は,不定,3, 3).[here] ,[here] 節参照. [-1ex]0ex1ex} 'RSIZETi' (R) 目盛の長さを指定する内部変数 (単位はV座標系;初期値は,不定,0.007, 0.014). [here] ,[here] 節参照. [-1ex]0ex1ex} 'RSIZELi' (R) ラベルの文字の高さを指定する内部変数 (単位はV座標系;初期値は,不定,0.021, 0.028). [here] ,[here] 節参照. [-1ex]0ex1ex} 'RSIZECi' (R) タイトルの文字の高さを指定する内部変数 (単位はV座標系;初期値は,不定,0.028, 0.035). [here] ,[here] 節参照. [-1ex]0ex1ex} 'LOFFSET' (L) 座標系をリニアオフセットするかどうかを指定する内部 変数. .TRUE.ならリニアオフセットする; .FALSE.ならしない(初期値は.FALSE.). [here] 節参照. [-1ex]0ex1ex} 'XOFFSET' (R) 'LOFFSET'が.TRUE.のとき, X軸のオフセット値を指定する内部変数 (初期値は0.0) .[here] 節参照. [-1ex]0ex1ex} 'YOFFSET' (R) 'LOFFSET'が.TRUE.のとき, Y軸のオフセット値を指定する内部変数 (初期値は0.0) .[here] 節参照. [-1ex]0ex1ex} 'XFACT' (R) 'LOFFSET'が.TRUE.のとき, X軸のファクター値を指定する内部変数 (初期値は1.0) .[here] 節参照. [-1ex]0ex1ex} 'YFACT' (R) 'LOFFSET'が.TRUE.のとき, Y軸のファクター値を指定する内部変数 (初期値は1.0) .[here] 節参照. [-1ex]0ex1ex} 'PAD1' (R) 1つ前に描いた座標軸の構成要素からどれだけ離して ラベルを描くかを指定する内部変数 (初期値は0.7; 単位は今描こうとしているラベルの高さを1とする). [-1ex]0ex1ex} 'PAD2' (R) 座標軸のオフセット量を内部的に決める時に用いる内部 変数 (初期値は1.5; 単位は内部変数'RSIZEC2'の大きさを1とする). [-1ex]0ex1ex} 'IFLAG' (I) 座標軸の設定を'U'serでおこなった場合, ラベルとタイトルを軸のどちら側に描くかを指定する内 部変数. 'IFLAG'が正のときラベルはUXPLBLについては上側, UYPLBLについては右側に描かれる. 負のときはその逆である.初期値は-1. [here] 節参照. [-1ex]0ex1ex} 'LBTWN' (L) ラベルを描く場所に関するオプションを指定する内部変 数. 'LBTWN'が.TRUE.なら間に描く; .FALSE.ならその場所に描く(初期値は.FALSE.). [here] 節参照. [-1ex]0ex1ex} 'RBTWN' (R) ラベルを間に描くとき ('LBTWN'が.TRUE.のとき), さらにその位置を詳しく指 定する. -1.0のとき左よせ,0.0のときセンタリング,+1. 0のとき右よせする (初期値は0.0). [-1ex]0ex1ex} 'LBOUND' (L) タイトルを描こうとして,文字幅がビューポートの幅を 越えてしまうようなとき, タイトルを描くかどうかを指定する. .TRUE.なら描かない,.FALSE.なら描く (初期値は.FALSE.). [-1ex]0ex1ex} 'LBMSG' (L) 'LBOUND'が.TRUE. でタイトルを描くスペースがないとき, エラーメッセージを出力するかどうかを指定する. .TRUE.なら出力する,.FALSE.なら出力しない (初期値は.TRUE.). [-1ex]0ex1ex} 'INNER' (I) 目盛を内側に向かって打つか, 外側に向かって打つかを指定する内部変数. 'INNER'が正のとき内側に向かって目盛を打つ; 負のとき外側に向かって目盛を打つ(初期値は+1) . [-1ex]0ex1ex} 'IUNDEF' (I) 値が不定であることを示す内部変数 (初期値は-999) . [-1ex]0ex1ex}
UZPQNP(NCP) 内部変数の総数NCPを求める. UZPQID(CP,IDX) 内部変数CPの位置IDXを求める. UZPQCP(IDX,CP) IDXの位置にある内部変数の名前CPを参照する. UZPQVL(IDX,IPARA) IDXの位置にある内部変数の値IPARAを参照する. UZPSVL(IDX,IPARA) IDXの位置にある内部変数の値IPARAを変更する.
内部変数 'ROFFzs', 'ROFGzs'をすべて0にセットする.
CALL UZINIT
なし.
内部変数 'RSIZETi' 'RSIZELi' 'RSIZECi' (i=1,2) をすべて何倍かする.
CALL UZFACT(RFACT)
RFACT (R) 何倍するかを指定する実数値.
現在設定されている内部変数の値すべてをスクラッチファイルに書き出す.
CALL UZPSAV
なし.
スクラッチファイルに書き出してあった値ですべての内部変数を再設定する.
CALL UZPRST
なし.
このサブルーチンパッケージ UXPACK/UYPACK/UZPACK において,具体的な作画をおこなうルーチン群. 基本ルーチン(Basic Routines)を使って書かれており 普通ユーザーが直接呼ぶことはなく, 上位応用ルーチン(ULA)を作成するのに用いられる.
以下の説明で共通してあらわれる引数 CSIDE は 座標軸の構成要素を描く場所を指定するパラメーターで, X軸については 'B', 'T', 'U' が指定できる; Y軸については 'L', 'R', 'U' が指定できる (くわしくは[here]節参照). また,引数 ISLCT は 座標軸の構成要素の属性を指定するパラメーターで, 0, 1, 2のうち1つが指定できる (くわしくは[here]節参照).
軸を示す線分を描く.
CALL UXPAXS(CSIDE,ISLCT)
CALL UYPAXS(CSIDE,ISLCT)
CSIDE (C*1) 線分を描く座標軸の場所を指定する ( [here] 節参照). ISLCT (I) 描く軸の属性を指定する ([here] 節参照).
UXSAXZ(CSIDE,ROFFX) / UYSAXZ(CSIDE,ROFFY)によって設定できる.またオフセット量を内部的に決定するルーチン
UXSAXS(CSIDE) / UYSAXS(CSIDE)によっても設定できる. オフセット量は内部変数'PAD2'にもとづいて計算される.
目盛を描く.
CALL UXPTMK(CSIDE,ISLCT,UX,N)
CALL UYPTMK(CSIDE,ISLCT,UY,N)
CSIDE (C*1) 目盛を描く座標軸の場所を指定する ( [here] 節参照). ISLCT (I) 描く目盛の属性を指定する ( [here] 節参照). UX, (R) 目盛を描く場所を格納した長さNの 配列. UY (U座標系の値で指定する.) N (I) 配列UX, UYの長さ.
文字列で指定したラベルを描く.
CALL UXPLBL(CSIDE,ISLCT,UX,CH,NC,N)
CALL UYPLBL(CSIDE,ISLCT,UY,CH,NC,N)
CSIDE (C*1) ラベルを描く座標軸の場所を指定する ( [here] 節参照). ISLCT (I) 描くラベルの属性を指定する ( [here] 節参照). UX, (R) ラベルを描く場所を格納した 長さNの配列. UY (U座標系の値で指定する.) CH (C*(NC)) 描くラベルを格納した文字長NC 長さNの文字型配列. NC (I) 配列CHの文字長. N (I) 配列UX, UY, CHの長さ.
数値で指定したラベルを描く.
CALL UXPNUM(CSIDE,ISLCT,UX,N)
CALL UYPNUM(CSIDE,ISLCT,UY,N)
CSIDE (C*1) ラベルを描く座標軸の場所を指定する ( [here] 節参照). ISLCT (I) 描くラベルの属性を指定する ( [here] 節参照). UX, (R) ラベルを描く場所を格納した 長さNの配列. UY (U座標系の値で指定する.) N (I) 配列UX, UYの長さ.
UXSFMT(CFMT) / UXQFMT(CFMT)で設定/参照することができる. UYPNUMについてはサブルーチン
UYSFMT(CFMT) / UYQFMT(CFMT)で設定/参照することができる. CFMTは長さ16以下の文字型変数.たとえばCFMTとして '(F6.1)'のように指定する. 初期値はCHVALに固有のオプションである'B' (有効数字3ケタで文字化し,小数点以下に続く後方の0は取り除く; さらに小数点が最下位ならそれも取り除く). CHVALは自動的に文字を左詰めする. つまり実数値1.2を文字化するために'(F4.1)'としても '(F8.1)'としてもCHVALが返す値はどちらも'1.2'である.
タイトルを描く.
CALL UXPTTL(CSIDE,ISLCT,CTTL,PX)
CALL UYPTTL(CSIDE,ISLCT,CTTL,PY)
CSIDE (C*1) タイトルを描く座標軸の場所を指定する ( [here] 節参照). ISLCT (I) 描くタイトルの属性を指定する ( [here] 節参照). CTTL (C*(*)) 描くタイトル. PX, (R) -1から+1の間の実数値でタイトルを PY 描く位置を指定する. -1のとき左よせ,0のときセンタリング,+1のとき右よ せする.
このパッケージにはこのほかに以下の下位ルーチン・関数がある. ここではそれらの名前をあげるにとどめる.
LUXCHK UXPLBA UXPLBB UXPTMZ UXSOFF UXROFF LUYCHK UYPLBA UYPLBB UYPTMZ UYSOFF UYROFF
NUMAGUTI Atusi <a1n@gfdl.gov> Last Modified: Thu Aug 31 13:10:03 EDT 1995