------------------------------------------------------------------------------ HSPINET ver3.6 REFERENCE MANUAL HSP : Hot Soup Processor HSP拡張拡張DLLリファレンス copyright 2005-2020 (c) onion software ------------------------------------------------------------------------------ ・はじめに このDLLは、Hot Soup Processor ver3以降とともに使用することで、 WindowsのWininet.dllモジュールが持つインターネットアクセス機能及び ネットワークに関連するデータ交換(文字コード変換、各種プロトコル エンコード・デコード)、暗号化などの機能を利用可能にします。 HSPINETを使用することにより、以下の機能がサポートされます。 http、ftpプロトコルによるインターネットアクセス CGI、WebAPIとの通信(GET,POST形式サポート) 各種文字コード(sjis,jis,euc,unicode)の相互変換 BASE64、及びURLエンコード・デコード RC4(Arc Four)形式による暗号化・復号化 MD5,CRC32形式によるハッシュ値の取得 JSON形式によるデータ入出力 ・使い方の概要 HSPINETを使用する場合は、スクリプトの先頭に必ず「#include "hspinet.as"」 という行を追加してください。以上で、HSPの機能が拡張され、このリファレンスで 説明をしている命令を使用することができるようになります。 まず最初に、試しに付属のサンプルスクリプトを実行してみてください。 拡張された機能の簡単な使用例を見ることができるはずです。 HSPINET.DLLは、大きく「http関連命令」「ftp関連命令」「データ処理関連命令」に 分かれています。 「データ処理関連命令」は、ファイルやメモリ内のデータに対して処理を行なうためのもので、 MD5、CRC32といったハッシュ値を扱ったり、文字コードや各種形式への変換を行ないます。 「http関連命令」は、netinit命令によって初期化を行なってから、各種命令で httpサーバーとの通信を行なっていきます。 http関連命令は、基本的にサーバーからローカルマシンにファイルをダウンロード してくることが前提になっています。 ファイルのダウンロードには、URL指定とファイル名指定が必要になります。 URL指定では、ダウンロードを行なうファイルを除いたネット上のアドレスを設定 しておきます。たとえば、「http://www.onionsoft.net/hsp/」のような感じです。 その後、netload命令やnetrequest命令、netfileinfo命令などでファイル名を 指定します。たとえば、「index.html」を指定した場合には、先に設定されている URL指定と合わせて「http://www.onionsoft.net/hsp/index.html」からファイルが ダウンロードされることになります。 「ftp関連命令」は、netinit命令によって初期化を行なってから、各種命令で ftpサーバーとの通信を行なうためのものです。ftpサーバーからのダウンロード、 アップロードを含めた多くの機能を持っています。 HSPINET.DLLは、手軽にネット上のファイルをチェックしたり、ダウンロードと ファイル処理を行なうために用意されたものです。 より高度なネットワーク操作、サポート外のプロトコルを使用する場合には、 HSPSOCK.DLLなどソケット通信を行なってください。 また、現バージョンでは複数のストリームを並行して処理することはできません。 ・更新履歴 2019/09/03 ver3.6 beta1 (inoviaさんによる改造版をOpenHSPに反映) http/httpsリクエストでPUT/DELETEメソッドに対応 2017/9/13 ver3.5β6 (inoviaさんによる改造版をOpenHSPに反映) neturl に https:// から始まるURLを指定できるように修正 エラーの場合でもftpresultでエラー内容を取得できるように変更 バイナリファイルの保存に対応 サンプルのTwitter関連スクリプトを削除(認証が必要になったため) 2015/05/27 ver3.5β2 (zakkiさんによるOpenHSP修正を反映) ftpdirlist命令でメモリが正しく確保されない不具合を修正 2012/07/13 ver3.31RC1 ftpopen命令にPASSIVEモード接続のオプションを追加 2012/5/29 ver3.31β1 netgetv命令によるバイナリデータの取得に対応(BT#240) FTPのポート番号の指定が無視される不具合を修正(BT#248) 環境変数を取得するためのgetenv命令を追加。 文字列の中から特定の情報を取り出すためのgetenvprm命令を追加。 asctime形式、RFC1123形式の日付時刻を取得するgetctime命令を追加。 2010/3/16 ver3.21RC3 netexec命令のHSP呼び出し規約を以前と同様に戻しました。 dllの生成をVisual Studio 2005に戻しました。 2010/2/16 ver3.21RC2 hspinet.dllにnkf.dllの全機能を内包しました。 (HSP用のnkfcnv、nkfguessも利用可能です) JSON形式サポートを追加。 サンプルにTwitter関連スクリプトを追加。 2010/1/28 ver3.21RC1 RC4/BASE64サポートを追加。 サンプルにメール送信スクリプトを追加。 2009/6/14 ver3.2β4 ダウンロードしたデータをファイルでなく、メモリ上に展開する netgetv、netrequest_get、netrequest_post命令を追加。 POST形式によるcgi呼び出しに対応しました。 2007/3/9 ver1.2 ftpopenの第4パラメーターが指定できなかった不具合を修正。 2005/6/29 ver1.1 ftp関連の命令を追加。 2005/5/7 ver1.0 最初のバージョン。 ・注意点 HSPINET.DLLは、HSP3.EXEと同時に使用されるプラグインファイルです。 使用するHSPは、ver3.0以上をお使い下さい。ver2.61やそれ以前のHSPには 対応していませんのでご注意下さい。 EXEファイルを作成した場合でも、HSPINET.DLLをEXEファイルと同じディレクトリ に置かないと動作しません。また、packfileにDLLを追加することはできません。 ・ライセンスおよび連絡先 ユーザーがHSPを使って作成したオリジナルのソフトウェア(実行ファイル)の 権利は、それを作成したユーザーに属します。 ライセンスはHSPと同様にBSDライセンスになります。 有償・無償を問わずHSPINET.DLLを自由に配布することができます。 ただし、OpenHSP及びcJSON派生物として以下の表記をドキュメント等に 表記してください。(ソースの公開義務はありません) -hspinetライセンス表記(ここから)-------------------------------------------- OpenHSP Copyright (c) 1997-2017, Onion Software/onitama. NKF Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa). NKF Copyright (C) 1996-2009, The nkf Project. cJSON Copyright (c) 2009 Dave Gamble Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -hspinetライセンス表記(ここまで)-------------------------------------------- ユーザーが作成したオリジナルのソフトウェアに対してonion softwareが著作権を 主張することはありません。 onion softwareは本プログラムによって生じた、いかなる損害についても 保証いたしません。自己の責任の範囲で使用してください。 HSPINET.DLLは、Microsoft Visual Studio 2005でコンパイルされて います。 ・命令一覧 netinit ネット接続の初期化 netterm ネット接続の終了 netexec 最小単位の処理を実行 netmode モードの取得 neterror ネットエラー文字列の取得 neturl URLの設定 netdlname ダウンロード名の設定 netproxy プロキシの設定 netagent エージェントの設定 netheader ヘッダ文字列の設定 netrequest httpリクエスト発行 netload httpファイル取得 netfileinfo httpファイル情報取得 netsize ファイル受信サイズの取得 filecrc ファイルのCRC32を取得 filemd5 ファイルのMD5を取得 ftpopen FTPセッションの開始 ftpclose FTPセッションの終了 ftpresult FTP処理結果文字列の取得 ftpdir FTPディレクトリ移動 ftpdirlist FTPディレクトリリスト取得1 ftpdirlist2 FTPディレクトリリスト取得2 ftpcmd FTPコマンドの実行 ftprmdir FTPディレクトリの削除 ftpmkdir FTPディレクトリの作成 ftpget FTPファイル取得 ftpput FTPファイル送信 ftprename FTPファイル名前変更 ftpdelete FTPファイル削除 netrequest_get httpリクエスト発行(GET) netrequest_post httpリクエスト発行(POST) netgetv httpリクエストの結果を取得 nkfcnv NKFによる文字コード変換を行なう nkfguess NKFによる文字コード認識結果を取得する getenv 環境変数の取得 getctime 文字列による日付と時刻の取得 ・http関連命令 Wininet.dllを経由してhttpサーバーにアクセスするための命令セットです。 netinit ネット接続の初期化 Wininet.dllの初期化を行ないます。 net〜で始まる命令を使用する際には、最初に1回だけ必ず実行する 必要があります。実行後に結果がシステム変数statに格納されます。 0ならば正常終了、それ以外はエラーが発生したことを示しています。 netterm ネット接続の終了 Wininet.dllの終了処理を行ないます。 通常、この命令はプログラム終了時に自動的に呼び出されるため、 特にスクリプトに記述する必要はありません。 netexec p1 最小単位の処理を実行 p1 : 処理の結果が代入される変数 最小単位の処理を実行します。 サーバーからの応答待ちや、ダウンロード中など時間のかかる処理を 細かい単位で実行します。 メインプログラムでは、await命令などで細かく待ち時間(ウェイト)を 取りながらnetexec命令を呼び出す必要があります。 例: ; 結果待ちのためのループ repeat netexec res if res : break await 50 loop 実行後、結果がp1で指定された変数に代入されます。 内容が0の場合は、処理が継続中であることを意味します。 内容が1以上の場合は、処理が正常に終了していることを意味します。 内容がマイナス値の場合は、何らかのエラーが発生したことを 示しています。 statが0以外の値になった場合は、それに応じた処理を適宜 スクリプト側で処理するようにしてください。 netmode p1 モードの取得 p1 : モード値が代入される変数 現在の処理モードを取得します。 p1で指定された変数にモード値が代入されます。 モード値の内容は以下の通りです。 httpリクエストは、INET_MODE_READYの状態で発行するように してください。 ftpリクエストは、INET_MODE_FTPREADYの状態で発行するように してください。 ラベル | 値 状態 ------------------------------------------------------ INET_MODE_NONE | 0 未初期化の状態 INET_MODE_READY | 1 待機状態 INET_MODE_REQUEST | 2 httpリクエスト受付 INET_MODE_REQSEND | 3 httpリクエスト送信中 INET_MODE_DATAWAIT | 4 httpデータ受信中 INET_MODE_DATAEND | 5 httpデータ受信終了処理中 INET_MODE_INFOREQ | 6 http情報リクエスト送信中 INET_MODE_INFORECV | 7 http情報データ受信中 INET_MODE_FTPREADY | 8 ftp待機状態 INET_MODE_FTPDIR | 9 ftpディレクトリ情報取得中 INET_MODE_FTPREAD | 10 ftpファイル受信中 INET_MODE_FTPWRITE | 11 ftpファイル送信中 INET_MODE_FTPCMD | 12 ftpコマンド送信終了処理中 INET_MODE_FTPRESULT| 13 ftpサーバー返信データ受信中 INET_MODE_ERROR | 14 エラー状態 neterror p1 ネットエラー文字列の取得 p1 : エラー文字列が代入される変数 エラー発生時の詳細を示す文字列を取得します。 p1で指定した変数に、文字列として代入されます。 neturl "URL" URLの設定 "URL" : URLを示す文字列 httpリクエストを行なうURLを設定します。 URLは、ファイル名を除いた形でスキーム名を含めて設定する 必要があります。 「http://www.onionsoft.net/hsp/index.html」の場合は、 「http://www.onionsoft.net/hsp/」までを設定してください。 httpリクエストは必ず、neturl命令によるURL設定を先に 行なっておいてください。neturl命令実行の時点では、 まだhttpリクエストは発行されません。 httpリクエストの発行は、netrequest命令またはnetload命令 によって行なわれます。 netrequest "FileName" httpリクエスト発行 "FileName" : リクエストを行なうファイル名 httpリクエストを行ないます。 先に、neturl命令によりファイル名を除いたURLを指定しておく 必要があります。 netrequest命令でhttpリクエストを発行した後は、netexec命令 により受信処理をスクリプト側で行なう必要があります。 受信処理を自動で行なうためのnetload命令も別途用意されています。 netload "FileName" httpファイル取得 "FileName" : リクエストを行なうファイル名 httpリクエストを行ないます。 先に、neturl命令によりファイル名を除いたURLを指定しておく 必要があります。 netload命令は、ファイルの取得が終了するまで、処理を中断します。 手軽にファイルの取得を行なうことが可能ですが、大きなファイルや 受信状態の悪い場合などは、そのまま画面が停止したままになる 可能性もあるので注意してください。 ファイルの受信中に、並行して別な処理を行ないたい場合には、 netrequest命令を使用してhttpリクエストを行なってください。 netfileinfo p1,"FileName" httpファイル情報取得 p1 : ファイル情報が代入される変数名 "FileName" : リクエストを行なうファイル名 httpサーバー上にあるファイル情報を取得します。 先に、neturl命令によりファイル名を除いたURLを指定しておく 必要があります。 取得に成功すると、システム変数statの値が0となり、p1で指定した 変数に文字列型でサーバーが返した情報文字列が代入されます。 取得に失敗した場合は、システム変数statに0以外が代入されます。 サーバーが返す情報の種類は、httpサーバーによって異なります。 詳しくは、RFCなどhttpプロトコルの解説を参照してください。 netfileinfo命令は、ファイルの取得が終了するまで、処理を中断します。 netdlname "FileName" ダウンロード名の設定 "FileName" : ダウンロードされた時のファイル名 ファイルを取得する際のファイル名を設定します。 netdlname命令によってファイル名を設定していない場合は、 httpリクエストを行なったファイル名が使用されます。 netdlname命令に、空の文字列("")を指定した場合も、 httpリクエストを行なったファイル名が使用されます。 netproxy "ServerName",p1,p2 プロキシの設定 "ServerName" : リクエストを行なうファイル名 p1 (0) : ポート番号 p2 (0) : ローカル接続フラグ http接続の際に使用されるプロキシ(代理)サーバーを設定します。 "ServerName"で、プロキシサーバー名を設定します。 空の文字列("")を指定した場合には、プロキシは設定されません。 p1でhttpが使用するプロキシサーバーのポート番号を指定します。 p2で、ローカルアドレスをプロキシ経由のアクセスから除外するか どうかを設定します。1の場合は、ローカルアドレスのみプロキシから 除外されます。0の場合は、ローカルアドレスも含めてプロキシを 使用します。 netproxy命令が実行されると、それまでのセッションが解除され、 neturl命令や、netheader命令による設定はリセットされます。 例: netinit if stat : dialog "ネット接続できません。" : end netproxy "proxy_server",8080,1 neturl "http://ww.onionsoft.net/hsp/" netload "index.html" netagent "AgentName" エージェントの設定 "AgentName" : 設定するエージェント名 http接続の際にサーバーに渡されるエージェント情報の文字列を 設定します。"AgentName"で指定したエージェント名が設定されます。 空の文字列("")を指定した場合には、デフォルトの設定になります。 netagent命令が実行されると、それまでのセッションが解除され、 neturl命令や、netheader命令による設定はリセットされます。 netheader "HeaderString" ヘッダ文字列の設定 "HeaderString" : ヘッダに追加される文字列 http接続の際にサーバーに渡されるヘッダ文字列を設定します。 空の文字列("")を指定した場合には、無設定になります。 ヘッダ文字列は、通常設定する必要ありませんが、何からの 付加情報や動作設定を行なう場合に使用することができます。 netheader命令で設定したヘッダ文字列は、それ以降のリクエスト すべてに適用されます。 例: ; リファラーを追加する netheader "Referer:http://www.onionsoft.net/\n\n" netsize p1 ファイル受信サイズの取得 p1 : ファイル受信サイズが代入される変数 netrequest命令で発行されたhttpリクエストに対するファイル がどれだけのサイズを受信したかを取得します。 p1で指定された変数にファイル受信サイズが代入されます。 ファイル受信サイズは、netexec命令で受信が行なわれた内容を 調べるためのものです。あらかじめ、ファイル情報取得で ファイルサイズを調べておけば、進行の割合を計ることが可能です。 netrequest_get "FileName" httpリクエスト発行(GET) "FileName" : リクエストを行なうファイル名 httpリクエストを行ないます。 netrequest命令と同様ですが、ダウンロードしたデータイメージを ファイルではなく、メモリ上のデータとして取得できます。 "FileName"で、リクエストを行なうファイル名を指定します。 先に、neturl命令によりファイル名を除いたURLを指定しておく 必要があります。 netrequest命令でhttpリクエストを発行した後は、netexec命令 により受信処理をスクリプト側で行なう必要があります。 処理が完了した後は、netgetv命令により任意の変数でデータを 受け取ることができます。 netrequest_post "FileName",p1 httpリクエスト発行(POST) "FileName" : リクエストを行なうファイル名 p1 : POST用のデータを格納した文字列型変数名 httpリクエストを行ないます。 netrequest命令と同様ですが、ダウンロードしたデータイメージを ファイルではなく、メモリ上のデータとして取得できます。 また、POST形式によるCGIパラメーター受け渡しに対応しています。 "FileName"で、リクエストを行なうファイル名を指定します。 先に、neturl命令によりファイル名を除いたURLを指定しておく 必要があります。 p1に、POST用のデータを格納した変数名を指定します。 あらかじめ、変数は文字列型でPOST形式のデータを格納しておく 必要があります。POST形式のデータは、GET形式のURLで指定される 「&」で区切られたパラメーターと同様のものになります。 ただし、バイナリデータを送付する場合は、データを文字列に エンコードする必要があります。netrequest_post命令は、渡された 文字列をそのままPOSTデータとして発行するため、このエンコードは 事前に行なっておいてください。 例: ; URLを指定 neturl "http://www.onionsoft.net/hsp/beta/" ; POST形式でCGIにパラメーターを渡す prm = "mode=find&cond=and&log=0&word=script" netrequest_post "betabbs.cgi",prm netrequest命令でhttpリクエストを発行した後は、netexec命令 により受信処理をスクリプト側で行なう必要があります。 処理が完了した後は、netgetv命令により任意の変数でデータを 受け取ることができます。 netgetv p1 httpリクエストの結果を取得 p1 : データが代入される変数 netrequest_get、netrequest_post命令によるhttpリクエストの 結果を取得します。 必ず、netexec命令による受信処理で、ダウンロードが完了した ことを確認してから、データを取得するようにしてください。 p1で指定された変数は、自動的に必要なサイズを確保した 文字列型として初期化されます。(あらかじめ変数を初期化したり、 メモリを確保しておく必要はありません。) 命令実行後に、システム変数statにデータサイズが代入されます。 ・ファイル関連命令 ローカルのファイルに対してアクセスするための命令セットです。 net〜関連命令とは関係なく使用することができます。 filecrc p1,"FileName" ファイルのCRC32を取得 p1 : CRC値が代入される変数名 "FileName" : CRCチェックを行なうファイル名 指定されたファイルのCRC32を求めてp1の変数に代入します。 CRC32は、ファイルの内容をもとに算出された32bitの数値です。 ファイル内容のチェックなどに使用することができます。 filemd5 p1,"FileName" ファイルのMD5を取得 p1 : MD5値が代入される変数名 "FileName" : MD5チェックを行なうファイル名 指定されたファイルのMD5を求めてp1の変数に代入します。 MD5値は、文字列型で「f96b697d7cb7938d525a2f31aaf161d0」のような 32文字の16進数として表現されます。 MD5値は、ファイルの内容を一意に表わすハッシュ値として使用する ことができます。詳しくは、MD5についての資料などを参照してください。 ファイル内容のチェックなどに使用することができます。 ftpopen p1,p2,p3,p4 FTPセッションの開始 p1 : ftpサーバーアドレス(文字列) p2 : ftpログインユーザー名(文字列) p3 : ftpログインユーザーパスワード(文字列) p4 : ポート番号(省略可能) ftpサーバーに接続してセッションを開始します。 p1にサーバーのアドレス、p2にユーザー名、p3にパスワードを 指定してftpに接続します。 p4パラメーターでポート番号を指定することができます。 p4の指定を省略した場合は、標準のポート番号が使用されます。 実行に成功した場合は、システム変数statに0が代入され、 失敗した場合はそれ以外の値が代入されます。 あらかじめ、netinit命令によって初期化を行なう必要があります。 ftpセッションを開始した後は、ftp関連命令のみ使用することが できます。httpなど他のネット操作を行なう場合には、必ず ftpclose命令によりftpセッションを終了させるようにしてください。 ftpclose FTPセッションの終了 ftpopen命令で開始されたセッションを終了させます。 ftpresult p1 FTP処理結果文字列の取得 p1 : FTP処理結果文字列が代入される変数 ftp関連命令による処理に対するサーバーの返信メッセージを 取得して、p1に指定された変数に代入します。 p1の変数には、文字列データとして代入されます。 この命令は、必ずftpopen命令によりftpセッションを開始してから 使用してください。 ftpdir p1,p2 FTPディレクトリ移動 p1 : 現在のディレクトリ位置が代入される変数 p2 : 移動先のディレクトリ名(文字列) p1で指定した変数に、ftpサーバー上のカレントディレクトリ名 を文字列データとして代入します。 p2にディレクトリ名を指定した場合には、その場所へ移動を行ないます。 p2の指定を省略した場合には、ディレクトリ移動は行なわれません。 実行に成功した場合は、システム変数statに0が代入され、 失敗した場合はそれ以外の値が代入されます。 この命令は、必ずftpopen命令によりftpセッションを開始してから 使用してください。 ftpdirlist FTPディレクトリリスト取得1 ftpサーバー上のカレントディレクトリにあるファイルリストを 取得するためのリクエストを行ないます。実際のファイルリストは、 ftpdirlist2命令で行ないます。 実行に成功した場合は、システム変数statに0が代入され、 失敗した場合はそれ以外の値が代入されます。 この命令は、必ずftpopen命令によりftpセッションを開始してから 使用してください。 ftpdirlist2 p1 FTPディレクトリリスト取得2 p1 : ファイルリストが代入される変数 この命令は、必ずftpopen命令によりftpセッションを開始し、 ftpdirlist命令によりファイルリスト取得が終了した後で使用して ください。 以下は、ファイルリスト取得するまでの例です。 例: ; 結果待ちのためのループ ftpdirlist repeat netexec mode if res : break await 50 loop ftpdirlist2 res ファイルリスト取得は、ftpdirlist命令によるリクエスト、 netexec命令による受信待ち、ftpdirlist2命令による結果の取得 という3つの手順に分けて行なう必要があります。 p1に代入されるファイルリストは、1行あたり1エントリごとに 区切られている複数行文字列データになります。 1行は、「"ファイル名"」、ファイルサイズ、更新日時の順番に 「,」で区切られた形になります。 ftpcmd p1 FTPコマンドの実行 p1 : 実行するFTPコマンド文字列 p1で指定されたFTPコマンドを実行します。 実行に成功した場合は、システム変数statに0が代入され、 失敗した場合はそれ以外の値が代入されます。 この命令は、必ずftpopen命令によりftpセッションを開始してから 使用してください。 ftprmdir p1 FTPディレクトリの削除 p1 : 削除するディレクトリを示す文字列 p1で指定されたディレクトリを削除します。 実行に成功した場合は、システム変数statに0が代入され、 失敗した場合はそれ以外の値が代入されます。 この命令は、必ずftpopen命令によりftpセッションを開始してから 使用してください。 ftpmkdir p1 FTPディレクトリの作成 p1 : 作成するディレクトリを示す文字列 p1で指定されたディレクトリを作成します。 実行に成功した場合は、システム変数statに0が代入され、 失敗した場合はそれ以外の値が代入されます。 この命令は、必ずftpopen命令によりftpセッションを開始してから 使用してください。 ftpget p1,p2,p3 FTPファイル取得 p1 : サーバー上から取得するファイル名(文字列) p2("") : ローカルに作成されるファイル名(文字列) p3(0) : 転送モード(0=バイナリ/1=アスキー) ftpサーバー上のファイルを取得します。 p1でサーバー上のファイル名を指定します。 p2でダウンロードして作成されるファイル名を指定します。 p2の指定を省略または""にした場合は、p1と同じ名前が使用 されます。 p3で転送モードを指定します。転送モードを省略または0に 指定した場合はバイナリデータとして、1に指定した場合は、 アスキーデータとして転送を行ないます。 実行に成功した場合は、システム変数statに0が代入され、 失敗した場合はそれ以外の値が代入されます。 この命令は、必ずftpopen命令によりftpセッションを開始してから 使用してください。 ftpput p1,p2,p3 FTPファイル送信 p1 : サーバー上に作成するファイル名(文字列) p2("") : ローカルから送信されるファイル名(文字列) p3(0) : 転送モード(0=バイナリ/1=アスキー) ftpサーバー上にファイルを送信します。 p1でサーバー上に作成するファイル名を指定します。 p2でローカルから送信されるファイル名を指定します。 p2の指定を省略または""にした場合は、p1と同じ名前が使用 されます。 p3で転送モードを指定します。転送モードを省略または0に 指定した場合はバイナリデータとして、1に指定した場合は、 アスキーデータとして転送を行ないます。 実行に成功した場合は、システム変数statに0が代入され、 失敗した場合はそれ以外の値が代入されます。 この命令は、必ずftpopen命令によりftpセッションを開始してから 使用してください。 ftprename p1,p2 FTPファイル名前変更 p1 : 変更元のファイル名(文字列) p2 : 新しいファイル名(文字列) ftpサーバー上のファイル名を変更します。 p1で変更元のファイル名を、p2で新しいファイル名を指定します。 実行に成功した場合は、システム変数statに0が代入され、 失敗した場合はそれ以外の値が代入されます。 この命令は、必ずftpopen命令によりftpセッションを開始してから 使用してください。 ftpdelete p1 FTPファイル削除 p1 : 削除するファイル名(文字列) ftpサーバー上のファイルを削除します。 実行に成功した場合は、システム変数statに0が代入され、 失敗した場合はそれ以外の値が代入されます。 この命令は、必ずftpopen命令によりftpセッションを開始してから 使用してください。 ・nkf関連命令 hspinet.dllには、nkf.dll(nkf-2.1.0相当)の機能が内包されています。 nkfは、SJIS,JIS,EUC,UTF-8,UTF-16等の各種文字コードを相互変換するための ライブラリです。HSPからは、以下の2命令を利用することができるほか、 各種API関数を呼び出すことが可能です。 (詳しくは、doclibフォルダ内のnkf_doc.txtを参照してください) nkfcnv p1,p2,"option",p3,p4 NKFによる文字コード変換を行なう p1 : 変換後の文字列が代入される変数 p2 : 変換元の文字列が代入されている変数 "option" : NKF変換オプション p3(-1) : 変換元の文字列サイズ p4(-1) : 出力先の最大バッファサイズ p2で指定された変数に格納されている文字列に対して、 NKFによる文字コード変換を行ない、結果をp1で指定された変数に代入します。 "option"でNKFの変換オプションを指定することができます。 これにより、入力される文字コードと出力される文字コードを 任意に指定することができます。 "option"パラメーターを省略した場合は、入力コードを自動判別して SJISに変換されます。 主なオプションの一覧は以下の通りです。(オプション文字列は複数を 続けて指定することも可能です) これ以外にも、多くの指定が可能です。 詳しくは、doclibフォルダ内のnkf_doc.txtを参照してください。 オプション 内容 --------------------------------------------- j JISに変換する e EUCに変換する s SJISに変換する w UTF8に変換する J 変換元はJIS(ISO-2022-JP)を仮定する。 E 変換元はEUC(AT&T)を仮定する。 S 変換元はSJISを仮定する W 変換元はUTF-8を仮定する W16 変換元はUTF-16 (Little Endian)を仮定する W16B 変換元はUTF-16 (Big Endian)を仮定する p3で、変換元の文字列サイズ(byte数)を指定します。 p3を省略するかマイナス値の場合は、入力がC言語形式の ansi文字列として自動計算されます。 p4で、出力先のバッファサイズを指定します。 このサイズを超えた変換は行なわれません。 p4を省略するかマイナス値の場合は、デフォルトサイズ(32KB)が 使用されます。 p1で指定された変数は、自動的に文字列サイズのバッファを 確保した上で初期化されます。あらかじめsdimで初期化しておく 必要はありません。 nkfguess p1 NKFによる文字コード認識結果を取得する p1 : 結果の文字列が代入される変数 nkfcnv命令により変換された際に、認識された変換元の文字コードを取得します。 結果は、p1で指定された変数に文字列として代入されます。 必ず、先にnkfcnv命令で変換を行なっておく必要があります。 ・その他の命令 getenv p1, "name" 環境変数の取得 p1 : 結果の文字列が代入される変数 "name" : 環境変数名 環境変数の値を取得し、変数に代入します。 結果は文字列型で代入されます。 変数のバッファは文字列に合わせて自動的に調整されます。 該当する環境変数名がなかった場合は、""(長さ0の文字列)が 代入されます。 getctime p1, mode 文字列による日付と時刻の取得 p1 : 結果の文字列が代入される変数 mode(0) : 取得される形式の指定 日付と時刻を文字列で取得します。 modeの値により、取得するフォーマットを指定します。 mode 内容 --------------------------------------------- 0 C言語のasctime関数による現在時刻(ローカル) 例: Sun Nov 6 08:49:37 1994 1 C言語のasctime関数による現在時刻(GMT/UTC) 例: Sun Nov 6 08:49:37 1994 2 RFC 1123で定義される日付フォーマット 例: Sun, 06 Nov 1994 08:49:37 GMT getenvprm p1, p2, "name", code 指定文字列要素の取得 p1 : 結果の文字列が代入される変数 p2 : 検索内容が代入されている文字列型変数 "name" : 要素名 code : 区切り文字コード(省略時は'&') getenvprm命令は、「A=123&B=456&C=789」のように特定の区切り 文字コード(この場合は「&」)で区切られた文字列の中から、 先頭部分が"name"と一致したものを取り出します。 CGIのパラメーター受け渡しなどで複数の情報が文字列として 渡されている中から、特定の項目を取り出す場合に使用します。 たとえば、変数aに「A=123&B=456&C=789」が代入されている場合、 「getenvprm res,a,"B="」を実行すると、変数resには「789」という 文字列が代入されます。 p2で指定された変数は、文字列型であらかじめ初期化されている 必要があります。 該当する要素名がなかった場合は、""(長さ0の文字列)が 代入されます。 codeに区切り文字のコードを指定することが可能です。 codeの指定を省略した場合は、'&'が使用されます。 ------------------------------------------------------------------------------- HSP users manual / end of file -------------------------------------------------------------------------------