音を鳴らす方法

音を鳴らしたい場合はSOUND関数を利用します。

wavやmid、mp3といった形式に対応している他、内蔵スピーカーでBEEP音を鳴らすこともできます。

音を鳴らしている間、他の処理を止めたい場合は同期フラグをTRUEにします。 デフォルトではFALSEになっているので、音を鳴らしつつ他の処理を進めます。

ファイル名に変数を利用することで複数個所でSOUND関数を利用していても一括で鳴らしたいファイルを変更できます。

 

音を鳴らすサンプル

音の再生が終了するまで処理が止まります。

fileName = "sample.wav"
SOUND(fileName, TRUE)

 

BEEP音を鳴らすサンプル

SOUND("BEEP")

 

自作関数を利用して音を鳴らすサンプル

このサンプルでは効果音が鳴り終わる前にスクリプトが終了してしまうので無音になってしまいます。

他のスクリプトに組み込んで利用することを想定しています。

PUBLIC FileName = "sample.wav"
SOUND2()

PROCEDURE SOUND2()
	SOUND(FileName)
FEND

 

SOUND関数リファレンス

SOUND関数のリファレンスをマニュアルから転載します。

SOUND( ファイル名, [同期フラグ] )
引数
 ファイル名: 再生ファイル名 (WAV, MID, AVI等、 'BEEP' 指定にてBEEP音)
        もしくはサウンドにて割り当てられたイベント名('LowBatteryAlarm', 'MailBeep', 'SystemAsterisk'等)
       (ファイル名を省略すると再生をストップ)
 同期フラグ:
   FALSE: 待たない (デフォルト)
   TRUE: 終了を待つ

 ※ 'BEEP'指定時:32bitOSではPC内部スピーカだが、64bitOSでは通常のサウンド出力

 

整数の数値の桁数を調べる方法

整数の数値が何桁あるのか調べたい場合はABS関数関数とLOGN関数とCEIL関数を組み合わせて使うことで知ることができます。

整数のみ対応しています。 マイナスの値にも対応していますがマイナスの符号はカウントしません。 0の場合は正しい結果にならないので、0の場合のみ別の処理を入れます。

 

整数の数値の桁数を表示するサンプル

x = -124816 // 調べたい数値
n = CEIL(LOGN(10, ABS(x)+1)) // 桁数を変数に代入する
IF x = 0 THEN n = 1 // 0の場合は正しく計算できないので1にする
PRINT x + "の桁数は" + n + "です"

整数の数値の桁数を調べる方法の実行結果

 

ABS関数は引数で指定した数値の絶対値を返します。

LOGN関数はLOGN(Base, X)といった引数を必要とし、Baseを底とするXの対数を返します。

CEIL関数は引数で指定した数値を正の方向へ切り上げます。

文字列を反転させる方法

文字列を反転させる方法は標準では用意されていませんが、簡単に実現させることができます。

考え方としては、変換したい文字列の後ろから1文字ずつ新しい文字列に追加するというものです。

2バイト文字も1文字と判断されるようなので難しく考えないでも大丈夫です。

 

文字列を反転させるサンプル

before = "0123abcあいう" // 変換させたい文字列
after = "" // 変換後の文字列

FOR i = 0 TO (LENGTH(before) - 1) // 文字数分繰り返す
 after = after + COPY(before, LENGTH(before) - i, 1) // 文字列を1文字ずつコピー
 PRINT after // 処理の途中経過が分かるように出力させてみる
NEXT

文字列を反転させた結果

 

COPY命令リファレンス

COPY命令のリファレンスをマニュアルから転載します。

戻値 = COPY( 文字列, 開始位置, [コピー文字数] )
 引数
  文字列: コピー元の文字列
  開始位置: コピーすべき文字列の開始位置 (1から)
  コピー文字数: コピーすべき文字数 (省略時は最後の文字まで)
 戻値
  結果の文字列

今日が何曜日なのか文字列で表示する方法

今日が何曜日なのか文字列で表示させたい場合はひと手間かける必要があります。

GETTIME関数で得られる曜日は日曜日が0、月曜日が1、(中略)、そして土曜日が6といった数値です。 そこに文字列の配列で曜日情報を用意しておけば、G_TIME_WWと組み合わせることで曜日の文字列を得られます。

おまけで明日の曜日を表示する方法も載せておきます。

 

今日の曜日を文字列で表示するサンプル

DIM day[] = "日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"
GETTIME()
MSGBOX("今日は" + day[G_TIME_WW] + "です")

今日が何曜日なのか文字列で表示してみた

 

明日の曜日を求める方法その1

DIM day[] = "日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"
GETTIME(1)
MSGBOX("明日は" + day[G_TIME_WW] + "です")

明日が何曜日なのか文字列で表示させてみた

 

明日の曜日を求める方法その2

DIM day[] = "日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"
GETTIME()
MSGBOX("明日は" + day[((G_TIME_WW + 1) MOD 7)] + "です")

 

GETTIME関数リファレンス

GETTIME関数のリファレンスをマニュアルから転載します。

戻値 = GETTIME( [±n日, 基準日] ) 
引数
 ±n日: nを指定すると当日もしくは基準日からプラスマイナス n日とする、小数点以下は時間(デフォルト=0)
 基準日: 指定された日付を基に日付を設定する (デフォルト=当日)
      ("YYYYMMDD" or "YYYY/MM/DD" or "YYYY-MM-DD" or "YYYYMMDDHHNNSS" or "YYYY/MM/DD HH:NN:SS")
戻値
 2000年1月1日からの秒数を返す

 値がセットされる特殊変数
  G_TIME_YY    // 年
  G_TIME_MM    // 月
  G_TIME_DD    // 日
  G_TIME_HH    // 時
  G_TIME_NN    // 分
  G_TIME_SS    // 秒
  G_TIME_ZZ    // ミリ秒
  G_TIME_WW    // 曜日 (0:日曜....6:土曜)
  G_TIME_YY2   // 年をxxの文字型
  G_TIME_MM2    // 月をxxの文字型
  G_TIME_DD2   // 日をxxの文字型
  G_TIME_HH2   // 時をxxの文字型
  G_TIME_NN2   // 分をxxの文字型
  G_TIME_SS2   // 秒をxxの文字型
  G_TIME_ZZ2   // ミリ秒をxxxの文字型
  G_TIME_YY4   // 年をxxxxの文字型

 

現在の日付と時刻を取得する方法

現在の日付や時刻を取得するためにはGETTIME関数を使用します。

この命令が実行されると特殊変数に時刻や時間のデータが代入されます。 後は必要に応じて各変数を利用しましょう。

 

現在の日付と時刻を表示するサンプル

現在の日付と時刻を表示するサンプルです。<#CR>は改行させるために使用しています。

GETTIME()
date = "" + G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2
time = "" + G_TIME_HH2 + ":" + G_TIME_NN2
MSGBOX(date + "<#CR>" + time)

実行した場合の画面

 

GETTIME関数リファレンス

GETTIME関数のリファレンスをマニュアルから転載します。

戻値 = GETTIME( [±n日, 基準日] ) 
引数
 ±n日: nを指定すると当日もしくは基準日からプラスマイナス n日とする、小数点以下は時間(デフォルト=0)
 基準日: 指定された日付を基に日付を設定する (デフォルト=当日)
      ("YYYYMMDD" or "YYYY/MM/DD" or "YYYY-MM-DD" or "YYYYMMDDHHNNSS" or "YYYY/MM/DD HH:NN:SS")
戻値
 2000年1月1日からの秒数を返す

 値がセットされる特殊変数
  G_TIME_YY    // 年
  G_TIME_MM    // 月
  G_TIME_DD    // 日
  G_TIME_HH    // 時
  G_TIME_NN    // 分
  G_TIME_SS    // 秒
  G_TIME_ZZ    // ミリ秒
  G_TIME_WW    // 曜日 (0:日曜....6:土曜)
  G_TIME_YY2   // 年をxxの文字型
  G_TIME_MM2    // 月をxxの文字型
  G_TIME_DD2   // 日をxxの文字型
  G_TIME_HH2   // 時をxxの文字型
  G_TIME_NN2   // 分をxxの文字型
  G_TIME_SS2   // 秒をxxの文字型
  G_TIME_ZZ2   // ミリ秒をxxxの文字型
  G_TIME_YY4   // 年をxxxxの文字型