Command name
Command name ( command {; info {; theme}} ) : Text
引数 | 型 | 説明 | |
---|---|---|---|
コマンド | Integer | → | コマンド番号 |
info | Integer | ← | 評価するコマンドのプロパティ |
theme | Text | ← | コマンドのランゲージテーマ |
戻り値 | Text | ← | ローカライズされたコマンド名 |
履歴
リリース | 内容 |
---|---|
20 R9 | deprecated プロパティのサポート |
説明
Command name コマンドは、command 引数にコマンド番号を渡したコマンドの名前と、オプションとしてそのコマンドのプロパティを返します。各コマンドの番号はエクスプローラー内に記載してある他、このドキュメンテーションのプロパティエリアにも記載があります。
互換性に関する注意: コマンド名はある4D のバージョンと他のバージョンでは異なる(コマンドが改名された)可能性があり、このコマンドは以前のバージョンでは特にトークナイズドされていない部分のコードにおいて、コマンドをその番号で指定するのに使用されていました。 この用途の必要性は、時とともに4D が進化するにつれて減ってきています。それはトークナイズドされていない宣言(フォーミュラ)に対しては、4D は現在はトークンシンタックスを提供しているからです。 このシンタックスを使用すると、コマンド名の変遷や、あるいはテーブル名などの他の要素が変わったことによって引き起こされる潜在的な問題を避けつつ、読みやすい方法でこれらの名前を入力することができるようになります(詳細な情報については、 フォーミュラ内でトークンを使用 の章を参照して下さい)。 また、環境設定内のリージョンシステム設定を使用 オプション を使用すると、フランス語版の4D において引き続きフランス語のコマンド名を使用することが可能となります。
二つのオプションの引数を渡すことができます:
- info: コマンドのプロパティを指定します。 返される値は ビットフィールド で、以下のビットが意味を持ちます:
- 最初のビット(bit 0): コマンドがスレッドセーフである(つまりプリエンプティブプロセスでの実行に互換性がある)場合には1 に設定され、コマンドがスレッドセーフでない場合には0 に設定されます。 プリエンプティブプロセス 内ではスレッドセーフなコマンドのみが使用可能です。
- 二つ目のビット(bit 1): コマンドが廃止予定 の場合には1 に設定され、そうでない場合には0 に設定されます。 廃止予定のコマンドはサポートされている限りにおいては通常通り機能し続けますが、可能であれば置き換えるべきであり、今後書く新しいコード内においては使用するべきではありません。 コード内における廃止予定のコマンドはライブチェッカーおよびコンパイラ において警告を生成します。
theme: コマンドの4D ランゲージテーマの名前。
Command name コマンドは、command で指定したコマンドが既存のコマンド番号と対応する場合にはOK 変数を1に設定し、それ以外の場合には0に設定します。 しかしながら、既存のコマンドの一部には無効化されてしまったコマンドもあり、そういったコマンドの場合にはCommand name は空の文字列を返すという点に注意が必要です(最後の例題を参照して下さい)。
例題 1
以下のコードを使用すると、全ての有効な4Dコマンドを配列内に読み込むことができます:
var $Lon_id : Integer
var $Txt_command : Text
ARRAY LONGINT($tLon_Command_IDs;0)
ARRAY TEXT($tTxt_commands;0)
Repeat
$Lon_id:=$Lon_id+1
$Txt_command:=Command name($Lon_id)
If(OK=1) // コマンド番号が存在する
If(Length($Txt_command)>0) // コマンドが無効化されていない
APPEND TO ARRAY($tTxt_commands;$Txt_command)
APPEND TO ARRAY($tLon_Command_IDs;$Lon_id)
End if
End if
Until(OK=0) // 既存のコマンドの終了
例題 2
フォームで、一般的なサマリーレポートコマンドのドロップダウンリストを作成します。 ドロップダウンリストのオブジェクトメソッドに、次のように記述します:
Case of
:(Form event code=On Before)
ARRAY TEXT(asCommand;4)
asCommand{1}:=Command name(1)
asCommand{2}:=Command name(2)
asCommand{3}:=Command name(4)
asCommand{4}:=Command name(3)
// ...
End case
4Dの日本語版ではドロップダウンリストに、Sum、Average、Min、Maxが表示されます。 フランス語版*では、ドロップダウンリストには、Somme、Moyenne、Min、Maxが表示されます。
*フランス語のプログラミング言語を使用するよう設定されている4Dアプリケーション(互換性に関する注意を参照して下さい)
例題 3
番号を引数として渡したコマンドがスレッドセーフである場合にはTrue を、そうでない場合にはFalse を返す様なメソッドを作成したい場合を考えます。
//Is_Thread_Safe project method
#declare($command : Integer) : Boolean
var $threadsafe : Integer
var $name; $theme : Text
$name:=Command name($command;$threadsafe;$theme)
If($threadsafe ?? 0) // 最初のビットが1に設定されている
return True
Else
return False
End if
これを使い、例えば"SAVE RECORD"コマンド(53番)に対して、以下のように書く事ができます:
$isSafe:=Is_Thread_Safe(53)
// True を返す
例題 4
使用中のバージョンの4D 内で、廃止予定のコマンドを全てコレクションに入れて返したい場合を考えます。
var $info; $Lon_id : Integer
var $Txt_command : Text
var $deprecated : Collection
Repeat
$Lon_id:=$Lon_id+1
$Txt_command:=Command name($Lon_id;$info)
If($info ?? 1) // 二つ目のビットが1である
// 1であればコマンドは廃止予定である
$deprecated.push($Txt_command)
End if
Until(OK=0) // 既存のコマンドの終了
参照
プロパティ
コマンド番号 | 538 |
スレッドセーフ | ✓ |
更新するシステム変数 | OK |