ADP
Programming Language ADP

English

Freecode

Sourceforge.net

SourceForge.JP

Loading

サンプル

各種サンプルコードについて説明します。

クラウドウォッチャー

WEBページを定期巡回し変更があればメールでお知らせします。過疎っている2chや発言小町等のBBSにご使用ください。

クラウドウォッチャーのページ

http://www.adp.la/cloudwatcher/index.cgi

フィボナッチ数を求めるサンプル

コード例(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 メソッド形式を使わない)
,arg(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.