ADP
Programming Language ADP

Japanese

Freecode

Sourceforge.net

SourceForge.JP

Loading

Library by category

This section describes the ADP embedded predicate, library, by category.

DBライブラリ

ADPにはODBC-APIを使用したDBライブラリが組み込まれています。
下記のようなコードにより、自然にSQLが発行できる他、select,insert,update,delete,saveと言ったよりシンプルな述語も用意されています。

以下のコードでは、カレントディレクトリにあるtest_db.mdbというMS AccessデータベースのMYTABLEテーブルのデータをCSV形式に変換し表示します。
+db("Driver={Microsoft Access Driver (*.mdb)}; DBQ=test_db.mdb"),!;
,db.sql@("SELECT * FROM MYTABLE ", {}).csv.prtn,next;

DBライブラリ・リファレンス
■ODBC接続文字列
DBライブラリに共通する事項ですが、各述語の第一引数にはODBCの接続文字列を指定します。

,sql("Driver={Microsoft Access Driver (*.mdb)}; DBQ=test_db.mdb", ・・・・・

通常ODBCの接続文字列は長くなる傾向がある為、その定義をホーン節にし、メソッド形式(.)を使い述語を連結させると便利です。以下の例は上記の例をホーン節とメソッド形式を使って記述し直しています。
+db("Driver={Microsoft Access Driver (*.mdb)}; DBQ=test_db.mdb"),!;
,db.sql(・・・・・

ODBC接続文字列は、2種類の記述方法が存在します。
  • DSN方式(データソース方式)
    WindowsのコントロールパネルのODBCデータソースアドミニストレーターで作成するDNSの名称を指定する方式です。以下、adp_testおよびadppというデータソースを定義しています。



    Linux(unixODBC)の場合は、/etc/odbc.iniファイルまたは~/.odbc.iniファイルで記述するDNSの名称を指定します。以下の例では、adp_testがDNS名になり、各種パラメータを指定しています(DriverのMySQLは/etc/odbcinst.iniに記述されているドライバ名になります)。

    [adp_test]
    Description=ADP DB LIBRARY TEST
    Driver=MySQL
    SERVER=dbserver.example.com
    PORT=
    USER=adp_test
    Password=dbuserpassword
    Database=adp_test
    OPTION=65539
    SOCKET=
    CHARSET=utf8
    

    以下、DBライブラリのDNSの指定例です。

    +db("DNS=adp_test");
    ,db.select(・・・・
    
    DNS=に続けてデータソース名(adp_test)を指定しています。

  • Driver方式
    データソースを作成しないで、'Driver='の文字列ではじまり、ドライバ名とパラメーターを直接指定します。ドライバ名の調べ方ですが、環境により分かれます。

    □Windows版のドライバ名
    ODBCデータソースアドミニストレーターのドライバータブで参照できるドライバの名前を指定します。

    □Linux版のドライバ名
    /etc/odbcinst.iniで、[]で囲まれた文字列がドライバ名になります。

    +db("Driver={Microsoft Access Driver (*.mdb)}; DBQ=test_db.mdb"),!;
    ,db.sql(・・・・・
    

    具体的なODBCの接続文字列の説明は各種DBMSのマニュアルを参照頂ください。以下、動作確認が取れた接続文字列を示します。

    ODBC接続文字例
    データベース指定方法
    MS AccessDriver={Microsoft Access Driver (*.mdb)}; DBQ=MDBファイルパス
    SQL SERVER(2008以降)DRIVER={SQL Server Native Client 10.0};SERVER=SQL Serverのサーバー名または.(ローカルホスト);Trusted_Connection=yes;Database=データベース名;MARS_Connection=yes
    ※SQL Serverに対してselect/insert/update/save/delete述語を使用する場合は前もって、_table_quote述語を呼び出す必要があります。
    MySQL(Windows)Driver=MySQL ODBC 5.1 Driver;UID=ユーザID; PWD=パスワード; SERVER=サーバー名; DATABASE=データベース名;CHARSET=キャラクターセット
    ※ドライバ名 'MySQL ODBC 5.1' は環境によっては異なる場合があり、ODBCデータソースアドミニストレーターのドライバタブで確認できます。
    キャラクターセットは日本語OSならcp932と指定します(MySQLのODBCドライバーのバージョンが5以上の場合、必ず指定してください)。
    MySQL(Linux)Driver=MySQL;UID=ユーザID; PWD=パスワード; SERVER=サーバー名; DATABASE=データベース名;CHARSET=キャラクターセット
    ※ドライバ名 'MySQL' は環境によっては異なります。/etc/odbcinst.iniで、[]で囲まれた文字列がドライバ名になります。
    MySQLのODBCドライバーのバージョンが5以上の場合、キャラクターセットは必ず指定してください(UTF8の場合は、utf8 と指定します)。

接続の管理とコミット
 DBライブラリのDBに対する接続は、ODBC接続文字列単位で行われます。つまりODBC接続文字列が同じ述語の呼び出しは同一の接続で行われます。ODBC接続文字列が異なる場合は別の接続となります。
また、DBライブラリはトランザクションモードをマニュアルコミットで初期化しています。
つまりデータに対して追加・更新・削除等を行った場合、commit述語を呼び出さない場合、プログラム終了時にロールバックされます。commit述語を呼び出した段階でトランザクションがコミットされます。手動でrollbackを呼び出すことも出来ます。

64ビットWindowsにおける 32ビットODBCドライバ(MS Access)
 MS AccessのODBCドライバは32ビット版しかない為、32ビット版のADPコマンドを使用します。64ビット版のADPコマンドではMS Accessドライバを使えません。
また、64ビットWindowsで32ビットODBCデータソースアドミニストレーターを呼び出すには以下のパスのコマンドを実行します(Windowsがデフォルトのパスでインストールされている場合)。
C:\WINDOWS\syswow64\odbcad32.exe


DBライブラリ・リファレンス

変換

各種変換を行います。

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

変換リファレンス

文字列操作・正規表現

文字列の操作および正規表現の述語になります。

文字列の操作述語の名称はbasicをモデルにしています。
ascii / chr / left / right / mid / instr / replace / replace first / split / trim

replace述語は全文字列の置換を行います。最初の一つだけ置換したい場合は、replace_firstを使用します。
C言語(および多くの言語で使用されている)sprintf 述語があります。

正規表現に関する述語は、正規表現の検索(search)および置換(regex_replace /
regex_replace_first)になります。

その他、sha1(SHA1ハッシュの作成)、rkey(ランダムなキーの作成)、now(時刻の文字列取得)、urlencode/urldecode があります。

文字列操作・正規表現リファレンス

数学

ファイルアクセスライブラリ

ファイル操作関係の述語です。
ファイルの読み書き削除他、ディレクトリ作成・削除、CSVファイル読み込み等があります。

ファイルアクセスライブラリリファレンス

Netライブラリ

ネットワーク関係のライブラリになります。以下の述語があります。
  • WEBアプリで必要な、クッキー(cookie/_cookie)、セッション(session/_session)、クエリー引数(query)、レスポンスヘッダー(response_header)に関する述語
  • HTMLの取得(html)、メール送信(sendmail)の述語
  • wolの述語
  • urlencode/urldecode述語

Netライブラリリファレンス

リスト・配列

リスト・配列の操作、取り出しを行います。

each (リスト・配列からの要素の取得)および各種ハッシュキーの変換(mkmap / remap / slmap)述語があります。

リスト・配列リファレンス

制御構造関連

プログラムの制御を行う述語です。

counter (ループを作る)、each (リスト・配列からの要素の取得)、exit(終了)、transfer(別プログラムに制御を移す)等があります。


制御構造関連リファレンス

その他のカテゴリ

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

その他リファレンス

内部で使用している組込み述語


Powered by ADP.