- 構文
- OPTION 項目
- EXPLICIT
- 変数宣言の強制(すべての変数でDIM、もしくはPUBLIC宣言が必要)
- SAMESTR
- 文字比較、置換、サーチにて大文字、小文字を区別する
- OPTPUBLIC
- PUBLIC変数の重複定義を禁止する
- OPTFINALLY
- TRY-FINALLY間で強制終了が発生した時にも必ずFINALLY部を実行する
- SPECIALCHAR
- 実行時に特殊文字(<#CR>, <#DBL>, <#TAB>)の変換をしない
- SHORTCIRCUIT
- 論理演算(IF, IFB, WHILE, REPEAT)にて短絡評価をする(但しカッコ内は無効)
- NOSTOPHOTKEY
- 停止ホットキーは無効にする
- TOPSTOPFORM
- STOPボタンウィンドウを最前面固定する
- FIXBALLOON
- 吹き出しを仮想デスクトップの全画面に出す
- DEFAULTFONT = フォント名
- フォント, サイズを変更する(BALLOON, MSGBOX等)
- POSITION = X, Y
- 位置を変更する
- LOGPATH = ログパス名
- ログファイルのパス、ファイル名を変更する
- LOGLINES = ログ行数
- ログ最大行数を変更する
- LOGFILE = ログ出力モード
- ログファイルの出力 = 1:出力しない、2:日付を付けない、3:秒もつける、4:以前のログは削除
- DLGTITLE = タイトル
- INPUT, MSGBOX, SLCTBOXでのタイトルを変更する
- 引数
- 戻り値
LOGFILEで日付を付けず以前のログを削除する場合は「6」を指定。
スクリプトの先頭で宣言、各種設定の変更(,カンマにて項目の複数指定可)
OPTION EXPLICIT
OPTION SAMESTR
OPTION OPTPUBLIC
OPTION OPTFINALLY
OPTION SPECIALCHAR
OPTION SHORTCIRCUIT
OPTION NOSTOPHOTKEY
OPTION TOPSTOPFORM
OPTION FIXBALLOON
OPTION DEFAULTFONT
OPTION POSITION
OPTION LOGPATH
OPTION LOGLINES
OPTION LOGFILE
OPTION DLGTITLE
ログ行数デフォルトは2,000行です。
短絡評価
短絡評価とは、ANDやORといった論理演算子において左辺を評価した時点で全体の真偽値が確定し右辺を評価する必要がない場合、右辺の評価をしないのが短絡評価です。
例えば、論理積(AND)の左辺を評価した結果がFALSEの場合、全体の評価はFALSEになるし、論理和(OR)の左辺を評価した結果がTRUEの場合、全体の評価はTRUEになります。
まず論理積(AND)の場合、左辺の評価がTRUEのときは右辺の評価もしなければならないが、左辺の評価がFALSEのときは右辺の評価に関わらず結果は必ずFALSEとなります。そのため左辺がFALSEの時点で右辺の評価はスキップします。
- TRUE AND TRUE → TRUE
- TRUE AND FALSE → FALSE
- FALSE AND TRUE → FALSE
- FALSE AND FALSE → FALSE
このような場合、右辺の結果は問わないので評価をスキップします。赤字の式は評価されずスキップします。
次に論理和(OR)の場合、左辺の評価がFALSEの場合右辺の評価しなければならないが、左辺の評価がTRUEのときは右辺の評価に関わらず結果は必ずTRUEになります。そのため左辺がTRUEの時点で右辺の評価はスキップします。
- TRUE OR TRUE → TRUE
- TRUE OR FALSE → TRUE
- FALSE OR TRUE → TRUE
- FALSE OR FALSE → FALSE
論理積のときと同様に赤字の処理はスキップされます。
そのため軽い処理を左辺、重い処理を右辺に持ってくると右辺が省略されるときは無駄な処理をせずに済みます。
左辺は必ず実行されるので、省略されては困る式を左辺に持ってくる書き方もありです。
以下の例では「OPTION SHORTCIRCUIT」の記述があるとORの左辺がTRUEなので右辺の処理を実行せず「False」を返し、記述がないと右辺も実行するので「True」を返します。
OPTION SHORTCIRCUIT
PUBLIC flg
flg = FALSE
IF TRUE OR test() THEN PRINT flg
PROCEDURE test()
flg = TRUE
FEND
- 結果
False
論理積・論理和を使った擬似的なIF文
論理積
左辺 AND 右辺
論理積の場合左辺がTRUEでないと右辺は実行されないので、
IF 左辺 = TRUE THEN 右辺
と等価とみなすことができます。左辺が条件式、右辺が真のときの処理となる。
論理和
左辺 OR 右辺
論理和の場合左辺がFALSEでないと右辺は実行されないので、
IF 左辺 = FALSE THEN 右辺
と等価とみなすことができます。左辺の条件式が偽のとき右辺の処理が実行されます。
論理演算子が複数あるとき
論理演算子が複数あるときも1つのときと同様に左から順に評価していきます。
論理積(AND)の場合、初めてFALSEを返した次以降の処理をスキップします。赤字がスキップされる処理です。
- FALSE AND FALSE AND FALSE → FALSE
- FALSE AND FALSE AND TRUE → FALSE
- FALSE AND TRUE AND FALSE → FALSE
- FALSE AND TRUE AND TRUE → FALSE
- TRUE AND FALSE AND FALSE → FALSE
- TRUE AND FALSE AND TRUE → FALSE
- TRUE AND TRUE AND FALSE → FALSE
- TRUE AND TRUE AND TRUE → TRUE
論理和(OR)の場合、初めてTRUEを返した次以降の処理をスキップします。赤字がスキップされる処理です。
- FALSE OR FALSE OR FALSE→FALSE
- FALSE OR FALSE OR TRUE→TRUE
- FALSE OR TRUE OR FALSE→TRUE
- FALSE OR TRUE OR TRUE→TRUE
- TRUE OR FALSE OR FALSE→TRUE
- TRUE OR FALSE OR TRUE→TRUE
- TRUE OR TRUE OR FALSE→TRUE
- TRUE OR TRUE OR TRUE→TRUE
注意点
短絡評価は場合によって右辺の式スキップされるため、その式に関係する処理を行う場合注意が必要です。