2009年4月30日木曜日

homeの勘違い

iナビでIFSを見てみると、ルートに「.groovy」が出来てる?
「何で、ホームディレクトリに出来るはずやん?」と思い。シェルのexportで環境変数HOMEを確認したら、思いっきり”/”になってました。
「何故?」と思いきや、ユーザープロファイルの”HOMEDIR”値を変えた記憶が蘇り、やっぱりルートになってました。「/home/username」に変更してめでたし*2。

AS/400にGroovy

PASEにGroovy

AS/400のPASE環境にGroovyのバイナリを入れてみようと...。
入れる必要が有るのかと?言われてしまうと返す言葉もありません。
ASもJava動くんだからぐらいのノリです。

Groovyの公式サイト(http://groovy.codehaus.org/)からソースを入手して、antタスクでコンパイルした。
Test系タスクでこけている様で、 http://groovy.codehaus.org/Building+Groovy+from+Sourceに書いてあった「ant install -DskipTests=true」で実行したら、バイナリが出来た。(余りよくわかってないのと英語が解らない自分が情けない)
1.AS/400のPASE環境の「usr/local」にバイナリを配置
2.「QSYS/WRKENVVAR LEVEL(*SYS) コマンド」で"GROOVY_HOME”,"JAVA_HOME"設定
3.「call qp2term」でシェルを呼び出す
4.「export PATH=$PATH:$GROOVY_HOME/bin 」でパスの設定
5.「groovy --version 」>Groovy Version: 1.6.1 JVM: 1.5.0 でバージョン確認
6.「groovysh」で動作確認。>例外発生”jline.UnixTerminal.initializeTerminal(UnixTerminal.java:83)などなど

シェルは使えるが、何やら例外を投げられちゃいました。もう少し苦労が必要そうです。

Groovyの文法その3

クロージャー


def closure = { fname ,lname ->
println fname + ":" + lname
}
■「->」以前が引数。
closure("アイルトン","セナ")
<結果>アイルトン:セナ

■異なる数の引数を渡すと、MissingMethodException が発生。
try {
closure("ルフィ","D","モンキー")
}catch(MissingMethodException e){
println "MissingMethodException:クロージャー呼び出しエラー"
}
<結果>MissingMethodException:クロージャー呼び出しエラー


■暗黙の引数「it」が使用出来る。
closure2 = {
println it
}

closure2("ネルソン・ピケ")

<結果>ネルソン・ピケ

2009年4月6日月曜日

Groovyの文法その2

Groovyのループ処理

Groovyのforループはリストや範囲や配列要素の繰り返しが基本のようだ、Java風のforループもサポートされているが、途中かららしい。

cars = ["カローラ","クラウン","プリウス"]
//要素のループ
for (car in cars){
println "forループ1:" + car
}

//指定範囲ループ
for (i in 0..2){
println "forループ2:" + cars[i]
}

//java風ループ
for (i=0 ;i<3 ; i++){
println "forループjava:" + cars[i]
}

//whileループ
while(i-- > 0) {
println "while:ループ" + cars[i]
}

Groovy =>
forループ1:カローラ
forループ1:クラウン
forループ1:プリウス
forループ2:カローラ
forループ2:クラウン
forループ2:プリウス
forループjava:カローラ
forループjava:クラウン
forループjava:プリウス
whileループ:プリウス
whileループ:クラウン
whileループ:カローラ

2009年4月4日土曜日

Groovyの文法その1

GroovyのSwitch case文


これがGroovyの「Switch case文」Javaと同じですね。
break入れないと一致以降の処理は行われます。「1..3」はrangeで範囲をあらわします。「String」は変数のクラスと比較する事もできます。

a = 4

switch (a){
case "a":
println "aはaです。"
break
case 1..3 :
println "aは1~3です。"
break
case String:
println "aは文字列です。"
break
case Integer:
println "aは整数です。"
break
default:
println "aは不明です。"
break
}

groovy => aは整数です。