ADP
Programming Language ADP

Japanese

Freecode

Sourceforge.net

SourceForge.JP

Loading

変換

各種変換を行います。

ADPに特徴的なのが、csv(csv形式への変換)があります。

変換リファレンス

chr (文字コードから文字の取得)

形式
 chr( $code, $value)
引数
  • $code: 文字コード値
  • $value: 結果(文字コードが示す文字)
完了時の動作
  • 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
 指定された文字コードの文字を返します。0?255で指定する必要があります。これ以上のサイズの文字コードは分割して設定する必要があります。文字コードの正当性のチェック等は行いません。

コード例(lib/chr.p)
,chr(0x41).prt;

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

ascii (文字コードの取得)

形式
 ascii( $str, $value)
引数
  • $str: 文字コードを取得する文字
  • $value: 結果(文字コードの値)
完了時の動作
  • 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
 指定された文字列の先頭バイトの文字コードを取得します。
注)バイト単位で返しますので漢字コード等の複数バイトにまたがる文字に関しては複数回に分けて
asciiを呼び出す必要があります。

コード例(lib/ascii.p)
,ascii('A').prt;

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

csv (CSV形式への変換)

形式
 csv( $src, ..., $dst)
引数
  • $src: 変換する文字列(複数可)
  • $dst: 結果
完了時の動作
  • 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
$srcで指定された項をCSV形式に変換します。変換する項を指定します。複数指定できます。最後の引数に結果が格納されます。
各項は、, (カンマ)を区切り文字として結合されます。また項の中の文字列中にカンマがある場合、項全体を " (ダブルクオート)で囲います。文字列中にダブルクオートがある場合、項全体をダブルクオートで囲い、値の"は""に変換されます。

コード例 (lib/csv.p)
,$a = { 10, 'aa', 'b"b' }, csv($a, 'AA', $r), $r.prtn;

実行例
D:\sample\lib>adp csv.p
10,aa,"b""b",AA

ctimestr (時刻表記の変換)

形式
 ctimestr( $input, $scanfmt, $outputfmt, $output)
引数
  • $input: 入力文字列
  • $scanfmt: 入力文字の日付、時刻フォーマット
  • $outputfmt: 出力文字の日付、時刻フォーマット
  • $output: 出力文字列
完了時の動作
  • 変換成功:次の述語を実行に移ります。
  • 変換失敗:input文字列がscanfmtで指定された形式で変換できない場合、バックトラックします。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
 $inputで入っている時刻の形式を変換し$outputへ格納します。$scanfmtは入力文字列の形式を指定します。$outputfmtは出力文字列の形式を指定します。
$scanfmtの指定はC言語のscanfの様に,%に続けて書式指定文字を指定します。それ以外の文字は入力文字列に一致させる必要があります。,$outputfmtの指定はC言語のprintfのように%に続けて書式指定文字を指定します。それ以外の文字はそのまま出力されます。
書式指定文字は以下のとおりです。

書式記号説明
%a週(英略記) Sun, Mon, Tue, Wed, Thu, Fri, Sat
%b月(英略記) Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
%d日 01~31
%H時間 00~24
%m月(数字)01~12
%M分 00~59
%S秒 00~59
%w週(数字) 0~6
%Y年 0000~9999
%%%自身を表す
  
日、月、分、秒に関してですが、1桁の値の場合出力時は0を付与されます(2の場合、02のように出力されます)。入力に関しては0がついている必要はありません(02でも2でも構いません)。

コード例(lib/ctimestr.p)

,$t == 'Sat, 21 May 2011 14:58:41 +0000'
,$inp_fmt == '%a, %d %b %Y %H:%M:%S'
,$out_fmt == '%Y-%m-%d %H:%M:%S'
,ctimestr( $t, $inp_fmt, $out_fmt).prtn;

実行例

D:\sample\lib>adp ctimestr.p
2011-05-21 14:58:41

dbl (実数への変換)

形式
 dbl( $src, $dst)
引数
  • $src: 変換元
  • $dst: 結果
完了時の動作
  • 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
$srcで指定された値を実数へ変換し$dstへ格納します。$srcは文字列と共に整数、実数自身も指定できます。
$srcがNILの場合、$dstにNILを格納します(*Ver0.81以降)。

コード例 (lib/dbl.p)
,dbl('10.5').prtn;
,dbl(20.3).prtn;

実行例
D:\sample\lib>adp dbl.p
10.500000
20.300000

euc2sjis

hash

int (整数への変換)

形式
 int( $src, $dst)
引数
  • $src: 変換元
  • $dst: 結果
完了時の動作
  • 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
$srcで指定された値を整数へ変換し$dstへ格納します。$srcは文字列と共に実数、整数自身も指定できます。
$srcがNILの場合、$dstにNILを格納します。

コード例 (lib/int.p)
,int('100').prtn;
,int(30.3).prtn;

実行例
D:\sample\lib>adp int.p
100
30

rsort (配列の降順ソート)

形式
 rsort( $src, $key, $dst)
引数
  • $src: ソート対象(配列)
  • $key: ソートキー(配列、省略可)
  • $dst: ソート結果対象(配列)
完了時の動作
  • 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
$srcで指定された配列をソートし、結果を$dstに返します。ソートは降順(大きいものから小さいものへ)で行われます。
$srcが連想配列の配列の場合、$keyによりソートキーを指定することが出来ます。
※昇順でソートを行う場合、sortを使用します。

コード例 (lib/rsort1.p)
,rsort({ "z", "d", "a", "b", "f"},$dst), prtn($dst);

実行例
>adp rsort1.p
{z, f, d, b, a}


コード例 (lib/rsort2.p)
,$src == {{ 'col1' =>  20, 'col2' => 'test5' }, 
	      { 'col1' => 100, 'col2' => 'test2' }, 
	      { 'col1' =>   5, 'col2' => 'test3' }, 
	      { 'col1' =>  20, 'col2' => 'test4' }}
 ,rsort( $src, {'col2', 'col1'}, $dst), prtn($dst);

実行例
>adp rsort2.p
{{col1 => 20, col2 => test5}, {col1 => 20, col2 => test4}, {col1 => 5, col2 =>
 test3}, {col1 => 100, col2 => test2}}

※Ver 0.76から追加になりました。

sha1 (SHA1ハッシュを返す)

形式
 sha1( $src, $dst)
引数
  • $src: 文字列
  • $dst: 結果
完了時の動作
  • 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
$srcで指定された文字列からSHA1ハッシュ値を$dstに取得します。$dstは文字列で返されます。

コード例 (lib/sha1.p)
,file('sha1.p').sha1.prt;

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

sort (配列の昇順ソート)

形式
 sort( $src, $key, $dst)
引数
  • $src: ソート対象(配列)
  • $key: ソートキー(配列、省略可)
  • $dst: ソート結果対象(配列)
完了時の動作
  • 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
$srcで指定された配列をソートし、結果を$dstに返します。ソートは昇順(小さいものから大きいものへ)行われます。
$srcが連想配列の配列の場合、$keyによりソートキーを指定することが出来ます。
※降順でソートを行う場合、rsortを使用します。

コード例 (lib/sort1.p)
,sort({ "z", "d", "a", "b", "f"},$dst), prtn($dst);

実行例
>adp sort1.p
{a, b, d, f, z}


コード例 (lib/sort2.p)
,$src == {{ 'col1' =>  20, 'col2' => 'test5' }, 
	      { 'col1' => 100, 'col2' => 'test2' }, 
	      { 'col1' =>   5, 'col2' => 'test3' }, 
	      { 'col1' =>  20, 'col2' => 'test4' }}
 ,sort( $src, {'col2', 'col1'}, $dst), prtn($dst);

実行例
>adp sort2.p
{{col1 => 100, col2 => test2}, {col1 => 5, col2 => test3}, {col1 => 20, col2 =>
test4}, {col1 => 20, col2 => test5}}

※Ver 0.76から追加になりました。

urldecode (URLデコード)

形式
 urldecode( $src1,..., $dst)
引数
  • $src1: 文字列(複数可)
  • $dst: 結果
完了時の動作
  • 正常時:次の述語を実行に移ります。
  • 異常時:バックトラックします。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
$src1で指定された文字列をURLデコードします。複数の文字列を指定した場合、単純に結果を結合します。
引数に文字列以外を指定するとバックトラックします。

※+(プラス)文字は 空白 に変換されます。

コード例(lib/urldecode.p)
,urldecode('%93%FA%96%7B%8C%EA%95%B6%8E%9A%97%F1%81iShift-JIS%81j').prtn;

実行例(Windows)
D:\sample\lib>adp urldecode.p
日本語文字列(Shift-JIS)

urlencode (URLエンコード)

形式
 urldecode( $src1,..., $dst)
引数
  • $src1: 文字列(複数可)
  • $dst: 結果
完了時の動作
  • 正常時:次の述語を実行に移ります。
  • 異常時:バックトラックします。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
$src1で指定された文字列をURLエンコードします。複数の文字列を指定した場合、単純に結果を結合します。
引数に文字列以外を指定するとバックトラックします。

URLエンコードは、以下で指定された以外の文字を%(文字コード)に変換します。
・アルファベット
・- (マイナス)
・_ (アンダースコア)
・. (ピリオド)

コード例(lib/urlencode.p シフトJISで保存)
,urlencode('日本語文字列(Shift-JIS)').prtn;

実行例(Windows)
D:\sample\lib>adp urlencode.p
%93%FA%96%7B%8C%EA%95%B6%8E%9A%97%F1%81iShift-JIS%81j


Powered by ADP.