格子点の値が欠損値のときでも, 欠損値処理の指定をすることによって,
UDPACK や UEPACK, UGPACK にある2次元量表示サブルーチンでも欠損値処理を
して作図できます.
プログラム MISS2 の例では, 基本的には第2.2節の QUICK4 と同じプログラム構成で, ただし格子点値の一部分を欠損値 RMISS (この値はGLRGET ルーチンで設定されている実数欠損値を 参照しました)として, 欠損値処理の指定をおこなって作画しています. 欠損 値処理の指定は, やはり GLLSET ルーチンによって内部変数 'LMISS' を .TRUE. とすることによっておこないます. この実行結果 からもわかるように, 欠損値のまわりの格子点を境界としてコンターやトーン が描かれません.
PROGRAM MISS2 PARAMETER( NX=37, NY=37 ) PARAMETER( XMIN=0, XMAX=360, YMIN=-90, YMAX=90 ) PARAMETER( PI=3.14159, DRAD=PI/180 ) REAL P(NX,NY) CALL GLRGET( 'RMISS', RMISS ) CALL GLLSET( 'LMISS', .TRUE. ) DO 10 J=1,NY DO 10 I=1,NX ALON = ( XMIN + (XMAX-XMIN)*(I-1)/(NX-1) ) * DRAD ALAT = ( YMIN + (YMAX-YMIN)*(J-1)/(NY-1) ) * DRAD SLAT = SIN(ALAT) P(I,J) = 3*SQRT(1-SLAT**2)*SLAT*COS(ALON) - 0.5*(3*SLAT**2-1) IF( I.EQ.6 .AND. J.EQ.6 ) THEN P(I,J) = RMISS END IF IF( ( 8.LE.I .AND. I.LE.24) .AND. J.EQ.30 ) THEN P(I,J) = RMISS END IF IF( (22.LE.I .AND. I.LE.30) .AND. + (12.LE.J .AND. J.LE.20) ) THEN P(I,J) = RMISS END IF 10 CONTINUE WRITE(*,*) ' WORKSTATION ID (I) ? ;' CALL SGPWSN READ (*,*) IWS CALL GROPN( IWS ) CALL GRFRM CALL GRSWND( XMIN, XMAX, YMIN, YMAX ) CALL GRSVPT( 0.2, 0.8, 0.2, 0.8 ) CALL GRSTRN( 1 ) CALL GRSTRF CALL UETONE( P, NX, NX, NY ) CALL USDAXS CALL UDCNTR( P, NX, NX, NY ) CALL GRCLS ENDPROGRAM MISS2
2次元ベクトル場を作画する UGPACK でも, 同様の欠損値処理を行ないます. UGVECT ルーチンでは, ベクトルの少なくとも1成分が欠損値の時にはベ クトルを描きません. UGLSET ルーチンで UGPACK に関する内部変数 'LMISSP' を .TRUE. にすると, 欠損値ベクトルの格子点にマー カー × を描きます. この印のマーカータイプやマーカーサイズは, やはり, UGISET, UGRSET ルーチンでそれぞれ対応する内部変数 'ITYPE1', 'RSIZEM' を設定することにより変更できます.