next up previous contents index
: 画像の変換 : Scripting Language : function   目次   索引

String function

これらのfunctionはgsfile中で用います。

while(p.106)
何度も繰り返してgsfileを実行したいときに使います。基本的にはcシェルのwhileと変わりません。
書式:while (条件) .......... endwhile
入力例:t=1
    while(t<10)
    'set t't
    'd z'
    't=t+1'
    endwhile
!:条件付けのoptionはp.104に記載されているので参照してください。
!:if文も同様に書くことが可能です。p.106に例文が載ってますので参照してください。


if(p.106)
書式:if(条件).................endif


sublin(p.109)
書式:sublin( string,linenumber)
入力例:sublin(result,2)
string........文字列の名前
linenumber....何行目の文字列を取り出すかを指定する。
gsfile中での使用例:

'q dims'
val = result
val2 = sublin(result,5)
say 'val2 = 'val2

この4行commandの意味するところは、'q dims'によって例えば
Default file number is:1
X is varing Lon = 0 to 180 X = 1 to 73
Y is fixed Lat = 30 Y = 13
Z is fixed Lev = 200 Z = 10
T is fixed Time = 00Z01JAN1999 T = 1

のように結果がでるとしましょう。2行目の"val = result"とは、上の罫線で 囲ったq dimsの結果(result)をvalという変数に定義したことになります。 ここでresultのようにuserが特に指定しなくてもgradsの中で変数として認識されているものをpredefined variablesといいます(解説書p103を参照)。要するにqまたはqueryで出力された結果はgradsの中でresultという変数で認識されているのです。 そして3行目の"val2 = sublin(result,5)"でresultの中身、つまり上の罫線で 囲まれた結果の5行目を"val2"という変数に定義したことになります。 4行目の"say"というコマンドはfortranで言う"print"に当たります。 上のような例の場合、4行目が実行されることによってgradsのコマンドラインに "val2 = T is fixed Time = 00Z01JAN1999 T = 1"と出力されます。


subwrd(p.109)
書式:subwrd(string, number)
入力例:subwrd(val2,9)
string........行の名前
number....何番目(スペースで区切られている)の文字列を取り出すかを指定する。
gsfile中での使用例: 'q dims'
val = result
val2 = sublin(result,5)
say 'val2 = 'val2
val3 = subwrd(val2,6)
say 'time = 'val3

'draw string 5.0 6.0 'val3
4行目までは前の"sublin"での使用例と同じです。ここでval2は"T is fixed Time = 00Z01JAN1999 T = 1"と定義されています。5行目はval2の左から6番目の文字列 をval3という変数に定義しています。つまりval3は"00Z01JAN1999"に定義されたのです。 6行目が実行されるとgradsのコマンドラインに"time = 00Z01JAN1999"と出力されます。 7行目はval3の値を図の中に書き込んでいます。gsファイルを作成して、while文などで回し、一度に大量の図を作成するときなど、このsublin,subwrd,drawを組み合わせて図にタイムスタンプをつけていくとかつ非常に楽で間違いが減ります。
next up previous contents index
: 画像の変換 : Scripting Language : function   目次   索引
Hatsuki Fujinami 平成17年4月19日