3

Progress 4GL または WebSpeed を使用してアサーションを実装する最良の方法は何ですか?

4

4 に答える 4

1

Progress にはアサーションのネイティブ処理がありませんが、私が思いついたのは次のとおりです。

IF NOT <assertion> THEN
RUN assertionFailed.p.

assertionFailed.p は、プログラマーに電子メールを送信するか、条件をログに記録し、正常に終了することもできます。

于 2009-05-05T14:27:18.903 に答える
1

通常、アサーションは最終コードから省略されるため、プリプロセッサ ルートをお勧めします。次のようにして、2 つのインクルード ファイルとして設定できます。本番用にコンパイルするときは、debugalert.i が空であることを確認してください。assert.i を編集して、メッセージ、停止、電子メールなどを好きなようにすることができます...

アサーションをセットアップするには、{assert.i &condition=} の形式に従います。


/* assert.i */ {debugalert.i}

&IF DEFINED( DEBUGALERT ) <> 0 &THEN

{&CONDITION} でない場合:

MESSAGE THIS-PROCEDURE:FILENAME "ERROR...{&CONDITION}" 
    VIEW-AS ALERT-BOX.
/* add code to email message etc.. or stop */

終わり。

&ENDIF


/* アサーションを無効にするテストまたは開発環境の debugalert.i は、このステートメントを削除します */

&GLOBAL-DEFINE DEBUGALERT


/* テスト コードでは、次のようにします。// アサーションのテスト * /

DEF VAR h_ct AS INT NO-UNDO INIT 10.

{assert.i &CONDITION="h_ct = 8"}

于 2009-05-05T17:23:04.643 に答える