LoginSignup
6
1

More than 1 year has passed since last update.

【VBScript】HelloWorldを表示させる

Last updated at Posted at 2022-09-11

目次

1. はじめに
2. 環境
3. 今回のゴール
3-1. 書籍の通りにやってみる
3-2. 手直しする
3-2-1. 小なりと大なりが表示されない
3-2-2. 改行されない
3-2-3. おまけ
4. まとめ
5. 最後に

1.はじめに

現在、以下の書籍を学習しています。

2001年出版と、なんと20年以上の書籍です。

現在だと技術的に非推奨の書き方をしている箇所があるなど、書籍通りの動きにならないことがあります。今回はその中からHello Worldの表示についてまとめていきたいと思います。

2.環境

  • windows10 バージョン21H2
  • Microsoft-IIS 10.0
  • ASP 5.8(16384)

3.今回のゴール

HTMLのコードをVBScriptで出力しているイメージです。

3-1.書籍の通りにやってみる

書籍の通りにやってみると、以下の状態になります。

▼コード(Response.Writeで出力しています)

<%@ Language = VBScript codepage = 65001 %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<%
Response.Write "<html>" & vbnewline
Response.Write "<head>" & vbnewline
Response.Write "<title>Hello World</title>" & vbnewline
Response.Write "</head>" & vbnewline
Response.Write "<body>" & vbnewline
Response.Write "Hello World" & vbnewline
Response.Write "</body>" & vbnewline
Response.Write "</html>" & vbnewline
%>
</body>
</html>

▼上記のコードで実行すると…

8行表示されるはずのコードが、「Hello World」しか表示されませんでした。

3-2.手直しする

3-2-1.小なりと大なりが表示されない

今回表示がされなかったところは、<head>などいずれも<>を使用している項目でした。

【HTML】< と > の意味、略称の正式名称、違いと覚え方、属性値での利用より引用

本来、<>はHTMLの特殊文字という扱いとなっているため、ブラウザ上でそのまま表示させることができません。そのため、これらの不等号を文章内で扱う場合には&lt;&gt;による文字実体参照(実体参照)を用いる必要があります。

他にも&をHTMLで表示したい場合&amp;を用いるなど、そのまま表示させるにはルールが決まっているようです。

以下のように修正し、再度画面に出力しました。

項目 修正後
< &lt;
> &gt;
<html> &lt;html&gt;

▼修正後のコード

<%@ Language = VBScript codepage = 65001 %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<%
Response.Write "&lt;html&gt;" & vbnewline
Response.Write "&lt;head&gt;" & vbnewline
Response.Write "&lt;title&gt;Hello World&lt;/title&gt;" & vbnewline
Response.Write "&lt;/head&gt;" & vbnewline
Response.Write "&lt;body&gt;" & vbnewline
Response.Write "Hello World" & vbnewline
Response.Write "&lt;/body&gt;" & vbnewline
Response.Write "&lt;/html&gt;" & vbnewline
%>
</body>
</html>

▼画面に出力

無事に画面に出力することができました!
ですが、改行ができていないので修正していきます。

3-2-2.改行されない

vbnewlineを&でつなげることで改行をしたかったのですが、少しスペースが開いただけでした。

まず、以下を参考にvbCrLfに置き換えてみました。

実行環境がWindowsであるため、vbCrLf = vbNewLineと解釈しました。
リンクはVBAですが、文法はVBScriptとほとんど同じです。

画面に出力したところ、特に変化なしでした。

次に、以下を参考にReplace関数を使って置換した文字列を返すようにします。

Replace関数はReplace(置換する文字列(A)を含む文字列式,A,B)とすることで「Aを含む文字列のAをBに置換する」となります。

'<html> & vbnewlineの場合
"&lt;html&gt;" & vbnewline
'Replace関数で置換
Replace("&lt;html&gt;" & vbnewline, vbnewline, "<br>")
'画面出力時
Response.Write(Replace("&lt;html&gt;" & vbnewline, vbnewline, "<br>"))

こちらを行うことで、改行することができました。

▼修正後のコード

<%@ Language = VBScript codepage = 65001 %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<%
Response.Write(Replace("&lt;html&gt;" & vbnewline, vbnewline, "<br>"))
Response.Write(Replace("&lt;head&gt;" & vbnewline, vbnewline, "<br>"))
Response.Write(Replace("&lt;title&gt;Hello World&lt;/title&gt;" & vbnewline, vbnewline, "<br>"))
Response.Write(Replace("&lt;/head&gt;" & vbnewline, vbnewline, "<br>"))
Response.Write(Replace("&lt;body&gt;" & vbnewline, vbnewline,  "<br>"))
Response.Write(Replace("Hello World" & vbnewline, vbnewline, "<br>"))
Response.Write(Replace("&lt;/body&gt;" & vbnewline, vbnewline, "<br>"))
Response.Write("&lt;/html&gt;")
%>
</body>
</html>

▼画面に出力

3-2-3.おまけ

やりたいことはできたのですが、「まとめて置換できないかな?」ということが浮かびました。

そこで変数を宣言して、最後に変換するようにします。

<%@ Language = VBScript codepage = 65001 %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>hello2</title>
</head>
<body>
<%
'変数を宣言
Dim sContents
' & でまとめて代入
sContents = "&lt;html&gt;" & vbnewline & "&lt;head&gt;" & vbnewline _
& "&lt;title&gt;Hello World&lt;/title&gt;" & vbnewline & "&lt;/head&gt;"& vbnewline _
& "&lt;body&gt;" & vbnewline & "Hello World" & vbnewline _
& "&lt;/body&gt;" & vbnewline & "&lt;/html&gt;"
sContents = Replace(sContents, vbnewline, "<br>")
Response.Write(sContents)
%>
</body>
</html>

今回はsContentsがとても長いため、_を挟んで1行の処理を改行して見やすくしています。

以上でゴールの画面表示をすることができました。

4.まとめ

今回はHTML周りのところでうまくいっていない2箇所について修正していきました。

ASPは、要求に従ってサーバ上でHTMLを生成して、クライアントのブラウザでは出来上がったHTMLファイルを表示しています。

サーバでの処理と表示のための処理について、それぞれ何が必要なのか意識していきたいと思います。

5.最後に

とても古くなってきている技術なのでそのまま当てはまる方は少数派かもしれませんが、同じ現象が起きている方の参考になれば幸いです。

読んで頂き、ありがとうございました。

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1