If
GuiXT
目的 | ||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
現在のGUIステータスや、SAP画面に特定のフィールドの有無など、条件に応じてスクリプトコマンドを使用することができます。 | ||||||||||||||||||||||||||||||||||||||
例 | ||||||||||||||||||||||||||||||||||||||
if Q[Status=ADD1] or Q[Status=UPD1] Image (1,50) (10,90) “imgupd.gif” else Image (1,50) (10,90) “imgdis.gif” endifGUIのステータスがADD1もしくはUPD1の場合、イメージファイル“imgupd.gif” を表示します。ステータスが異なる場合、“imgdis.gif”を表示します。 |
||||||||||||||||||||||||||||||||||||||
条件 | ||||||||||||||||||||||||||||||||||||||
Ifコマンドを利用するのはどのような時でしょうか。
1. 画面にエレメントがあるかどうか確認したいとき、ifコマンドにエレメントの名称を入れて検索することができます。
2. ステータスデータを問い合わせることができます。
3. guixt.iniに設定されたユーザーオプションを問い合わせることができます。 Option xxx1 if Q[Option=xxx] をスクリプトに記述し、guixt.iniでこのオプションを有効にします。 例)オプションHelpDisplayを使用して、あるトランザクションでヘルプを表示します。Imageコマンドを使うと画像ファイルのように表示したり、Viewコマンドを使うとリッチテキストやhtml形式で表示できます。 また、各ユーザーはこのヘルプテキストを使用するかどうかを個別に決めることができます。 オプションは50個までguixt.iniで定義することができます。また、各オプションの文字数は30文字まで記述できます。 |
||||||||||||||||||||||||||||||||||||||
if else/endifのネストについて 論理式の使用について | ||||||||||||||||||||||||||||||||||||||
if elseもendifも両方ネストできます。
if not Q[Status=UPD1] 論理式内で括弧、”and” “or” “not“ が使用できます。優先順位や括弧は通常の論理式法則が適用されます。 |
||||||||||||||||||||||||||||||||||||||
変数比較における-strictオプション | ||||||||||||||||||||||||||||||||||||||
変数を値と比較if V[vname=value]するとき、以下のルールが自動的に適用されます。
・ 比較する文字は、大文字小文字の区別がない。 “abXY” = “ABxy” ・ ゼロで構成されている値はすべて等しい。また空の文字列も同様に等しい。 “0000” = “0” =”” 上記のルールを適用しないで値を比較する場合には、オプション-strict を使用します。 if V[vname=value] -strict |
||||||||||||||||||||||||||||||||||||||
ヒントとコツ | ||||||||||||||||||||||||||||||||||||||
・ if文にフィールドを直接指定することはできないため、変数を使用してください。
Set V[buk] “&F[Company code]“ 2つの変数 V[x1] と V[x2]を比較する場合は、”if V[x1=値]” に、 &V[x2] を使う必要があります。 if V[x1=&V[x2]] (*) if Q[Role=xxx]、及び、if Q[Profile=xxx] については、ドキュメンテーション「ロール固有のユーザーインターフェース」を参照してください。 ・ “if Q[GuiXTVersion…]” はGuiXTバージョン2002 Q4 3以上でサポートされています。 ログオンスクリプトでインストール済みGuiXTバージョンは2002 Q4 5。以下のコーディングを使用できます。 if Q[GuiXTVersion<2002 Q4 5]
Message “新しいGuiXTをインストールしてください。IT管理センター連絡先:xxx” Title=”GuiXTを更新してください。” 2002 Q4 3以前のバージョンでは、if Q[GuiXTVersion<….]が使用できません。そのため、このメッセージは表示されずに、”false” が戻ります。このような場合には、以前のGuiXTのバージョン番号を記述して以下のように “not … >” を使用します。 if not Q[GuiXTVersion>2002 Q4 4]
Message “新しいGuiXTをインストールしてください。IT管理センター連絡先:xxx” Title=”GuiXTを更新してください。” ・ if … endif内でScreenコマンドを使用しないでください。スクリプトが解釈できなくなり、動作が予期できなくなります。 以下は、悪い例です。 Screen S1 if V[x=b] Screen S2 else Screen S2 endif Screen S1の画面の次にScreen S2 の画面があると仮定します。GuiXTはEnter “xx”または “yy”を処理するでしょうか?この例では、Enter “xx”が実行されます。GuiXTは、前のスクリーンブロックのif文オープンを考慮しないで次にマッチしているScreen2用のスクリーンコマンドを検索するからです。その代わり、それぞれのスクリーンブロック内で すべてのオープン状態の“if”文を閉じてください。 Screen S1 Screen S2 goto/labelを使用するほうが適切な場合があります。 Screen S1 if V[x=b] Screen S2 label l_continue |