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