Help us understand the problem. What is going on with this article?

GeneXus Msgコマンドの基本的な使い方

はじめに...

万能なMsgコマンド
その使い方をいくつかご紹介します。

  • 基本的な構文
  • メッセージ出力方法
  • 簡易的なログ出力方法
【確認環境】
 バージョン     : GeneXus  15U6 ~ 16U10
 ジェネレーター  : Java     1.8 (jdk1.8.0_141)
 サーバー      : Tomcat   8.5, 9.0

Msgコマンドとは

Msgコマンド はメッセージを表示/出力したい場合に用いるコマンドです。
Errorコマンドと異なり後続処理は実行します。

警告メッセージを表示します。

構文
Msg( {'msg' | &var} [ , nowait | status ] )

GeneXus Wikiより抜粋

用途別の記述例

画面へメッセージを表示

Rulesの場合
//Transactionオブジェクトでのみ記述可能
Msg("Hello, GeneXus Event xxxx");
Eventsの場合
Event xxxx
    Msg("Hello, GeneXus Event xxxx")
Endevent

Sub 'xxxx_xxx'
    Msg("Hello, GeneXus Sub xxxx_xxx")
Endsub

※Rulesは  ; (セミコロン)で終わらなければいけない  ので注意して下さい。

簡易的なログ出力

Rulesの場合
//Transactionオブジェクトでのみ記述可能
Msg("Hello, GeneXus Event xxxx", status);
Eventsの場合
Event xxxx
    Msg("Hello, GeneXus Event xxxx", status)
Endevent

Sub 'xxxx_xxx'
    Msg("Hello, GeneXus Sub xxxx_xxx", status)
Endsub

※この記述方法では、画面上にメッセージは表示されません

実装例

1、メッセージを表示する

サンプル

スクリーンショット 2017-12-24 22.25.22.png
Events
Event Start
    Msg("Hello, GeneXus")
Endevent

GeneXus_Msg001.gif

2、条件に一致する場合のみメッセージを表示する

サンプル

名前を入力するフィールド・実行ボタンを追加し、必須入力チェックを実装してみます。
sample6.png

変数&Name Varchar(40) をVariablesに定義
スクリーンショット 2017-12-25 1.12.52.png

変数とボタンを配置
sample1.png

イベントを定義
sample2.png

Events
Event 'btn'
    If &Name.IsEmpty()
        Msg("名前は必ず入力してください。")
    Endif
Endevent

3、簡易的なログ出力

サンプル

今回のサーバーであれば以下フォルダ配下に
tomcat<メジャーバージョンNo>-stdout.YYYY-MM-DD.log
というファイルへ出力される
%TOMCAT_HOME%¥logs

sample5.png

sample3.png

Events
Event Start
    Msg("Hello, GeneXus")
    Msg("Event Start log", status)
Endevent

Event Refresh
    Msg("Event Refresh log", status)
    Msg("&Name="+&Name, status)
Endevent

Event 'btn'
    If &Name.IsEmpty()
        Msg("名前は必ず入力してください。")
    Endif
    Refresh
Endevent

正月早々なにをしているのだか...

最後に

Msg("xxxx", status)
は開発中にSDTなどの情報をログ出力し確認したい場合や、
データ取得確認を行う場合に良く用いられる。
ただ、とても 消し忘れ 易い。
サーバーの標準ログ出力ファイルを用いるのであれば、問題ないでしょう。
ログ出力処理が既に存在する場合、ログ出力処理が混在する可能性もある為、ご注意ください。

GX-Takaoka
GeneXus開発を主とした火消し屋SE。自身のナレッジ共有に勤しみつつ、現在は息子の育成に奮闘中... Webアプリケーション開発研修を講師として登壇。若手PGの育成にも力を入れている。 Webアプリケーション開発歴8年。講師歴2年 【Coaching is Not Teaching】
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away