Loading
Samples
This section describes the various sample code information.
クラウドウォッチャー
フィボナッチ数を求めるサンプル
コード例(fib.p)
+fib(0,0),!;
+fib(1,1),!;
+fib($x,$y),fib($x - 1, $f1),fib($x - 2, $f2), $y == $f1 + $f2, !;
,fib(28).printn;
実行例
D:\>adp fib.p
317811
CSVファイルの入出力
CSVファイルの読み込み1(ヘッダなし)
CSVファイルの読み込み例1(rcsvf.p 32ビットWindowsで動作)
rcsvf@("rcsv1.csv").prtn,next;
CSVファイル(rcsv1.csv)を配列に読み込んで表示します。
実行例
{都道府県, 人口}
{東京都, 13,161,751}
{神奈川県, 9,049,500}
{大阪府, 8,862,896}
CSVファイルの読み込み2(ヘッダあり)
CSVファイルにヘッダがある場合、csvfhを使用します。
CSVファイルの読み込み例2(rcsvfh.p 32ビットWindowsで動作)
,rcsvfh@("rcsv1.csv").prtn,next;
CSVファイル(rcsv1.csv)を連想配列に読み込んで表示します。最初の一行がキーになります。
2行目以降が値になります。
実行例
{都道府県 => 東京都, 人口 => 13,161,751}
{都道府県 => 神奈川県, 人口 => 9,049,500}
{都道府県 => 大阪府, 人口 => 8,862,896}
CSVファイルの出力(ヘッダなし)
ADPでは連想配列をCSVに変換する機能があります。この機能とファイル関連の述語とを組み合わせてCSVファイルを作成します。
CSVファイルへの出力例1(lib\wcsv.P 32ビットWindowsで動作)
+db("Driver={Microsoft Access Driver (*.mdb)}; DBQ=sample.mdb");
#テストデーターの作成
,$rec1 == { "ID"=>1, "col1" => "aaa", "col2" => 20, "col3" => "2010/05/27 17:40:30"}
,$rec2 == { "ID"=>2, "col1" => "bbb", "col2" => 30, "col3" => "2010/05/27 17:40:30"}
,db.insert( $rec1, "sample_table")
,db.insert( $rec2, "sample_table")
;
#db の内容をCSVファイルへ出力
+fname('wcsv.csv');
,fname.fwrite(''),!;
,db.select@({},'sample_table').csv.logn(=fname),next;
#csvファイルの内容の表示
,fname.file.print;
CSVファイルへの出力部分は以下のコードになります。
+fname('wcsv.csv');
,fname.fwrite(''),!;
,db.select({},'sample_table', @rec),fname.fappendn(=$rec.csv),next;
実行例
D:\sample\lib>adp wcsv.p
1,aaa,20,2010-05-27 17:40:30
2,bbb,30,2010-05-27 17:40:30
CSVファイルの出力(ヘッダあり)
CSVファイルと同様に出力時にヘッダをつけることも出来ます。例では、DBから取得時のカラム名をヘッダに付けています。
CSVファイルへの出力例2(lib\wcsvh.P 32ビットWindowsで動作)
+db("Driver={Microsoft Access Driver (*.mdb)}; DBQ=sample.mdb");
#テストデーターの作成
,$rec1 == { "ID"=>1, "col1" => "aaa", "col2" => 20, "col3" => "2010/05/27 17:40:30"}
,$rec2 == { "ID"=>2, "col1" => "bbb", "col2" => 30, "col3" => "2010/05/27 17:40:30"}
,db.insert( $rec1, "sample_table")
,db.insert( $rec2, "sample_table")
;
#db の内容をCSVファイルへ出力
+fname('wcsv.csv');
+heder(1,$rec),fname.fwriten(=$rec.keys.csv),!;
+heder($,$),!;
,db.select({},'sample_table', @rec)
,times($c),heder($c,$rec),$rec.csv.logn(=fname),next;
#csvファイルの内容の表示
,fname.file.print;
CSVファイル出力は以下の部分になります。
+fname('wcsv.csv');
+heder(1,$rec),fname.fwriten(=$rec.keys.csv),!;
+heder($,$),!;
,db.select({},'sample_table', @rec)
,times($c),heder($c,$rec),$rec.csv.logn(=fname),next;
実行例
D:\sample\lib>adp wcsvh.p
ID,col1,col2,col3
1,aaa,20,2010-05-27 17:40:30
2,bbb,30,2010-05-27 17:40:30
ファイルハッシュの作成
以下、引数で指定されたファイルのSHA1ハッシュを表示する例です。
・コード(fhash.p)
,arg(0).fread.sha1.printn;
・実行例
D:\sample>adp fhash.p -A adp32.zip
068C324A715C6DDEA250C898CF3D1C5F0AA27433
コードでは、組込述語argで最初の引数(ファイル名)を取得し、そのファイル名からファイルを読み込み(fread)、SHA1のハッシュ値を計算し(sha1)表示しています(printn)。
コード例では、メソッド形式の糖衣構文を使用しています。上記のコード例は以下のものと同じです。
・コード(fhash2.p メソッド形式を使わない)
,args(0,$a),fread($a,$f),sha1($f,$s),printn($s);
DBライブラリのサンプル
コード例(dbsample.p 32ビットWindowsで動作)
+db("Driver={Microsoft Access Driver (*.mdb)}; DBQ=sample.mdb");
# set table quote
,platform('Unix'),prtn('This program cannot run under Unix.'), exit(1);
#insert / select / sql
,prtn('insert / select')
,$rec1 == {"ID"=>1, "col1" => "AAA", "col2" => 10, "col3" => "2010/05/27 17:40:30"}
,$rec2 == {"ID"=>2, "col1" => "BBB", "col2" => 20, "col3" => "2010/05/27 17:40:30"}
,db.insert( $rec1, "sample_table")
,db.insert( $rec2, "sample_table")
,db.select@({},'sample_table').prtn,next
,db.select@({ 'ID' => 3}, 'sample_table').prtn,next;
,db.sql@('select col1, col2 from sample_table where col2 >= ?', { 20 }).prtn.next
;
#update / save / select
,prtn('update / save')
,$ur1 == {"ID"=>1, "col1" => "aaa", "col2" => 12, "col3" => "2011/05/27 17:40:30"}
,$ur2 == {"ID"=>2, "col1" => "bbb", "col2" => 22, "col3" => "2011/06/27 17:40:30"}
,$ur3 == {"ID"=>4, "col1" => "ddd", "col2" => 42, "col3" => "2011/07/27 17:40:30"}
,db.update( $ur1, "sample_table")
,db.save( $ur2, "sample_table")
,db.save( $ur3, "sample_table")
,db.select@({},'sample_table').prtn,next
;
#delete / select
,prtn('delete 2')
,db.delete({ "ID" => 2 },'sample_table')
,db.select@({},'sample_table').prtn,next
;
,prtn('delete all')
,db.delete({},'sample_table')
,db.select@({},'sample_table').prtn,next
;
実行例
D:\sample\lib>adp dbsample.p
insert / select
{ID => 1, col1 => AAA, col2 => 10, col3 => 2010-05-27 17:40:30, col4 => }
{ID => 2, col1 => BBB, col2 => 20, col3 => 2010-05-27 17:40:30, col4 => }
{col1 => BBB, col2 => 20}
update / save
{ID => 1, col1 => aaa, col2 => 12, col3 => 2011-05-27 17:40:30, col4 => }
{ID => 2, col1 => bbb, col2 => 22, col3 => 2011-06-27 17:40:30, col4 => }
{ID => 4, col1 => ddd, col2 => 42, col3 => 2011-07-27 17:40:30, col4 => }
delete 2
{ID => 1, col1 => aaa, col2 => 12, col3 => 2011-05-27 17:40:30, col4 => }
{ID => 4, col1 => ddd, col2 => 42, col3 => 2011-07-27 17:40:30, col4 => }
delete all
AWP(WEBページ)のサンプル
Powered by ADP.