サブルーチンの説明 : コントロール

GRPH1において図形出力の初期化処理・終了処理・作画領域の設定・ 内部変数の管理をおこなうサブルーチン群. 以下,特に断らない限り,単に「内部変数」というのは, SGpGET/SGpSET([here]節参照)の管理する内部変数の ことを指す.

SGOPN

  1. 機能
    図形出力装置をオープンする(初期化処理をおこなう).
  2. 呼び出し方法
    CALL SGOPN(IWS)
  3. パラメーターの説明
                                                                            
      IWS   (I)   ワークステーション番号を指定する.                        
                                                                            
                  IWS>0 のときは画面を横長に使い図形出力は正立,         
                                                                            
                  IWS<0 のときは画面を縦長に使い図形出力は               
                  90度回転して表示される.                                  
                                                                            
    
  4. 備考
    1. すべてのGRPH1サブルーチンコールに先だって1回だけ呼ぶこと.
    2. 実際の初期化作業は SGINIT がおこなっている. SGINIT は内部変数 'IWS' を見て各装置に対する 初期化をおこなう. SGOPN は 内部変数 'IWS' を設定して SGINIT を実行している.
    3. このルーチンはレイアウトサブルーチンパッケージ(SLPACK)を 初期化して,第1レベルのワークステーションビューポートを設定する (第[here]章参照). したがって,SLPACKの各ルーチンはSGOPNの後に呼ばなければならない.
    4. 指定できるワークステーション番号とワークステーション名のリストは SGPWSNによってプリントできる([here]節参照). 標準ライブラリにおいては, 1:X (Xサーバー), 2:PS(ポストスクリプト), 3:Tek(テクトロ端末) となっている.

SGFRM

  1. 機能
    新しい作画領域を設定する.
  2. 呼び出し方法
    CALL SGFRM
  3. パラメーターの説明
    なし.
  4. 備考
    1. 内部変数'LFULL'.TRUE.のとき, 作画領域(SLPACKが設定するワークステーションビューポート)を いっぱいに使うようにワークステーション変換が設定される. このときR座標系におけるワークステーションウインドウは ワークステーションビューポートの縦・横比に応じて, 短辺が変更される. 'LFULL'.FALSE.のとき, ワークステーションウインドウは[0,1] [0,1]と設定され, ワークステーションビューポートもこの縦・横比を保ちながら 作画領域に最大内接するように再設定される. このとき'WORKSTATION VIEWPORT WAS MODIFIED.'という メッセージが出力されるが,実際の作画に影響はない. しかし,SLPACKを 用いてマージン部分にタイトルを書こうとしているときは, タイトルの文字高が意図したようにならないことがあるので,あらかじめ SLRAT ([here]節参照)などを用いて縦横比を 1:1に設定しておくこと. 'LFULL'の初期値は.FALSE. ([here]節参照)である.
    2. このルーチンによって正規化変換が初期化され, 恒等変換を設定する. したがって正規化変換は SGFMRを呼んだあと毎回再設定すること.

SGCLS

  1. 機能
    図形出力装置をクローズする(終了処理をおこなう).
  2. 呼び出し方法
    CALL SGCLS
  3. パラメーターの説明
    なし.
  4. 備考
    1. すべてのGRPH1サブルーチンコールのあとで1回だけ呼ぶこと.

SGpGET/SGpSET(SGpSTX)

  1. 機能
    GRPH1で使用する内部変数を参照/変更する. (SGpSTX は実行時オプションによる変更を許す.) pR/I/L で,それぞれ実数,整数,論理変数用.
  2. 呼び出し方法
    CALL SGpGET(CP,IPARA)
    CALL SGpSET(CP,IPARA)
    CALL SGpSTX(CP,IPARA)
  3. パラメーターの説明
                                          
      CP      (C*8)     内部変数の名前.  
                                          
      IPARA   (I,R,L)   内部変数の値.    
                                          
    

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

    [全般的な制御に関するパラメーター]

                                                                            
      'IWS'     (I)   オープンする装置番号(初期値は1)                      
                      . この番号は SGOPN が設定する.GRPH1 の範囲では       
                      この値を実行時オプションによって変更することはできな  
                      い                                                    
                      (GRPH2 の GRPACK を用いれば変更可能である). [-1ex]0  
                      ex1ex}                                                
                                                                            
      'LFULL'   (L)   SGFRM ([here] 節参照)で設定する                      
                      ワークステーションビューポートを作画可能な範囲いっぱ  
                      いに とるかどうかを指定する.                         
                      .TRUE.のときいっぱいにとる;                           
                      .FALSE.のとき最大内接する正方形にとる                 
                      (初期値は.FALSE.). [-1ex]0ex1ex}                     
                                                                            
    

    [ポリラインプリミティブに関するパラメーター]

                                                                            
      'NBITS'    (R)   ポリラインプリミティブの描く折れ線の                 
                       ラインタイプをビットパターンで設定するとき,         
                       下位何ビットを使うか指定する(初期値は16)            
                       . [-1ex]0ex1ex}                                      
                                                                            
      'BITLEN'   (R)   ポリラインプリミティブの描く折れ線の                 
                       ラインタイプをビットパターンで設定するとき,         
                       1ビットがVC上でどれだけの長さに相当するかを指定する  
                       (初期値は0.003). [-1ex]0ex1ex}                      
                                                                            
      'MOVE'     (I)   SZPACKの下位ルーチンが破線等のパターンで             
                       線を引くときpen-up                                   
                       moveの後のパターンのサイクルについて指定する         
                       (初期値は1). [-1ex]0ex1ex}                          
                                                                            
                       1 : pen-upの間も作図を続けたものと見なす.           
                                                                            
                       0 : 最後にpen-downで移動した状態を保つ.             
                                                                            
                       -1 : pen-upで移動した後,新しいサイクルを始める.    
                       [-1ex]0ex1ex}                                        
                                                                            
      'LCHAR'    (L)   ポリラインプリミティブで折れ線を描くとき,           
                       ラベルつき折れ線とするかどうかを指定する             
                       .TRUE.のときはラベルつき折れ線とする;                
                       .FALSE.のときはラベルなし折れ線とする                
                       (初期値は.FALSE.)                                   
                       .                                                    
                       以下はこのラベルつき線分に関するパラメーターである   
                       . [-1ex]0ex1ex}                                     
                                                                            
      'LROT'     (L)   ラベルとして付ける文字列を一定の回転角で描くか,     
                       あるいは線分に沿って描くかを指定する.               
                       .TRUE.のとき一定の回転角で描く;                      
                       .FALSE.のとき線分に沿って描く(初期値は.FALSE.)      
                       . [-1ex]0ex1ex}                                      
                                                                            
      'IROT'     (I)   ラベルとしてつける文字列を一定の回転角で描くとき     
                       ('LROT'が.TRUE.のとき)の 回転角を指定する(単位は   
                       度;初期値は0). [-1ex]0ex1ex}                         
                                                                            
      'FWC'      (R)   文字列を描くための空白域の幅を                       
                       全文字幅を単位としてどれだけとるかを指定する係数     
                       (初期値は1.25). [-1ex]0ex1ex}                       
                                                                            
      'CWL'      (R)   1サイクルあたり,線分部分の長さを文字高を単位として  
                       何文字分 とるかを指定する係数 (初期値は30.0)        
                       . [-1ex]0ex1ex}                                      
                                                                            
      'FFCT'     (R)   ラベル付き折れ線を描くにあったて,                   
                       線分部分を1単位としてどれだけ進んだところから        
                       描き始めるかを指定する(初期値は0.5)                 
                       . [-1ex]0ex1ex}                                      
                                                                            
      'INDEXC'   (I)   ラベルとして描く文字列のラインインデクスを指定する   
                       (初期値は0)                                         
                       .                                                    
                       値が0のとき,線分部分を描くために現在設定されている  
                       ラインインデクスと同じ値をとる. [-1ex]0ex1ex}       
                                                                            
      'LBUFF'    (L)   折れ線の終りが文字列を描くべき空白部分であるとき     
                       そこを線分で結ぶためのバッファリングをするかどうか   
                       を指定する. .TRUE.のときバッファリングをする;       
                       .FALSE.のときバッファリングしない(初期値は.TRUE.)   
                       . [-1ex]0ex1ex}                                      
                                                                            
      'NBUFF'    (I)   バッファリングをするときその長さを指定する.         
                       (初期値は20). [-1ex]0ex1ex}                         
                                                                            
      'RBUFF'    (R)   バッファリングした内容を書き出した後,ラベルつき折   
                       れ線の                                               
                       サイクルの位置を指定する.0と1の間の値を指定するこ   
                       と. (初期値は0.99). [-1ex]0ex1ex}                  
                                                                            
      'LCURV'    (L)   折れ線のなす角が大きなところなどではラベルを書かな   
                       いことを                                             
                       指定する.正確には,文字を書くべきスペースが         
                       次のパラメータ'RCURV'の係数以下のとき                
                       ラベルを書かない. .TRUE.のときラベルを書かない;     
                       .FALSE.のときラベルを書く(初期値は.TRUE.)           
                       . [-1ex]0ex1ex}                                      
                                                                            
      'RCURV'    (R)   'LCURV'が.TRUE.で,                                  
                       ラベルを書くべきスペースがこの係数以下のときラベル   
                       を書かない. (初期値は1.0). [-1ex]0ex1ex}           
                                                                            
    

    [ポリマーカープリミティブに関するパラメーター]

                                                                            
      'PMFACT'    (R)   ポリマーカープリミティブが描く                      
                        マーカーの大きさを調整する係数(初期値は2.0)        
                        .                                                   
                        ポリマーカープリミティブはテキストプリミティブを用  
                        いてマーカーを描く.                                
                        このとき,描くマーカーは標準的な文字高に比べて小さ  
                        い (フォントテーブル[here]                         
                         ,[here] 節参照).この内部変数はマーカーが標準的な文字高を持つように  
                        この内部変数はマーカーが標準的な文字高を持つように  
                        するため 使われる拡大係数である.[-1ex]0ex1ex}      
                                                                            
      'NPMSKIP'   (I)   ポリマーカープリミティブでマーカーを描くとき,      
                        何個に1個の割合で描くかを指定する                   
                        (初期値は1;すべてマーカーを描く.SGPMZUが          
                        バッファリングする最大個数50以下でなければならない  
                        ). [-1ex]0ex1ex}                                   
                                                                            
    

    [テキストプリミティブに関するパラメーター]

                                                                            
      'IFONT'   (I)   フォント番号 (初期値は1). [-1ex]0ex1ex}              
                                                                            
      'LCNTL'   (L)   テキストプリミティブで文字を描くとき, 制御文字       
                      ('ISUP', 'ISUB', 'IRST'参照) を有効とするかどうかを  
                      指定する .TRUE.のときは有効とする;                    
                      .FALSE.のときは有効としない(初期値は.FALSE.)         
                      . [-1ex]0ex1ex}                                       
                                                                            
      'SMALL'   (R)   上付および下付添え字の                                
                      標準文字高に対する比率(初期値は0.7). [-1ex]0ex1ex}   
                                                                            
      'SHIFT'   (R)   上付および下付添え字の中心を                          
                      標準文字の中心からどれだけはなすかを標準文字高に対す  
                      る比率で指定する (初期値は0.3). [-1ex]0ex1ex}        
                                                                            
      'ISUP'    (I)   上付添え字のモードの始まりをしめす                    
                      制御文字の文字番号.                                  
                      初期値は124;これは'|'に対応する.[-1ex]0ex1ex}        
                                                                            
      'ISUB'    (I)   下付添え字のモードの始まりをしめす                    
                      制御文字の文字番号.                                  
                      初期値は95;これは''に対応する.[-1ex]0ex1ex}          
                                                                            
      'IRST'    (I)   上付および下付添え字のモードの終わりをしめす          
                      制御文字の文字番号.                                  
                      初期値は34;これは'"'に対応する.[-1ex]0ex1ex}    
                                                                            
    

    [トーンプリミティブに関するパラメーター]

                                                                            
      'LSOFTF'   (L)   トーンプリミティブで塗りつぶしをおこなうとき soft    
                       fillをおこなうかhard fillをおこなうかを指定する.    
                       .TRUE.のときはsoft fillをおこなう;                   
                       .FALSE.のときはhard fillをおこなう                   
                       (初期値は.FALSE.)                                   
                       . ただし,hard                                       
                       fillを指定してもその能力がない場合は soft            
                       fillとなる.[-1ex]0ex1ex}                            
                                                                            
      'LCL2TN'   (L)   色を用いたべた塗りによる塗りわけを                   
                       おこなうとき,色番号をドットなどのパターン番号とし   
                       て 読みかえるかどうかを指定する.                    
                       .TRUE.のときは読みかえる;                            
                       .FALSE.のときは読みかえない (初期値は.FALSE.)       
                       .                                                    
                       ただし,色を用いた塗りわけができないような装置では   
                       , .FALSE. と設定されていてもパターン番号による      
                       読みかえをおこなおうとする. [-1ex]0ex1ex}           
                                                                            
      'TNBLEN'   (R)   トーンプリミティブで ドットパターンによるsoft        
                       fillをおこなう場合,                                 
                       フィルエリアサブプリミティブの下位ルーチンを用い点   
                       線の集合として 表現する.                            
                       このとき点線のラインタイプはビットパターンで設定さ   
                       れるが,                                             
                       その1ビットがRC上でどれだけの長さに相当するかを指定  
                       する (初期値は0.001). [-1ex]0ex1ex}                 
                                                                            
      'IRMODE'   (I)   トーンプリミティブで指定された閉領域が               
                       クリッピング境界にかかる時に,                       
                       境界線の向きを指定するパラメタ.                     
                       0のとき反時計回り; 1のとき時計回り.                 
                       [here] 節参照のこと. (初期値は0). [-1ex]0ex1ex}    
                                                                            
    

    [アローサブプリミティブに関するパラメーター]

                                                                            
      'LPROP'    (L)   矢じり部分の線分を本体部分の線分の長さに比例させて   
                       描くかどうかを指定する.                             
                       .TRUE.なら比例させて描く;.FALSE.なら                 
                       内部変数'CONST'で指定してある一定値で,              
                       地図投影のときは内部変数'CONSTM'で指定してある       
                       一定値で描く (初期値は.TRUE.). [-1ex]0ex1ex}        
                                                                            
      'LUARW'    (L)   地図投影のとき,矢じり部分の線分も地図にへばりつい   
                       たように 描くかどうかを指定する.                    
                       .TRUE.なら地図上で描く; .FALSE.ならVCで描く          
                       (初期値は.TRUE.). [-1ex]0ex1ex}                     
                                                                            
      'AFACT'    (R)   'LPROP'が.TRUE.(比例させて描く)のときに            
                       用いる比例定数(初期値は0.33). [-1ex]0ex1ex}         
                                                                            
      'CONST'    (R)   'LPROP'が.FALSE.(一定値で描く)のときに             
                       用いる一定値(単位はVC;初期値は0.01)                 
                       . [-1ex]0ex1ex}                                      
                                                                            
      'CONSTM'   (R)   'LPROP'が.FALSE.(一定値で描く)で                   
                       かつ地図投影のときに用いる一定値                     
                       (単位は度;初期値は5.0). [-1ex]0ex1ex}               
                                                                            
      'ANGLE'    (R)   矢じり部分の線分と本体部分の線分のなす角             
                       (単位は度;初期値は20.0). [-1ex]0ex1ex}              
                                                                            
      'LATONE'   (L)   矢じり部分を定義する三角形の領域を塗りつぶすか       
                       どうかを指定する. .TRUE.なら塗りつぶす;             
                       .FALSE.なら塗りつぶさない (初期値は.FALSE.)         
                       . [-1ex]0ex1ex}                                      
                                                                            
      'IATONE'   (L)   'LATONE'が.TRUE.                                     
                       (矢じり部分を定義する三角形の領域を塗りつぶす)の   
                       ときの トーンパターン(初期値は999)                  
                       .                                                    
                       3桁以下のとき,カラーインデクスは軸の部分について    
                       指定されているものを用いる. [-1ex]0ex1ex}           
                                                                            
    

    [変換関数に関するパラメタ] - これらのパラメタの意味については,[here]節, [here]節 を参照のこと.

                                                                            
      'ITR'                           (I)     変換関数番号 (初期値は1)     
                                              . [-1ex]0ex1ex}               
                                                                            
      'VXMIN','VXMAX','VYMIN',        (R)     ビューポート (初期値は0.0,   
      'VYMAX'                                 1.0, 0.0, 1.0)                
                                              . [-1ex]0ex1ex}               
                                                                            
      'UXMIN','UXMAX','UYMIN',        (R)     ウインドウ (初期値は0.0,     
      'UYMAX'                                 1.0, 0.0, 1.0)                
                                              . [-1ex]0ex1ex}               
                                                                            
      'SIMFAC','VXOFF','VYOFF'        (R)     相似変換パラメタ              
                                              (初期値は1.0, 0.0, 0.0)      
                                              . [-1ex]0ex1ex}               
                                                                            
      'PLX','PLY','PLROT'             (R)     地図座標回転パラメタ          
                                              (初期値は0.0, 90.0, 0.0)     
                                              . [-1ex]0ex1ex}               
                                                                            
      'STLAT1','STLAT2'               (R)     標準緯度 (初期値は0.0, 0.0)  
                                              . [-1ex]0ex1ex}               
                                                                            
      'RSAT'                          (R)     衛星軌道半径 (初期値は0.0)   
                                              . [-1ex]0ex1ex}               
                                                                            
      'LDEG'                          (L)     単位系の指定.'LDEG'が.TRUE.  
                                              なら 度を単位とする;          
                                              .FALSE.                       
                                              ならラジアンを単位とする      
                                              (初期値は.TRUE.)             
                                              . [-1ex]0ex1ex}               
                                                                            
      'ITR3'                          (I)     変換関数番号 (初期値は1)     
                                              . [-1ex]0ex1ex}               
                                                                            
      'VXMIN3','VXMAX3','VYMIN3',                                           
      'VYMAX3'                                                              
                                                                            
      'VZMIN3','VZMAX3'               (R)     3次元ビューポート             
                                              (初期値は0., 1., 0., 1.,     
                                              0., 1.). [-1ex]0ex1ex}        
                                                                            
      'UXMIN3','UXMAX3','UYMIN3',                                           
      'UYMAX3'                                                              
                                                                            
      'UZMIN3','UZMAX3'               (R)     3次元ウィンドウ               
                                              (初期値は0., 1., 0., 1.,     
                                              0., 1.). [-1ex]0ex1ex}        
                                                                            
      'SIMFAC3'                       (R)     円筒座標と球座標のスケーリン  
                                              グファクター (初期値は1.)    
                                              . [-1ex]0ex1ex}               
                                                                            
      'XORG3', 'YORG3', 'ZORG3'       (R)     円筒座標と球座標の原点位置    
                                              (初期値は0., 0., 0.)         
                                              . [-1ex]0ex1ex}               
                                                                            
      'XEYE3','YEYE3','ZEYE3'         (R)     視点 (初期値は-0.8, -1.5,    
                                              1.5). [-1ex]0ex1ex}           
                                                                            
      'XOBJ3','YOBJ3','ZOBJ3'         (R)     焦点中心 (初期値は0.5,       
                                              0.5, 0.0). [-1ex]0ex1ex}      
                                                                            
      'ANGLE3'                        (R)     画角 (初期値は30.0)          
                                              . [-1ex]0ex1ex}               
                                                                            
      'TILT3'                         (R)     傾き (初期値は0.0)           
                                              . [-1ex]0ex1ex}               
                                                                            
      'XOFF3','YOFF3'                 (R)     オフセット (初期値は0.0,     
                                              0.0). [-1ex]0ex1ex}           
                                                                            
      'IXC3','IYC3','SEC3'            (I,R)   2次元平面位置 (初期値は1,    
                                              2, 0.0). [-1ex]0ex1ex}        
                                                                            
      'L2TO3'                         (L)     2次元透視変換の指定.        
                                              'L2TO3'が.TRUE.               
                                              なら2次元平面を3次元空間に割  
                                              り付ける;                     
                                              .FALSE.                       
                                              ならV座標とR座標を同一のもの  
                                              として扱う.                  
                                              (初期値は.FALSE.)            
                                              . [-1ex]0ex1ex}               
                                                                            
    

    [補間およびクリッピングに関するパラメタ] - これらのパラメタの意味については,[here]節 を参照のこと.

                                                                            
      'LLNINT','LGCINT'               (L)   線形補間,大円補間のフラグ      
                                            (初期値は.FALSE., .TRUE.)      
                                            . [-1ex]0ex1ex}                 
                                                                            
      'RDX','RDY'                     (R)   補間間隔 (初期値は5.0, 5.0;    
                                            単位は度). [-1ex]0ex1ex}       
                                                                            
      'LCLIP'                         (L)   ビューポートでのクリッピングの  
                                            フラグ (初期値は.FALSE.)       
                                            . [-1ex]0ex1ex}                 
                                                                            
      'TXMIN','TXMAX','TYMIN',        (R)   T座標系でのクリッピング境界     
      'TYMAX'                               (初期値は-180.0, 180.0,        
                                            -90.0, 90.0; 単位は度).        
                                            [-1ex]0ex1ex}                   
                                                                            
    

    [レイアウトに関するパラメーター] - dcl-ver.4 まで SLPGET/SLPSET が管理していたパラメーター.

                                                                            
      'INDEX'     (I)   第1レベル目のマージンに描く文字列と                 
                        コーナーマークのラインインデクス(初期値は1)        
                        . [-1ex]0ex1ex}                                     
                                                                            
      'LCORNER'   (L)   コーナーマークを描くかどうかを指定する.            
                        .TRUE.ならコーナーマークを描く;                     
                        .FALSE.なら描かない(初期値は.TRUE.)                
                        . [-1ex]0ex1ex}                                     
                                                                            
      'CORNER'    (R)   コーナーマークの長さ(初期値は0.01)                 
                        . 単位は第1レベル目の長辺を1とする.                
                        [-1ex]0ex1ex}                                       
                                                                            
      'LWIDE'     (L)   文字列(タイトル)を描く第1レベル目の               
                        マージンの定義をする.                              
                        .TRUE.のときマージンの幅を第1レベル目のフレーム幅   
                        いっぱいにとる;                                     
                        .FALSE.のとき横方向のマージンを取った残りの部分を   
                        マージンの幅とする(初期値は.FALSE.)                
                        . [-1ex]0ex1ex}                                     
                                                                            
      'XPAD'      (R)   第1レベル目のマージンに描く文字列の                 
                        左右にとるすきまの和を文字高を単位として指定する(  
                        初期値は1.0). [-1ex]0ex1ex}                         
                                                                            
      'YPAD'      (R)   第1レベル目のマージンに描く文字列の                 
                        上下にとるすきまの和を文字高を単位として指定する(  
                        初期値は1.0). [-1ex]0ex1ex}                         
                                                                            
    

  4. 備考
    1. 内部変数を管理するための下請けルーチンとして 以下のものがある.
                                                                          
        SGPQNP(NCP)         内部変数の総数NCPを求める.                   
                                                                          
        SGPQID(CP,IDX)      内部変数CPの位置IDXを求める.                 
                                                                          
        SGPQCP(IDX,CP)      IDXの位置にある内部変数の名前CPを参照する.   
                                                                          
        SGPQVL(IDX,IPARA)   IDXの位置にある内部変数の値IPARAを参照する.  
                                                                          
        SGPSVL(IDX,IPARA)   IDXの位置にある内部変数の値IPARAを変更する.  
                                                                          
      
    2. SGpGETは上に述べたSGPQIDを呼んで 内部変数の位置を求め,SGPQVLによって値を参照する; SGpSETSGPQIDを呼んで内部変数の位置を求め, SGPSVLによって値を設定する. したがって指定した内部変数名が見つからないとき, エラーメッセージはSGPQIDが出力する.
    3. IPARAとしては適切な型の定数または変数を指定すること.
    4. このほかに, soft fillによって斜線を描こうとしたとき斜線の回転角に加える 微小値を指定する'RFAROT'という内部変数や, レイアウトに関する'NFRAME, 'NPAGE', 'NLEVEL', 'FACTOR'などの内部変数があるが ユーザーは指定してはならない.

SGPWSN

  1. 機能
    利用可能なワークステーション名のリストを書き出す.
  2. 呼び出し方法
    CALL SGPWSN
  3. パラメーターの説明
    なし
  4. 備考
    1. リストを書き出す装置番号は GLpGET/GLpSETの管理する 内部変数'IOUNIT'が決める.


Back to Main


Latex Source


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

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