FreeBASIC マニュアルのトップに戻る

FreeBASIC MetaLang

目次→その他→プリ・プロセッサ→メタ・コマンド→$Lang←オリジナル・サイト
目次→その他→コンパイラ・スイッチ→メタ・コマンド→$Lang←オリジナル・サイト

$Lang 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る


 コンパイラ方言を設定する、高次コマンド(metacommand)記述
 例えば、行番号を付けたコードのように、古い文法のプログラムも、動かせるようにするために使います。

渡辺注:私は、コントロール指示 よりも、この メタ・コマンド 表記の方を推奨します。
下位のバージョンでコンパイルする場合は、自動的にコメント 「'」として無視されるので、バージョン違いでソースを修正する必要がないからです。

構文:
'$lang: "lang"
または
rem $lang: "lang"

パラメタ:
"lang"
 設定する方言は、二重引用符で囲んだ、"fb""fblite""qb""deprecated" の内の、いずれか 1 つです。

説明:
コマンドラインで -forcelang オプションを与えない場合、 ソース・モジュールで、$lang を記述して、方言を設定することができます。
 ソース・モジュールに従って、行われる処理は、多くても、2つの処理です。
 最初の処理では、指定された方言が、デフォルト方言(デフォルトで "fb" か、または、-lang"fb" が選ばれている)以外なら、コンパイラは、次の処理のためにパーサ(parser:構文解析)をリセットして、ソース・モジュールの始めから、コンパイルを再開します。
 このメタ・コマンドが、2番目の処理をするとき、指定された方言が新しい現在の方言に合っていなければ、警告を表示します。コンパイルは、続けます。
 最初の処理でエラーが発生したら、コンパイラは2番目の処理をしません。


 $lang は、複合文、範囲、またはサブルーチンで、使われない場合が有ります。
 この場合でも、モジュールレベル・プリプロセッサ文で、入れ子にされるか、またはインクルード・ファイルで使われることがあります。

 現在は、この指示を、ソース・モジュールのどこに置かなければならない、という制限はありません。
 しかし、これは、将来、変更されるかもしれません。
 したがって、ソースの、最初の宣言、定義、または実行文の前に、この指示を置くことを推奨します。

 コマンド・ラインで、明示的に -lang オプションを与えると、この指示は、メタ・コマンドの -lang オプションより、優先されます。
 しかし、コマンドラインで -forcelang オプションを与えると、この指示は無効になります。
 警告が表示され、指示は無視されます。そして、コンパイルは継続します。
-forcelang オプションで、明示的に、 $lang メタ・コマンドを無視させることができます。

$lang メタ・コマンドは、FreeBASICバージョン0.20.0から導入されました。
FB の旧のバージョン、および QuickBASIC は、それをコメントとして扱って、無視します。

例:
'$lang: "qb"
 


'' Compile with -lang qb or fblite
'$lang: "qb"

1 Goto 3
2 End
3 Print "Welcome!"
4 Goto 2


'$lang: "qb"

100 REM 素因数分解
105 Dim N As Long
110 PRINT "素因数分解します。"
120 PRINT "任意の整数を入力して下さい。"
130 PRINT "例えば、12,319 と入力してEnterします。"
140 PRINT "あるいは、99,400,891 など、
150 Print "2,147,483,647 以下の数を入力して、Enterします。(カンマ,は無しで)"
330 Input N
340 STARTT=VAL(LEFT$(TIME$,2))*3600+VAL(MID$(TIME$,4,2))*60+VAL(RIGHT$(TIME$,2))
350 PRINT N;"=";
360   A=2
370   IF A>SQR(N) THEN 430
380   IF N-INT(N/A)*A=0 THEN 410
390   IF A>2 THEN A=A+2 :GOTO 370
400   A=A+1 :GOTO 370
410 PRINT A; "*" ;
420 N=N/A : GOTO 360
430 PRINT N
440 ENDTIME = VAL(LEFT$(TIME$,2))*3600+VAL(MID$(TIME$,4,2))*60+VAL(RIGHT$(TIME$,2))
450 MINUTE=(ENDTIME-STARTT)\60
460 PRINT USING"処理時間は、####分 ##秒でした。";MINUTE,(ENDTIME-STARTT)-MINUTE*60
470 Print "もう一度やりますか? Y (または y)なら再度。"
480 Input "それ以外の文字を入力すると終了します。",HANTEI$
490 If HANTEI$="Y" Or HANTEI$="y" Then
500	 GoTo 330
510 EndIf
520 END


QB との違い:

参照:
コンパイラ・スイッチ に戻る
プリ・プロセッサ に戻る
←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2017-11-21 01:27:33
日本語翻訳:WATANABE Makoto、原文著作者:JeffMarshall

ホームページのトップに戻る

表示-非営利-継承