ADP
Programming Language ADP

Japanese

Sourceforge.net

SourceForge.JP

Loading

その他のカテゴリ

その他の述語のリファレンスです。

その他リファレンス

args(コマンドライン引数の取得)

形式
 args($filepath,$value)
引数
  • $pos:引数の順番(0から)
  • $value:引数の値(結果)
完了時の動作
  • 引数が存在する時:次の述語を実行に移ります。
  • 引数が存在しない時:バックトラックします。
バックトラック時の動作
  • 次の引数が存在する時:次の述語を実行に移ります。
  • 次の引数が存在しない時:バックトラックします。
説明
コマンドライン引数(adpコマンドでオプション -A 以降の引数)を取得します。
$posには欲しい引数の順番(0から)を指定する他、変数を指定すると全引数取得に現在の順番を取得することも出来ます。

※Version0.89以前は述語の名称がargでした。

コード例(lib/arg.p)
,arg(3,$value),prtn("pos3は:",$value);
,arg($pos,$value),prtn($pos,":",$value),next;

実行例
D:\sample\lib>adp arg.p -A い ろ は に ほ
pos3は:に
0:い
1:ろ
2:は
3:に
4:ほ

_global (グローバル変数の値設定)


形式
 _global( $item, $key)
引数
  • $item: 変数にセットする値
  • $key: 変数の名前(キー)
完了時の動作
  • 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。

説明
$keyで指定された名前のグローバル変数に値をセットします。

コード例(lib/global.p)
,$a = 10 ,_global($a,'hoge');
,$a = 30 ,global('hoge').prt;

実行例
D:\sample\lib>adp global.p
10

cmp (比較)

形式
 cmp( $src, $dst)
引数
  • $str: 比較元
  • $dst: 比較先
  • $result: 結果
完了時の動作
  • 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
 $src,$dstが共に数値の場合、$src > $dstなら 1を、$src < $dstなら -1を、それ以外なら0を返します。
 $src,$dstが文字列の場合、$src > $dstなら正の値を、$src < $dstなら 負の値を、それ以外なら0を返します(strcmpを呼び出して比較を行います)。

比較演算子では比較結果で次の述語の実行またはバックトラックを行いますが、cmpは比較結果を変数に代入します。バックトラックはせずに常に次の述語の実行に移ります。

コード例(lib/cmp.p)
,cmp(10,10).prtn;
,cmp("ZZZZ","aaaa").prtn;

実行例
D:\sample\lib>adp cmp.p
0
-1

debug (デバック文の出力)

形式
 debug( $src, ...)
引数
  • $src: 出力する変数(複数可)
完了時の動作
  • 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
デバッグで使用します。変数の名前と共に値を標準エラーに出力します。
その他内部情報(変数の割り付けられているアドレス、変数のインデックス)も出力します。

コード例 (lib/debug.p)
,$a == 1, $b == 'test', debugn( $a, $b);
,$a == 2, $b == 'test2', debug( $a, $b);

実行例
D:\sample\lib>adp debug.p
a(0),=1
b(1),=test

a(0),=2
b(1),=test2

debugn (デバック文の出力)

形式
 debugn( $src, ...)
引数
  • $src: 出力する変数(複数可)
完了時の動作
  • 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
デバッグで使用します。変数の名前と共に値を標準エラーに出力します。
その他内部情報(変数の割り付けられているアドレス、変数のインデックス)も出力します。
最後に改行を出力します。

コード例 (lib/debug.p)
,$a == 1, $b == 'test', debugn( $a, $b);
,$a == 2, $b == 'test2', debug( $a, $b);

実行例
D:\sample\lib>adp debug.p
a(0),=1
b(1),=test

a(0),=2
b(1),=test2

env (環境変数の取得)


形式
 env( $name, $value)
引数
  • $name: 環境変数名(入力/結果)
  • $value: 環境変数の値(結果)
完了時の動作
  • 指定された環境変数がある場合:次の述語を実行に移ります。
  • 指定された環境変数が無い場合:バックトラックします。
バックトラック時の動作
  • 環境変数の次の要素がある場合:次の述語を実行に移ります。
  • 環境変数の次の要素が無い場合:バックトラックします。
説明
 $nameで指定された環境変数の値を取得します。
$nameが変数の場合は、$nameに環境変数名が入り、$valueにその値が入ります。バックトラックすることにより順番に環境変数を取り出せます。

※env述語を使ってループを構成する場合、next述語と組み合わせて使用します。

コード例1(lib/env1.p)
,env('windir').prtn;
実行例1(Windows環境)
D:\sample\lib>adp env1.p
C:\Windows

コード例2(lib/env2.p)
,env($name,$value),prtn($name,'=',$value),next;
実行例2(Windows環境)
ALLUSERSPROFILE=C:\ProgramData
  ・
  ・
 (中略)
  ・
  ・
WindowsSdkDir=C:\Program Files\Microsoft SDKs\Windows\v7.0\
windir=C:\Windows

global (グローバル変数の値取得)


形式
 global( $key, $item)
引数
  • $key: 変数の名前(キー)
  • $item: 変数の値(結果)
完了時の動作
  • $keyで指定された変数がある場合:次の述語を実行に移ります。
  • $keyで指定された変数が無い場合:バックトラックします。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。

説明
$keyで指定された名前のグローバル変数の値を取得します。

コード例(lib/global.p)
,$a = 10 ,_global($a,'hoge');
,$a = 30 ,global('hoge').prt;

実行例
D:\sample\lib>adp global.p
10

graph

now (時刻文字列の取得)

形式
 now( $add, $result)
引数
  • $add: 現在時刻からの加算(減算)秒(省略可)
  • $result: 結果(時刻の文字列)
完了時の動作
  • 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
時刻の文字列を取得します。$addを省略すると現在時刻の文字列を$resultに返します。
$addに整数値を指定すると$add秒だけ現在時刻から進めます(マイナス値だと戻します)。
now述語は、Cランタイムのctimeを呼び出しています。

コード例 (lib/now.p)
,now.prtn;
,now(86400).prtn;

実行例
Thu Apr 28 20:44:29 2011
Fri Apr 29 20:44:29 2011

platform (OSタイプの取得)

形式
 platform( $type)
引数
  • $type: 結果(OSタイプ)
完了時の動作
  • 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
OSタイプを$typeへ返します。'Windows'または'Unix'が返ります。
本述語を結果を指定して使用することによりプラットホーム別に処理を変えることができます。本述語自体はバックトラックしませんが、結果を明示的に指定するとユニフィケーションが行われ値が異なるとバックトラックします。
以下の例を参照のこと。

コード例 (lib/platform.p)
,platform('Windows'),spawnp('cmd', '/C dir').prt;
,platform('Unix'),spawnp('ls').prt;
※WindowsはdirコマンドをUnixではlsコマンドを実行します。

実行例(Windows)
D:\sample\lib>adp platform.p
2011/04/28  20:34    <DIR>          .
2011/04/28  20:34    <DIR>          ..
    ・
    ・
   中略
    ・
               2 個のディレクトリ  486,467,096,576 バイトの空き領域
0

rand (乱数値の取得)

形式
 rand( $value)
引数
  • $value: 乱数値
完了時の動作
  • 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
乱数を取得します。乱数の種の初期化はsrandで行います。
rand/srandはメルセンヌツイスターを使用しています。

コード例 (lib/rand.p)
,srand(1000);
,counter(1,1,5,$),rand.prtn,next;

実行例
D:\sample\lib>adp rand.p
-1487821389
882709079
493951047
-1673392448
-213533445

sleep (一定時間の待機)

形式
 sleep( $duration)
引数
  • $duration: 待機時間(msec)
完了時の動作
  • 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
$durationで指定された時間だけ待機します。
WindowsではSleep APIを呼び出します。Unixではnanosleepを呼び出します。

コード例 (lib/sleep.p)
,sleep(1000);

実行例
D:\sample\lib>adp sleep.p

spawnp (プロセスの実行)

形式
 spawnp( $cmd, $arg,..., $result)
引数
  • $cmd: コマンド
  • $src: コマンドの引数(複数可)
  • $result: 結果
完了時の動作
  • コマンドの起動に成功:次の述語を実行に移ります。
  • コマンドの起動に失敗:バックトラックします。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
$cmdはコマンド名で、コマンドの引数を$argで指定します。コマンドの実行結果は、$resultに返されます。
本述語は、WindowsのCライブラリ _spawnvp関数を呼び出します(述語名はこの関数名からきています)。
Unixでは、fork/execvpシステムコールを用いて_spawnvp関数の動作をエミュレートしています。

コード例 (lib/spawn.p)
,spawnp('notepad.exe').prt;

実行例(Windows)
D:\sample\lib>adp spawn.p
0
※メモ帳が起動します。

srand (乱数シードの初期化)

形式
 srand( $seedv)
引数
  • $seedv: 乱数の種(省略可)
完了時の動作
  • 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
rand述語で返される乱数シードの初期化を行います。rand/srandはメルセンヌツイスターを使用しています。srand述語は、$seedvを引数としてメルセンヌツイスターのinit_genrandを呼び出します。$seedvを省略すると現在時刻とプログラムの実行時間から、init_by_arrayを呼び出しシードの初期化を行います。

コード例 (lib/rand.p)
,srand(1000);
,counter(1,1,5,$),rand.prtn,next;

実行例
D:\sample\lib>adp rand.p
-1487821389
882709079
493951047
-1673392448
-213533445

pathsep (パスセパレーターの取得)

形式
 pathsep( $sep)
引数
  • $sep: 結果(パスセパレータ)
完了時の動作
  • 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
パスセパレーターを$sepへ返します。Windows環境では'\'が、Unix環境では'/'が返ります。

コード例 (lib/pathsep.p)
,pathsep.prt;

実行例(Windows)
D:\sample\lib>adp pathsep.p
\

eload (CGI実行環境の復元)

形式
 eload( $path)
引数
  • $path: 保存した実行環境ファイルのパス(esaveで指定)
完了時の動作
  • 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
 esave述語で保存した実行環境を復元します。$pathにはesave述語で指定したファイルのパスを指定します。

esave・eload述語はCGIのデバッグ時に指定します。esaveでCGIの実行環境(環境変数・CGI変数・COOKIE)が$pathで指定されたファイルへ保存されます。
eloadで保存したCGIの実行環境を復元します。
※通常はADP自身のデバッグに用います。

※Ver0.77で追加になりました。

erase_global (グローバル変数の削除)


形式
 erase_global($key)
引数
  • $key: 変数の名前(キー)
完了時の動作
  • 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。

説明
$keyで指定された名前のグローバル変数を削除します。

esave (CGI実行環境の保存)

形式
 esave( $path)
引数
  • $path: 実行環境の保存先のファイルのパス
完了時の動作
  • 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
 CGIの実行環境を保存します。eload述語で、保存した実行環境を復元できます。

esave・eload述語はCGIのデバッグ時に指定します。esaveでCGIの実行環境(環境変数・CGI変数・COOKIE)が$pathで指定されたファイルへ保存されます。
eloadで保存したCGIの実行環境を復元します。
※通常はADP自身のデバッグに用います。

※Ver0.77で追加になりました。


Powered by ADP.