三流君のソースコード置き場

三流プログラマーが作成したコードが置いてあります。あまり参考にならないと思いますがヨロシクお願いします。

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
(※詳細は[三流君 三流プログラマーとは?]を見てください)


広告:


[記事一覧、バックナンバーを見る]

入力、結果表示を1つのASPファイルにまとめた

過去のソースコードをアップしています、
(ブログの検索機能で利用する予定・・・)

元の三流解説は、
三流君ASP:入力、結果表示を1つに、Subで関数分割
↑を見て、笑ってやってください。



ソースコード

Call を 使った ソースコードを紹介する
表示色の説明:ASP VBScriptは <%%>
キーワードはCall です。
<%@LANGUAGE=VBScript%>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>入力、結果表示を1つのASPファイルにまとめた</title>
</head>
<body>
<h2>入力、結果表示を1つのASPファイルにまとめた</h2>
test016-1.asp<br>
<hr>

<% 'まずは、パラメータ有無の判断を行う
    If IsEmpty(Request.QueryString("a")) = False Then
        'バラメーター有りの時
        If Request.QueryString("a") = "99" Then
            Call test016_SUM()   '結果表示の関数を呼ぶ
        Else
            Call test016_WRITE() '書き込みの関数を呼ぶ
        End If
    Else '↓フォームの入力処理を書く(普通のHTML)
%>
        <FORM ACTION="test016-1.asp" METHOD="GET">
        このメルマガの満足度は?選択後、送信ボタンを押してください。<br>
        <INPUT TYPE="RADIO" NAME="a" VALUE="6">6.大変満足、知人に教えます<br>
        <INPUT TYPE="RADIO" NAME="a" VALUE="5">5.満足<br>
        <INPUT TYPE="RADIO" NAME="a" VALUE="4">4.まぁまぁ<br>
        <INPUT TYPE="RADIO" NAME="a" VALUE="3">3.どちらとも言えない<br>
        <INPUT TYPE="RADIO" NAME="a" VALUE="2">2.少し不満<br>
        <INPUT TYPE="RADIO" NAME="a" VALUE="1">1.不満<br>
        <INPUT TYPE="RADIO" NAME="a" VALUE="0">0.かなり不満、解除します<br>
        <br>
        <INPUT TYPE="submit" VALUE="送 信">
        <INPUT TYPE="reset"  VALUE="入力クリア">
        </FORM>
<%  End If %>

<hr>
</body>
</html>


<%  'ここから下にSUB関数をまとめてみました。

Sub test016_WRITE() '入力値を判断して書き込む

  'アンケートの結果をまず判断する
  strMSG = "不正なパラメーターです"  'エラーメッセージを初期値として代入
  if Request.QueryString("a") = "6" then strMSG = "大変満足"    'asp013追加
  if Request.QueryString("a") = "5" then strMSG = "満足" 
  if Request.QueryString("a") = "4" then strMSG = "まぁまぁ" 
  if Request.QueryString("a") = "3" then strMSG = "どちらとも言えない" 
  if Request.QueryString("a") = "2" then strMSG = "少し不満" 
  if Request.QueryString("a") = "1" then strMSG = "不満" 
  if Request.QueryString("a") = "0" then strMSG = "かなり不満"  'asp013追加

  If strMSG = "不正なパラメーターです" Then 'エラーパラメータのままか?チェック
    Response.Write "データを正しく受け取れませんでした<br>"
  Else
    'FileSystemObjectを生成します。
    Set objFS = Server.CreateObject("Scripting.FileSystemObject")

    'test016.txt を追加モードで開く
    Set ts = objFS.OpenTextFile(Server.MapPath("test016.txt"), 8, True)

    'ファイルにアンケート結果のデータを書き込む
    ts.write Request.QueryString("a") & ","   '結果0~6を書く
    ts.write strMSG & ","    'ファイルに結果を書き込む
    ts.write Now             '時刻を書く

    ts.write chr(13) & chr(10)  '改行する

    '使ったファイルは閉じようよ
    ts.close

    Response.Write "あなたの回答は<b>" & strMSG & "</b>でした<BR>"

    Call test016_SUM()  '結果表示を呼ぶ 016追加

  End if

End Sub

Sub test016_SUM()  '結果の表示関数

  dim strRECORD  'レコード内容を一時保存
  dim nCNT(10)   'カウンター 変数 10個もいらないけど
  dim nSUM       '回答の合計数

  nSUM = 0       '初期化する

  'カウンター変数をループで初期化しておく
  For i = 0 to 10
      nCNT(i) = 0 
  Next 

  'FileSystemObjectを生成します、、って英文、そのままジャン。
  Set objFS = Server.CreateObject("Scripting.FileSystemObject")

  'test016.txt 結果ファイルを読取専用モードで開く
  Set ts = objFS.OpenTextFile(Server.MapPath("test016.txt"), 1, True)

  Do While ts.AtEndOfStream = False  'ファイルの終端になってない間ループする
    strRECORD = ts.ReadLine   'ファイルからデータを一行を読む
    'Left関数を使って左から1文字目をCintで数値変換
    i = Cint(Left(strRECORD, 1))  '読みこんだレコードの1文字目を数値変換
    'nCNT(i番目)をカウントアップ
    nCNT(i) = nCNT(i) + 1
    '*2合計数は無条件にカウントアップ
    nSUM = nSUM + 1
  Loop

  ts.close  '使ったファイルは閉じようよ

  Response.Write "<hr><h3>アンケート集計結果</h3><hr>"
  Response.Write "アンケート回答数<b> " & nSUM & "</b>人です"  '*4回答数表示

  'Array関数を使用して、評価コメントを初期化
  strBOX = Array("かなり不満", "不満", "少し不満", "どちらとも言えない", _
                 "まぁまぁ", "満足", "大変満足")

  '結果の表示を<TABLE>タグを使用して表示
  Response.Write "<TABLE border=1>"   'border=1で境界線(ワクを表示)
  Response.Write "<TR><TD>評価</TD><TD>コメント</TD><TD>人数</TD>"
  Response.Write "<TD>%</TD></TR>"   '*3 %の見出しを追加
  'ループで回して評価の集計データを表示する
  For i = 6 To 0 Step -1   '6~0のループを作る
    Response.Write "<TR><TD>" & i & "</TD>"
    Response.Write "<TD>" & strBOX(i) & "</TD>"
    Response.Write "<TD ALIGN=RIGHT>" & nCNT(i) & "</TD>" 'ALIGN=RIGHT追加
    '%を計算して、表示する
    strMSG = FormatNumber((nCNT(i) / nSUM) * 100, 1)  '計算と変換処理
    Response.Write "<TD ALIGN=RIGHT>" & strMSG & "%</TD></TR>"
  Next

  Response.Write "</TABLE>"   '忘れずにテーブルを終わりにする

End Sub

%>

↑を実行する→ http://www.ken3.org/cgi-bin/test/test016-1.asp



コードの三流解説は、
三流君ASP:入力、結果表示を1つに、Subで関数分割
↑を見て、笑ってやってください。