OPTION指定

構文
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の時点で右辺の評価はスキップします。

  1. TRUE AND TRUE → TRUE
  2. TRUE AND FALSE → FALSE
  3. FALSE AND TRUE → FALSE
  4. FALSE AND FALSE → FALSE

このような場合、右辺の結果は問わないので評価をスキップします。赤字の式は評価されずスキップします。

次に論理和(OR)の場合、左辺の評価がFALSEの場合右辺の評価しなければならないが、左辺の評価がTRUEのときは右辺の評価に関わらず結果は必ずTRUEになります。そのため左辺がTRUEの時点で右辺の評価はスキップします。

  1. TRUE OR TRUE → TRUE
  2. TRUE OR FALSE → TRUE
  3. FALSE OR TRUE → TRUE
  4. 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を返した次以降の処理をスキップします。赤字がスキップされる処理です。

  1. FALSE AND FALSE AND FALSE → FALSE
  2. FALSE AND FALSE AND TRUE → FALSE
  3. FALSE AND TRUE AND FALSE → FALSE
  4. FALSE AND TRUE AND TRUE → FALSE
  5. TRUE AND FALSE AND FALSE → FALSE
  6. TRUE AND FALSE AND TRUE → FALSE
  7. TRUE AND TRUE AND FALSE → FALSE
  8. TRUE AND TRUE AND TRUE → TRUE

論理和(OR)の場合、初めてTRUEを返した次以降の処理をスキップします。赤字がスキップされる処理です。

  1. FALSE OR FALSE OR FALSE→FALSE
  2. FALSE OR FALSE OR TRUE→True
  3. FALSE OR TRUE OR FALSE→True
  4. FALSE OR TRUE OR TRUE→True
  5. TRUE OR FALSE OR FALSE→True
  6. TRUE OR FALSE OR TRUE→True
  7. TRUE OR TRUE OR FALSE→True
  8. TRUE OR TRUE OR TRUE→True

注意点

短絡評価は場合によって右辺の式スキップされるため、その式に関係する処理を行う場合注意が必要です。