サブルーチンの説明

UDCNTR

  1. 機能
    2次元等高線図を描く(内部で用意した作業領域を使う).
  2. 呼び出し方法
    CALL UDCNTR(Z,MX,NX,NY)
  3. パラメーターの説明
                                                                   
      Z    (R)   MX  NYの2次元配列. 作画にはNX                    
                 NYの部分を使う.                                  
                                                                   
      MX   (I)   配列Zの第1次元整合寸法.                          
                                                                   
      NX   (I)   作画に使う配列Zの第1次元寸法.                    
                                                                   
      NY   (I)   作画に使う配列Zの第2次元寸法.                    
                                                                   
    
  4. 備考
    1. 作業配列の大きさの制約から配列Zの大きさは 1語のビット長がNBのとき
      ( NX + 2 ) ( NY + 2 ) 2 / NB + 1 ≦ 1000
      でなければならない. NBGLpGET/GLpSETの管理する 内部変数'NBITSPW'を参照する. 普通この値は32である (「MATH1」のマニュアル参照). もしもこの制限を越える大きさの配列を用いて作画したいときは, 作業領域をユーザーが指定するサブルーチンUDCNTZ (次節参照)を用いるとよい.
    2. X方向の格子点の座標が UWSGXA ([here]節参照)または UWSGXB ([here]節参照) によって設定されていない場合,SGQWNDでウインドウ情報を 取得し ウインドウのUXMIN, UXMAXNX-1等分するような 格子点を設定する.
    3. Y方向の格子点の座標が UWSGYA ([here]節参照)または UWSGYB ([here]節参照) によって設定されていない場合,SGQWNDでウインドウ情報を 取得し ウインドウのUYMIN, UYMAXNY-1等分するような 格子点を設定する.
    4. コンターを引くレベルの値がUDGCLA, UDGCLBまたは UDSCLVによって設定されていない場合,次のサブルーチンを内部で呼んで 約NLEV本のコンターレベルを設定する.
      CALL UDGCLB(Z,MX,NX,NY,-REAL(NLEV))
      NLEVUDpGET/UDpSETの管理する 内部変数'NLEV'が参照する値である (初期値は12). (以下,特に断らない限り,単に「内部変数」というのは UDpGET/UDpSETの管理する 内部変数のことをさす.)
    5. コンターを引くアルゴリズムの制約から,格子点の値は どのコンターレベルの値とも等しくてはならない. もしもそのような格子点値があると内部で微小量が修正される (その際メッセージが出力される).
    6. GLpGET/GLpSETの管理する内部変数'LMISS'.TRUE.なら欠損値処理をおこなう. (その際,参照する欠損値は GLpGET/GLpSETの管理する 内部変数'RMISS'である.) .FALSE.なら欠損値処理をおこなわない. くわしくは「MATH1」のマニュアル参照.
    7. コンタリングの前にすべての格子点値のチェックをおこなう. 次の2つの場合コンタリングはおこなわずその旨メッセージが出力される. さらに内部変数'LMSG'.TRUE.のときグラフの下部マージンにもメッセージを書く. .FALSE.のときメッセージを書かない (初期値は.TRUE.). 2つの場合とは:
      • すべての格子点が欠損値のとき(missing field).
      • すべての格子点が同一な値のとき(constant field).
    8. 内部変数'LMSG'.TRUE.で引くべきコンターレベルの数が2本以上あるとき, 実数型の関数RUDLEV(1) ([here]節参照)を呼んで 第1コンターレベルの値(CZL1)と第2コンターレベルの値(CZL2)の差 (CZL2-CZL1)をグラフの下部マージンに書き出す. これらのメッセージは,地図投影変換以外が設定されているとき, UZPACKが管理する情報を使って書く. したがって,このような場合は,まず座標軸を描いた後で UDCNTRを呼ぶべきである. いっぽう,地図投影変換が設定されているとき, 下部マージンの真中に書く.

UDCNTZ

  1. 機能
    2次元等高線図を描く(ユーザーが作業領域を与える).
  2. 呼び出し方法
    CALL UDCNTZ(Z,MX,NX,NY,IBR,NBR3)
  3. パラメーターの説明
                                                                     
      Z      (R)   MX  NYの2次元配列. 作画にはNX                    
                   NYの部分を使う.                                  
                                                                     
      MX     (I)   配列Zの第1次元整合寸法.                          
                                                                     
      NX     (I)   作画に使う配列Zの第1次元寸法.                    
                                                                     
      NY     (I)   作画に使う配列Zの第2次元寸法.                    
                                                                     
      IBR    (I)   作業領域として用いられる配列.                    
                                                                     
      NBR3   (I)   配列IBRの長さ.                                   
                                                                     
    
  4. 備考
    1. このサブルーチンを使用する際の注意事項は, 配列の大きさに関する次の注意点を除いて UDCNTR(前節参照)と基本的に同じである.
    2. 作業配列の大きさは次の条件を満たすように決めてやればよい. 1語のビット長がNBのとき
      ( NX + 2 ) ( NY + 2 ) 2 / NB + 1 ≦ NBR3 / 3
      NBGLpGET/GLpSETの管理する 内部変数'NBITSPW'を参照する. ふつうこの値は32である (「MATH1」のマニュアル参照).

UDGCLA

  1. 機能
    UDCNTR(またはUDCNTZ)で使うコンターレベル値を 最小値・最大値および きざみ値またはおよそのレベル数で設定する.
  2. 呼び出し方法
    CALL UDGCLA(XMIN,XMAX,DX)
  3. パラメーターの説明
                                                                            
      XMIN,        (R)   コンターレベルの最小値と最大値.                   
      XMAX               必ずしもきりのよい値でなくてもよい.               
                                                                            
      DX           (R)   DX > 0 のときDXをきざみ幅とする.               
                                                                            
                         DX = 0 のとき内部変数                              
                         'NLEV'を参照して,約NLEV本の                       
                         コンターレベルを生成する.                         
                                                                            
                         DX < 0 のとき約INT(ABS(DX))                     
                         本の コンターレベルを生成する.                    
                                                                            
    
  4. 備考
    1. XMIN XMAX でなければならない.
    2. コンターレベルはDXが決めるきざみ幅の整数倍に なるように設定される.
    3. コンターにつけるラベルは,サブルーチンUDLABLが生成する. このとき使用するフォーマットは,サブルーチンUDQFMT/UDSFMTで 参照/変更できる([here]節参照).
    4. コンターにはmajor lineとminor lineの2種類がある. major lineとはラベル付きのコンターで, minor lineとはラベルなしのコンターである. (ただし,内部変数'LABEL'.FALSE.にすれば major lineもラベルなしとすることができる.初期値は.TRUE.) major lineのラインインデクスは内部変数 'INDXMJ'が決める(初期値は3). major lineに付けるラベルの文字高は内部変数 'RSIZEL'が決める (単位はV座標系の値;初期値は不定.このときRSIZELUZpGET/UZpSETの管理する内部変数'RSIZEL1'を参照する). minor lineのラインインデクスは内部変数 'INDXMN'が決める(初期値は1).
    5. 内部変数'LDASH'.TRUE.のとき, コンターレベルが負のコンターラインは内部変数'IDASH'を参照して そのラインタイプで描かれる ('LDASH'の初期値は.TRUE., 'IDASH'の初期値は3:破線). それ以外のコンターラインは内部変数'ISOLID'を参照して そのラインタイプで描かれる ('ISOLID'の初期値は1:実線).
    6. minor lineをmajor lineの間に何本引くかは内部変数'ICYCLE' (初期値は2)が決める. すなわち'ICYCLE'で参照する値に1本の割合で major lineを引き,残りはminor lineを引く. major lineのコンターレベルはDXで決まるきざみ幅の'ICYCLE'倍 になるように設定される.

UDGCLB

  1. 機能
    UDCNTR(またはUDCNTZ)で使うコンターレベル値を 格子点値を与える配列と きざみ値またはおよそのレベル数で設定する.
  2. 呼び出し方法
    CALL UDGCLB(Z,MX,NX,NY,DX)
  3. パラメーターの説明
                                                 
      Z, MX, NX,      UDCNTR ([here]             
      NY              節)参照.                 
                                                 
      DX              UDGCLA ([here]             
                      節)参照.                 
                                                 
    
  4. 備考
    1. このルーチンはZの格子点値の最小値・最大値をチェックして, 内部でUDGCLAを呼んでいる.

UDSCLV

  1. 機能
    コンターラインの属性をすべて指定して1本のコンターレベルを設定する.
  2. 呼び出し方法
    CALL UDSCLV(ZLEV,INDX,ITYP,CLV,HL)
  3. パラメーターの説明
                                                                            
      ZLEV   (R)       コンターレベルの値.                                 
                                                                            
      INDX   (I)       コンターラインのラインインデクス.                   
                                                                            
      ITYP   (I)       コンターラインのラインタイプ.                       
                                                                            
      CLV    (C*(*))   コンターラインにつけるラベル.                       
                                                                            
      HL     (R)       ラベルの高さ(単位はV座標系). HL ≦ 0               
                       のときラベルをつけない.                             
                                                                            
    
  4. 備考
    1. UDGCLA, UDGCLBは内部でこのルーチンを呼んでいる. 補助線を入れたいときなど UDGCLA, UDGCLBを 呼んだ後でこのルーチンを呼べば, 引くべきコンターレベルを1本追加できる.
    2. ラベル(CLV)の長さは8以下でなければならない.
    3. 現在設定されているコンターレベルの総本数は
      CALL UDQCLN(NLEV)
      によって参照できる.
    4. NL番目のコンターレベルの属性は
      CALL UDQCLV(ZLEV,INDX,ITYP,CLV,HL,NL)
      によって参照できる. コンターレベルに関する情報はUDSCLVによって順に追加されるので, UDQCLVが参照するコンターレベルの値は必ずしも昇順にならんで いるとは限らない.

UDDCLV

  1. 機能
    あるコンターレベルを削除する.
  2. 呼び出し方法
    CALL UDDCLV(ZLEV)
  3. パラメーターの説明
                                                 
      ZLEV   (R)   削除するコンターレベルの値.  
                                                 
    
  4. 備考
    1. UDGCLA, UDGCLBによって既に設定されているコンターレベル から特定のコンターレベルを削除したいとき このルーチンを呼べばよい.

UDICLV

  1. 機能
    UDGCLA, UDGCLB, UDSCLVで設定したコンターレベルを 無効にする.
  2. 呼び出し方法
    CALL UDICLV
  3. パラメーターの説明
    なし
  4. 備考
    1. UDGCLA, UDGCLB, UDSCLVによって 既に設定されているコンターレベルを 無効にしてUDCNTRを呼びたいとき, このルーチンを呼ぶ必要がある.

RUDLEV

  1. 機能
    UDGCLA, UDGCLB, UDSCLVで設定したコンターレベルの 間隔を求める.
  2. 呼び出し方法
    RUDLEV(NLEV)
  3. パラメーターの説明
                                                               
      NLEV     (I)   何番目のコンター間隔を調べるか指定する.  
                                                               
      RUDVAL   (R)   コンター間隔を与える実数型関数値.        
                                                               
    
  4. 備考
    1. 内部的にはUDQCLV ([here]節参照) によって第NLEV番目とNLEV+1番目の コンターレベルの値を調べ,その差(第NLEV+1番目から NLEV番目を引いた値)を返す. UDQCLVが参照するコンターレベルの値は必ずしも昇順にならんで いるとは限らないことに注意すること.
    2. コンターレベルは2本以上設定されていなければならない. またNLEVは1以上で,設定されているコンターレベルの総数 より小さくなければならない.これらの条件が満たされないとき RUDVALは警告メッセージを出して,0を返す.

UDSFMT

  1. 機能
    コンターラベルのフォーマットを指定する.
  2. 呼び出し方法
    CALL UDSFMT(CFMT)
  3. パラメーターの説明
                                                                  
      CFMT   (C*(*))   指定するフォーマット(長さは16文字以下).  
                                                                  
    
  4. 備考
    1. たとえばコンターラベルをすべて整数型にしたいとき
      CALL UDSFMT('(I8)')
      とすればよい (文字は左詰めされるのでラベルが8文字以下なら, たとえば'(I12)'でも効果は同じ). 初期値はサブルーチンCHVAL (「MISC1」のマニュアルFMTLIB参照)が解釈するオプション'D' (有効数字3ケタでほぼ4-5文字の表現)である.
    2. 現在設定されているフォーマットは
      CALL UDQFMT(CFMT)
      によって参照できる.

UDpGET/UDpSET(UDpSTX)

  1. 機能
    UDPACKサブルーチンパッケージで使用する内部変数を参照/変更する. ( UDpSTXは実行時オプションによる変更を許す.)
  2. 呼び出し方法
    CALL UDpGET(CP,IPARA)
    CALL UDpSET(CP,IPARA)
    CALL UDpSTX(CP,IPARA)
  3. パラメーターの説明
                                          
      CP      (C*8)     内部変数の名前.  
                                          
      IPARA   (I,R,L)   内部変数の値.    
                                          
    

    以下にCPとして指定できる名前のリストを記す.

                                                                            
      'INDXMJ'   (I)   major lineのラインインデクス(初期値は3)             
                       . [-1ex]0ex1ex}                                      
                                                                            
      'INDXMN'   (I)   minor lineのラインインデクス(初期値は1)             
                       . [-1ex]0ex1ex}                                      
                                                                            
      'LABEL'    (L)   major lineにラベルをつけるかどうかの指定をする.     
                       .TRUE.ならつける; .FALSE.ならつけない                
                       (初期値は.TRUE.). [-1ex]0ex1ex}                     
                                                                            
      'LDASH'    (L)   負のコンターラインを異なるラインタイプで描くかどう   
                       かを指定する.                                       
                       .TRUE.のとき負のコンターラインを内部変数'IDASH'の    
                       参照するラインタイプで描く;                          
                       .FALSE.                                              
                       のときすべてのコンターラインを内部変数'ISOLID'の     
                       参照するラインタイプで描く (初期値は.TRUE.)         
                       . [-1ex]0ex1ex}                                      
                                                                            
      'IDASH'    (I)   'LDASH'が.TRUE.のとき,負のコンターレベルに使う      
                       ラインタイプ(初期値は3:破線). [-1ex]0ex1ex}         
                                                                            
      'ISOLID'   (I)   'LDASH'が.TRUE.のとき0以上のコンターレベルに,       
                       または'LDASH'が.FALSE.                               
                       のときすべてのコンターレベルに使う                   
                       ラインタイプ(初期値は1:実線). [-1ex]0ex1ex}         
                                                                            
      'ICYCLE'   (I)   minor lineをmajor lineの間に何本引くかを指定する.   
                       すなわち'ICYCLE'で参照する値に1本の割合で major      
                       lineを引き,残りはminor lineを引く (初期値は2)      
                       . [-1ex]0ex1ex}                                      
                                                                            
      'NLEV'     (I)   コンターレベルを自動的に生成するとき,この内部変数   
                       を参照して 約NLEV本のコンターレベルを生成する        
                       (初期値は12). [-1ex]0ex1ex}                         
                                                                            
      'RSIZEL'   (R)   コンターラベルの文字高(単位はV座標系;初期値は不定   
                       ). この内部変数が不定のとき UZRGET/UZRSET           
                       の管理する内部変数'RSIZEL1'を 参照する(              
                       [here] 節参照). [-1ex]0ex1ex}                       
                                                                            
      'LMSG'     (L)   グラフの下部マージンにメッセージを書くかどうかを指   
                       定する.                                             
                       .TRUE.なら書く;.FALSE.なら書かない(初期値は.TRUE.)  
                       . [-1ex]0ex1ex}                                      
                                                                            
      'RSIZET'   (R)   グラフの下部マージンに書くメッセージの文字高         
                       (単位はV座標系;初期値は不定).                      
                       この内部変数が不定のとき UZpGET/UZpSET               
                       の管理する内部変数'RSIZEL1'を 参照する(              
                       [here] 節参照). [-1ex]0ex1ex}                       
                                                                            
      'XTTL'     (R)   グラフの下部マージンに書くメッセージの位置を決める   
                       内部変数. -1から+1までの実数値をとりうる.          
                       -1のとき左よせ,0のときセンタリング,+1のとき右よせ  
                       する (初期値は0). [-1ex]0ex1ex}                     
                                                                            
      'IUNDEF'   (I)   値が不定であることを示す内部変数 (初期値は-999)     
                       . [-1ex]0ex1ex}                                      
                                                                            
    
  4. 備考
    1. 内部変数を管理するための下請けルーチンとして 以下のものがある.
                                                                          
        UDPQNP(NCP)         内部変数の総数NCPを求める.                   
                                                                          
        UDPQID(CP,IDX)      内部変数CPの位置IDXを求める.                 
                                                                          
        UDPQCP(IDX,CP)      IDXの位置にある内部変数の名前CPを参照する.   
                                                                          
        UDPQVL(IDX,IPARA)   IDXの位置にある内部変数の値IPARAを参照する.  
                                                                          
        UDPSVL(IDX,IPARA)   IDXの位置にある内部変数の値IPARAを変更する.  
                                                                          
      
    2. UDpGETは上に述べたUDPQIDを呼んで 内部変数の位置を求め,UDPQVLによって値を参照する; UDpSETUDPQIDを呼んで内部変数の位置を求め, UDPSVLによって値を設定する. したがって指定した内部変数名が見つからないとき, エラーメッセージはUDPQIDが出力する.
    3. ITYPEとしては適切な型の定数または変数を指定すること.

その他のサブルーチン・関数

このパッケージにはこのほかに以下の下位ルーチン・関数がある. ここではその名前をあげるにとどめる.

                                                       
  UDSCLZ   UDQCLZ   UDLINE   UDUXUY   UDGRDN   RUDVAL  
                                                       
  UDBSET   UDBCLR   LUDCHK   UDISET   UDLABL           
                                                       


Back to Main


Latex Source


地球流体電脳倶楽部 : 95/6/9 (Version 5.0)

NUMAGUTI Atusi <a1n@gfdl.gov>
Last Modified: Thu Aug 31 13:08:06 EDT 1995