AB2(ab262)でプログラムに実行時パラメーターを渡す方法

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
ミニヨン

AB2(ab262)でプログラムに実行時パラメーターを渡す方法

#1 投稿記事 by ミニヨン »

QBASICで使用していたプログラムをAB2に書き換えて使用したいと思っていますが
実行時にパラメータを渡す方法がわかりません

echo AAA$ = %1 > aaa.bas
type aaa2.bas >> aaa.bas
BasicSystem.exe aa.bas
という方法だとBasicSystemのウィンドウが開いたままになって
しまいます

QBASICではaa2.basの最後で
SYSTEM
EXIT
で抜けていました

他に何か良い方法は無いでしょうか

(AB2を使用する理由はRS232Cを多用している為です)
ゲスト

#2 投稿記事 by ゲスト »

>>QBASICで使用していたプログラムをAB2に書き換えて使用したいと思っていますが
>>実行時にパラメータを渡す方法がわかりません

EXEの起動オプションで指定されたパラメータは、CmdLine$に代入されています。
プログラム中でCmdLine$を参照するたけです。

>>という方法だとBasicSystemのウィンドウが開いたままになって

コンパイルをコマンドで実行する方法でしたら知りません。
ミニヨン

#3 投稿記事 by ミニヨン »

> プログラム中でCmdLine$を参照するたけです。

ありがとうございます。

特殊変数だとばかり思っていて関数を見落としていました。
ミニヨン

#4 投稿記事 by ミニヨン »

事後報告です

パラメータ渡しができたのであとはシリアルポートの設定ですが

AB2でレジストリのAB用シリアルポートの設定情報(全ポート共通)を書き換える
SetCom.exeを作成しシリアルポートを使用するAB2プログラムの起動直前にセット
することにしました。

で、わかったこと

OPEN "COM1

で使用する場合

COM1/COM3/COM4/COM8が使用できた (多分COM1-8ないしCOM9はOK)
COM12は実行時にエラー

別のプログラムなら異なる設定で2つ以上のシリアルポートを同時使用できる

1つのプログラム中では同じ設定でしか使用できない

シリアルポートをプログラム内で途中で設定変更することはできない

シリアルポートの設定情報はBasicSystem.exeの終了時にレジストリに書かれる

コンパイルしたxxx.exeモジュールは起動時にレジストリから設定情報を取得

BasicSystem.exeを起動して、Setcom.exeで設定を変更し、BasicSystem.exeを終了すると変更前の設定に戻る

QBASICだとCOM1/COM2しか使用できなかったのでこれからいろいろと活用させていただきます
ミニヨン

#5 投稿記事 by ミニヨン »

その後のその後

Cmdline$関数ではコマンドラインパラメータはスペース区切りで渡されるので
パラメータを切り出すコードを書きました
QBASICのOPEN "COMn:の後ろの形式とdos(win2k)modeコマンドの形式に対応
QBASICのソースやバッチからsedでComSet用のバッチを作成するつもり

後で気づいたんですがバッチで起動ならEnviron$関数も使えますね

sedでQBASICのソースをAB2に書き換えるスクリプトも作成
AB2には無いltrim$() rtrim$() ucase$() lcase$()関数も作成
文法エラーがでないところまでは変換できましたがサブルーチンの数に制限
が有る為?かどのサブルーチンを呼んでも呼んでない特定のサブルーチンしか
実行されないという怪現象にはまりました^^;
返信する