Comments
Description
Transcript
ASP 入門講座
第1章 00.11.10 7:29 PM ページ 10 P R O G R A M M I N G 1 半日でマスター はじめよう ASP 入門講座 文 = 朝井 淳 text by Atsushi Asai A S P [[ W W II N ND DO OW WS S P PR RO OG GR RA AM MM M II N NG G S SE ER R II E ES S ]] Chapter この章では、ASPの基礎的なテクニックを紹介します。ASPは新しい 技術ではなく、従来からある、HTMLやCGIといった、Web系の技術を進 化させたものです。 HTMLやCGIの基礎から解説していくことが理想ですが、誌面の都合も あり、これらの技術については理解があることを前提に進めていきます。 また、ASPでは2種類のスクリプト言語を扱うことができます。本章で は、VBScriptを使って解説していきます。 ASPの概要 「ASPとは?」という疑問に答えつつ、簡単なASPを作り、Webサーバ上に配置してみます。 001 ASP programming ASPとは? ASP(Active Server Pages)は、Webサーバの技 術の一種で、CGIをより発展させ、動的なWebペー ジを作成することができる仕組みです。そして、 ルに記述することができます。Webサイト開発者が 簡単に見通しの良いページを作成できます。 ASPを搭載するIISでは、Webサーバの基本的な機 Microsoft社のActiveX技術の一部でもあり、同社の 能とスクリプトを実行させるエンジン部分を切り離 WebサーバであるIIS(Internet Information Server) して開発しました。その結果、スクリプト言語を切 に標準搭載されています。 り替えて(VBScriptとJScript)使うことができるよ うになっています。これも大きな特徴であると思い CGIを使ったサイトでは、HTMLファイルとは別 のCGIモジュールを呼び出す形で、動的な情報を配 ます。 さらに、Microsoftの提唱するCOM技術によって、 信していました。ASPでは、HTMLファイル内にス スクリプトから既存のコンポーネントをいとも簡単に クリプトを記述できます。これにより、ブラウザに見 呼び出せます。ソフトウェアの再利用という観点か える部分とスクリプトの部分の両方を1つのファイ らは歓迎すべき機能でしょう。 10 ASP 300 の技 第1章 00.11.10 7:29 PM ページ 11 半日でマスター はじめようASP入門講座 002 ASP programming CGIとASPの違いとは? スクリプトの実行形態が異なります。CGIが主に、 Webサーバから起動される「子プロセス」として動 ュールである、 「スクリプトエンジン」がスクリプト を実行します。 作するのに対して、ASPはWebサーバ内の拡張モジ プラウザ リクエスト Webサーバ レスポンス スクリプト ファイル ASP programming リクエスト Webサーバ ASP ファイル スクリプト エンジン スクリプト プログラム 図1 CGIでの処理形態 003 プラウザ レスポンス 図2 ASPでの処理形態 文字列を表示するには? プログラムの最初ということで、ASPによるHello 「なんだ、普通のHTMLとかわりないじゃない」 World(Hello Worldと画面表示するプログラム)を と思うかもしれませんが、その通りです。ASPは、基 作成してみましょう。 本的にWebサーバに置かれる通常のHTMLファイル リスト1 hello.asp と同じものです。 <HTML> しかし、それでは何のありがたみもありません。 <BODY> 実はASPを使うと、HTMLファイル内にサーバで 動作するスクリプトを埋め込むことができるのです。 Hello World </BODY> /HTML> 004 ASP programming スクリプトを記述するには? hello.aspにスクリプトを追加してみます。 005 ASP programming ASPファイルはどこに置くべきか? 「スクリプト実行権限」があるディレクトリに置 リスト2 スクリプトを記述したhello.asp <HTML><BODY> <% For i = 1 To 5 Response.Write "<FONT SIZE=""" & i & """>" Response.Write "Hello World<BR>" Next %> </BODY></HTML> 「<%」と「%>」に囲まれている部分、これが いてください。IISはデフォルトではInetpubディレ クトリ以下にインストールされます。Inetpub以下 に、Webpubという名前の空ディレクトリが作成さ れていると思います。このディレクトリには、スク リプトの実行権限が付けられていますので、ここに スクリプトをコピーします。 もし、Webpubが存在していない場合、 「インター ネット サービス マネージャ」を使って、仮想ディレ クトリを作成する必要があります。詳しくは[007] を参照して下さい。 ASPです。もっと厳密にいうならば、VBScriptで記 述された、ASPスクリプトです。 ASP 300 の技 11 第1章 00.11.10 7:29 PM ページ 12 Chapter1 【WINDOWS PROGRAMMING SERIES】 ASP PROGRAMMING 006 ASP programming ASPファイルを置くディレクトリを作成するには? ASPは、スクリプトの実行が許可されたディレクト 表示されます(図4) 。ディレクトリを右クリックし、 リに置く必要があります。もし、ASPファイルを作 メニューからプロパティを表示させます。ディレクト 成したのに、ブラウザからみることができない場合、 リタブにある、 「実行アクセス権」を、 「スクリプトの ディレクトリの実行権限をチェックしてみて下さい。 み」または「スクリプトおよび実行可能ファイル」に 設定します(図5) 。 新規にディレクトリを作成するには、通常のディ レクトリ作成と同様にエクスプローラーを使い、 wwwroot 以下にディレクトリを作成しておきます (図3) 。その後、インターネットサービスマネージャ を起動すると、 「規定のWebサイト」以下に、新しく 図 3 エクスプローラーで 作成したディレクトリ 作成したフォルダがディレクトリとして追加されて 図4 インター ネットサービス マネージャー 図5 ディレク トリのプロパテ ィダイアログ 007 ASP programming 仮想ディレクトリを作成するには? wwwroot以下にディレクトリを作成したくない場 合、仮想ディレクトリを作成しなければなりません。 図6 「仮想ディ レクトリ」を作成 するメニュー 最初にエクスプローラーを使ってディレクトリを作成 しておきます。インターネットサービスマネージャを 起動し、 「規定のWebサイト」を右クリックし、メニ ューから「新規作成」→「仮想ディレクトリ」を選 択します(図6) 。 ウイザードが表示されるので、最初に仮想ディレ クトリの名前(エイリアス)を入力します。この名 前でブラウザからアクセスできるようになります。次 に、実際のフォルダの場所を指定します。アクセス 許可設定の画面では、 「ASP等のスクリプトを実行す る」に必ずチェックを付けます(図7) 。完了をクリ ックすると仮想ディレクトリが作成されます。作成 した仮想ディレクトリでも、問題なくASPを起動す ることが可能です。 12 ASP 300 の技 図7 アクセス 許可の設定画面 第1章 00.11.10 7:29 PM ページ 13 半日でマスター はじめようASP入門講座 008 ASP programming ASPファイルをブラウザで表示するには? サーバの仮想ディレクトリにhello.aspを配置した 図8はIEですが、Netscapeでも、同じ結果になる ならば、次のようにブラウザのURL欄にhello.aspの はずです。次に、ブラウザに表示されているHTML 位置を指定します。 の内容をみてみましょう。IEならば、 「表示」メニュ http://(サーバ名)/Webpub/hello.asp ーの「ソース」でみることができます。 http://(サーバ名)/(ディレクトリ名)/hello.asp リスト3 hello.aspのHTMLソース 前者が[005]で指定したディレクトリWebpubに <HTML><BODY> スクリプトを置いた際のURLで、後者が[006]と <FONT SIZE="1">Hello World<BR><FONT SIZE="2"> [007]で作成したディレクトリに置いた際のURLで Hello World<BR><FONT SIZE="3">Hello World<BR> す。URLを指定し、図8のように表示されれば成功 <FONT SIZE="4">Hello World<BR><FONT SIZE="5"> です。 Hello World<BR> </BODY></HTML> ソースをみると、どこにもスクリプトらしきものが ありません。ASPを使って記述されたスクリプトは すべてサーバで実行され、クライアントであるブラウ 図8 hello.asp (リスト2)をブ ラウズした結果 009 スクリプト言語には 何が使えるか? ASP programming ザには、実行後の結果がHTMLとして返されている だけです。 010 ブラウザで使用できる VBScriptと同じものなのか? ASP programming ASPで利用できるスクリプト言語はVBScriptだけ 基本的に同じです。ただし、画面上に何か表示され ではありません。JavaScriptと互換性のあるJScript る命令やユーザからの入力を促す命令などは使えませ も利用できます。 ん。スクリプトがWebサーバ内で動作するためです。 この章では、主にVBScriptによるスクリプトを紹 ブラウザはスクリプトを利用するユーザとのやり 介します。ASPの基本的な仕組みは、スクリプト言 とりが可能ですが、Webサーバは離れているユーザ 語にとらわれることなく、同じように扱えます。ど のために奉仕することが仕事です。そのため、Webサ のスクリプト言語を使うかは、単純に好みや、開発 ーバが動作しているマシンの画面に何かを表示した 者のスキルによって決めても良いでしょう。 り、キーボードからの入力を待つなどの必要はあり ません。 大きな勘違い その昔、Javaが流行り出した頃、インターネッ トで情報を漁り、ようやく動くものを作ったのです。内心、 「Javaなんて軽いもんじゃない」とか、 「俺ってやっぱり 天才?」なんて思っていたのです。そこで、 「Javaが動い たよ」と、会社の同僚に自慢したのでした。でも、私が作 ったのは、Netscape上で動く、JavaScriptだったので す。なんと紛らわしい。おかげで恥をかいてしまいました。 どおりで、なんか簡単だと思った。 ASP 300 の技 13 第1章 00.11.10 7:29 PM ページ 14 Chapter1 【WINDOWS PROGRAMMING SERIES】 ASP PROGRAMMING 011 ASP programming サーバで動くVBScriptとブラウザで動くVBScriptを区別するには? 1つのASPファイル中にサーバ側で動作するスク リスト4 ブラウザで動作するVBScript リプトと、ブラウザ側で動作するスクリプトを混在 <SCRIPT LANGUAGE="VBScript"> させても構 いません。サーバ、ブラウザ共 に 'このスクリプトはブラウザで実行される <SCRIPT>タグによりスクリプトを定義します。 Sub OnClick() リスト4と5を見比べればわかると思いますが、ブ Msgbox("ブラウザで表示されています。") ラウザとサーバのどちらで動作するかは、<SCRIPT> End Sub タグの「RUNAT」属性によって決まります。リスト Call OnClick() 4はRUNAT属性を省略しています。デフォルトが、 </SCRIPT> ブラウザ側で動作するスクリプトとなります。リス ト5では、RUNAT属性に"Server"が指定されている ので、サーバ側で動作します。 <SCRIPT>タグを使わずに、<%と%>によりスク リプトを記述した場合、必ずサーバ側で動作するス クリプトとなります。サーバ側(ASP)で出力した リスト5 サーバで動作するVBScript <SCRIPT LANGUAGE="VBScript" RUNAT="Server"> 'このスクリプトはサーバで実行される Sub ServerSideSub Response.Write "サーバで実行しています。" 文字列に<SCRIPT>タグが含まれる場合、ブラウザ End Sub で実行されるスクリプトとなります。 Call ServerSideSub </SCRIPT> 012 ASP programming 013 ASP programming SCRIPTタグと<% %>との違いは? スクリプト言語を切り替えるには? hello.aspでは、<%と%>の間にスクリプトを記述 スクリプトの種 類 は、< S C R I P T > タグの しました。実は、<SCRIPT>と</SCRIPT>の間にス LANGUAGE属性によって指定することができます。 クリプトを記述しても良いことになっています。た だし、RUNAT属性に"server"を指定しなければサー バ側で実行しません。 <%と%>によるスクリプトと<SCRIPT>タグによ リスト6 同一ファイルに異なるスクリプト言語が存在する例 <SCRIPT LANGUAGE="VBScript" RUNAT="Server"> 'これはVBScript るスクリプトは基 本 的 に同 じ機 能 を持 ちます。 Response.Write "VBScriptで表示しています。" <SCRIPT>タグはブラウザで実行する場合にも使用 </SCRIPT> されますが、<%と%>を使ったスクリプトはサーバ でのみ実行できます。 IIS 3.0では、プロシージャは<SCRIPT>タグ内に <SCRIPT LANGUAGE="JavaScript" RUNAT="Server"> // これはJavaScript 記述しなければならない、という制限がありました。 Response.Write ("JavaScriptで表示しています。") IIS 4.0、IIS 5.0ではこの制限が取り払われています </SCRIPT> ので、機能の差はありません。 同じASPファイル中に、異なるスクリプト言語で 記述されたスクリプトがあっても構いません。しか し、混乱を避けるため、同じASPファイル内では、 1つの言語に統一した方が良いでしょう。 14 ASP 300 の技 第1章 00.11.10 7:29 PM ページ 15 半日でマスター はじめようASP入門講座 014 ASP programming デフォルトの言語を設定するには? デフォルトのスクリプト言語を設定するに は、 「インターネットサービスマネージャ」を使 図 9 アプリケ ーションの構成 ダイアログ います。 設定したい仮想ディレクトリ、またはフォル ダのプロパティを開きます。 「仮想ディレクト リ」または「ディレクトリ」タブの構成ボタン をクリックして「アプリケーションの構成」ダ イアログを表示させます。 「アプリケーション のオプション」タブに移動すると、「規定の ASPの言語」が設定できます(図9) 。 015 ASP programming 文字列データとして <% や %>を記述するには? 016 ASP programming ブラウザへの応答を 制御するには? ASPでは、<% と %>に囲まれた部分をスクリプト リスト 2、7 には、VB や VBA では見慣れない として、実行していきます。文字列として%>を出 「Response」という記述があります。これはASPに 力したい場合、リスト7のように % と > の間に「¥」 組み込まれているオブジェクトです。Responseオブ を置くことによって回避できます。 ジェクトは、ブラウザへの応答を制御するという役 割を持っています。ASPのスクリプト作成者は、ブ リスト7 %>を表示させる例 クトを通して出力します。 <% Response.Write "Hello %\>" Responseオブジェクトの詳細は、 [040]で説明し ます。 %> 017 ラウザに結果を返したい情報を、Responseオブジェ ASP programming 変数の値をブラウザに返すには? <SCRIPT>タグや<%と%>に囲まれていない部分 <%=変数名%> という形式でスクリプトを記述す は、通常のHTMLとして、そのままブラウザに返さ ると、変数の値がブラウザに表示されます。この形 れます。ここに、変数名を記述しても、そのままの 式は、 「<TABLE>の一部にスクリプトで計算した値 文字列がブラウザに返されます。 を埋め込みたい」といった場合に、有効です。 リスト8 変数名がそのままブラウザに表示される例 リスト9 <%=変数%>を使った例 <% <% moji="文字列" total = 14500 %> %> moji <TABLE><TR> <TD>合計</TD><TD><%=total%></TD> 4行目のmoji は変数として扱われず、そのまま </TR></TABLE> 「moji」としてブラウザに表示されます。 ASP 300 の技 15 第1章 00.11.10 7:29 PM ページ 16 Chapter1 【WINDOWS PROGRAMMING SERIES】 ASP PROGRAMMING VBScript ASPにおいて、スクリプト言語は選択可能です。ここでは、ASPにおけるデフォルト言語である「VBScript」に ついて、その内容を説明していきます。 018 ASP programming スクリプトエンジンのバージョンを知るには? ・ScriptEngineBuildVersion ASPでは、スクリプト言語を選択することができ ます。スクリプトは「スクリプトエンジン」と呼ばれ スクリプトエンジンのビルドバージョン番号を返 るモジュールが処理します。 します。 スクリプトエンジンが何であるか、バージョンがい リスト10にこれらの関数の使用例を示します。 くつであるかは、次の関数を使うと調べることがで リスト10 スクリプトエンジンのバージョンを得る例 きます。 <HTML><BODY> <% ・ScriptEngine Name = ScriptEngine スクリプトエンジンの名前を返します。 Major = ScriptEngineMajorVersion ・ScriptEngineMajorVersion Minor = ScriptEngineMinorVersion スクリプトエンジンのメジャーバージョン番号を Build = ScriptEngineBuildVersion 返します。 Response.Write Name & "." & Major & "." & Minor & ・ScriptEngineMinorVersion k "." & Build スクリプトエンジンのマイナーバージョン番号を %> 返します。 </BODY></HTML> 019 ASP programming 大文字と小文字を区別するには? 大文字と小文字の違いは無視されます。 次の記述はどれも同じものとみなされます。 020 ASP programming 変数を使うには? 変数を使うにあたって、宣言をする必要はありません。最初 に使われたときに変数領域が作成されます。 Dim文によって明示的に変数を宣言することも可能です。 Option Explicitを記述しておけば、変数宣言を強制すること response ができます。 Response RESPONSE リスト11 Option Explicitを記述し、Dimによる宣言を行った例 <% Option Explicit %> ただし、ダブルクォーテーションでくく られている文字列定数では、大文字と小文 字が区別されます。例えば、次の文字列は 違うものとして扱われます。 <HTML><BODY> <% Dim i For i = 1 To 5 Response.Write "<FONT SIZE=""" & i & """>" Response.Write "Hello World<BR>" "string" Next "String" %> "STRING" </BODY></HTML> 16 ASP 300 の技 第1章 00.11.10 7:29 PM ページ 17 半日でマスター はじめようASP入門講座 021 ASP programming 型指定とは? ASPのVBScriptには型という概念がありません。 変数に、数値・文字列・日付・オブジェクトなど、 どんな型でも格納することができます。 022 ASP programming リスト12 変数への代入の例 <% i = 0 i = "文字列" i = Now %> 変数に格納されている値の型を調べるには? VBScriptでは、どのような型でも変数に格納することができます。 変数に格納されている値の型を調べるには、VarType関数を使用し ます。VarType関数の引数に、調べたい変数を与えて呼び出すと、 引数の型が返されます。 リスト13 VarType関数の使用例 <% i = 0 Response.Write "VarType=" & VarType(i) & "<BR>" s = "String" Response.Write "VarType=" & VarType(s) & "<BR>" %> 型は番号として返されます。番号の意味を表1に示します。 023 ASP programming 表1 VarTypeの返す値と型の対応 値 0 1 2 3 4 5 6 7 8 9 10 11 12 13 17 8192 型 Empty値(未初期化) Null値(無効な値) 整数型(Integer) 長整数(Long) 単精度浮動小数点型(Single) 倍精度浮動小数点型(Double) 通貨型(Currency) 日付型(Date) 文字列型(String) オブジェクト型(Object) エラー型 ブール型(Boolean) バリアント型(Variant) 非オートメーションオブジェクト型 バイト型 配列型(Array) 作成した変数の有効期間はどれくらいあるか? スクリプトで使用する変数は、ASPページがブラ ウザに送られるまで有効です。その後はなくなりま す。もし、他のページでも引き続き利用したい情報 があるならば、Applicationオブジェクトや、Session オブジェクトに保存しなければなりません。 Dim i i = 1 Response.Write "i=" & i & "<BR>" Call MySub Response.Write "i=" & i & "<BR>" %> </BODY></HTML> サブルーチンや関数内において、Dim文によって 宣言された変数は、そのサブルーチンまたは関数内 サブルーチン外のメインとなる部分で、変数iを宣 のみで有効なローカル変数となります。サブルーチ 言しています(8行目) 。サブルーチンMySub内では、 ンや関数の内と外で、同じ名前を持つ変数があった 同じiという変数名で変数を宣言しました(4行目) 。 場合、より近いものが採用されます。 宣言の後で、1を代入していますので、10行目での 具体例を挙げましょう。リスト14を見て下さい。 出力結果は「i=1」となります。11行目でサブルーチ ンMySubを呼び出すので、サブルーチン内の6行目 リスト14 変数の有効範囲 <HTML><BODY> <% Sub MySub Dim i i = 0 Response.Write "MySub i=" & i & "<BR>" End Sub で変数iの内容が出力されます。この変数iはサブル ー チ ン 内 で 宣 言 さ れ て い て 、値 が 0 で す の で 、 「MySub i=0」が出力されます。サブルーチンから戻 って、再び12行目において変数iを出力しますが、変 わらず「i=1」という値が出力されます。 ASP 300 の技 17 第1章 00.11.10 7:29 PM ページ 18 Chapter1 【WINDOWS PROGRAMMING SERIES】 ASP PROGRAMMING 024 ASP programming 配列変数を作成するには? 025 ASP programming 定数を使うには? 変数を配列として使うには、Dim文を使用 プログラム中で利用する決まった値を、定数として定 して、変数を配列として宣言しなければなり 義しておくと便利です。例えば、円周率や消費税率など ません。配列とするには括弧を付けて、要素 を使う場合です。スクリプト中の定数名は、実際の数値 の数を記述します。次に配列宣言の例を示し や文字列に置き換わるので、プログラムを読みやすくす ます。 る効果があります。定数は、変数とは異なり、値を変更 Dim Array10(10) することができません。 VBScriptでは、定数は「Const」によって定義できます。 Array10は全部で11個の要素を持ちます。 VBScriptでの配列は、0から始まり、宣言し リスト15 定数の例 た添え字(インデックス)までの数(例では 0から10までの計11個)を使用することがで きます。よって、宣言した数+1個の要素が 使えることになります。 添え字に負の値や、宣言した数より大きい 数を指定し、その要素にアクセスするとエラ ーとなります。 <% Const PI = 3.141592 Const TAX = 0.05 Const MyString = "文字列の定数" '日付型の定数は日付リテラルの形式で与える Const MyDate = #00/10/1# Response.Write"PI = " & PI & "<BR>" Response.Write"TAX = " & TAX & "<BR>" Response.Write"MyString = " & MyString & "<BR>" Response.Write"MyDate = " & MyDate & "<BR>" 026 ASP programming 条件分岐するには? 「変数の値によって、出力するHTMLを変えたい」 という要望は多いと思います。これは動的にHTML を生成できるASPならではの機能といえます。 <% End If %> 条件分岐はIf文によって制御することができます。 しかし、HTMLの部分とスクリプトの部分を明確に 2行目は<%と%>に囲まれている部分なので、ス 分ける必要があるので、少々見づらいスクリプトに クリプトになります。ここにIf文が記述されているの なりがちです。リスト16をみて下さい。 で、条件にあてはまる場合、Then以下が有効となり ます。しかし、3行目でスクリプト部分が終了して リスト16 If文による条件分岐の例 <% If condition = True Then %> 変数conditionはTrueです<BR> <% Else %> 変数conditionはFalseです<BR> 18 ASP 300 の技 いるので、実際には4行目のHTML部分がThenの部 分となります。 条件にあてはまらなかった場合、Else以下が処理 されます。ここもHTMLなので、8行目がそのまま HTMLとして返されます。If文には終わりを示すEnd Ifが必要になるので、これも忘れずにスクリプトとし て記述します。 第1章 00.11.10 7:29 PM ページ 19 半日でマスター はじめようASP入門講座 027 ASP programming If文を見やすくするには? [026]では、If文において<%と%>の切り替えが 028 ASP programming 数が多い条件分岐をするには? If文による条件分岐は、流れ制御の基本です。し 多く、見にくいスクリプトとなってしまいました。 かし、条件分岐がいくつもあり、Else Ifを何度も利 もう少しすっきりさせるには、<%と%>による切り 用していくと、読みにくいスクリプトになります。 替えをなくしてしまうことが一番です。リスト17を Select Caseを利用すると、数が多い条件分岐をスマ みて下さい。HTMLの部分をResponse.Writeに置 ートに記述することができます。 き換えてみました。 リスト18 Select Caseにより記述したスクリプト リスト17 <% %>の切り替えを少なくしたIf文の例 <% If condition = True Then Response.Write "変数conditionはTrueです<BR>" Else Response.Write "変数conditionはFalseです<BR>" End If %> Response.Writeを利用すると<%と%>を使った切 り替えを行う必要がなくなり、すべてスクリプトで 記述できるようになります。しかし、HTMLの部分 が多い場合、逆に余計な部分を書き足すことになる ので、<%と%>により切り替えた方が見やすくなり ます。時と場合によって使い分けると良いでしょう。 029 ASP programming <% wday = WeekDay(Now) Select Case wday Case 1 Response.Write "今日は日曜日です。" Case 2 Response.Write "今日は月曜日です。" Case 3 Response.Write "今日は火曜日です。" Case 4 Response.Write "今日は水曜日です。" Case 5 Response.Write "今日は木曜日です。" Case 6 Response.Write "今日は金曜日です。" Case 7 Response.Write "今日は土曜日です。" End Select %> 繰り返し処理を行うには(その1)? プログラムには、繰り返し処理がつきものです。繰 り返し処理を行うには、Forによるループ、Do While によるループの2種類の方法を選択できます。 Next %> </BODY></HTML> 最初に、Forによるループを解説します。 For文を使えば、変数を1から10まで、順番に値 3行目にFor文が記述されています。このFor文で を増やしながらループするといった処理が行えます。 は変数iの値を1から5まで、順番に増やしていく、と 冒頭で紹介したhello.aspでもFor文を利用していま いう命令になります。繰り返し処理されるのは、6行 す。もう一度hello.aspを見てみましょう。 目に記述されているNextまでの間の命令となります。 スクリプトの結果として、<FONT>タグのSIZE属 リスト19 Forによる繰り返しの例(hello.asp) 性が、1、2、3と順番に増えていき、5になった際に <HTML><BODY> ループが終了します。<FONT>タグのSIZE属性は文 <% 字の大きさを指定するものなので、Hello Worldとい For i = 1 To 5 う文字列が、SIZE属性を1から5まで変化させなが Response.Write "<FONT SIZE=""" & i & """>" ら表示されます。 Response.Write "Hello World<BR>" ASP 300 の技 19 第1章 00.11.10 7:29 PM ページ 20 Chapter1 【WINDOWS PROGRAMMING SERIES】 ASP PROGRAMMING 030 ASP programming 繰り返し処理を行うには(その2)? 「Do While」はある条件を満たしている間、繰り す。それぞれリスト20の3、4、7行目です。 返し処理を行う命令です。Forに対するNextがある ように、Do Whileにはループの終わりを示すLoopと リスト20 Do Whileによる繰り返しの例(hello.asp) いう記述が必要になります。リスト20に、リスト19 <HTML><BODY> をDo Whileを使って書き直した例を示します。 <% リスト19とリスト20の実行結果は、同じものにな ります。いずれも「変数iが1以上5以下」という i = 1 Do While i <= 5 条件を満たす間、繰り返し処理を行います。FORル Response.Write "<FONT SIZE=""" & i & """>" ープは「For i = 1 To 5」という1行で、 「iの初期値 Response.Write "Hello World<BR>" が1、変数iが1以上5以下という条件、ループ終 i = i + 1 了時にiをインクリメントする(値を1増やす) 」と Loop いう3つの役目を果たしています。対し、Do While %> ループでは、3つの役目を3行で示すことになりま </BODY></HTML> 031 コレクションに対し、 繰り返し処理を行うには? ASP programming For Eachループは、コレクションに対してループ処理を行う際 に便利な命令です。For Eachは次のような形式で使用します。 For Each 変数 In コレクション Next 032 サブルーチンを 作成するには? ASP programming サブルーチンは「Sub」に続けてサ ブルーチン名を記述します。これがサ ブルーチンの始まりとなり、 「End Sub」 が現れるまでが、サブルーチンの処理 内容となります。 これで、コレクション内のすべてのキーを変数に入れながら、 ループ処理することができます。For Eachを使用して、Request リスト22 サブルーチンの例 オブジェクトのQueryStringコレクションのキーと値を表示する <% 例をリスト21に示します。 Sub Foo リスト21 For Eachによるループの例 End Sub Response.Write "Foo" <HTML><BODY> <PRE> QUERY_STRINGの内容をFor Eachループで表示します。 表示させるには、URLに ?param1=value& param2=value Call Foo %> といった形式でパラメータを追加する必要があります。 例 http://localhost/asptest/list21.asp?id=1&name=hoge </PRE> <% For Each x In Request.QueryString Response.Write x & ":" & Request.QueryString(x) & "<BR>" Next %> </BODY></HTML> 2行目はサブルーチンFooの定義で あり、ここからサブルーチンが始まり ます。3行目はサブルーチンの処理内 容であり、"Foo"という文字列を出力し ています。4行目のEnd Subがサブル ーチンの終わりを示します。6行目で はサブルーチンを呼び出しています。 20 ASP 300 の技 第1章 00.11.10 7:29 PM ページ 21 半日でマスター はじめようASP入門講座 033 ASP programming 関数を作成するには? 関数は、サブルーチンと同じようなものですが、違 いは戻り値があることです。 関数は、 「Function」から始まり「End Function」 Bar = True End Function bResult = Bar() で終わります。戻り値は、関数名と同じ名前の変数 Response.Write "bResult = " & bResult & "<BR>" として扱うことができます。例えばリスト23で説明 %> すると、関数「Bar」の戻り値は、Barという変数に 代入することによって、戻り値を設定することがで 2行目は関数Barの定義であり、ここから関数が始 まります。3行目は関数の処理内容であり、"Bar"と きます。 いう文字列を出力しています。4行目では、Bar関数 リスト23 関数の例 の戻り値を設定しています(リスト23ではTrueが返 <% されます) 。5行目のEnd Functionが関数の終わりを Function Bar() Response.Write "Bar" 034 ASP programming 示します。6行目では関数を呼び出しています。 サブルーチンや関数に引数を与えるには? 呼び出されるたびに、同じ処理を行うサブルーチ ンや関数でも、それなりに便利ですが、引数を持た Response.Write "p is TRUE<BR>" Else せるともっと便利になります。引数の値により処理 内容が変化すれば、汎用的に利用することが可能に なります。 Response.Write "p is FALSE<BR>" End If End Sub 引数を付けるのには、 「Sub 名前(引数)」 「Function 名前(引数)」とします。呼び出す際にも、括弧を付け Call Foo(True) て引数を与えるようにします。引数が複数必要なら Response.Write "p の型は " & VarType(p) ば、カンマで区切って並べることができます。 %> リスト24 引数を持つサブルーチンの例 ここで注意することは、引数はサブルーチン内だ <% けで有効なローカル変数になるという点です。10行 Sub Foo(p) 目の呼び出し後に、引数であるpを参照しても、それ If p = True Then は別の変数になります。 CPUクーラーの外し方 みなさんは、CPUクーラーの正しい外し方って いやり方は、マイナスドライバーを留め具の穴に入れて、 知ってます? 私は知りませんでした。ソケットタイプの ひねるとすぐ外れます。ちゃんとCPUのマニュアルに書 CPUには、クーラーをひっかけるツメが付いてますよね。 いてありました。マニュアルはちゃんと読みましょう。 そこに引っかかっている留め具を外せばいいのです。正し ASP 300 の技 21