スーパーバッチBSL / スーパーメニュBSLステーション 改訂履歴
Ver 1.02 (1999-11-20)
[先頭へ]
1.凡例
2.[0.9a]
3.[0.93]
3.1 BSL
4.[0.94]
4.1 BSL
5.[1.01]
5.1 BSL
5.2 BSLステーション
6.[1.02]
6.1 BSL
6.2 BSLステーション
1.凡例
以下の書式で表記されています。
[Date: リリース日付 , File: 配付ファイル名 , Ver: プログラムバージョン]
◎:機能追加 ◇:デバグ ■:互換性にかかわる可能性のある仕様変更 ※コメント
2.[0.9a]
[Date: 1998-04-18, File: BSL09A.exe, Ver: BSL.exe = 0.9a]
◎最初のリリースです。BSLフリーウェア版のみの公開です。
3.[0.93]
[Date: 1998-05-30, File: BSL093.exe, Ver: BSL.exe = 0.93 / BSLSta.exe = 0.93]
◎BSLステーションが追加されました。BSL自体には大きな変更はありません。
※フリーウェア版のみの公開です。
3.1 BSL
◇対話実行モードからサブスクリプトを起動できなかった。
◇サブスクリプトから #PC を呼び出すと 1 多い値を返した。
◇ False 文が異常終了コードを返さなかった。したがって #IsNum #IsInt が正しく動作しなかった。
◇サプスクリプトが Exit を使用しないで終了した場合、異常終了した。
◇環境変数の取得時の最大文字数を 255 文字から 511 文字に拡張した。
◎ Start, Stop の各文、 #IsFile, #DKTotal, #DKFree, #UName, #CName の各関数が追加された。
■スクリプトファイルのパス内検索機能が追加された。
■ Get 文の書式が変更された。(既定値項目追加のため、旧スクリプトは要修正。)
■ Exec 文が省略可能になり、直接スクリプトファイル名が書けるようになった。文の先頭のコマンド名はまずスクリプトファイル名として検索される。
4.[0.94]
[Date: 1998-08-17, File: BSL094.exe, Ver: BSL.exe = 0.94 / BSLSta.exe = 0.94]
◎BSLが大きく強化されました。ファイル処理関連で、一通りの機能を装備しました。
■BSLの注釈の書式が変更されました。 0.93 版以前とは基本的に互換性がありません。変更の理由は、パラメタに // で始まるスイッチをもつコマンドが存在することがわかったからです。
4.1 BSL
◇ *"ABC" のように、語の2番目の文字位置に引用符があるとき、正しく認識されなかった。
◇ Case 文の比較文字列における引用符の扱いが完全でなかった。
◇変数の解決が、引用符の中でも行われていた。
◎以下のコマンドが追加された。 Sleep, Wait, Beep, CopyFile, MoveFile, DeleteFile, MakeFile, ResetFile, Write, MakeDir, DeleteDir
◎ For 文に次のオプションが追加された。 /FDAS:N, /Val, /Step, /Read
◎次の関数が追加された。 #IsDir, #FAttr, #FTime, #FSize, #FName, #QOn, #QOff, #IsEnv, #IsVar, #Int, #Floor, #Ceil, #Round, #Abs, #Wid, #Params, #IniPrm, #IsEmpty
■次の関数名が変更された。 #DkSize, #DkFree => #DrvSize, #DrvFree
■ For 文でカレント以外のディレクトリが指定されたとき、ファイル名がパス付きで生成されるよう変更された。
■ #Str, #RStr の振舞いが一部変更された。第3パラメタ(最終文字位置)が指定されていて、しかもそれがもとの文字列の最終文字よりも後ろの位置を指している場合、必要な長さの空白を補うように変更された。したがって、第3パラメタを指定した場合は、原則的に固定長の文字列が返される。
例) Ver 0.93 までの動作: #Str["ABC",1,5] => "ABC" を返す。
Ver 0.94 以降の動作: #Str["ABC",1,5] => "ABC " を返す。
■ #Rep, #RRep の仕様が変更された。従来の書式では、全置換をあらわす。従来と同様の動作をさせるには、パラメタの末尾に ",1" を補う必要がある。これにより「先頭から1回だけ」の置換となる。
■注釈の書式が変更された。注釈の開始は "//" => "::" に変更、継続行は "%%" => ":&" に変更。
5.[1.01]
[Date: 1999-11-08, File: BSL101.lzh, Ver: 1.01]
◎フリーソフトウェア化し、ソースが公開されました。
◎今まで制限されていた一部の機能が開放されました。
◎end 句などについて、一般的な記述方法に対応できるよう仕様を拡張しました。
◎BSL・BSLステーションともいくつかのデバグ、機能強化および仕様変更を行いました。
◎ Start / Exec によるコマンドの実行制御が強化されました。
■一部の関数・文で、キーワードが変更されました。この部分は、従来のスクリブトと互換性がありません。注意をお願いします。
※本バージョンから、バージョン管理はBSL/BSLステーションで共通としました。
5.1 BSL
◇語の先頭が全角大文字の C E Fなどの場合、語が正しく処理されない現象があった。語が消失したように振る舞う。2バイト文字の扱いに一部ミスがあった。
◇メインルーチンにつづいてサブルーチンを宣言した場合、メインルーチンの最後に Exit 文を書かないと動作が不正になっていた。
◇ #IsEmpty 関数が正しく動作していなかった。指定されたディレクトリの直下のファイルのみが検索されていた。
◇環境変数名中に変数が含まれるとき、変数が引用符つきで解決されてしまっていた。
◇コマンドインタープリタが COMMAND.COM に固定されていた。これを %COMSPEC% から取得するようにした。
◇取得できる環境変数の文字列の長さが1024文字以下に限定されていた。制約なしとした。
◇Case 文の仕様記述が一部不正確であった。「数値同志の場合も文字列として比較される」のではなく、「両辺とも数値とみなせる場合は数値として比較」であった。
◇環境変数の入れ子使用に対応していなかった。また関数名の内部にも変数を使用できるようにした。
◇ MakeDir 文を、存在しないドライブ名を指定して実行した場合、BSL自身が異常終了した。
◇起動時のコマンドラインパラメタで引用符を使用した場合、これが解決された状態で取り込まれてしまっていた。このため、スペースを含むファイル名などをコマンドラインから渡すことができなかった。
◎フリーソフトウェア化にともない、制限されていた以下の機能が開放された。
TruncFile(ResetFileから変更), MakeFile, #DrvSize, #DrvFree, #UName, #CName
◎構造の終了を宣言する end 句について、フルスペルの書き方を許可した。( endif, endcase, enddo, endsub )
◎比較演算子について、演算子を2重に重ねない一般的な書き方を許可した。( < > )
◎ Cls 文が追加された。 #Sep 関数が追加された。
◎ for 文の文字列にCSV形式の文字列を指定できるようになった。(この機能は 0.94 版でも実装されていたが公開されていなかった。) case 文の when 節の文字列に、CSV形式の文字列を指定できるようになった。
◎ Exec, Start の各文に /Min, /Max, /Res の起動オプションが追加された。
◎次の各文、関数の追加により、 START 文で起動されたプロセスの終了状態を取得できるようになった。
GetPHandle, CloseHandle, WaitProcess, #IsProcess, #RC[]
◎関数 #PId により、 Start 文で起動したプロセス、または自分自身のプロセスIDを取得できるようになった。
◎コマンドラインから引き渡される文字列を、BSLスクリプトの1行のようにして実行するようにした。従来は、先頭の1語はスクリプトファイル名でなければならなかった。
◎ステップ実行によるトレース処理時、スクリプトプログラムの実行に介入して、任意のコマンドを投入できるようになった。
◎ Ctrl+C が投入されたとき、実行中のステップを表示して停止するようにした。ここで任意のコマンドを投入することができる。
◎従来「コマンドラインモード」と呼んでいたコンソール形式での対話実行型のモードの名称を「対話実行モード」に変更した。
■次の関数名が変更された。 #Repeat => #Rept
■関数 #LTrim, #RTrim が廃止され、 #Trim に統合された。 #Trim のオプションパラメタで同等の機能を実現する。
■次の文が変更された。 Write => AddLine, Mon => Trace
■ for 文のファイル検索処理時、拡張子の指定が省略された場合、 ".*" が指定されたものと見なすように変更された。従来は「拡張子なし」を指定されたと見なしていた。
■システム全体において、全角英字の大文字と小文字が区別されていなかった。(これは内部処理をできるだけ Unicode 文字列で記述しようとしていることによる。)一般に Windows においてはファイル名や環境変数などでも全角英字の大文字と小文字は区別されている。これにしたがい、大文字と小文字の区別をしないのは半角英字についてのみとした。この変更は、以下の箇所に影響する。
変数・サブルーチンの名称、 case 文の比較、 for 文のファイル名処理
■上記の変更に合わせ、関数 #UCase, #LCase の動作も変更された。従来全角英字も変換されてしまっていたが、半角英字のみを変換の対象とした。
■さらに関数 #Pos, #RPos, #Rep, #RRep の検索時、半角英字の大文字と小文字を区別しないように変更した。従来と同様に大文字と小文字を区別するためには、検索オプション "C" を指定する。
■ if 文の仕様が一部変更された。引用符で囲まれた場合は、数値とみなせる文字列であっても文字列として比較するように変更した。(従来は、引用符を解決したあとに数値かどうかを判定していた。)
■ for 文のオプションスイッチのデフォルトが一部変更された。 for 文のファイル検索機能で、ソートオプションの指定が省略された場合、従来「ソートなし」と見なされていが、本バージョンから「名前順にソート」と見なされるようになった。「ソートなし」を指定する "L" オプションが追加になった。スイッチの指定が省略され、自動判定された場合のデフォルトは "/F:N" であり、変更されていない。
※本バージョンで、対話実行モードからスクリプトを実行した時、次の制約がある。
1) スクリプト中で構造のエラーが発生すると以降正常に動作しなくなる。 Exit もできなくなる。 Ctrl+C で脱出するしかない。
2) 実行エラーが発生しても処理が中断されず、そのまま続行されてしまう。注意が必要である。
3) スクリプト中に内部コマンドが指定されていた場合、エラーにならずに実行されてしまう。
5.2 BSLステーション
◇「戻る」ボタンから、 [↑] で脱出できなかった不具合を修正した。
◇メニュ番号の入力域で [Backspace] などを押してから [Enter] を押すというようないくつかの操作で、「入力値が不正です。エスケープキーで変更を取り消せます.」というダイアログが表示され、脱出不能になる場合があった。これを修正した。
◎フリーソフトウェア化にともない、制限されていた以下の機能が開放された。
メニュ前コマンド、メニュファイル/初期メニュの切替え機能
◎コマンドとしてBSLスクリプトの任意のコマンドを記述できるようになった。コマンドは全体としてBSLスクリプトの1行のように解釈実行される。またBSLコマンドの内部実行にも対応した。これによりコンソールを生成せずにBSLスクリプトを実行するなどの応用が可能となる。
◎ユーザモードでのメニュ戻り操作に、 [+] の他に [-] も使えるようにした。
◎立上げ時のマウスカーソル位置を、メニュウィンドウの右下に位置付けるようにした。これによりキーボード操作時にマウスカーソルの位置により操作が阻害されることがなくなった。またマウスカーソルがメニュ選択域以外にあるとき、カーソルをメニュ番号入力域に移動するようにした。
◎編集モードで、ダブルクリックにてエディタが起動できるようにした。その他ユーザインタフェースの細かい改善をほどこした。
■初期メニュから [Esc] および「戻る」ボタンでシステムが終了しないようにした。ユーザが不用意にメニュを終了させることを防止するためである。
■編集モードのポップアップメニュで、「戻る」のショートカットを Ctrl+X から Ctrl+B に、「終了」のショートカットを Ctrl+Q から Ctrl+X に、それぞれ変更した。
■ブートアップメニュの名称を @BootupMenu から @@BootupMenu に変更した。これによりメニュファイルの書出し時、他のメニュの先頭に来るようになった。また、新規にメニュファイルを生成するときにデフォルトで生成される @MainMenu も @@MainMenu に変更した。 @@BootupMenu の次に位置付けられる。旧バージョンで生成されたメニュファイルを開いたときには、自動的に変換される。
■メニュファイルの書出し時、メニュ項目番号を無編集で書き出していた。このため、項目番号 11 のほうが 2 より前に来るという現象が発生していた。必ず2桁で書き出すよう修正した。旧バージョンで生成されたメニュファイルを開いたときには、自動的に変換される。
■コマンドとして外部コマンドを直接記述した場合、従来は直接実行されたが、本バージョンからBSLインタープリタ経由で実行されるようになった。このため、コンソールが表示されてしまう。これを防止するには、内部実行の仕組みを利用し、 ":Start コマンド名" のように記述する必要がある。
6.[1.02]
[Date: 1999-11-16, File: BSL102.lzh, Ver: 1.02]
6.1 BSL
6.2 BSLステーション
◇ Win95/NT で、メニュ起動直後に起動したアプリケーションにBSLステーションがオーバーラップしてしまう。マウス操作などにより、指示していないのにアクティブになり、前面に表示されてしまう。 Win98 では発生しない。この現象を解決するため、アクティブでないときのマウスの追跡をしないように改善した。