// ServerSide JavaScript // ●関数MakeArray(n):配列定義 function MakeArray(n){ this.length=n; } \n\n
// ◆◆◆ Start :Server Side JavaScript ◆◆◆ var kishoLine = new MakeArray(5); // 気象情報ファイル内の行配列 var kishoName = new Array(5); // 気象名称配列 kishoName[1] = "楢川 "; kishoName[2] = "開田 "; kishoName[3] = "木曽福島 "; kishoName[4] = "南木曽 "; kishoName[5] = "南信州の週間天気予報"; var dat = new MakeArray(26); // 気象データの配列 var sWeekDat = new MakeArray(11); //週間予報データの配列 // dat[1] :気象台No // dat[2] :予報発表時刻 // dat[3] :日付1 // dat[4]〜dat[11] :0時から21時まで3時間毎の予報コード // dat[12] :日付2 // dat[13]〜dat[20]:0時から21時まで3時間毎の予報コード // dat[21] :日付3 // dat[22]〜dat[25]:0時から9時まで3時間毎の予報コード // dat[26] :予備(バッファ) // 【 管理フォルダの定義 】 var AdminPath = "D:/Route19/data/Trans/"; // 気象情報ファイルの保管ディレクトリ // 【 本日の月日時の取得 】 var today = new Date(); var tdm = today.getMonth()+1; if( tdm < 10 ) tdmch="0"+tdm; else tdmch=""+tdm; // 二桁文字列の作成 var tdd = today.getDate(); if( tdd < 10 ) tddch="0"+tdd; else tddch=""+tdd; // 二桁文字列の作成 var tdh = today.getHours()+1; // 【 翌日の月日の取得 】 var tomorrow = new Date(); tomorrow.setDate(tomorrow.getDate()+1); var tmm = tomorrow.getMonth()+1; if( tmm < 10 ) tmmch="0"+tmm; else tmmch=""+tmm; // 二桁文字列の作成 var tmd = tomorrow.getDate(); if( tmd < 10 ) tmdch="0"+tmd; else tmdch=""+tmd; // 二桁文字列の作成 // 【 気象情報の取得 】 // 気象情報ファイルの定義 var jwadatFname = AdminPath + "jwadat.csv"; var jwadatFile = new File(jwadatFname); var FOpen = jwadatFile.open("r"); // 気象情報の取得 if ( FOpen ) { // 気象情報ファイルオープン for( i=1 ; i<=4 ; i++) kishoLine[i] = jwadatFile.readln(); // 気象情報ファイルより1行取得 jwadatFile.close(); } else { write("気象情報オープンエラー\n
\n"); Exit; } // 週間気象情報の取得 var jwadatwFname = AdminPath + "jwadatw.csv"; var jwadatwFile = new File(jwadatwFname); var FOpenw = jwadatwFile.open("r"); if ( FOpenw ) { // 気象情報ファイルオープン kishoLinew = jwadatwFile.readln(); // 週間気象情報ファイルより1行取得 jwadatwFile.close(); } else { write("週間気象情報オープンエラー\n\n\n\n"); Exit; } // 【 気象情報の分類 : dat配列への格納 】 for ( i=1 ; i<=4 ;i++ ){ // 気象台4箇所の繰り返し ↓↓↓↓ tmpChar = ""; tmpNum = 1; dat[tmpNum]=""; for ( j=0 ; j\n"); //DBG // 【 気象Noのチェック 】 if (isNaN(dat[1]) || dat[1]==""){ //write("気象情報が不正です:2\n\n\n\n"); write("只今、気象情報は準備中です。\n\n\n\n"); Exit; } else { kishoNum = eval(dat[1]); if (kishoNum < 1 || kishoNum > 4) { // write("気象情報が不正です:1\n\n\n\n"); write("只今、気象情報は準備中です。\n\n\n\n"); Exit; } } // 【 気象情報の表示 】 if ( i == 1 ) releaseTime = dat[2]; // 予報発表時刻の格納 // 気象台名称の表示 write("
"); write("" + kishoName[kishoNum] + "
\n\n"); // カラム名の表示 write("\n"); write(" \n"); write(" \n"); for( j=0 ; j<24 ; j=j+3 ) write(" \n"); write(" \n"); // 当日データの表示 write(" \n"); write(" \n" ); // 当日天気情報の表示 // 配列の開始点を設定 if ( dat[3] == tdmch+tddch ) Start=4; // 本日日付が日付1と同じの場合、配列の読み込み開始点を「4」に設定 else { if ( dat[12] == tdmch+tddch ) Start=13; // 本日日付が日付2と同じの場合、配列の読み込み開始点を「13」に設定 else { if ( dat[21] == tdmch+tddch ) Start=22; // 本日日付が日付3と同じの場合、配列の読み込み開始点を「22」に設定 else Start=99; // 該当しない場合には、配列読み込み開始点を「99」に設定 } } // 天気情報の表示 for(j=0 ; j<8 ; j++) { write(" \n"); } write(" \n\n"); // 翌日データの表示 write(" \n"); write(" \n" ); // 翌日天気情報の表示 // 配列の開始点を設定 if ( dat[3] == tmmch+tmdch ) Start=4; // 本日日付が日付1と同じの場合、配列の読み込み開始点を「4」に設定 else { if ( dat[12] == tmmch+tmdch ) Start=13; // 本日日付が日付2と同じの場合、配列の読み込み開始点を「13」に設定 else { if ( dat[21] == tmmch+tmdch ) Start=22; // 本日日付が日付3と同じの場合、配列の読み込み開始点を「22」に設定 else Start=99; // 該当しない場合には、配列読み込み開始点を「99」に設定 } } // 天気情報の表示 for(j=0 ; j<8 ; j++) { write(" \n"); } write(" \n\n"); //write("\n"); //DBG write("
日\時" + j + "
"); write( tdm + "/" + tdd + ""); if ( Start+j > 26) write("-"); //データがない場合には「-」を表示 else { if ( j*3 < tdh-3 ) write("-"); //現在時間より前のデータは「-」を表示 else { switch(dat[Start+j]) { case 1 : // 天気コード「晴れ」 if(j*3>=6 && j*3<18) write("\"晴\""); //「晴」マーク(昼)を表示 else write("\"晴\""); //「晴」マーク(夜)を表示 break; case 2 : // 天気コード「曇り」 write("\"曇\""); //「曇」マークを表示 break; case 3 : // 天気コード「雨」 write("\"雨\""); //「雨」マークを表示 break; case 4 : // 天気コード「雪」 write("\"雪\""); //「雪」マークを表示 break; default: // 異常値 write("-"); //データがなければ「-」を表示 break; } } } write("
"); write( tmm + "/" + tmd + ""); if ( Start+j > 25) write("-"); //データがない場合には「-」を表示 else { switch(dat[Start+j]) { case 1 : // 天気コード「晴れ」 if(j*3>=6 && j*3<18) write("\"晴\""); //「晴」マーク(昼)を表示 else write("\"晴\""); //「晴」マーク(夜)を表示 break; case 2 : // 天気コード「曇り」 write("\"曇\""); //「曇」マークを表示 break; case 3 : // 天気コード「雨」 write("\"雨\""); //「雨」マークを表示 break; case 4 : // 天気コード「雪」 write("\"雪\""); //「雪」マークを表示 break; default: // 異常値 write("-"); //データがなければ「-」を表示 break; } } write("
"+kishoLine[4]+"
"); } // 気象台4箇所の繰り返し(ここまで) ↑↑↑↑ write( eval(releaseTime.substring(0,2)) + "月" + eval(releaseTime.substring(2,4)) + "日" + eval(releaseTime.substring(4,6)) + "時発表の天気予報(ポイント予測)です"); //週間予報 //write(Number("09")+"
\n"); //DBG //現在日付の取得 NowDate = new Date(); var iNowYear = NowDate.getYear(); var iNowMonth = NowDate.getMonth(); var iNowDay = NowDate.getDate(); iNowDate = Number(new Date(iNowYear,iNowMonth+1,iNowDay)); //write(iNowYear+"/"+(iNowMonth+1)+"/"+iNowDay+"
\n"); //DBG //データ発表日付の取得 var iDatMonth = Number(sWeekDat[1].substr(0,2)); var iDatDay = Number(sWeekDat[1].substr(2,2)); var iDatDate = Number(new Date(iNowYear, iDatMonth,iDatDay)); //write(sWeekDat[1].substr(2,2)+"
\n"); //DBG //write(iNowYear+"/"+(iDatMonth)+"/"+iDatDay+"
\n"); //DBG //データ表示日付の取得 var iStartMonth = Number(sWeekDat[2].substr(0,2)); var iStartDay = Number(sWeekDat[2].substr(2,2)); var iStartDate = Number(new Date(iNowYear, iStartMonth,iStartDay)); //write(iNowDate + "***" + iDatDate); //DBG //データが当日のものでない時は表示しない。 if (iNowDate != iDatDate){ var sWeekView = "OFF"; }else{ var sWeekView = "ON"; } var ViewDate = new Array(7); for ( iCnt = 0; iCnt<7; iCnt++ ){ ViewDate[iCnt] = new Date(iNowYear,iStartMonth-1,iStartDay+iCnt); //write(ViewDate[iCnt]); } //write("\n"); write("\n"); write("\n"); write("\n"); write("
 
南信州の週間天気予報
\n"); write("\n"); //日付の表示 write("\n"); var iLoop = 0; for ( iCnt = 3; iCnt < 10; iCnt++ ){ var iViewMonth = ViewDate[iLoop].getMonth(); var iViewDate = ViewDate[iLoop].getDate(); write("\n"); iLoop = iLoop + 1; //write(sWeekDat[iCnt]+"
\n"); } write("\n"); //天気予報の表示 write("\n"); for ( iCnt = 3; iCnt < 10; iCnt++ ){ write("\n"); } write("\n"); write("
"+(iViewMonth+1)+"/"+iViewDate+"
"); if ( sWeekView == "ON" ){ switch(sWeekDat[iCnt]) { case 1 : // 天気コード「晴れ」 write("\"晴\""); //「晴」マーク(昼)を表示 break; case 2 : // 天気コード「曇り」 write("\"曇\""); //「曇」マークを表示 break; case 3 : // 天気コード「雨」 write("\"雨\""); //「雨」マークを表示 break; case 4 : // 天気コード「雪」 write("\"雪\""); //「雪」マークを表示 break; default: // 異常値 write("-"); //データがなければ「-」を表示 break; } }else{ write("-"); } write("
\n"); write("
\n"); //write("\n");