#!/usr/local/bin/perl # いつのまにやら、Netscape用になってしまった。 # これじゃぁMosaicユーザは怒るよなぁ。 # そのうち、両方に対応できるようにしたい。 # ホスト(WWW Server)の処理速度が遅くて、CGIの出力に時間がかかると、 # ネスケの漢字判別がタコいことをしてくれる。注意が必要。 # # 編成表 CGIスクリプト ver0.3 # 品川区民管弦楽団 飯塚泰樹 # # hen2txtをベースに作る。 # # 使い方 # $command の後のスクリプト名を変更すること。 # hensei.cgi 1-0 交響曲編の作曲家リスト # hensei.cgi 2-0 # hensei.cgi 3-0 # hensei.cgi 1-100 交響曲編の作曲家作品リストデータ # hensei.cgi 2-100 # hensei.cgi 3-100 # # # 変更履歴 # 1996.6.19 作成 飯塚 # ???? 修正 いろいろ # # しくみ: # 引数の形は 1-2 のようにする。 # - の前が第1引数 後が第2引数 # 第1引数は曲の区分を表す。1は交響曲、2は協奏曲、3は管弦楽曲 # これはデータ(HENSEI.euc)の中の区分を意味している。 # 第2引数が0の時は、インデックスページを作成して終了する。 # 第2引数がそれ以外の場合は、第2引数を $target_kyoku として、 # $target_kyoku番目の曲以降、同じ作曲家のデータを表示し、終了する。 # 使い方: # $command の後のスクリプト名を変更すること。 # このファイルの一行目のjperlへのパスを変更すること。 # これを呼び出すページには、次のように書く # # 交響曲 #
# # 協奏曲 #
# # 管弦楽曲 #
# そうそう、提供者名とかも出るようにしないといけないなぁ。
#
#
$ARGV[0] =~ /(\d)-(\d+)/ ; # 引数の解析 エラー判定無し
$target_kubun = $1;
$target_kyoku = $2;
$command = "hensei.cgi";
#
#$| = 1; # cgi用 バッファリングしない。
#上の一行を入れたばっかりに、ネスケの表示がタコイカウニになってしまった。
#これに気がつくまでに、すごーく時間がかかったー。
#Mosaicならこんなことなかったのに。
if($target_kubun == 0){ # 隠しコマンド
$| = 1; # cgi用 バッファリングしない。
# ここには上の一行が必須。
print "Content-type: text/plain; charset=iso-2022-jp\n\n";
system("cat $command");
$| = 0;
exit 0;
}
elsif($target_kubun == 5){ # もいっちょ隠しコマンド
system("cat HENSEI.euc");
exit 0;
}
#
# $kyokubangouの扱いについて
# #以外の行が出てきた場合、それを1行としてカウントする。
# 最初のデータの行を1行目とする。
# このようにして、作品ごとに番号を割り振る。
$kubun = 0;
$sakkyokusya = "";
$line = 0; # そのうち、lineの制御を入れる。
$col = 0; # 何カラム目まで出力したか。
$kyokubangou = 0; #
&mktitle();
open(HENSEI, "HENSEI.euc") || die "データファイルオープン失敗\n";
while( \n";
print "";
print "■ $sakkyokusya ";
print "\n";
}
next; # インデックス表示時おしまい
}
# データ表示時
# 目的作曲家より下だった場合はおしまい。
if($kyokubangou < $target_kyoku ){
next;
}
elsif($target_kyoku == $kyokubangou){
$sakkyokusya = $2;
# 作曲家名の表示
print "管弦楽編成表 \n";
#print "$sakkyokusya";
print "「$sakkyokusya」";
&no_kyoku($target_kubun);
print " \n
\n";
}
if($sakkyokusya ne $2){ # 作曲者が変わったらおしまい。
last;
}
print " 曲名: $4
\n";
# 編成
# $5 時間
if($5 eq "0" || $5 eq "-"){ # 演奏時間のパッチ 1996.2.27
print " 演奏時間: 不明
\n";
}
else {
print " 演奏時間: $5 分
\n";
}
print " 編成
\n";
&colzero();
&gakki("Fl",$6);
&gakki("Pic",$15);
&gakki("Ob",$7);
&gakki("Ehr",$16);
&gakki("Cl",$8);
&gakki("BCl",$17);
&gakki("Fg",$9);
&gakki("Cfg",$18);
&gakki("Hr",$10);
&gakki("Tp",$11);
&gakki("Crnt",$19);
&gakki("Tb",$12);
&gakki("Tub",$13);
&gakki("Tim",$14);
&gakki("Cym",$20);
&gakki("Trg",$21);
&gakki("大太鼓",$22);
&gakki("小太鼓",$23);
&gakki("Hp",$24);
if($25 ne ""){
print "
\n その他: $25
\n";
}
if($26 ne ""){
print "
\n コメント: $26
\n";
}
print "
\n";
}
elsif(/^(\s*)$/o){
# ヌル行
;
}
elsif(/^(.+)$/o){
print STDERR "Error: データフォーマットエラー。\n";
print STDERR "Error: 「$1」という行は間違いです。\n";
}
}
if($target_kyoku != 0){
print "